%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/p4/p.main.profile/
Upload File :
Create Path :
Current File : /home/bitrix/www/local/components/p4/p.main.profile/component.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

global $USER_FIELD_MANAGER;
	if ($arParams['AJAX_REF']=='Y' && $_SERVER["REQUEST_METHOD"]=="GET") {	

	$rs = CIBlockProperty::GetByID('COUNTRY', 12);
	if($ar_res=$rs->GetNext()) {

		if ($_GET['REF']=='CITY') { // Список городов для текущего региона пользователя
			if(strlen($_GET["SID"]) > 0){
				$sidd = $_GET["SID"];
				$ds = true;
			} else {
				$sidd = 329; //Москва
				$ds = false;
			};
						$arFilter = Array("ID"=>$sidd);
						$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU");
						$rsCity = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
								
			if ($arCity = $rsCity->GetNext()) {				
				$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
				$region = '';
				
				while($arNav = $rsNav->GetNext()) {
					
					$arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6);
					$arSelectR = Array("ID", "NAME",  "IBLOCK_SECTION_ID", "UF_NAME_RU");
					$res = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false);
					if($ar_res = $res->GetNext()) {$nam_region = (isset($ar_res["UF_NAME_RU"]) && SITE_ID == "ru") ? $ar_res["UF_NAME_RU"] : $arNav['NAME'];  }		
						
					$region .= $nam_region.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', ');
				}
				?>
				<?if ($ds){?>
				<optgroup label="<?=$region?>"><?
				$res = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "SECTION_ID"=>$arCity['IBLOCK_SECTION_ID'], "INCLUDE_SUBSECTIONS"=>"Y"), false, false, $arSelect);	
				while($ar_result=$res->GetNext()) {
					$nam_reg = (isset($ar_result["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "ru") ? $ar_result["PROPERTY_NAME_RU_VALUE"] : $ar_result["NAME"];
					?><option value="<?=$ar_result['ID']?>"><?=$nam_reg?></option><?
				}
				?></optgroup><?} else {?>
				<optgroup label="">
					<option value=""></option>
				</optgroup>
				<?};?><?
			}
		}
		elseif (!empty($_GET['term'])) {
			$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU");
			$response = array();
			$arFilt = Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y", 
				array(
					"LOGIC" => "OR",
					array("NAME"=>"%".$_GET['term']."%"),
					array("PROPERTY_NAME_RU"=>"%".$_GET['term']."%"),
				)
			);
			$rsCity = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), $arFilt, false, false, $arSelect);
			while ($arCity = $rsCity->GetNext()) {
				if (!array_key_exists($arCity['IBLOCK_SECTION_ID'], $response)) {
					$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
					$region = '';
					while($arNav = $rsNav->GetNext()) {
						$arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6);
						$arSelectR = Array("ID", "NAME",  "IBLOCK_SECTION_ID", "UF_NAME_RU");
						$resr = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false);
						if($ar_resr = $resr->GetNext()) {$nam_reg_t = (isset($ar_resr["UF_NAME_RU"]) && SITE_ID == "ru") ? $ar_resr["UF_NAME_RU"] : $arNav['NAME'];  }	
						$region .= $nam_reg_t.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', ');
					}
					
					$response[$arCity['IBLOCK_SECTION_ID']] = array(
						'group' => true,
						'text' => $region,
						'items' => array()
					);	
				}
				$nam_r = (isset($arCity["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "ru") ? $arCity["PROPERTY_NAME_RU_VALUE"] : $arCity["NAME"];				
				$response[$arCity['IBLOCK_SECTION_ID']]['items'][] = array('value'=>$arCity['ID'],'text'=>$nam_r);
			}			
			echo json_encode($response);
		}
		else {
			echo json_encode($_REQUEST);
		}
		
	}	
	
	define("PUBLIC_AJAX_MODE", true);
	require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
	die();

}
$arResult["ID"] = intval($USER->GetID());
$arResult["GROUP_POLICY"] = CUser::GetGroupPolicy($arResult["ID"]);

$arParams['SEND_INFO'] = $arParams['SEND_INFO'] == 'Y' ? 'Y' : 'N';
$arParams['CHECK_RIGHTS'] = $arParams['CHECK_RIGHTS'] == 'Y' ? 'Y' : 'N';

if(!($arParams['CHECK_RIGHTS'] == 'N' || $USER->CanDoOperation('edit_own_profile')) || $arResult["ID"]<=0) {
	$APPLICATION->ShowAuthForm("");
	return;
}

$strError = '';
$exper = GetMessage("SELECT_EXPERIENCE");
$country = GetMessage("SELECT_THE_COUNTRY");

$usr_id = $USER->GetID(); // аккаунт

