%PDF-
%PDF-
Mini Shell
Mini Shell
<?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();
?>
Zerion Mini Shell 1.0