%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/home/bitrix/www/local/components/p4/user.profile/
Upload File :
Create Path :
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();

Zerion Mini Shell 1.0