%PDF- %PDF-
| Direktori : /home/bitrix/www/local/components/p4/catalog.element/ |
| Current File : //home/bitrix/www/local/components/p4/catalog.element/component.php |
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
die();
}
/* @var array $arParams */
/* @var array $arResult */
/* @global CMain $APPLICATION */
/* @global CUser $USER */
$isInner = isset($arParams['PROFILE_ID']) && intval($arParams['PROFILE_ID']) > 0;
$profileID = isset($arParams['PROFILE_ID']) ? $arParams['PROFILE_ID'] : $_REQUEST['ID'];
$maxDim = isset($arParams['WIDTH']) ? $arParams['WIDTH'] : isset($_REQUEST['WIDTH']) && intval($_REQUEST['WIDTH']) > 0 ? $_REQUEST['WIDTH'] : 0;
$arUserFieldNames = ['EMAIL', 'NAME', 'LAST_NAME', 'PERSONAL_MOBILE', 'PERSONAL_PHONE', 'PERSONAL_WWW', 'PERSONAL_ICQ', 'WORK_FAX', 'PERSONAL_MAILBOX', 'WORK_COMPANY', 'WORK_NOTES', 'UF_HIDECONT', 'UF_USER_PHONE'];
$arPropNames = ['SEX', 'AGE', 'BDATE', 'STAGE', 'VIDEO', 'REGION', 'HAIRCOLOR', 'HAIRLENGTH', 'SKINCOLOR', 'EYECOLOR', 'MODELTHEME', 'MODELINTJOB', 'MODELOPTIONS', 'FACETYPE', 'HEIGHT', 'WEIGHT', 'BREAST', 'WAIST', 'HIP', 'SIZETYPE', 'SIZE', 'SHOESTYPE', 'SHOES', 'BODYSIZETYPE', 'MODELTYPE', 'WIDESCREEN', 'VERIFED_BY_P4'];
$arResult['APP_RESULT']['OK'] = true;
if (!function_exists('checkLink')) {
function checkLink($url)
{
$k = stripos($url, '://');
if (false !== $k) {
return $url;
}
return 'http://'.$url;
}
}
if (!function_exists('checkSite')) {
function checkSite($url, $socLinkHosts)
{
$url = parse_url($url);
foreach ($socLinkHosts as $key => $value) {
if (false !== strpos($url['host'], $key.'.com')) {
return false;
}
}
return true;
}
}
$socLinkHosts = [
'vk' => '',
'facebook' => '',
'instagram' => '',
'pinterest' => '',
'twitter' => '',
];
if (intval($profileID) > 0) {
$rsProfile = CIBlockElement::GetList(['NAME' => 'ASC'],
['IBLOCK_ID' => IBLOCK_PROFILE_ID, 'ID' => $profileID, 'SHOW_NEW' => 'Y'],
false,false,
['ID', 'IBLOCK_ID', 'NAME', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'CODE', 'SORT', 'BP_PUBLISHED']);
if ($ob = $rsProfile->GetNextElement()) {
// Профиль
$arProfile = $ob->GetFields();
$arProps = $ob->GetProperties();
$arProps['BDATE']['VALUE'] = MakeTimeStamp($arProps['BDATE']['VALUE']);
$arLangs = [];
foreach ($arProps['LANGUAGES']['VALUE'] as $idx => $lang_id) {
$arLangs[$lang_id] = $arProps['LANGUAGES']['DESCRIPTION'][$idx];
}
$arResult['APP_RESULT']['PROFILE']['LANGUAGES'] = $arLangs;
$arResult['APP_RESULT']['PROFILE']['IS_APPROVED'] = 'Y' == $arProfile['BP_PUBLISHED'] ? 'Y' : 'N';
$arResult['APP_RESULT']['PROFILE']['PROFILE_ID'] = $arProfile['ID'];
$arResult['APP_RESULT']['PROFILE']['AVATAR'] = CFile::GetPath($arProfile['DETAIL_PICTURE']);
$arResult['APP_RESULT']['PROFILE']['CODE'] = $arProfile['CODE'];
$arResult['APP_RESULT']['PROFILE']['TYPE'] = CIBlockElement::GetByID($arProps['TYPE_P4']['VALUE'] > 0 ?
$arProps['TYPE_P4']['VALUE'] : $arProps['TYPE']['VALUE'])->Fetch()['NAME'];
$arResult['APP_RESULT']['PROFILE']['IS_PROMOTED'] = 100 == $arProfile['SORT'] ? 'Y' : 'N';
foreach ($arPropNames as $fieldName) {
if (isset($arProps[$fieldName])) {
if (in_array($arProps[$fieldName]['PROPERTY_TYPE'], ['N', 'S', 'E']) && strlen($arProps[$fieldName]['VALUE']) > 0) {
$arResult['APP_RESULT']['PROFILE'][$fieldName] = $arProps[$fieldName]['VALUE'];
} elseif ('L' == $arProps[$fieldName]['PROPERTY_TYPE'] && $arProps[$fieldName]['VALUE_ENUM_ID'] > 0) {
$arResult['APP_RESULT']['PROFILE'][$fieldName] = $arProps[$fieldName]['VALUE_ENUM_ID'];
} elseif ('F' == $arProps[$fieldName]['PROPERTY_TYPE'] && $arProps[$fieldName]['VALUE'] > 0) {
$arResult['APP_RESULT']['PROFILE'][$fieldName] = CFile::GetPath($arProps[$fieldName]['VALUE']);
}
}
}
$rsUser = CUser::GetByID($arProps['ACCOUNT']['VALUE']);
if ($arUser = $rsUser->GetNext()) {
foreach ($arUserFieldNames as $userFieldName) {
if (isset($arUser[$userFieldName]) && strlen($arUser[$userFieldName]) > 0) {
$arResult['APP_RESULT']['PROFILE'][$userFieldName] = $arUser[$userFieldName];
}
}
if (is_array($arUser['UF_SOCIAL']) && sizeof($arUser['UF_SOCIAL']) > 0) {
foreach ($arUser['UF_SOCIAL'] as $item) {
$url = parse_url(false === stripos($item, '://') ? 'http://'.$item : $item);
foreach ($socLinkHosts as $key => $value) {
if (false !== stripos($url['host'], $key)) {
$socLinkHosts[$key] = $item;
}
}
}
foreach ($socLinkHosts as $key => $value) {
if (strlen($value) > 0) {
$arResult['APP_RESULT']['PROFILE']['UF_SOCIAL'][] = checkLink($value);
}
}
}
}
// Альбомы
$rsSection = CIBlockSection::GetList([],['IBLOCK_ID' => 4, 'DEPTH_LEVEL' => 1, 'UF_PORTF_USR' => $arProfile['ID']], false,
['IBLOCK_ID', 'ID', 'UF_PORTF_USR']);
if ($arSection = $rsSection->GetNext()) {
$arAlbumFilter = ['IBLOCK_ID' => 4, 'SECTION_ID' => $arSection['ID']];
if ('N' == $arParams['SHOW_POLAROID']) {
$arAlbumFilter['UF_IS_POLAROID'] = false;
}
$rsAlbums = CIBlockSection::GetList(
['UF_IS_POLAROID' => 'DESC', 'SORT' => 'ASC', 'NAME' => 'ASC'],
$arAlbumFilter,
false,
['IBLOCK_ID', 'ID', 'NAME', 'UF_PORTF_ACC', 'UF_IS_POLAROID']
);
$arResult['APP_RESULT']['ALBUMS'] = [
// 'PRIVATE' => array(),
'PUBLIC' => [],
];
while ($ar_result = $rsAlbums->GetNext()) {
$arResult['APP_RESULT']['ALBUMS']['PUBLIC'][$ar_result['ID']] = [
'NAME' => $ar_result['NAME'],
'IS_POLAROID' => $ar_result['UF_IS_POLAROID'] ? 'Y' : 'N',
];
} // Доступные пользователю альбомы
foreach ($arResult['APP_RESULT']['ALBUMS']['PUBLIC'] as $album_id => $album) {
$res = CIBlockElement::GetList(['created' => 'DESC', 'SORT' => 'ASC'], ['IBLOCK_ID' => 4, 'SECTION_ID' => $album_id], false, false,
['IBLOCK_ID', 'ID', 'DATE_CREATE', 'DETAIL_PICTURE', 'PROPERTY_REAL_PICTURE', 'PROPERTY_ADULT']);
while ($arImage = $res->GetNext()) {
$file = CFile::GetFileArray(intval($arImage['DETAIL_PICTURE']) > 0 ? $arImage['DETAIL_PICTURE'] : $arImage['PROPERTY_REAL_PICTURE_VALUE']);
$image = [
'id' => $arImage['ID'],
'src' => $file['SRC'],
'height' => $file['HEIGHT'],
'width' => $file['WIDTH'],
'size' => $file['FILE_SIZE'],
'created' => $arImage['DATE_CREATE'],
'adult' => 1 == $arImage['PROPERTY_ADULT_VALUE'] ? 'Y' : 'N',
];
if ($maxDim > 0) {
$file = CFile::GetFileArray(intval($arImage['PROPERTY_REAL_PICTURE_VALUE']) > 0 ? $arImage['PROPERTY_REAL_PICTURE_VALUE'] : $arImage['DETAIL_PICTURE']);
if ($file['WIDTH'] < $file['HEIGHT']) {
$arSize = ['width' => $maxDim, 'height' => round($maxDim * $file['HEIGHT'] / $file['WIDTH']) + 1];
} else {
$arSize = ['width' => round($maxDim * $file['WIDTH'] / $file['HEIGHT']) + 1, 'height' => $maxDim];
}
$image_new = CFile::ResizeImageGet($file, $arSize, BX_RESIZE_IMAGE_PROPORTIONAL, true);
$image['src'] = $image_new['src'];
$image['width'] = $image_new['width'];
$image['height'] = $image_new['height'];
}
if ($USER->IsAuthorized()) {
$arVoteResult = CRatings::GetRatingVoteResult('P4_PORTFOLIO', $arImage['ID']);
$image['like'] = 'Y' == $arVoteResult['USER_HAS_VOTED'];
} else {
$image['like'] = false;
}
$arResult['APP_RESULT']['ALBUMS']['PUBLIC'][$album_id]['PHOTOS'][] = $image;
}
}
}
}
} else {
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('EMPTY_MODEL_ID');
}
if ($isInner) {
return $arResult['APP_RESULT'];
} else {
$this->IncludeComponentTemplate();
}