if (CModule::IncludeModule("iblock")) { // Подгружаем данные из профиля (если профиль существует)
	 
	
		$rsCity = CIBlockElement::GetByID($_REQUEST["PROF_PERSONAL_CITY"]);			
		if ($arCity = $rsCity->GetNext()) {				
			$rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']);
			if($arNav = $rsNav->GetNext())
				$_REQUEST['PERSONAL_COUNTRY'] = $arNav['ID'];
		}
		$res = CIBlockElement::GetList(array(), array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$usr_id, 'SHOW_NEW'=>'Y'), false, false,
		array("IBLOCK_ID", "ID", "NAME", "CODE", "PROPERTY_REGION", "PROPERTY_COUNTRY", "PROPERTY_STAGE", "PROPERTY_SEX", "PROPERTY_BDATE", "PROPERTY_LANGUAGE", "DETAIL_PICTURE", "PROPERTY_TYPE", "PROPERTY_TYPE_P4"));
	if($ar_fields = $res->GetNext()) {
	  $prof_id = $ar_fields["ID"];
	    $arResult["arUser_prof"]["TYPE"] = $ar_fields["PROPERTY_TYPE_VALUE"];
		$arResult["arUser_prof"]["TYPE_P4"] = $ar_fields["PROPERTY_TYPE_P4_VALUE"];
		$arResult["arUser_prof"]["NAME"] = $ar_fields["NAME"];
		$arResult["arUser_prof"]["BDATE"] = explode(" ",$ar_fields["PROPERTY_BDATE_VALUE"])[0];
		$arResult["arUser_prof"]["CODE"] = $ar_fields["CODE"];
		$arResult["arUser_prof"]["CITY"] = $ar_fields["PROPERTY_REGION_VALUE"];
		$arResult["arUser_prof"]["COUNTRY"] = $ar_fields["PROPERTY_COUNTRY_VALUE"];
		$arResult["arUser_prof"]["STAGE"] = $ar_fields["PROPERTY_STAGE_ENUM_ID"];
		$arResult["arUser_prof"]["SEX"] = $ar_fields["PROPERTY_SEX_ENUM_ID"];
		$arResult["arUser_prof"]["LANGUAGE"] = $ar_fields["PROPERTY_LANGUAGE_ENUM_ID"];
		$arResult["arUser_prof"]["DETAIL_PICTURE"] = $ar_fields["DETAIL_PICTURE"];
	}
	
}

