%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(); }