%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.user_profile_edit/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.user_profile_edit/component.php

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

/**
 * Bitrix vars
 * @global CUser $USER
 * @global CMain $APPLICATION
 * @global CDatabase $DB
 * @global CUserTypeManager $USER_FIELD_MANAGER
 * @global CCacheManager $CACHE_MANAGER
 * @param array $arParams
 * @param array $arResult
 * @param CBitrixComponent $this
 */

global $USER_FIELD_MANAGER, $CACHE_MANAGER;

if (!CModule::IncludeModule("socialnetwork"))
{
	ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
	return;
}

$arParams["ID"] = IntVal($arParams["ID"]);
if(strLen($arParams["USER_VAR"])<=0)
	$arParams["USER_VAR"] = "id";
if(strLen($arParams["PAGE_VAR"])<=0)
	$arParams["PAGE_VAR"] = "page";
$arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
if(strlen($arParams["PATH_TO_USER"])<=0)
	$arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");
if(strlen($arParams["PATH_TO_USER_EDIT"])<=0)
	$arParams["PATH_TO_USER_EDIT"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#&mode=edit");
$arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);

$arParams['IS_FORUM'] = CModule::IncludeModule('forum') ? 'Y' : 'N';
$arParams['IS_BLOG'] = (CModule::IncludeModule('blog') && !IsModuleInstalled("intranet")) ? 'Y' : 'N';

TrimArr($arParams['USER_FIELDS_PERSONAL']);
TrimArr($arParams['USER_FIELDS_CONTACT']);
TrimArr($arParams['USER_FIELDS_MAIN']);
TrimArr($arParams['USER_PROPERTY_PERSONAL']);
TrimArr($arParams['USER_PROPERTY_CONTACT']);
TrimArr($arParams['USER_PROPERTY_MAIN']);
TrimArr($arParams['EDITABLE_FIELDS']);

if (!is_array($arParams['EDITABLE_FIELDS']) || count($arParams['EDITABLE_FIELDS']) <= 0)
{
	$arParams['EDITABLE_FIELDS'] = array('LOGIN', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'EMAIL', 'TIME_ZONE', 'PERSONAL_BIRTHDAY', 'PERSONAL_CITY', 'PERSONAL_COUNTRY', 'PERSONAL_FAX', 'PERSONAL_GENDER', 'PERSONAL_ICQ', 'PERSONAL_MAILBOX', 'PERSONAL_MOBILE', 'PERSONAL_PAGER', 'PERSONAL_PHONE', 'PERSONAL_PHOTO', 'PERSONAL_STATE', 'PERSONAL_STREET', 'PERSONAL_WWW', 'PERSONAL_ZIP');

	if ($arParams['IS_FORUM'] == 'Y')
		$arParams['EDITABLE_FIELDS'] = array_merge($arParams['EDITABLE_FIELDS'], array('FORUM_SHOW_NAME', 'FORUM_DESCRIPTION', 'FORUM_INTERESTS', 'FORUM_SIGNATURE', 'FORUM_AVATAR', 'FORUM_HIDE_FROM_ONLINE', 'FORUM_SUBSC_GROUP_MESSAGE', 'FORUM_SUBSC_GET_MY_MESSAGE'));

	if ($arParams['IS_BLOG'] == 'Y')
		$arParams['EDITABLE_FIELDS'] = array_merge($arParams['EDITABLE_FIELDS'], array('BLOG_ALIAS', 'BLOG_DESCRIPTION', 'BLOG_INTERESTS', 'BLOG_AVATAR', 'BLOG_SIGNATURE'));
}
$arResult["arSocServ"] = array();
if (CModule::IncludeModule("socialservices"))
{
	$oAuthManager = new CSocServAuthManager();
	$arResult["arSocServ"] = $oAuthManager->GetActiveAuthServices(array());
	if (!empty($arResult["arSocServ"]))
	{
		$arParams['EDITABLE_FIELDS'][] = 'SOCSERVICES';
	}
}