if($_SERVER["REQUEST_METHOD"]=="POST" && ($_REQUEST["save"] <>'' || $_REQUEST["apply"] <> '') && check_bitrix_sessid()) {

	if(COption::GetOptionString('main', 'use_encrypted_auth', 'N') == 'Y') {
		$sec = new CRsaSecurity();
		if(($arKeys = $sec->LoadKeys())) {
			$sec->SetKeys($arKeys);
			$errno = $sec->AcceptFromForm(array('NEW_PASSWORD', 'NEW_PASSWORD_CONFIRM'));
			if($errno == CRsaSecurity::ERROR_SESS_CHECK)
				$strError .= GetMessage("main_profile_sess_expired").'<br />';
			elseif($errno < 0)
				$strError .= GetMessage("main_profile_decode_err", array("#ERRCODE#"=>$errno)).'<br />';
		}
	}

	if($strError=='') {
	
		$bOk = false;
		$isCustomer = false;
		$obUser = new CUser;
	
		$arPERSONAL_PHOTO = $_FILES["PERSONAL_PHOTO"];
		$arWORK_LOGO = $_FILES["WORK_LOGO"];
	
		$rsUser = CUser::GetByID($arResult["ID"]);
		$arUser = $rsUser->Fetch();

		if($arUser) {
		
			$arPERSONAL_PHOTO["old_file"] = $arUser["PERSONAL_PHOTO"];
			$arPERSONAL_PHOTO["del"] = $_REQUEST["PERSONAL_PHOTO_del"];
	
			$arWORK_LOGO["old_file"] = $arUser["WORK_LOGO"];
			$arWORK_LOGO["del"] = $_REQUEST["WORK_LOGO_del"];

			$isCustomer = $arUser['UF_USR']==USR_CUSTOMER;

		}

		$arFields = array(
			"NAME" => $_REQUEST["NAME"],
			"LAST_NAME" => $_REQUEST["LAST_NAME"],
			"PERSONAL_PROFESSION" => $_REQUEST["PERSONAL_PROFESSION"],
			"SECOND_NAME" => $_REQUEST["PROFILE_NAME"],
			"EMAIL" => $_REQUEST["EMAIL"],
			"LOGIN" => $_REQUEST["LOGIN"],
			"PERSONAL_PROFESSION" => $_REQUEST["PERSONAL_PROFESSION"],
			"PERSONAL_WWW" => $_REQUEST["PERSONAL_WWW"],
			"PERSONAL_ICQ" => $_REQUEST["PERSONAL_ICQ"],
			"PERSONAL_GENDER" => $_REQUEST["PERSONAL_GENDER"],
			"PERSONAL_BIRTHDAY" => $_REQUEST["BDATE"],
			"BDATE" => $_REQUEST["BDATE"],
			"PERSONAL_PHOTO" => $arPERSONAL_PHOTO,
			"PERSONAL_PHONE" => $_REQUEST["PERSONAL_PHONE"],
			"PERSONAL_FAX" => $_REQUEST["PERSONAL_FAX"],
			"PERSONAL_MOBILE" => $_REQUEST["PERSONAL_MOBILE"],
			"PERSONAL_PAGER" => $_REQUEST["PERSONAL_PAGER"],
			"PERSONAL_STREET" => $_REQUEST["PERSONAL_STREET"],
			"PERSONAL_MAILBOX" => $_REQUEST["PERSONAL_MAILBOX"],
			"PERSONAL_CITY" => $_REQUEST["PROF_PERSONAL_CITY"],
			"PERSONAL_STATE" => $_REQUEST["PERSONAL_STATE"],
			"PERSONAL_ZIP" => $_REQUEST["PERSONAL_ZIP"],
			"PERSONAL_COUNTRY" => $_REQUEST["PERSONAL_COUNTRY"],
			"PERSONAL_NOTES" => $_REQUEST["PERSONAL_NOTES"],
			"WORK_COMPANY" => $_REQUEST["WORK_COMPANY"],
			"WORK_DEPARTMENT" => $_REQUEST["WORK_DEPARTMENT"],
			"WORK_POSITION" => $_REQUEST["WORK_POSITION"],
			"WORK_WWW" => $_REQUEST["WORK_WWW"],
			"WORK_PHONE" => $_REQUEST["WORK_PHONE"],
			"WORK_FAX" => $_REQUEST["WORK_FAX"],
			"WORK_PAGER" => $_REQUEST["WORK_PAGER"],
			"WORK_STREET" => $_REQUEST["WORK_STREET"],
			"WORK_MAILBOX" => $_REQUEST["WORK_MAILBOX"],
			"WORK_CITY" => $_REQUEST["WORK_CITY"],
			"WORK_STATE" => $_REQUEST["WORK_STATE"],
			"WORK_ZIP" => $_REQUEST["WORK_ZIP"],
			"WORK_COUNTRY" => $_REQUEST["WORK_COUNTRY"],
			"WORK_PROFILE" => $_REQUEST["WORK_PROFILE"],
			"WORK_LOGO" => $arWORK_LOGO,
			"WORK_NOTES" => $_REQUEST["WORK_NOTES"],
			"AUTO_TIME_ZONE" => ($_REQUEST["AUTO_TIME_ZONE"] == "Y" || $_REQUEST["AUTO_TIME_ZONE"] == "N"? $_REQUEST["AUTO_TIME_ZONE"] : ""),
		  	"PROFILE_NAME" => $_REQUEST["PROFILE_NAME"],
			"CAT_PROF" => $_REQUEST["CAT_PROF"],
			"PROF_PERSONAL_CITY" => $_REQUEST["PROF_PERSONAL_CITY"],
			"PROF_PERSONAL_STATE" => $_REQUEST["PROF_PERSONAL_STATE"],
			"SEX" => isset($_REQUEST["male"]) ? 19 : (isset($_REQUEST["female"]) ? 20 : ""),
			"LANGUAGE" => $_REQUEST["LANGUAGE"],
			"TYPE" => isset($_REQUEST["SINGLE_PROFILE"]) ? ProfileTypeHelper::DEFAULT_ID_UB : "", // Объединенный профиль
			"UF_SOCIAL" => $_REQUEST["UF_SOCIAL"],
			"UF_P4_ADM_NEWS" => $_REQUEST["UF_P4_ADM_NEWS"],
			"UF_P4_CC_NOTIF" => $_REQUEST["UF_P4_CC_NOTIF"]
		);		
		
		if(isset($_REQUEST["TIME_ZONE"]))
			$arFields["TIME_ZONE"] = $_REQUEST["TIME_ZONE"];
	
		if($arUser) {
			if($arUser['EXTERNAL_AUTH_ID'] <> '') {
				$arFields['EXTERNAL_AUTH_ID'] = $arUser['EXTERNAL_AUTH_ID'];
			}
		}
	
		if($USER->IsAdmin()) {
			$arFields["ADMIN_NOTES"] = $_REQUEST["ADMIN_NOTES"];
		}
		if (strlen($_REQUEST["OLD_PASSWORD"])>0){
		$password = $_REQUEST["OLD_PASSWORD"]; //тут мы правильно получили текущий пароль, который ввел пользователи и сделали с ним все необходимые действия
		$hash = $USER->GetParam("PASSWORD_HASH"); //получим хеш пароля
		$salt = substr($hash, 0, strlen($hash) - 32); //он состоит из соли
		$db_password = substr($hash, -32); //и md5 хеша

		if(md5($salt.$password) == $db_password){
			if($_REQUEST["NEW_PASSWORD"] <> '') {
				if (strlen($_REQUEST["NEW_PASSWORD"]) >= 6) {
					$arFields["PASSWORD"] = $_REQUEST["NEW_PASSWORD"];
					$arFields["CONFIRM_PASSWORD"] = $_REQUEST["NEW_PASSWORD"];
				} else {
					$arResult['ERROR_LESS_SYMBOLS'] = "Y";
				};
			} 
		} else {
			$arResult['ERROR_OLD_PASSWORD'] = "Y";
		}; 
		};

		$USER_FIELD_MANAGER->EditFormAddFields("USER", $arFields);
	
		if(!$obUser->Update($arResult["ID"], $arFields, true))
			$strError .= $obUser->LAST_ERROR;
	}
	
	if($strError == '')	{ // Обрабатываем символьный код (адрес страницы)
			
		if (strlen($_REQUEST['PROFILE_CODE'])>0)
		  $trans = Cutil::translit($_REQUEST["PROFILE_CODE"],"ru"); //  приводим к битриксовому виду (и исправляем ошибки ручного ввода)
		else
		  $trans = Cutil::translit($_REQUEST["PROFILE_NAME"],"ru");
	
		$arCodeFiler = $prof_id ? Array("IBLOCK_ID"=>2, "CODE"=>$trans, "!ID" => $prof_id) : Array("CODE"=>$trans);		
		$res = CIBlockElement::GetList(Array(), $arCodeFiler);
		if($ar_fields = $res->GetNext()) {
			$strError .= GetMessage("PAGE_ADDRESS_IS_NOT_AVAILABLE_SELECT_A_DIFFERENT_VALUE").'<br/>';
		}

		$arFields['CODE'] = $trans;
	}	
	
	if($strError == '' && !$isCustomer) {
	
		// Заполним Профиль в ИБ
	  $el = new CIBlockElement;
	  $PROP = array();
	  $PROP[62] = $arFields["PROF_PERSONAL_CITY"]; 
	  $PROP[107] = $arFields["PERSONAL_COUNTRY"];
	  $PROP[109] = $usr_id;
	  $PROP[38] = $arFields["SEX"];
	  $PROP[61] = $arFields["LANGUAGE"];
	  $PROP[34] = $arFields["TYPE"];
	  $PROP[35] = $arFields["NAME"];
	  $PROP[36] = $arFields["LAST_NAME"];
		$PROP[37] = $arFields['BDATE'];
		$PROP[39] = getAgeByBirthDate($arFields['BDATE']);

	  $arLoadProductArray = Array(  
	    "MODIFIED_BY"    => $USER->GetID(),
			//"IBLOCK_SECTION_ID" => $arFields["CAT_PROF"],
			"IBLOCK_ID"      => 2,  
			/* "PROPERTY_VALUES"=> $PROP, эдило-мудило - так нельзя тут! */
			"CODE"           => $arFields['CODE'],
			"ACTIVE"         => "Y"
		);
				
		if($prof_id) {
		  //unset($arLoadProductArray["CODE"]);
		  $res = $el->Update($prof_id, $arLoadProductArray);
		  CIBlockElement::SetPropertyValuesEx($prof_id, 2, $PROP);
		  if($res) {
		    $arResult["arUser_prof"]["NAME"] = $arFields["PROFILE_NAME"];
				$arResult["arUser_prof"]["CITY"] = $arFields["PROF_PERSONAL_CITY"];
				$arResult["arUser_prof"]["COUNTRY"] = $arFields["PERSONAL_COUNTRY"];
				$arResult["arUser_prof"]["SEX"] = $arFields["SEX"];
				$arResult["arUser_prof"]["BDATE"] = $arFields["BDATE"];
				$arResult["arUser_prof"]["TYPE"] = $arFields["TYPE"];
				$arResult["arUser_prof"]["LANGUAGE"] = $arFields["LANGUAGE"];
				$arResult["arUser_prof"]["CODE"] = $arFields["CODE"];
				
				$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues(2, $prof_id);
				$ipropValues->clearValues();
				
		  }
		}
		else {
		
			$rsUser = CUser::GetByID($usr_id);
			if ( ($arUser=$rsUser->Fetch()) && $arUser["PERSONAL_PHOTO"]>0) { // Копируем аватар в профиль
				$arLoadProductArray['DETAIL_PICTURE'] = CFile::MakeFileArray($arUser["PERSONAL_PHOTO"]);
			}
		
			$PROP[34] = ProfileTypeHelper::DEFAULT_ID_UB; // Тип аккаунта
			$arLoadProductArray['PROPERTY_VALUES'] = $PROP;
		
			if($PRODUCT_ID = $el->Add($arLoadProductArray)) {
				$arResult["PROF_ID"] = $PRODUCT_ID;
				// CIBlockElement::SetPropertyValuesEx($PRODUCT_ID, 2, $PROP);
				$res = CIBlockElement::GetList(array(), array("IBLOCK_ID"=>2, "ID"=>$PRODUCT_ID), false, false,
					array("IBLOCK_ID", "ID", "NAME", "PROPERTY_REGION", "", "PROPERTY_COUNTRY",  "PROPERTY_SEX", "PROPERTY_LANGUAGE"));
				if($ar_fields = $res->GetNext()) {
					$arResult["arUser_prof"]["NAME"] = $ar_fields["NAME"];
					$arResult["arUser_prof"]["CITY"] = $ar_fields["PROPERTY_REGION_VALUE"];
					$arResult["arUser_prof"]["COUNTRY"] = $ar_fields["PROPERTY_COUNTRY_VALUE"];
					$arResult["arUser_prof"]["SEX"] = $ar_fields["PROPERTY_SEX_ENUM_ID"];
					$arResult["arUser_prof"]["LANGUAGE"] = $ar_fields["PROPERTY_LANGUAGE_ENUM_ID"];
					$arResult["arUser_prof"]["CODE"] = $arFields["CODE"];
				}		  				
				$prof_id = $PRODUCT_ID;
			}
			
		}
		$obUser->Update($arResult["ID"], $arFields, true);
	
		
		
		// Найдём раздел портфолио пользователя, если нет, создадим
		$portf_f = false;
		// if ($PRODUCT_ID>0) $prof_id = $PRODUCT_ID;
		
		$db_list = CIBlockSection::GetList(Array(), array("IBLOCK_ID"=>4, "DEPTH_LEVEL"=>1), false, array("IBLOCK_ID", "ID", "UF_PORTF_USR"));
		while($ar_result = $db_list->GetNext()) {
			if($ar_result['UF_PORTF_USR']==$prof_id) { $portf_f = true; $s_name=$ar_result["NAME"]; $s_id=$ar_result["ID"]; }
		}

		if (!$portf_f) {
			$bs = new CIBlockSection;
			$ID = $bs->Add(array("IBLOCK_ID"=>4, "ACTIVE"=>"Y", "NAME"=>$arResult["arUser_prof"]["NAME"], "UF_PORTF_USR"=>$prof_id));
			// $ID2 = $bs->Add(array("IBLOCK_ID"=>4, "ACTIVE"=>"Y", "NAME"=>"Фотоальбом",  "IBLOCK_SECTION_ID" => $ID));
		}
		elseif($s_name!=$arResult["arUser_prof"]["NAME"]) {
			$bs = new CIBlockSection;
			$res = $bs->Update($s_id, array("NAME"=>$arResult["arUser_prof"]["NAME"]));
		}	    

	}


	if($strError == '' && !$isCustomer)
	{
		if (CModule::IncludeModule("forum"))
		{
			$APPLICATION->ResetException();
			$arforumFields = array(
				"SHOW_NAME"		=> ($_REQUEST["forum_SHOW_NAME"]=="Y") ? "Y" : "N",
				"DESCRIPTION"	=> $_REQUEST["forum_DESCRIPTION"],
				"INTERESTS"		=> $_REQUEST["forum_INTERESTS"],
				"SIGNATURE"		=> $_REQUEST["forum_SIGNATURE"],
				"AVATAR"		=> $_FILES["forum_AVATAR"]
			);

			$arforumFields["AVATAR"]["del"] = $_REQUEST["forum_AVATAR_del"];

			$ar_res = CForumUser::GetByUSER_ID($arResult["ID"]);
			if ($ar_res)
			{
				$arforumFields["AVATAR"]["old_file"] = $ar_res["AVATAR"];
				$FORUM_USER_ID = IntVal($ar_res["ID"]);
				$FORUM_USER_ID1 = CForumUser::Update($FORUM_USER_ID, $arforumFields);
				$forum_res = (IntVal($FORUM_USER_ID1)>0);
			}
			else
			{
				$arforumFields["USER_ID"] = $arResult["ID"];
				$FORUM_USER_ID = CForumUser::Add($arforumFields);
				$forum_res = (IntVal($FORUM_USER_ID)>0);
			}

			if($ex = $APPLICATION->GetException())
				$strError = $ex->GetString();
		}
	}

	// Обработка блога
	if($strError == '' && isset($_REQUEST["SINGLE_PROFILE"]))
	{
		$group_id = SITE_ID == "p4" ? "6" : "3";
		if (CModule::IncludeModule("blog"))
		{
			// Персональный блог
			$arBlog = CBlog::GetByOwnerID($arResult['ID'],array(intval($group_id)));
			if(is_array($arBlog)) {
				// обновляем
				$arBlogFields = array(
				    "NAME" => $arFields["NAME"]." ".$arFields["LAST_NAME"],
				    "URL" => $arFields['CODE'],
				    "=DATE_UPDATE" => $DB->CurrentTimeFunction(),
				);
				
				$updateBlogID = CBlog::Update($arBlog['ID'], $arBlogFields);
				
				if(intval($updateBlogID)>0)
				{
				}
				else {
			    if ($ex = $APPLICATION->GetException())
						$strError .= GetMessage("FAILED_TO_CHANGE_THE_BLOG").': '.$ex->GetString().'<br/>';
					else
						$strError .= GetMessage("FAILED_TO_CHANGE_THE_BLOG").'<br/>';
				}

			}
			else {

				// создаем блог
				$arBlogFields = array(
				    "NAME" => $arFields["NAME"]." ".$arFields["LAST_NAME"],
				    "DESCRIPTION" => '',
				    "GROUP_ID" => $group_id,
				    "ENABLE_COMMENTS" => 'Y',
				    "EMAIL_NOTIFY" => 'Y',
				    "ENABLE_RSS" => 'N',
				    "URL" => $arFields['CODE'],
				    "ACTIVE" => "Y",
				    "OWNER_ID" => $arResult['ID']
				);

				$newBlogID = CBlog::Add($arBlogFields);
		
				if(intval($newBlogID)>0)
				{
					// даем права на посты
					$arBlogPerms = array(
						"1" => BLOG_PERMS_READ,
						"2" => BLOG_PERMS_READ
					);
					CBlog::SetBlogPerms($newBlogID, $arBlogPerms, BLOG_PERMS_POST);
		
					// даем права на комменты
					$arBlogPerms = array(
						"1" => BLOG_PERMS_READ,
						"2" => BLOG_PERMS_WRITE
					);
					CBlog::SetBlogPerms($newBlogID, $arBlogPerms, BLOG_PERMS_COMMENT);
					
				}
				else
				{
			    if ($ex = $APPLICATION->GetException())
						$strError .= GetMessage("FAILED_TO_CREATE_THE_BLOG").': '.$ex->GetString().'<br/>';
					else
						$strError .= GetMessage("FAILED_TO_CREATE_THE_BLOG").'<br/>';
				}
			}
				
			// Пользователь блога
			$APPLICATION->ResetException();
			$arblogFields = array(
				"ALIAS" => $arFields["NAME"]." ".$arFields["LAST_NAME"],
				"DESCRIPTION" => $_REQUEST["blog_DESCRIPTION"],
				"INTERESTS" => $_REQUEST["blog_INTERESTS"],
				"AVATAR" => $_FILES["blog_AVATAR"]
			);
			$arblogFields["AVATAR"]["del"] = $_REQUEST["blog_AVATAR_del"];

			$ar_res = CBlogUser::GetByID($arResult["ID"], BLOG_BY_USER_ID);
				
			if ($ar_res)
			{
				$arblogFields["AVATAR"]["old_file"] = $ar_res["AVATAR"];
				$BLOG_USER_ID = intval($ar_res["ID"]);

				$BLOG_USER_ID1 = CBlogUser::Update($BLOG_USER_ID, $arblogFields);
				$blog_res = (intval($BLOG_USER_ID1)>0);
			}
			else
			{
				$arblogFields["USER_ID"] = $arResult["ID"];
				$arblogFields["~DATE_REG"] = CDatabase::CurrentTimeFunction();

				$BLOG_USER_ID = CBlogUser::Add($arblogFields);
				$blog_res = (intval($BLOG_USER_ID)>0);
			}

			if($ex = $APPLICATION->GetException())
				$strError = $ex->GetString();
		}
	}

	if(CModule::IncludeModule("learning") && $strError == '')
	{
		$arStudentFields = array(
			"RESUME" => $_REQUEST["student_RESUME"],
			"PUBLIC_PROFILE" => ($_REQUEST["student_PUBLIC_PROFILE"]=="Y" ? "Y" : "N")
		);

		$ar_res = CStudent::GetList(array(), array("USER_ID" => $arResult["ID"]));

		if ($arStudent = $ar_res->Fetch())
		{
			$learning_res = CStudent::Update($arResult["ID"], $arStudentFields);
		}
		else
		{
			$arStudentFields["USER_ID"] = $arResult["ID"];
			$STUDENT_USER_ID = CStudent::Add($arStudentFields);
			$learning_res = (intval($STUDENT_USER_ID)>0);
		}
	}

	if($strError == '')
	{
		if($arParams['SEND_INFO'] == 'Y')
			$obUser->SendUserInfo($arResult["ID"], SITE_ID, GetMessage("ACCOUNT_UPDATE"), true);

		$bOk = true;
	}
	LocalRedirect(SITE_DIR."auth/");
}

