%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/local/components/p4/user.profile/ |
Current File : //proc/self/root/home/bitrix/www/local/components/p4/user.profile/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); /* @global CUser $USER */ $arResult[] = array(); $arResult['APP_RESULT'] = array('OK' => true, 'ERROR_MESSAGE' => ''); $arUserFieldNames = array( 'EMAIL','NAME','LAST_NAME','PASSWORD', 'UF_HIDECONT', 'PERSONAL_MOBILE','PERSONAL_PHONE','PERSONAL_WWW','PERSONAL_ICQ','UF_SOCIAL', 'PERSONAL_MAILBOX', 'WORK_COUNTRY', 'WORK_ZIP', 'WORK_CITY', 'WORK_STREET', 'WORK_FAX', 'WORK_COMPANY', 'WORK_NOTES'); $arPropNames = array('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'); function checkLink($url) { $k = stripos($url, "://"); if ($k!==false) return $url; return 'http://'.$url; } function checkSite($url,$socLinkHosts) { $url = parse_url($url); foreach($socLinkHosts as $key => $value) if (strpos($url['host'],$key.'.com')!==false) return false; return true; } $socLinkHosts = array( 'vk' => '', 'facebook' => '', 'instagram' => '', 'pinterest' => '', 'twitter' => '' ); if ($USER->IsAuthorized() && $_SERVER["REQUEST_METHOD"]=="POST") { $userID = $USER->GetID(); // Свойства пользователя $arUserFields = array(); //AddMessage2Log($_POST); if (strlen($_REQUEST['TOKEN'])>0) { $CUser = new CUser; $CUser->Update($USER->GetID(), array('UF_TOKEN'=>$_REQUEST['TOKEN'])); } if (strlen($_REQUEST['ANDROID_REG'])>0) { $CUser = new CUser; $CUser->Update($USER->GetID(), array('UF_ANDROID_REG'=>$_REQUEST['ANDROID_REG'])); } if (isset($_POST['EMAIL'])) // Сохраняем в WORK_MAILBOX и посылаем запрос на подтверждение { // Проверка уникальности e-mail $res = CUser::GetList($b="", $o="", array("=EMAIL" => $_POST['EMAIL'], "!ID" => $userID)); if($res->Fetch()) { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('USER_WITH_EMAIL_EXIST'); } else { $arUserFields['WORK_MAILBOX'] = $_POST['EMAIL']; unset($_POST['EMAIL']); $confirmCode = generate_confirm_code(5); $obUser = new CUser; $obUser->Update($userID, array("CONFIRM_CODE" => $confirmCode)); $rsUser = CUser::GetByID($userID); $arUser = $rsUser->Fetch(); $arFields = array( "USER_ID" => $userID, "EMAIL" => $arUserFields['WORK_MAILBOX'], "NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "CONFIRM_CODE" => $confirmCode, ); $event = new CEvent; $event->SendImmediate("USER_EMAIL_CHANGE_CONFIRM", SITE_ID, $arFields); $arResult['APP_RESULT']['OK'] = true; } } if ($arResult['APP_RESULT']['OK']) { if (isset($_POST['LANG']) && strlen($_POST['LANG'])>0) { $CUser = new CUser; $CUser->Update($USER->GetID(), array('UF_LANG'=>$_POST['LANG'])); } if (isset($_POST['UF_SOCIAL']) && !is_array($_POST['UF_SOCIAL'])) $_POST['UF_SOCIAL'] = array(); foreach($arUserFieldNames as $userFieldName) if (isset($_POST[$userFieldName])) $arUserFields[$userFieldName] = $_POST[$userFieldName]; $needFullName = isset($_POST['NAME']); if ($needFullName) $fullName = $arUserFields['SECOND_NAME'] = $_POST['NAME'].' '.$_POST['LAST_NAME']; // Обновление информации о пользователе if (count($arUserFields)>0) { $user = new CUser(); if (!$user->Update($userID, $arUserFields)) { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = $user->LAST_ERROR; } } $rsProfile = CIBlockElement::GetList(array(), array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, 'PROPERTY_ACCOUNT'=>$userID, 'ACTIVE'=>'Y', 'SHOW_NEW'=>'Y'), false, false, array('IBLOCK_ID', 'ID', 'IBLOCK_SECTION_ID', 'BP_PUBLISHED') ); if ($arProfile = $rsProfile->Fetch()) { $arFields = array(); $arProps = array(); $isModel = $arProfile['IBLOCK_SECTION_ID'] == 7; $profileID = $arProfile['ID']; if ($isModel) { if ($needFullName) $arFields['NAME'] = $fullName; } else { if (isset($_POST['AGENCY_NAME'])) $arFields['NAME'] = $_POST['AGENCY_NAME']; if (isset($_POST['PERSONAL_WWW'])) $arProps['AGENCY_CONTACTS'] = array( 'VALUE' => $_POST['PERSONAL_WWW'], 'DESCRIPTION' => 'SITE' ); } // Обновление профиля if ($arResult['APP_RESULT']['OK']) { if (isset($_POST['LANGUAGES'])) { $arLangs = array(); foreach($_POST['LANGUAGES'] as $lang_id => $lang_level) $arLangs[] = array("VALUE"=>$lang_id,"DESCRIPTION"=>$lang_level); $arProps['LANGUAGES'] = $arLangs; } if (isset($_POST['UB'])) { $arProps['TYPE'] = $_POST['UB']=='Y' ? ProfileTypeHelper::DEFAULT_ID_UB : 0; } if (isset($_POST['BDATE'])) { $_POST['BDATE'] = ConvertTimeStamp($_POST['BDATE']); // AddMessage2Log(print_r($_POST['BDATE'],true)); $arProps['AGE'] = getAgeByBirthDate($_POST['BDATE']); } if (isset($_POST['REGION'])) { $dbRegion = CIBlockElement::GetByID(intval($_POST['REGION'])); if ($arRegion = $dbRegion->Fetch()) { $dbNav = CIBlockSection::GetNavChain(6, $arRegion['IBLOCK_SECTION_ID']); if ($arNav = $dbNav->Fetch()) $arProps['COUNTRY'] = $arNav['ID']; } } if (isset($_POST['CODE'])) { $res = CIBlockElement::GetList(array(), array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "CODE"=>$_POST['CODE'], "!ID"=>$profileID)); if($res->GetNext()) { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('CODE_NOT_UNIQUE'); } else $arFields['CODE'] = $_POST['CODE']; } if (count($arFields)>0) { $el = new CIBlockElement; if(!$el->Update($profileID, $arFields, true)) { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = $el->LAST_ERROR; } } if ($arResult['APP_RESULT']['OK']) { foreach($arPropNames as $propName) if (isset($_POST[$propName])) $arProps[$propName] = $_POST[$propName]; if (count($arProps) > 0) { CIBlockElement::SetPropertyValuesEx($profileID, IBLOCK_PROFILE_ID, $arProps); } if (count($arFields) || count($arProps) > 0) { if (!$arProfile['BP_PUBLISHED'] || $arProfile['BP_PUBLISHED'] == 'N') { ProfileTypeHelper::runModerate($arProfile['ID'], true); } } $arResult['APP_RESULT']['PROFILE'] = array(); // User $rsUser = CUser::GetByID($USER->GetID()); $arUser = $rsUser->Fetch(); $arResult['APP_RESULT']['ID'] = $arUser['ID']; foreach($arUserFieldNames as $userFieldName) if (isset($arUser[$userFieldName]) && strlen($arUser[$userFieldName])>0) $arResult['APP_RESULT']['PROFILE'][$userFieldName] = $arUser[$userFieldName]; unset($arResult['APP_RESULT']['PROFILE']['PASSWORD']); // Не возвращаем пароль // Profile $rsProfile = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_PROFILE_ID,'PROPERTY_ACCOUNT'=>$USER->GetID(),'SHOW_NEW'=>'Y'), false,false, array('ID','IBLOCK_ID','NAME','DETAIL_TEXT','DETAIL_PICTURE','CODE','BP_PUBLISHED')); if ($ob = $rsProfile->GetNextElement()) { // Профиль $arProfile = $ob->GetFields(); $arProps = $ob->GetProperties(); if (isset($arProps['BDATE']['VALUE']) && strlen($arProps['BDATE']['VALUE'])>0) $arProps['BDATE']['VALUE'] = MakeTimeStamp($arProps['BDATE']['VALUE']); else $arProps['BDATE']['VALUE'] = time(); $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']['IS_APPROVED'] = $arProfile['BP_PUBLISHED'] === 'Y' ? 'Y' : 'N'; $arResult['APP_RESULT']['PROFILE']['TYPE'] = CIBlockElement::GetByID( $arProps['TYPE_P4']['VALUE']>0?$arProps['TYPE_P4']['VALUE']:ProfileTypeHelper::DEFAULT_ID_P4)->Fetch()['CODE']; $arResult['APP_RESULT']['PROFILE']['UB'] = $arProps['TYPE']['VALUE']>0?'Y':'N'; $arResult['APP_RESULT']['LIMITS'] = ProfileTypeHelper::getLimits($arResult['APP_RESULT']['PROFILE']['TYPE_P4']['VALUE']); $arLangs = array(); foreach($arProps['LANGUAGES']['VALUE'] as $idx => $lang_id) $arLangs[$lang_id] = $arProps['LANGUAGES']['DESCRIPTION'][$idx]; $arResult['APP_RESULT']['PROFILE']['LANGUAGES'] = $arLangs; foreach($arPropNames as $fieldName) if (isset($arProps[$fieldName])) { if (in_array($arProps[$fieldName]['PROPERTY_TYPE'], array('N','S','E')) && strlen($arProps[$fieldName]['VALUE'])>0) $arResult['APP_RESULT']['PROFILE'][$fieldName] = $arProps[$fieldName]['VALUE']; elseif($arProps[$fieldName]['PROPERTY_TYPE']=='L' && $arProps[$fieldName]['VALUE_ENUM_ID']>0) $arResult['APP_RESULT']['PROFILE'][$fieldName] = $arProps[$fieldName]['VALUE_ENUM_ID']; elseif($arProps[$fieldName]['PROPERTY_TYPE']=='F' && $arProps[$fieldName]['VALUE']>0) $arResult['APP_RESULT']['PROFILE'][$fieldName] = CFile::GetPath($arProps[$fieldName]['VALUE']); } } } } } else { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('PROFILE_NOT_FOUND'); } } if ($arResult['APP_RESULT']['OK']) // возвращаем профиль { // Profile $rsProfile = CIBlockElement::GetList(array(),array('IBLOCK_ID'=>IBLOCK_PROFILE_ID,'PROPERTY_ACCOUNT'=>$USER->GetID(),'SHOW_NEW'=>'Y'),false,false, array('ID','IBLOCK_ID','NAME','DETAIL_TEXT','DETAIL_PICTURE','CODE','IBLOCK_SECTION_ID','BP_PUBLISHED')); if ($ob = $rsProfile->GetNextElement()) { $arProfile = $ob->GetFields(); $arProps = $ob->GetProperties(); $dbSection = CIBlockSection::GetByID($arProfile['IBLOCK_SECTION_ID']); if ($arSection = $dbSection->Fetch()) $section = $arSection['CODE']; else $section = 'unknow'; global $APPLICATION; ob_start(); $arFullProfile = $APPLICATION->IncludeComponent("p4:catalog.element","",array( 'SHOW_POLAROID' => 'Y', 'PROFILE_ID' => $arProfile['ID'], 'WIDTH' => $_REQUEST['WIDTH'] )); $html = ob_get_contents(); ob_end_clean(); $arResult['APP_RESULT']['PROFILE'] = $arFullProfile['PROFILE']; $arResult['APP_RESULT']['ALBUMS'] = $arFullProfile['ALBUMS']; $arResult['APP_RESULT']['PROFILE']['IS_APPROVED'] = $arProfile['BP_PUBLISHED'] === 'Y' ? 'Y' : 'N'; $arResult['APP_RESULT']['PROFILE']['SECTION'] = $section; $arResult['APP_RESULT']['PROFILE']['UB'] = $arProps['TYPE']['VALUE'] > 0 ? 'Y' : 'N'; $arResult['APP_RESULT']['MONETIZE'] = MoneySubscribeHelper::user_subscribes($arProfile['ID']); $arResult['APP_RESULT']['LIMITS'] = ProfileTypeHelper::getLimits($arResult['APP_RESULT']['PROFILE']['TYPE_P4']['VALUE']); $arResult['APP_RESULT']['PHPSESSID'] = session_id(); } } } else { $arResult['APP_RESULT']['OK'] = false; $arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('USER_NOT_AUTHORIZED'); } $this->IncludeComponentTemplate();