if(in_array('TIME_ZONE', $arParams['EDITABLE_FIELDS']))
{
	$arParams['EDITABLE_FIELDS'][] = 'AUTO_TIME_ZONE';
}

$arResult['CONTEXT'] = \Bitrix\Socialnetwork\ComponentHelper::getUrlContext();
$arParams['PATH_TO_USER'] = \Bitrix\Socialnetwork\ComponentHelper::addContextToUrl($arParams['PATH_TO_USER'], $arResult["CONTEXT"]);

$arResult["urlToCancel"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"]));

$CurrentUserPerms = CSocNetUserPerms::InitUserPerms(
	$USER->GetID(),
	$arParams["ID"],
	CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, (CModule::IncludeModule("bitrix24") && CBitrix24::IsPortalAdmin($USER->GetID()) ? false : true))
);

$dbUser = CUser::GetByID($arParams["ID"]);
$arResult["User"] = $dbUser->GetNext();

if (in_array($arResult["User"]["EXTERNAL_AUTH_ID"], \Bitrix\Socialnetwork\ComponentHelper::checkPredefinedAuthIdList(array('bot', 'imconnector', 'replica'))))
{
	$CurrentUserPerms["Operations"]["modifyuser_main"] = false;
	$CurrentUserPerms["Operations"]["modifyuser"] = false;
}

if (
	!$CurrentUserPerms["Operations"]["modifyuser"]
	|| !$CurrentUserPerms["Operations"]["modifyuser_main"]
)
{
	$arResult["FATAL_ERROR"] = GetMessage("SONET_P_PU_NO_RIGHTS");
}

$arResult["bEdit"] = (
	!isset($arResult["FATAL_ERROR"])
	&& (
		$USER->CanDoOperation('edit_own_profile')
		|| $USER->IsAdmin()
	)
		? "Y"
		: "N"
);

//check integrator for cloud
if (
	CModule::IncludeModule("bitrix24")
	&& $arResult["User"]["ID"] != $USER->GetID()
	&& \CBitrix24::isIntegrator($USER->GetID())
	&& \CBitrix24::IsPortalAdmin($arResult["User"]["ID"])
)
{
	$arResult["bEdit"] = "N";
}

if ($arResult['bEdit'] != 'Y')
{
	$APPLICATION->AuthForm(GetMessage('SONET_P_PU_NO_RIGHTS'));
}

$arResult["User"]["IS_EMAIL"] = (
	$arResult["User"]['EXTERNAL_AUTH_ID'] == 'email'
	&& IsModuleInstalled('mail')
);

if (in_array($arResult['User']['EXTERNAL_AUTH_ID'], \Bitrix\Socialnetwork\ComponentHelper::checkPredefinedAuthIdList('email')))
{
	$arParams['EDITABLE_FIELDS'] = array_intersect($arParams['EDITABLE_FIELDS'], array("NAME", "LAST_NAME", "SECOND_NAME", "PERSONAL_PHOTO"));
}

if ($arResult['User']['EXTERNAL_AUTH_ID'])
{
	foreach ($arParams['EDITABLE_FIELDS'] as $key => $value)
	{
		if ($value == 'LOGIN' || $value == 'PASSWORD')
		{
			unset($arParams['EDITABLE_FIELDS'][$key]);
		}
	}
}
elseif (in_array('PASSWORD', $arParams['EDITABLE_FIELDS']))
{
	$arParams['EDITABLE_FIELDS'][] = 'CONFIRM_PASSWORD';
}