$rsUser = CUser::GetByID($arResult["ID"]);

if(!($arResult["arUser"] = $rsUser->GetNext(false)))
{
	$arResult["ID"] = 0;
}
elseif ($arResult["arUser"]['UF_USR']==USR_CUSTOMER)
	$arResult["arUser_prof"]["CITY"] = intval($arResult["arUser"]["PERSONAL_CITY"]);

// Найдём Регион / Штат
$res = CIBlockElement::GetByID($arResult["arUser_prof"]["CITY"]);
if($ar_res = $res->GetNext()) $arResult["arUser_prof"]["RN"] = $ar_res["IBLOCK_SECTION_ID"];
// Определим, не страна ли это
$res = CIBlockSection::GetByID($arResult["arUser_prof"]["RN"]);
if($ar_res = $res->GetNext()) {
  if($ar_res["DEPTH_LEVEL"]<=1) $arResult["arUser_prof"]["RN"] = "";
}

if (CModule::IncludeModule("blog"))
{
	$arResult["INCLUDE_BLOG"] = "Y";

	$arResult["arBlogUser"] = array();
	$arBlg = CBlogUser::GetByID($arResult["ID"], BLOG_BY_USER_ID);
	if(is_array($arBlg))
	{
		foreach($arBlg as $key => $val)
		{
			$arResult["arBlogUser"]["~".$key] = $val;
			$arResult["arBlogUser"][$key] = htmlspecialcharsbx($val);
		}
	}
	
	if (!isset($arResult["arBlogUser"]["ALLOW_POST"]) || ($arResult["arBlogUser"]["ALLOW_POST"]!="Y" && $arResult["arBlogUser"]["ALLOW_POST"]!="N"))
		$arResult["arBlogUser"]["ALLOW_POST"] = "Y";
}

