%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/p4/catalog.element/
Upload File :
Create Path :
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();
}

Zerion Mini Shell 1.0