%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/UB/portfolio.profile/
Upload File :
Create Path :
Current File : /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();
?>

Zerion Mini Shell 1.0