if (CModule::IncludeModule("forum"))
{
	$arResult["INCLUDE_FORUM"] = "Y";

	$rsForumUser = CForumUser::GetList(array(), array("USER_ID" => $arResult["ID"]));
	$arResult["arForumUser"] = $rsForumUser->GetNext(false);
	if (!isset($arResult["arForumUser"]["ALLOW_POST"]) || ($arResult["arForumUser"]["ALLOW_POST"]!="Y" && $arResult["arForumUser"]["ALLOW_POST"]!="N"))
		$arResult["arForumUser"]["ALLOW_POST"] = "Y";
}

if (CModule::IncludeModule("learning"))
{
	$arResult["INCLUDE_LEARNING"] = "Y";

	$dbStudent = CStudent::GetList(array(), array("USER_ID" => $arResult["ID"]));
	$arResult["arStudent"] = $dbStudent->GetNext();
	if (!isset($arResult["arStudent"]["PUBLIC_PROFILE"]) || ($arResult["arStudent"]["PUBLIC_PROFILE"]!="Y" && $arResult["arStudent"]["PUBLIC_PROFILE"]!="N"))
		$arResult["arStudent"]["PUBLIC_PROFILE"] = "N";
}

if($strError <> '')
{
	foreach($_POST as $k=>$val)
	{
		if(!is_array($val))
		{
			$arResult["arUser"][$k] = htmlspecialcharsex($val);
			$arResult["arForumUser"][$k] = htmlspecialcharsex($val);
		}
		else
		{
			$arResult["arUser"][$k] = $val;
			$arResult["arForumUser"][$k] = $val;
		}
	}
}

