%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/local/components/UB/portfolio.profile/ |
Current File : //proc/self/root/home/bitrix/www/local/components/UB/portfolio.profile/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); // @todo AJAX подгрузка для "Больше"! // @todo Кэширование? function getPhotoParam($ar_fields) { $preview_pict = CFile::GetPath($ar_fields["PREVIEW_PICTURE"]); $detail_pict = CFile::GetPath($ar_fields["DETAIL_PICTURE"]); if (!$detail_pict) $detail_pict = CFile::GetPath($ar_fields["PROPERTY_REAL_PICTURE_VALUE"]); if (!$preview_pict) $preview_pict = $detail_pict; if (!$detail_pict) $detail_pict = $preview_pict; // Подгружаем рейтинг и данные по комментариям $arVoteResult = CRatings::GetRatingVoteResult("IBLOCK_ELEMENT", $ar_fields['ID']); return array( 'ID' => $ar_fields['ID'], 'NAME' => $ar_fields['NAME'], 'PREVIEW_PICTURE_SRC' => $preview_pict, 'DETAIL_PICTURE_SRC' => $detail_pict, 'VOTES' => empty($arVoteResult)?0:$arVoteResult['TOTAL_VOTES'], 'FORUM_MESSAGE_CNT' => intval($ar_fields['PROPERTY_FORUM_MESSAGE_CNT_VALUE'])>0?$ar_fields['PROPERTY_FORUM_MESSAGE_CNT_VALUE']:'0', 'ADULT' => intval($ar_fields['PROPERTY_ADULT_VALUE'])>0?$ar_fields['PROPERTY_ADULT_VALUE']:'0', 'INVISIBLE' => 'N' ); } $usrid = 0; $usrid = intval($USER->GetID()); $res = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$usrid), false, false, array("ID", "IBLOCK_ID", "DETAIL_PICTURE", "IBLOCK_SECTION_ID", "DETAIL_TEXT", "PROPERTY_AGE")); if($ob = $res->GetNext()) { $arResult['AGE'] = $ob['PROPERTY_AGE_VALUE']; }; if (isset($arParams['AJAX_REF']) && $arParams['AJAX_REF']=='Y' && check_bitrix_sessid()) { if ($_REQUEST['MODE']=='ADULT_ON' && intval($_REQUEST['PHOTO_ID'])>0) { $res = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PORTFOLIO_ID,"ID"=>intval($_REQUEST['PHOTO_ID'])), false, false, array("IBLOCK_ID","ID","NAME","PREVIEW_PICTURE","DETAIL_PICTURE","PROPERTY_REAL_PICTURE","PROPERTY_FORUM_MESSAGE_CNT", "PROPERTY_ADULT")); if ($ar_fields = $res->GetNext()){ CIBlockElement::SetPropertyValueCode($ar_fields['ID'], "ADULT", "1"); } else { $arResult['APP_RESULT']['OK'] = false; }; } elseif ($_REQUEST['MODE']=='ADULT_OFF' && intval($_REQUEST['PHOTO_ID'])>0) { $res = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PORTFOLIO_ID,"ID"=>intval($_REQUEST['PHOTO_ID'])), false, false, array("IBLOCK_ID","ID","NAME","PREVIEW_PICTURE","DETAIL_PICTURE","PROPERTY_REAL_PICTURE","PROPERTY_FORUM_MESSAGE_CNT", "PROPERTY_ADULT")); if ($ar_fields = $res->GetNext()){ CIBlockElement::SetPropertyValueCode($ar_fields['ID'], "ADULT", "0"); } else { $arResult['APP_RESULT']['OK'] = false; }; }; }; if (intval($arParams['PROFILE_ID'])>0) { // Определяем SECTION_ID профиля $db_list = CIBlockSection::GetList(Array(), Array("IBLOCK_ID"=>4, "DEPTH_LEVEL"=>1, "UF_PORTF_USR"=>$arParams['PROFILE_ID']), false, array("IBLOCK_ID", "ID", "UF_PORTF_USR") ); if ($ar_result = $db_list->GetNext()) $sid = $ar_result["ID"]; if (intval($sid)>0) { // Формируем список альбомов $db_list = CIBlockSection::GetList(Array(), Array("IBLOCK_ID"=>4, "SECTION_ID"=>$sid, 'UF_IS_POLAROID' => false), false, array("IBLOCK_ID", "ID", "NAME", "UF_PORTF_ACC")); while($ar_result = $db_list->GetNext()) { if($ar_result["UF_PORTF_ACC"]==1) { $arResult['ALBUMS']['PRIVATE'][$ar_result["ID"]] = array('NAME'=>$ar_result['NAME']); // Только для авторизованных if ($USER->IsAuthorized()) $arResult['ALBUMS']['ITEMS'][$ar_result["ID"]] = array('NAME'=>$ar_result['NAME']); } else $arResult['ALBUMS']['ITEMS'][$ar_result["ID"]] = array('NAME'=>$ar_result['NAME']); // Доступные пользователю альбомы } // Заполняем альбомы foreach($arResult['ALBUMS']['ITEMS'] as $albom_id => $alum) { $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>4,"SECTION_ID"=>$albom_id), false, array("iNumPage"=>1, "nPageSize"=>10), array("IBLOCK_ID","ID","NAME","PREVIEW_PICTURE","DETAIL_PICTURE","PROPERTY_REAL_PICTURE","PROPERTY_FORUM_MESSAGE_CNT", "PROPERTY_ADULT")); while($ar_fields = $res->GetNext()) { $arResult['ALBUMS']['ITEMS'][$albom_id]['PHOTOS'][] = getPhotoParam($ar_fields); } $arResult['ALBUMS']['ITEMS'][$albom_id]['SHOW_MORE_BUTTON'] = $res->IsNavPrint()?'Y':'N'; $arResult['ALBUMS']['ITEMS'][$albom_id]['COUNT'] = $res->NavRecordCount; } // Отбираем лучшие работы (если есть) - формируем виртуальный альбом $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>4,"PROPERTY_BFOTO_VALUE"=>1, "SECTION_ID"=>array_keys($arResult['ALBUMS']['ITEMS'])), false, array("iNumPage"=>1, "nPageSize"=>10), array("IBLOCK_ID","ID","NAME","PREVIEW_PICTURE","DETAIL_PICTURE","PROPERTY_REAL_PICTURE","PROPERTY_FORUM_MESSAGE_CNT", "PROPERTY_ADULT")); $bestItems = array(); while($ar_fields = $res->GetNext()) { $bestItems[] = getPhotoParam($ar_fields); } if (count($bestItems)>0) { $arResult['ALBUMS']['ITEMS'][0] = array( 'NAME' => GetMessage("BEST_WORKS"), 'SHOW_MORE_BUTTON' => 'N', 'PHOTOS' => $bestItems ); } // Сортируем альбомы (ставим "Лучшие первым") ksort($arResult['ALBUMS']['ITEMS']); // ShowPhoto - показ фотографии (подгружаем фотографию дополнительно (без учета постраничного режима) $arResult['SHOW_PHOTO'] = array(); if (intval($_REQUEST['ShowPhoto'])>0) { // Ищем фотографию в подгруженных, если не находим - подгружаем невидимой в последний альбом $res = CIBlockElement::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>4,'ID'=>intval($_REQUEST['ShowPhoto'])), false, false, array("IBLOCK_ID","ID","IBLOCK_SECTION_ID","NAME","PREVIEW_PICTURE","DETAIL_PICTURE", "PROPERTY_REAL_PICTURE","PROPERTY_FORUM_MESSAGE_CNT", "PROPERTY_ADULT")); if($arPhoto = $res->GetNext()) { $arResult['SHOW_PHOTO']['ID'] = $arPhoto['ID']; $arResult['SHOW_PHOTO']['ON_PAGE'] = false; foreach($arResult['ALBUMS']['ITEMS'][$arPhoto['IBLOCK_SECTION_ID']]['PHOTOS'] as $photo) if ($photo['ID']==$arPhoto['ID']) { $arResult['SHOW_PHOTO']['ON_PAGE'] = true; break; } if (!$arResult['SHOW_PHOTO']['ON_PAGE']) { $photo = getPhotoParam($arPhoto); $photo['INVISIBLE'] = 'Y'; $arResult['ALBUMS']['ITEMS'][$arPhoto['IBLOCK_SECTION_ID']]['PHOTOS'][] = $photo; } } } } } else $arResult['ERRORS'] = GetMessage("PROFILE_ID_IS_NOT_SPECIFIED"); $this->IncludeComponentTemplate(); ?>