if(!is_array($arResult["User"]))
{
	$arResult["FATAL_ERROR"] = GetMessage("SONET_P_USER_NO_USER");
}
else
{
	$arResult["GROUPS_CAN_EDIT"] = array();

	if ($USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users'))
	{
		if($USER->CanDoOperation('edit_all_users'))
		{
			$dbGroup = CGroup::GetList(
				($by="c_sort"), 
				($order="asc"), 
				array("ACTIVE" => "Y")
			);
			while($arGroup = $dbGroup->Fetch())
			{
				$arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup;
				$arGroupsCanEditID[] = $arGroup["ID"];
			}
		}
		elseif($USER->CanDoOperation('edit_subordinate_users'))
		{
			$arGroupsCanEditID = CSocNetTools::GetSubordinateGroups();
			if (
				is_array($arGroupsCanEditID) 
				&& count($arGroupsCanEditID) > 0
			)
			{
				$dbGroup = CGroup::GetList(
					($by="c_sort"), 
					($order="asc"), 
					array(
						"ID" => implode(" | ", $arGroupsCanEditID), 
						"ACTIVE" => "Y"
					)
				);
				while($arGroup = $dbGroup->Fetch())
				{
					$arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup;
				}
			}
		}
	}
	else
	{
		foreach ($arParams['EDITABLE_FIELDS'] as $key => $value)
			if ($value == 'GROUP_ID' || $value == 'ACTIVE')
				unset($arParams['EDITABLE_FIELDS'][$key]);
	}
	
	if ($arParams['IS_FORUM'] == 'Y')
	{
		$arForumUser = CForumUser::GetByUSER_ID($arParams["ID"]);
		if (is_array($arForumUser) && count($arForumUser) > 0)
		{
			foreach ($arForumUser as $key => $value)
			{
				if (true || in_array('FORUM_'.$key, $arParams['EDITABLE_FIELDS']))
				{
					$arResult['User']['FORUM_'.$key] = htmlspecialcharsbx($value);
					$arResult['User']['~FORUM_'.$key] = $value;
				}
			}
		}
	}

	if ($arParams['IS_BLOG'] == 'Y')
	{
		$dbRes = CBlogUser::GetList(array(), array("USER_ID" => $arParams['ID']));
		if ($arBlogUser = $dbRes->Fetch())
		{
			foreach ($arBlogUser as $key => $value)
			{
				$arResult['User']['BLOG_'.$key] = htmlspecialcharsbx($value);
				$arResult['User']['~BLOG_'.$key] = $value;
			}
		}
	}

	$SONET_USER_ID = $arParams['ID'];//intval($_POST["SONET_USER_ID"]);

	if($arResult['bEdit'] == 'Y' && $_SERVER["REQUEST_METHOD"]=="POST" && strlen($_POST["submit"])>0 && check_bitrix_sessid())
	{
		if(CModule::IncludeModule("socialservices"))
		{
			$arPerm = array();
			if(is_array($_POST["SPERM"]) && isset($_POST["USER_ID_TWITTER"]) && !empty($_POST["USER_ID_TWITTER"]))
				$arPerm = $_POST["SPERM"];

			$arFields = array("PERMISSIONS" => serialize($arPerm));
			$arFields['SEND_ACTIVITY'] = 'N';
			$arFields['USER_ID'] = $SONET_USER_ID;
			if(isset($_POST["ss-send-my-actives"]) && $_POST["ss-send-my-actives"] == 'Y')
				$arFields['SEND_ACTIVITY'] = 'Y';
			if(is_array($_POST["USER_ID_TWITTER"]))
				foreach($_POST["USER_ID_TWITTER"] as $value)
					CSocServAuth::Update($value, $arFields);
			if(is_array($_POST["USER_ID_OTHER"]))
				foreach($_POST["USER_ID_OTHER"] as $value)
					CSocServAuth::Update($value, array("SEND_ACTIVITY" => $arFields['SEND_ACTIVITY'], "USER_ID" => $arFields['USER_ID']));
		}

		$arPICTURE = array();
		$picturesToDelete = array();
		$arPICTURE_WORK = array();

		//PERSONAL_PHOTO upload
		//bitrix24 template
		if (
			$_POST['PERSONAL_PHOTO_ID']
			&& intval($_POST['PERSONAL_PHOTO_ID']) > 0
			&& intval($_POST['PERSONAL_PHOTO_ID']) != intval($arResult["User"]["PERSONAL_PHOTO"])
			&& in_array($_POST['PERSONAL_PHOTO_ID'], \Bitrix\Main\UI\FileInputUtility::instance()->checkFiles(
				'PERSONAL_PHOTO_IMAGE_ID',
				array($_POST['PERSONAL_PHOTO_ID'])
			))
		)
		{
			$arPICTURE = CFile::MakeFileArray($_POST['PERSONAL_PHOTO_ID']);
			$arPICTURE["old_file"] = $arResult["User"]["PERSONAL_PHOTO"];
			$picturesToDelete[] = $_POST['PERSONAL_PHOTO_ID'];
		}
		elseif ( //usual template
			strlen($_FILES["PERSONAL_PHOTO"]["name"]) > 0
		)
		{
			$arPICTURE = $_FILES["PERSONAL_PHOTO"];
			$arPICTURE["old_file"] = $arResult["User"]["PERSONAL_PHOTO"];
		}
		else if (($_POST["PERSONAL_PHOTO_del"] ?: $_POST["PERSONAL_PHOTO_ID_del"]) <> '')
		{
			$arPICTURE["old_file"] = $arResult["User"]["PERSONAL_PHOTO"];
			$arPICTURE["del"] = ($_POST["PERSONAL_PHOTO_del"] ?: $_POST["PERSONAL_PHOTO_ID_del"]);
		}

		//WORK_LOGO upload
		//bitrix24 template
		if (
			$_POST['WORK_LOGO_ID']
			&& intval($_POST['WORK_LOGO_ID']) > 0
			&& intval($_POST['WORK_LOGO_ID']) != intval($arResult["User"]["WORK_LOGO"])
			&& in_array($_POST['WORK_LOGO_ID'], \Bitrix\Main\UI\FileInputUtility::instance()->checkFiles(
				'WORK_LOGO_IMAGE_ID',
				array($_POST['WORK_LOGO_ID'])
			))
		)
		{
			$arPICTURE_WORK = CFile::MakeFileArray($_POST['WORK_LOGO_ID']);
			$picturesToDelete[] = $_POST['WORK_LOGO_ID'];
		}
		elseif ( // usual template
			strlen($_FILES["WORK_LOGO"]["name"]) > 0 
			|| isset($_POST["WORK_LOGO_del"])
		)
		{
			$arPICTURE_WORK = $_FILES["WORK_LOGO"];
			$arPICTURE_WORK["old_file"] = $arResult["User"]["WORK_LOGO"];
			$arPICTURE_WORK["del"] = $_POST["WORK_LOGO_del"];
		}

		if (sizeof($arPICTURE_WORK) != 0)
		{
			$arPICTURE_WORK["old_file"] = $arResult["User"]["WORK_LOGO"];
			$arPICTURE_WORK["del"] = ($_POST["WORK_LOGO_del"] ?: $_POST["WORK_LOGO_ID_del"]);
		}

		$arFields = Array(
			'ACTIVE', 'GROUP_ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'PERSONAL_PHOTO', 'PERSONAL_GENDER', 'PERSONAL_BIRTHDAY', 'PERSONAL_BIRTHDATE', 'PERSONAL_PROFESSION', 'PERSONAL_NOTES',
			'EMAIL', 'PERSONAL_PHONE', 'PERSONAL_MOBILE', 'PERSONAL_WWW', 'PERSONAL_ICQ', 'PERSONAL_FAX', 'PERSONAL_PAGER', 'PERSONAL_COUNTRY', 'PERSONAL_STREET', 'PERSONAL_MAILBOX', 'PERSONAL_CITY', 'PERSONAL_STATE', 'PERSONAL_ZIP',
			'WORK_COUNTRY', 'WORK_CITY', 'WORK_STATE', 'WORK_COMPANY', 'WORK_DEPARTMENT', 'WORK_PROFILE', 'WORK_WWW', 'WORK_PHONE', 'WORK_FAX', 'WORK_PAGER', 'WORK_LOGO', 'WORK_POSITION',
			'LOGIN', 'PASSWORD', 'CONFIRM_PASSWORD',
		);

		$arFieldsValue = array();
		foreach ($arFields as $key)
		{
			if ('PERSONAL_PHOTO' == $key)
			{
				if (sizeof($arPICTURE) != 0)
					$arFieldsValue[$key] = $arPICTURE;
			}
			elseif ('WORK_LOGO' == $key)
			{
				if (sizeof($arPICTURE_WORK) != 0)
					$arFieldsValue[$key] = $arPICTURE_WORK;
			}
			elseif ('GROUP_ID' == $key && !IsModuleInstalled("bitrix24"))
			{
				if (is_array($arGroupsCanEditID) && is_array($_POST[$key]))
				{
					$arFieldsValue[$key] = array_intersect($_POST[$key], $arGroupsCanEditID);
				}
			}
			elseif ($_POST[$key] !== $arResult['User'][$key])
				$arFieldsValue[$key] = $_POST[$key];
		}

		$removeAdminRights = false;

		//groups for bitrix24 cloud
		if (
			\Bitrix\Main\Loader::includeModule("bitrix24")
			&& \CBitrix24::IsPortalAdmin($USER->GetID())
			&& $USER->GetID() != $arResult["User"]['ID']
			&& !( // not extranet
				!is_array($arResult["User"]['UF_DEPARTMENT'])
				|| empty($arResult["User"]['UF_DEPARTMENT'][0])
			)
			&& $arResult["User"]['ACTIVE'] == "Y"
		)
		{
			//moving admin rights to another user
			if (
				!\CBitrix24::IsPortalAdmin($arResult["User"]['ID'])
				&& $_POST["IS_ADMIN"] == "Y"
				&& !CBitrix24::isMoreAdminAvailable()
			)
			{
				$removeAdminRights = true;
			}
			
			$curUserGroups = CUser::GetUserGroup($arResult["User"]['ID']);
			foreach ($curUserGroups as $groupKey => $group)
			{
				if ($group == 1 || $group == 12 || $group == 11)
				{
					unset($curUserGroups[$groupKey]);
				}
			}
			if ($_POST["IS_ADMIN"] == "Y")
			{
				$curUserGroups[] = "1";
				$curUserGroups[] = "12";
			}
			else
			{
				$curUserGroups[] = "11";
			}

			$arFieldsValue["GROUP_ID"] = $curUserGroups;
		}

		//time zones
		$arFieldsValue['AUTO_TIME_ZONE'] = ($_POST['AUTO_TIME_ZONE'] == "Y" || $_POST['AUTO_TIME_ZONE'] == "N"? $_POST['AUTO_TIME_ZONE'] : "");
		if(isset($_POST['TIME_ZONE']))
			$arFieldsValue['TIME_ZONE'] = $_POST['TIME_ZONE'];

		if (strlen($arFieldsValue['PASSWORD']) <= 0)
		{
			unset($arFieldsValue['PASSWORD']);
			unset($arFieldsValue['CONFIRM_PASSWORD']);
		}

		$USER_FIELD_MANAGER->EditFormAddFields("USER", $arFieldsValue);

		if (in_array('PASSWORD', $arParams['EDITABLE_FIELDS']))
			$arParams['EDITABLE_FIELDS'][] = 'CONFIRM_PASSWORD';
		$arKeys = array_intersect(array_keys($arFieldsValue), $arParams['EDITABLE_FIELDS']);

		$arNewFieldsValue = array();
		foreach ($arKeys as $key)
			$arNewFieldsValue[$key] = $arFieldsValue[$key];

		$res = $USER->Update($SONET_USER_ID, $arNewFieldsValue);

		while ($f = array_pop($picturesToDelete))
			CFile::Delete($f);

		if (!$res)
			$strErrorMessage = $USER->LAST_ERROR;
		else
		{
			if ($removeAdminRights)
			{
				$curAdminGroups = CUser::GetUserGroup($USER->GetID());
				foreach ($curAdminGroups as $groupKey => $group)
				{
					if ($group == 1 || $group == 12)
					{
						unset($curAdminGroups[$groupKey]);
					}
				}
				$curAdminGroups[] = "11";
				CUser::SetUserGroup($USER->GetID(), $curAdminGroups);
			}

			if ($arParams['IS_FORUM'] == 'Y')
			{
				$arForumFields = array(
					"SHOW_NAME" => ($_POST["FORUM_SHOW_NAME"]=="Y") ? "Y" : "N",
					"HIDE_FROM_ONLINE" => ($_POST["FORUM_HIDE_FROM_ONLINE"]=="Y") ? "Y" : "N",
					"SUBSC_GROUP_MESSAGE" => ($_POST["FORUM_SUBSC_GROUP_MESSAGE"]=="Y") ? "Y" : "N",
					"SUBSC_GET_MY_MESSAGE" => ($_POST["FORUM_SUBSC_GET_MY_MESSAGE"]=="Y") ? "Y" : "N",
					"DESCRIPTION" => $_POST["FORUM_DESCRIPTION"],
					"INTERESTS" => $_POST["FORUM_INTERESTS"],
					"SIGNATURE" => $_POST["FORUM_SIGNATURE"]
				);

				if (strlen($_FILES["FORUM_AVATAR"]["name"]) > 0 || isset($_POST["FORUM_AVATAR_del"]))
					$arForumFields["AVATAR"] = $_FILES["FORUM_AVATAR"];

				foreach ($arForumFields as $key => $value)
					if (!in_array('FORUM_'.$key, $arParams['EDITABLE_FIELDS']))
						unset($arForumFields[$key]);

				if (count($arForumFields) > 0)
				{
					if (isset($arForumFields['AVATAR']))
					{
						$arForumFields["AVATAR"]["del"] = $_POST["FORUM_AVATAR_del"];
						$arForumFields["AVATAR"]["old_file"] = $arResult['User']['FORUM_AVATAR'];
					}

					if ($arResult['User']['FORUM_ID'])
						$FID = CForumUser::Update($arResult['User']['FORUM_ID'], $arForumFields);
					else
					{
						$arForumFields["USER_ID"] = $arResult["User"]['ID'];
						$FID = CForumUser::Add($arForumFields);
					}

					if (!$FID && ($ex = $APPLICATION->GetException()))
						$strErrorMessage = $ex->GetString();
				}
			}

			if (strlen($strErrorMessage) <= 0 && $arParams['IS_BLOG'] == 'Y')
			{
				$arBlogFields = Array(
					"ALIAS" => $_POST['BLOG_ALIAS'],
					"DESCRIPTION" => $_POST['BLOG_DESCRIPTION'],
					"INTERESTS" => $_POST['BLOG_INTERESTS']
				);

				if (strlen($_FILES["BLOG_AVATAR"]["name"]) > 0 || isset($_POST["BLOG_AVATAR_del"]))
					$arBlogFields["AVATAR"] = $_FILES["BLOG_AVATAR"];

				foreach ($arBlogFields as $key => $value)
					if (!in_array('BLOG_'.$key, $arParams['EDITABLE_FIELDS']))
						unset($arBlogFields[$key]);

				if (isset($arBlogFields['AVATAR']))
				{
					$arBlogFields["AVATAR"]["del"] = $_POST['BLOG_AVATAR_del'];
					$arBlogFields["AVATAR"]["old_file"] = $arResult['User']["BLOG_AVATAR"];
				}

				if (count($arBlogFields) > 0)
				{
					if ($arResult['User']['BLOG_ID'])
						$BID = CBlogUser::Update($arResult['User']['BLOG_ID'], $arBlogFields);
					else
					{
						$arBlogFields["USER_ID"] = $arParams['ID'];
						$arBlogFields["~DATE_REG"] = CDatabase::CurrentTimeFunction();
						$BID = CBlogUser::Add($arBlogFields);
					}

					if (!$BID && ($ex = $APPLICATION->GetException()))
						$strErrorMessage = $ex->GetString();
				}
			}

			if(IsModuleInstalled("bitrix24") && isset($arFieldsValue["GROUP_ID"]) && defined("BX_COMP_MANAGED_CACHE"))
			{
				global $CACHE_MANAGER;
				$CACHE_MANAGER->ClearByTag('sonet_group');
			}
		}

		if(strlen($strErrorMessage)<=0)
			if ($_REQUEST['backurl'])
			{
				LocalRedirect($_REQUEST['backurl']);
			}
			else
			{
				LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"])));
			}
		else
		{
			$arResult["ERROR_MESSAGE"] = $strErrorMessage;
			$bVarsFromForm = true;
		}
	}
	
	if($arResult['bEdit'] == 'Y' && $_SERVER["REQUEST_METHOD"]=="POST" && (strlen($_POST["submit_fire"])>0 || strlen($_POST["submit_recover"])>0) && check_bitrix_sessid())
	{
		if ($CurrentUserPerms["Operations"]["modifyuser_main"] && $SONET_USER_ID != $USER->GetID())		
		{
			$arFields = array("ACTIVE" => strlen($_POST["submit_fire"])>0 ? "N" : "Y");		
			$res = $USER->Update($SONET_USER_ID, $arFields);	
			$arResult["User"]["ACTIVE"] = strlen($_POST["submit_fire"])>0 ? "N" : "Y";
		}
	}

	$arResult["User"]["PERSONAL_LOCATION"] = GetCountryByID($arResult["User"]["PERSONAL_COUNTRY"]);
	if (strlen($arResult["User"]["PERSONAL_LOCATION"])>0 && strlen($arResult["User"]["PERSONAL_CITY"])>0)
		$arResult["User"]["PERSONAL_LOCATION"] .= ", ";
	$arResult["User"]["PERSONAL_LOCATION"] .= $arResult["User"]["PERSONAL_CITY"];
	$arResult["User"]["WORK_LOCATION"] = GetCountryByID($arResult["User"]["WORK_COUNTRY"]);
	if (strlen($arResult["User"]["WORK_LOCATION"])>0 && strlen($arResult["User"]["WORK_CITY"])>0)
		$arResult["User"]["WORK_LOCATION"] .= ", ";
	$arResult["User"]["WORK_LOCATION"] .= $arResult["User"]["WORK_CITY"];

	if (CModule::IncludeModule('mail'))
	{
		$dbMailbox = CMailbox::getList(
			array(
				'TIMESTAMP_X' => 'DESC'
			),
			array(
				'LID'     => SITE_ID,
				'ACTIVE'  => 'Y',
				'USER_ID' => intval($arParams['ID']),
				'SERVER_TYPE' => 'imap|controller|domain'
			)
		);
		$mailbox = $dbMailbox->fetch();
		if (strpos($mailbox['LOGIN'], '@') !== false)
			$arResult['User']['MAILBOX'] = $mailbox['LOGIN'];
	}

	if ($USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users'))
	{
		$arResult["User"]["GROUP_ID"] = array();
		$rsGroup = CUser::GetUserGroupList($arResult["User"]["ID"]);
		while ($arGroup = $rsGroup->Fetch())
		{
			if (strlen($arGroup["DATE_ACTIVE_FROM"]) <= 0 && strlen($arGroup["DATE_ACTIVE_TO"]) <= 0)
				$arResult["User"]["GROUP_ID"][] = $arGroup["GROUP_ID"];
		}

		$arResult["User"]["GROUP_ID"] = array_intersect($arResult["User"]["GROUP_ID"], $arGroupsCanEditID);
	}

	$arResult["arSex"] = array(
		"M" => GetMessage("SONET_P_USER_SEX_M"),
		"F" => GetMessage("SONET_P_USER_SEX_F"),
	);

	if($bVarsFromForm)
	{
		static $skip = array("PERSONAL_PHOTO"=>1, "WORK_LOGO"=>1, "FORUM_AVATAR"=>1, "BLOG_AVATAR"=>1);
		foreach($_POST as $k => $v)
		{
			if(!isset($skip[$k]))
			{
				if(is_array($v))
				{
					foreach($v as $k1 => $v1)
					{
						$arResult["User"][$k][$k1] = htmlspecialcharsbx($v1);
						$arResult["User"]['~'.$k][$k1] = $v1;
					}
				}
				else
				{
					$arResult["User"][$k] = htmlspecialcharsbx($v);
					$arResult["User"]['~'.$k] = $v;
				}
			}
		}
	}

	$userName = '';
	if ($arParams["SET_TITLE"] == "Y" || $arParams["SET_NAV_CHAIN"] != "N")
	{
		if (strlen($arParams["NAME_TEMPLATE"]) <= 0)
			$arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();

		$arParams["TITLE_NAME_TEMPLATE"] = str_replace(
			array("#NOBR#", "#/NOBR#"),
			array("", ""),
			$arParams["NAME_TEMPLATE"]
		);
		$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;

		$arTmpUser = array(
			'NAME' => $arResult["User"]["~NAME"],
			'LAST_NAME' => $arResult["User"]["~LAST_NAME"],
			'SECOND_NAME' => $arResult["User"]["~SECOND_NAME"],
			'LOGIN' => $arResult["User"]["~LOGIN"],
		);

		$userName = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
	}

	if($arParams["SET_TITLE"]=="Y")
		$APPLICATION->SetTitle(GetMessage("SONET_P_USER_TITLE")." \"".trim($userName, " ")."\"");

	if ($arParams["SET_NAV_CHAIN"] != "N")
	{
		$APPLICATION->AddChainItem($userName, CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"])));
		$APPLICATION->AddChainItem(GetMessage("SONET_P_USER_TITLE_VIEW"));
	}

	if(strlen($arResult["User"]["PERSONAL_WWW"])>0)
		$arResult["User"]["PERSONAL_WWW"] = ((strpos($arResult["User"]["PERSONAL_WWW"], "http") === false)? "http://" : "").$arResult["User"]["PERSONAL_WWW"];

	$arResult["User"]["PERSONAL_PHOTO_FILE"] = CFile::GetFileArray($arResult["User"]["PERSONAL_PHOTO"]);
	if ($arResult["User"]["PERSONAL_PHOTO_FILE"] !== false)
		$arResult["User"]["PERSONAL_PHOTO_IMG"] = CFile::ShowImage($arResult["User"]["PERSONAL_PHOTO_FILE"]["ID"], 150, 150, "border=0", "", true);

	$arResult["User"]["WORK_LOGO_FILE"] = CFile::GetFileArray($arResult["User"]["WORK_LOGO"]);
	if ($arResult["User"]["WORK_LOGO_FILE"] !== false)
		$arResult["User"]["WORK_LOGO_IMG"] = CFile::ShowImage($arResult["User"]["WORK_LOGO_FILE"]["ID"], 150, 150, "border=0", "", true);

	if ($arParams['IS_FORUM'] == 'Y')
	{
		$arResult["User"]["FORUM_AVATAR_FILE"] = CFile::GetFileArray($arResult["User"]["FORUM_AVATAR"]);
		if ($arResult["User"]["FORUM_AVATAR_FILE"] !== false)
			$arResult["User"]["FORUM_AVATAR_IMG"] = CFile::ShowImage($arResult["User"]["FORUM_AVATAR_FILE"]["ID"], 150, 150, "border=0", "", true);
	}

	if ($arParams['IS_BLOG'] == 'Y')
	{
		$arResult["User"]["BLOG_AVATAR_FILE"] = CFile::GetFileArray($arResult["User"]["BLOG_AVATAR"]);
		if ($arResult["User"]["BLOG_AVATAR_FILE"] !== false)
			$arResult["User"]["BLOG_AVATAR_IMG"] = CFile::ShowImage($arResult["User"]["BLOG_AVATAR_FILE"]["ID"], 150, 150, "border=0", "", true);
	}

	$arPolicy = $USER->GetGroupPolicy($arResult["User"]["ID"]);
	$arResult["PASSWORD_MIN_LENGTH"] = intval($arPolicy["PASSWORD_LENGTH"]);
	if($arResult["PASSWORD_MIN_LENGTH"] <= 0)
		$arResult["PASSWORD_MIN_LENGTH"] = 6;
}

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

$this->IncludeComponentTemplate();
?>

Zerion Mini Shell 1.0