$arResult["FORM_TARGET"] = $APPLICATION->GetCurPage();

$arResult["arUser"]["PERSONAL_PHOTO_INPUT"] = CFile::InputFile("PERSONAL_PHOTO", 20, $arResult["arUser"]["PERSONAL_PHOTO"], false, 0, "IMAGE");

if (strlen($arResult["arUser"]["PERSONAL_PHOTO"])>0)
	$arResult["arUser"]["PERSONAL_PHOTO_HTML"] = CFile::ShowImage($arResult["arUser"]["PERSONAL_PHOTO"], 150, 150, "border=0", "", true);

$arResult["arUser"]["WORK_LOGO_INPUT"] = CFile::InputFile("WORK_LOGO", 20, $arResult["arUser"]["WORK_LOGO"], false, 0, "IMAGE");

if (strlen($arResult["arUser"]["WORK_LOGO"])>0)
	$arResult["arUser"]["WORK_LOGO_HTML"] = CFile::ShowImage($arResult["arUser"]["WORK_LOGO"], 150, 150, "border=0", "", true);

$arResult["arUser"]["WORK_LOGO_INPUT"] = CFile::InputFile("WORK_LOGO", 20, $arResult["arUser"]["WORK_LOGO"], false, 0, "IMAGE");

if (strlen($arResult["arUser"]["WORK_LOGO"])>0)
	$arResult["arUser"]["WORK_LOGO_HTML"] = CFile::ShowImage($arResult["arUser"]["WORK_LOGO"], 150, 150, "border=0", "", true);

$arResult["arForumUser"]["AVATAR_INPUT"] = CFile::InputFile("forum_AVATAR", 20, $arResult["arForumUser"]["AVATAR"], false, 0, "IMAGE");

if (strlen($arResult["arForumUser"]["AVATAR"])>0)
	$arResult["arForumUser"]["AVATAR_HTML"] = CFile::ShowImage($arResult["arForumUser"]["AVATAR"], 150, 150, "border=0", "", true);

$arResult["arBlogUser"]["AVATAR_INPUT"] = CFile::InputFile("blog_AVATAR", 20, $arResult["arBlogUser"]["AVATAR"], false, 0, "IMAGE");

if (strlen($arResult["arBlogUser"]["AVATAR"])>0)
	$arResult["arBlogUser"]["AVATAR_HTML"] = CFile::ShowImage($arResult["arBlogUser"]["AVATAR"], 150, 150, "border=0", "", true);

$arResult["IS_ADMIN"] = $USER->IsAdmin();


if (CModule::IncludeModule("iblock")) {
  // Найдём массив стран
  $ar_ref = array(); $ar_ref_id = array();
  $db_list = CIBlockSection::GetList(Array("sort"=>"asc","name"=>"asc"), Array("IBLOCK_ID"=>6, "ACTIVE"=>"Y", "DEPTH_LEVEL"=>1));
  while($ar_result = $db_list->GetNext())  {
     $ar_ref[] = $ar_result['NAME'];
     $ar_ref_id[] = $ar_result['ID'];	 
  }
  $arCountries = array('reference_id'=>$ar_ref_id, 'reference'=>$ar_ref);
  
  // Найдём массив Опыт работы
  $ar_stage = array(); $ar_stage_n = array(); $ar_stage_id = array();
  $property_enums = CIBlockPropertyEnum::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>2, "CODE"=>"STAGE"));
  if (SITE_ID == "dv")
	{$ar_stage_n = array('less than 1 year',
						'1-2 years',
						'3-5 years',
						'more than 5 years',
						);
	while($enum_fields = $property_enums->GetNext()){  
			$ar_stage_id[] = $enum_fields["ID"];	
	};
	}
  else
	{while($enum_fields = $property_enums->GetNext()){  
    $ar_stage_n[] = htmlspecialchars_decode($enum_fields["VALUE"]);
    $ar_stage_id[] = $enum_fields["ID"];	
	};
	};
	$ar_stage = array('reference_id'=>$ar_stage_id, 'reference'=>$ar_stage_n);
}

$arResult["arUser_prof"]["ARSTAGE"] = SelectBoxFromArray("STAGE", $ar_stage, $arResult["arUser_prof"]["STAGE"], " ", "data-placeholder='$exper'");

$arResult["COUNTRY_SELECT"] = SelectBoxFromArray("PERSONAL_COUNTRY", $arCountries, $arResult["arUser"]["PERSONAL_COUNTRY"],
	" "/*GetMessage("USER_DONT_KNOW")*/, "data-placeholder='$country' data-required='desc-country'");

$arResult["COUNTRY_SELECT_WORK"] = SelectBoxFromArray("WORK_COUNTRY", $arCountries, $arResult["arUser"]["WORK_COUNTRY"], GetMessage("USER_DONT_KNOW"));

$arResult["strProfileError"] = $strError;
$arResult["BX_SESSION_CHECK"] = bitrix_sessid_post();

$arResult["DATE_FORMAT"] = CLang::GetDateFormat("SHORT");

$arResult["COOKIE_PREFIX"] = COption::GetOptionString("main", "cookie_name", "BITRIX_SM");
if (strlen($arResult["COOKIE_PREFIX"]) <= 0) 
	$arResult["COOKIE_PREFIX"] = "BX";

// ********************* User properties ***************************************************
$arResult["USER_PROPERTIES"] = array("SHOW" => "N");
if (!empty($arParams["USER_PROPERTY"]))
{
	$arUserFields = $USER_FIELD_MANAGER->GetUserFields("USER", $arResult["ID"], LANGUAGE_ID);
	if (count($arParams["USER_PROPERTY"]) > 0)
	{
		foreach ($arUserFields as $FIELD_NAME => $arUserField)
		{
			if (!in_array($FIELD_NAME, $arParams["USER_PROPERTY"]))
				continue;
			$arUserField["EDIT_FORM_LABEL"] = strLen($arUserField["EDIT_FORM_LABEL"]) > 0 ? $arUserField["EDIT_FORM_LABEL"] : $arUserField["FIELD_NAME"];
			$arUserField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arUserField["EDIT_FORM_LABEL"]);
			$arUserField["~EDIT_FORM_LABEL"] = $arUserField["EDIT_FORM_LABEL"];
			$arResult["USER_PROPERTIES"]["DATA"][$FIELD_NAME] = $arUserField;
		}
	}
	if (!empty($arResult["USER_PROPERTIES"]["DATA"]))
		$arResult["USER_PROPERTIES"]["SHOW"] = "Y";
	$arResult["bVarsFromForm"] = ($strError == ''? false : true);
}
// ******************** /User properties ***************************************************

if($arParams["SET_TITLE"] == "Y")
	$APPLICATION->SetTitle(GetMessage("PROFILE_DEFAULT_TITLE"));

if($bOk) 
	$arResult['DATA_SAVED'] = 'Y';

//time zones
$arResult["TIME_ZONE_ENABLED"] = CTimeZone::Enabled();
if($arResult["TIME_ZONE_ENABLED"])
	$arResult["TIME_ZONE_LIST"] = CTimeZone::GetZones();

//secure authorization
$arResult["SECURE_AUTH"] = false;
if(!CMain::IsHTTPS() && COption::GetOptionString('main', 'use_encrypted_auth', 'N') == 'Y')
{
	$sec = new CRsaSecurity();
	if(($arKeys = $sec->LoadKeys()))
	{
		$sec->SetKeys($arKeys);
		$sec->AddToForm('form1', array('NEW_PASSWORD', 'NEW_PASSWORD_CONFIRM'));
		$arResult["SECURE_AUTH"] = true;
	}
}

//socialservices
$arResult["SOCSERV_ENABLED"] = IsModuleInstalled("socialservices");

$templateName = $arResult["arUser"]['UF_USR']==USR_CUSTOMER?'template_customer':
		(isCompany()?'template_company':'template_profi');

$this->IncludeComponentTemplate($templateName);
//echo '<pre>'; print_r($strError); echo '</pre>';?>

Zerion Mini Shell 1.0