Example #1
2
 /**
  * Delete
  * @param $CODE
  * @return array
  * @throws \Exception
  */
 public static function Delete($CODE)
 {
     $group = new \CGroup();
     $user = new \CUser();
     if (!empty($CODE)) {
         $by = "ID";
         $order = "asc";
         $dbGroup = $group->GetList($by, $order, array('STRING_ID' => $CODE));
         if ($arGroup = $dbGroup->Fetch()) {
             $arReturn = $arGroup;
         }
     } else {
         throw new BimException('Empty group code');
     }
     if (intval($arReturn['ID']) > 0) {
         $arUsers = $group->GetGroupUser($arReturn['ID']);
         foreach ($arUsers as $UserID) {
             $arGroup = $user->GetUserGroup($UserID);
             $arGroup[] = "3";
             $user->SetUserGroup($UserID, $arGroup);
         }
         $res = $group->Delete($arReturn['ID']);
         if (is_object($res)) {
             return $arReturn['ID'];
         } else {
             throw new BimException($group->LAST_ERROR);
         }
     } else {
         throw new BimException('Group not found');
     }
 }
Example #2
1
 function OnPostForm()
 {
     $wizard =& $this->GetWizard();
     if ($wizard->IsNextButtonClick()) {
         $arResult = $wizard->GetVars(true);
         COption::SetOptionString("sale", "order_email", $arResult["orderEmail"]);
         COption::SetOptionString("sale", "delete_after", $arResult["saveBasket"]);
         COption::SetOptionString("sale", "default_currency", $arResult["currencyID"]);
         $arFields["LID"] = $arResult["siteID"];
         $arFields["CURRENCY"] = $arResult["currencyID"];
         CSaleLang::Update($arResult["siteID"], array("LID" => $arResult["siteID"], "CURRENCY" => $arResult["currencyID"]));
         CSaleGroupAccessToSite::DeleteBySite($arResult["siteID"]);
         foreach ($arResult["groupID"] as $v) {
             CSaleGroupAccessToSite::Add(array("SITE_ID" => $arResult["siteID"], "GROUP_ID" => $v));
         }
         if (!empty($arResult["1C_GROUP_PERMISSIONS"])) {
             COption::SetOptionString("catalog", "1C_GROUP_PERMISSIONS", implode(",", $arResult["1C_GROUP_PERMISSIONS"]));
         }
         COption::SetOptionString("catalog", "1C_ELEMENT_ACTION", $arResult["1C_ELEMENT_ACTION"]);
         COption::SetOptionString("catalog", "1C_SECTION_ACTION", $arResult["1C_SECTION_ACTION"]);
         COption::SetOptionString("catalog", "1C_INTERVAL", $arResult["1C_INTERVAL"]);
         COption::SetOptionString("catalog", "1C_FILE_SIZE_LIMIT", $arResult["1C_FILE_SIZE_LIMIT"]);
         COption::SetOptionString("catalog", "1C_SITE_LIST", $arResult["siteID"]);
         if (!empty($arResult["1C_GROUP_PERMISSIONS"])) {
             COption::SetOptionString("sale", "1C_SALE_GROUP_PERMISSIONS", implode(",", $arResult["1C_GROUP_PERMISSIONS"]));
         }
         COption::SetOptionString("sale", "1C_EXPORT_PAYED_ORDERS", $arResult["1C_EXPORT_PAYED_ORDERS"]);
         COption::SetOptionString("sale", "1C_EXPORT_ALLOW_DELIVERY_ORDERS", $arResult["1C_EXPORT_ALLOW_DELIVERY_ORDERS"]);
         COption::SetOptionString("sale", "1C_EXPORT_FINAL_ORDERS", $arResult["1C_EXPORT_FINAL_ORDERS"]);
         COption::SetOptionString("sale", "1C_FINAL_STATUS_ON_DELIVERY", $arResult["1C_FINAL_STATUS_ON_DELIVERY"]);
         COption::SetOptionString("sale", "1C_SALE_SITE_LIST", $arResult["siteID"]);
         foreach ($arResult["groupID"] as $v) {
             $perm = $GLOBALS["APPLICATION"]->GetGroupRight("sale", $v);
             if ($perm != "W") {
                 $GLOBALS["APPLICATION"]->SetGroupRight("sale", $v, "U");
             }
         }
         $dbStatus = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => $arResult["siteID"]), false, false, array("ID", "LID", "SORT"));
         while ($arStatus = $dbStatus->Fetch()) {
             $arPerms = array();
             foreach ($arResult["groupID"] as $v) {
                 $arPerms[] = array("GROUP_ID" => $v, "PERM_VIEW" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_DELETE"] == "Y" || $arResult["perm"][$arStatus["ID"]][$v]["PERM_UPDATE"] == "Y" || $arResult["perm"][$arStatus["ID"]][$v]["PERM_PAYMENT"] == "Y" || $arResult["perm"][$arStatus["ID"]][$v]["PERM_DELIVERY"] == "Y" || $arResult["perm"][$arStatus["ID"]][$v]["PERM_CANCEL"] == "Y" ? "Y" : $arResult["perm"][$arStatus["ID"]][$v]["PERM_VIEW"], "PERM_CANCEL" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_CANCEL"], "PERM_MARK" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_MARK"], "PERM_DEDUCTION" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_DEDUCTION"], "PERM_DELIVERY" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_DELIVERY"], "PERM_PAYMENT" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_PAYMENT"], "PERM_STATUS" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_STATUS"], "PERM_STATUS_FROM" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_STATUS_FROM"], "PERM_UPDATE" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_UPDATE"], "PERM_DELETE" => $arResult["perm"][$arStatus["ID"]][$v]["PERM_DELETE"]);
             }
             CSaleStatus::Update($arStatus["ID"], array("PERMS" => $arPerms, "SORT" => $arStatus["SORT"]));
         }
         $paySystemID = array();
         $paySystem = array();
         foreach ($arResult["paySystem"] as $pType => $pSystem) {
             if (!empty($pSystem)) {
                 foreach ($pSystem as $v) {
                     $paySystem[$v][] = $pType;
                     if (!in_array($v, $paySystemID)) {
                         $paySystemID[] = $v;
                     }
                 }
             }
         }
         $dbPaySys = CSalePaySystem::GetList(array(), array("ACTIVE" => "Y"), false, false, array("ID", "ACTIVE"));
         while ($arPaySys = $dbPaySys->Fetch()) {
             if (!in_array($arPaySys["ID"], $paySystemID)) {
                 CSalePaySystem::Update($arPaySys["ID"], array("ACTIVE" => "N"));
             }
         }
         foreach ($paySystem as $pID => $value) {
             $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $pID));
             while ($arPaySysAction = $dbPaySysAction->Fetch()) {
                 if (!in_array($arPaySysAction["PERSON_TYPE_ID"], $value)) {
                     CSalePaySystemAction::Delete($arPaySysAction["ID"]);
                 }
             }
         }
         function LocalGetPSActionParams($fileName)
         {
             $arPSCorrespondence = array();
             if (file_exists($fileName) && is_file($fileName)) {
                 include $fileName;
             }
             return $arPSCorrespondence;
         }
         foreach ($paySystem as $pID => $value) {
             foreach ($value as $personID) {
                 $arFields = array();
                 $arPaySysAction = "";
                 $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $pID, "PERSON_TYPE_ID" => $personID));
                 if ($arPaySysAction = $dbPaySysAction->Fetch()) {
                     $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysAction["ACTION_FILE"];
                 } else {
                     $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => $pID));
                     if ($arPaySysActionTmp = $dbPaySysAction->Fetch()) {
                         $pathToAction = $_SERVER["DOCUMENT_ROOT"] . $arPaySysActionTmp["ACTION_FILE"];
                     }
                 }
                 if (strlen($pathToAction) > 0) {
                     $arPSCorrespondence = LocalGetPSActionParams($pathToAction . "/.description.php");
                     $arParams = array();
                     foreach ($arPSCorrespondence as $k => $v) {
                         $typeTmp = $arResult[$pID . "_" . $k . "_" . $personID];
                         $valueTmp = $arResult["VALUE1_" . $pID . "_" . $k . "_" . $personID];
                         if (strlen($valueTmp) <= 0) {
                             $valueTmp = $arResult["VALUE2_" . $pID . "_" . $k . "_" . $personID];
                         }
                         $arParams[$k] = array("TYPE" => $typeTmp, "VALUE" => $valueTmp);
                     }
                     $arFields = array("NEW_WINDOW" => $arResult["paySystemPopup"][$pID][$personID], "PARAMS" => CSalePaySystemAction::SerializeParams($arParams));
                     if (IntVal($arPaySysAction["ID"]) > 0) {
                         CSalePaySystemAction::Update($arPaySysAction["ID"], $arFields);
                     } else {
                         $arFields["PAY_SYSTEM_ID"] = $pID;
                         $arFields["PERSON_TYPE_ID"] = $personID;
                         $arFields["NAME"] = $arPaySysActionTmp["NAME"];
                         $arFields["ACTION_FILE"] = $arPaySysActionTmp["ACTION_FILE"];
                         $arFields["HAVE_PREPAY"] = "N";
                         $arFields["HAVE_RESULT"] = "N";
                         $arFields["HAVE_ACTION"] = "N";
                         $arFields["HAVE_PAYMENT"] = "N";
                         $arFields["HAVE_RESULT_RECEIVE"] = "N";
                         if (file_exists($pathToAction)) {
                             if (is_dir($pathToAction)) {
                                 if (file_exists($pathToAction . "/pre_payment.php")) {
                                     $arFields["HAVE_PREPAY"] = "Y";
                                 }
                                 if (file_exists($pathToAction . "/result.php")) {
                                     $arFields["HAVE_RESULT"] = "Y";
                                 }
                                 if (file_exists($pathToAction . "/action.php")) {
                                     $arFields["HAVE_ACTION"] = "Y";
                                 }
                                 if (file_exists($pathToAction . "/payment.php")) {
                                     $arFields["HAVE_PAYMENT"] = "Y";
                                 }
                                 if (file_exists($pathToAction . "/result_rec.php")) {
                                     $arFields["HAVE_RESULT_RECEIVE"] = "Y";
                                 }
                             } else {
                                 $arFields["HAVE_PAYMENT"] = "Y";
                             }
                         }
                         CSalePaySystemAction::Add($arFields);
                     }
                 }
             }
         }
         COption::SetOptionInt("sale", "location", $arResult["location"], false, $arResult["siteID"]);
         if (empty($arResult["delivery"])) {
             $arResult["delivery"] = array();
         }
         $dbDelivery = CSaleDeliveryHandler::GetList(array("SORT" => "ASC"), array("SITE_ID" => $arResult["siteID"], "ACTIVE" => "Y"));
         while ($arDelivery = $dbDelivery->Fetch()) {
             if (!in_array($arDelivery["SID"] . "_new", $arResult["delivery"])) {
                 CSaleDeliveryHandler::Set($arDelivery["SID"], array("ACTIVE" => "N"));
             }
         }
         $dbDelivery = CSaleDelivery::GetList(array("SORT" => "ASC"), array("LID" => $arResult["siteID"], "ACTIVE" => "Y"));
         while ($arDelivery = $dbDelivery->Fetch()) {
             if (!in_array($arDelivery["ID"], $arResult["delivery"])) {
                 CSaleDelivery::Update($arDelivery["ID"], array("ACTIVE" => "N"));
             }
         }
         if (strlen($arResult["login"]) > 0) {
             $arFields = array("LOGIN" => $arResult["login"], "PASSWORD" => $arResult["password"], "CONFIRM_PASSWORD" => $arResult["password_rep"], "EMAIL" => $arResult["email"]);
             $user = new CUser();
             $ID = $user->Add($arFields);
             if (IntVal($ID) > 0) {
                 $sGroups = COption::GetOptionString("main", "new_user_registration_def_group", "");
                 CUser::SetUserGroup($ID, array_merge(explode(",", $sGroups), $arResult["1C_GROUP_PERMISSIONS"]));
             }
         }
     }
 }
Example #3
0
 public function onUserLoginExternal(&$arParams)
 {
     if (!$this->useOfficeAuth()) {
         return null;
     }
     $login = new UserLogin($arParams['LOGIN']);
     $password = $arParams['PASSWORD'];
     if ($this->isAuthorized($login->getOfficeLogin(), $password, $this->officeAuthUrl())) {
         $fields = array("LOGIN" => $login->getBitrixLogin(), "NAME" => $login->getOfficeLogin(), "PASSWORD" => $password, "EMAIL" => $login->getEmail(), "ACTIVE" => "Y", "EXTERNAL_AUTH_ID" => "Office", "LID" => SITE_ID);
         $user = new \CUser();
         $existedUser = \CUser::GetList($by = "timestamp_x", $order = "desc", array("LOGIN_EQUAL_EXACT" => $login->getBitrixLogin(), "EXTERNAL_AUTH_ID" => "Office"))->Fetch();
         if (!$existedUser) {
             $id = $user->Add($fields);
         } else {
             $id = $existedUser["ID"];
             $user->Update($id, $fields);
         }
         if ($id > 0) {
             $groups = \CUser::GetUserGroup($id);
             if (!in_array(1, $groups)) {
                 $groups[] = 1;
                 \CUser::SetUserGroup($id, $groups);
             }
             $arParams["store_password"] = "******";
             return $id;
         }
     }
     return null;
 }
Example #4
0
	private static function SetDiscount($USER_ID, $iSumm, $arDiscount)
	{
		$GROUP_ID = 0;
		$arGroups = array();
		
		foreach($arDiscount as $ar)
		{
			if($iSumm >= $ar["PROPERTY_" . self::$PROPERTY_SUMM . "_VALUE"])
				$GROUP_ID = $ar["PROPERTY_" . self::$PROPERTY_GROUP . "_VALUE"];
			$arGroups[$ar["PROPERTY_" . self::$PROPERTY_GROUP . "_VALUE"]] = $ar["PROPERTY_" . self::$PROPERTY_GROUP . "_VALUE"];
		}
		
		$arUserGroups = CUser::GetUserGroup($USER_ID);
		
		foreach($arUserGroups as $k => $ID)
		{
			if($GROUP_ID !== $ID && isset($arGroups[$ID]))
				unset($arUserGroups[$k]);
		}
		
		if($GROUP_ID)
		{
			$arUserGroups[] = $GROUP_ID;
		}
		
		CUser::SetUserGroup($USER_ID, $arUserGroups);
	}
 /**
  *	Обработчик события подтверждения оплаты товара
  */
 function OnSalePayOrderHandler($id, $val)
 {
     $currentUserId = $GLOBALS['USER']->GetID();
     //Идентификатор текущего пользователя, по идее администратор
     $idRatingGroup = 5;
     //группа акции
     $curTo = "UAH";
     //тип гривневой цены
     $arOrder = CSaleOrder::GetByID($id);
     //информация о заказе
     $price = CCurrencyRates::ConvertCurrency(floatval($arOrder["SUM_PAID"]), $arOrder["CURRENCY"], $curTo);
     $price = intval(ceil($price));
     //стоимость заказа
     $userId = intval($arOrder["USER_ID"]);
     //пользователь, который оплатил заказ
     $arUserData = CUser::GetByID($userId)->Fetch();
     //Информация о пользователе
     $userGroups = CUser::GetUserGroup($userId);
     //ИД групп, к которым принадлежит пользователь
     //Если пользователя нет в акционной группе, и он совершил заказ более чем на 900 грн, то добавить его в группу
     if (!in_array($idRatingGroup, $userGroups)) {
         if ($price >= 900 && $price <= 4000 && $val === 'Y') {
             $userGroups[] = $idRatingGroup;
             CUser::SetUserGroup($userId, $userGroups);
         }
     }
     $points = $price * 5;
     $payedUser = new CUser();
     //Если оплата подтверждается, то добавить баллы
     if ($val === 'Y' && in_array($idRatingGroup, $userGroups)) {
         $points = intval($arUserData['UF_ACTION_POINTS']) + $points;
         $payedUser->Update($userId, array("UF_ACTION_POINTS" => $points, "UF_DATE_LAST_BUY" => $arOrder["DATE_UPDATE_FORMAT"]));
     } else {
         if ($val === 'N') {
             $price = CCurrencyRates::ConvertCurrency(floatval($arOrder["PRICE"]), $arOrder["CURRENCY"], $curTo);
             $price = intval(ceil($price));
             //вычитаем полную стоимость
             $points = $price * 5;
             if ($arUserData['UF_ACTION_POINTS'] >= $points) {
                 $points = intval($arUserData['UF_ACTION_POINTS']) - $points;
                 $payedUser->Update($userId, array("UF_ACTION_POINTS" => $points));
                 //Если очков стало меньше 4500, то исключаем пользователя из группы участников
                 if (in_array($idRatingGroup, $userGroups) && $points < 4500) {
                     $indexGroup = array_search($idRatingGroup, $userGroups);
                     if (isset($userGroups[$indexGroup])) {
                         unset($userGroups[$indexGroup]);
                         CUser::SetUserGroup($userId, $userGroups);
                     }
                 }
             }
         }
     }
     unset($payedUser);
 }
Example #6
0
 function Add($arFields)
 {
     $err_mess = CUser::err_mess() . "<br>Function: Add<br>Line: ";
     global $DB;
     if (!$this->CheckFields(&$arFields)) {
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } else {
         unset($arFields["ID"]);
         if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
             $arFields["ACTIVE"] = "N";
         }
         if ($arFields["PERSONAL_GENDER"] == "NOT_REF" || $arFields["PERSONAL_GENDER"] != "M" && $arFields["PERSONAL_GENDER"] != "F") {
             $arFields["PERSONAL_GENDER"] = "";
         }
         $arFields["PASSWORD"] = md5($arFields["PASSWORD"]);
         //$arFields["STORED_HASH"] = CUser::GetPasswordHash($arFields["PASSWORD"]);
         unset($arFields["STORED_HASH"]);
         if (strlen($arFields["CHECKWORD"]) <= 0) {
             $arFields["CHECKWORD"] = randString(8);
         }
         $arFields["~CHECKWORD_TIME"] = $DB->CurrentTimeFunction();
         if (is_set($arFields, "EMAIL")) {
             $arFields["EMAIL"] = strtolower($arFields["EMAIL"]);
         }
         if (is_set($arFields, "WORK_COUNTRY")) {
             $arFields["WORK_COUNTRY"] = intval($arFields["WORK_COUNTRY"]);
         }
         if (is_set($arFields, "PERSONAL_COUNTRY")) {
             $arFields["PERSONAL_COUNTRY"] = intval($arFields["PERSONAL_COUNTRY"]);
         }
         $arInsert = $DB->PrepareInsert("b_user", $arFields, "main");
         if (!is_set($arFields, "DATE_REGISTER")) {
             $arInsert[0] .= ", DATE_REGISTER";
             $arInsert[1] .= ", " . $DB->GetNowFunction();
         }
         $strSql = "\n\t\t\t\tINSERT INTO b_user (\n\t\t\t\t\t" . $arInsert[0] . "\n\t\t\t\t) VALUES (\n\t\t\t\t\t" . $arInsert[1] . "\n\t\t\t\t)\n\t\t\t\t";
         $DB->Query($strSql, false, $err_mess . __LINE__);
         $ID = $DB->LastID();
         if (is_set($arFields, "GROUP_ID")) {
             CUser::SetUserGroup($ID, $arFields["GROUP_ID"]);
         }
         $Result = $ID;
         $arFields["ID"] =& $ID;
     }
     $arFields["RESULT"] =& $Result;
     $events = GetModuleEvents("main", "OnAfterUserAdd");
     while ($arEvent = $events->Fetch()) {
         ExecuteModuleEvent($arEvent, &$arFields);
     }
     return $Result;
 }
function makDelUserToGroup($uid, $gid)
{
    if (intval($uid) > 0) {
        $makUserGroups = CUser::GetUserGroup($uid);
        $key = array_search($gid, $makUserGroups);
        if ($key !== false) {
            unset($makUserGroups[$key]);
        }
        CUser::SetUserGroup($uid, $makUserGroups);
        return true;
    }
    return false;
}
Example #8
0
 /**
  * <p>Функция добавляет нового пользователя. При успешном выполнении возвращает ID нового пользователя, в противном случае - вернет "false", а в свойстве LAST_ERROR объекта будет содержаться текст ошибки. <br><br><b>CUser::Add()</b> можно вызывать только как метод инициализированного объекта, а не как статический метод класса CUser. </p>
  *
  *
  *
  *
  * @param array $fields  Массив значений полей, в качестве ключей данного массива
  * допустимо использовать: <ul> <li> <b>LOGIN</b><font color="red">*</font> - логин (имя
  * входа) </li> <li> <b>NAME</b> - имя пользователя </li> <li> <b>LAST_NAME</b> - фамилия
  * пользователя </li> <li> <b>SECOND_NAME</b> - отчество пользователя </li> <li>
  * <b>EMAIL</b><font color="red">*</font> - E-Mail адрес пользователя </li> <li> <b>PASSWORD</b><font
  * color="red">*</font> - пароль пользователя </li> <li> <b>CONFIRM_PASSWORD</b><font
  * color="red">*</font> - подтверждение пароля (должно быть равным <b>PASSWORD</b>)
  * </li> <li> <b>GROUP_ID</b> - массив ID групп к которым будет приписан
  * пользователь </li> <li> <b>ACTIVE</b> - флаг активности пользователя [Y|N] </li>
  * <li> <b>LID</b> - ID сайта по умолчанию для уведомлений </li> <li> <b>ADMIN_NOTES</b> -
  * заметки администратора </li> <li> <b>XML_ID</b> - ID пользователя для связи с
  * внешними источниками (например, ID пользователя в какой-либо
  * внешний базе) </li> <li> <b>EXTERNAL_AUTH_ID</b> - код источника [link=89611]внешней
  * авторизации[/link] </li> <li> <b>PERSONAL_PROFESSION</b> - наименование профессии </li>
  * <li> <b>PERSONAL_WWW</b> - персональная WWW-страница </li> <li> <b>PERSONAL_ICQ</b> - ICQ </li> <li>
  * <b>PERSONAL_GENDER</b> - пол ["M" - мужчина; "F" - женщина] </li> <li> <b>PERSONAL_BIRTHDAY</b> -
  * дата рождения в формате текущего сайта (или текущего языка для
  * административной части) </li> <li> <b>PERSONAL_PHOTO</b> - массив описывающий
  * фотографию, допустимы следующие ключи этого массива: <ul> <li> <b>name</b>
  * - имя файла </li> <li> <b>size</b> - размер файла </li> <li> <b>tmp_name</b> - временный
  * путь на сервере </li> <li> <b>type</b> - тип загружаемого файла </li> <li> <b>del</b> -
  * если значение равно "Y", то изображение будет удалено </li> <li>
  * <b>MODULE_ID</b> - идентификатор главного модуля - "main" </li> </ul> </li> <li>
  * <b>PERSONAL_PHONE</b> - телефон </li> <li> <b>PERSONAL_FAX</b> - факс </li> <li> <b>PERSONAL_MOBILE</b> -
  * мобильный телефон </li> <li> <b>PERSONAL_PAGER</b> - пэйджер </li> <li> <b>PERSONAL_STREET</b> -
  * улица, дом </li> <li> <b>PERSONAL_MAILBOX</b> - почтовый ящик </li> <li> <b>PERSONAL_CITY</b> -
  * город </li> <li> <b>PERSONAL_STATE</b> - область / край </li> <li> <b>PERSONAL_ZIP</b> - индекс
  * </li> <li> <b>PERSONAL_COUNTRY</b> - страна </li> <li> <b>PERSONAL_NOTES</b> - личные заметки </li>
  * <li> <b>WORK_COMPANY</b> - наименование компании </li> <li> <b>WORK_DEPARTMENT</b> -
  * департамент / отдел </li> <li> <b>WORK_POSITION</b> - должность </li> <li> <b>WORK_WWW</b> -
  * WWW-страница компании </li> <li> <b>WORK_PHONE</b> - рабочий телефон </li> <li>
  * <b>WORK_FAX</b> - рабочий факс </li> <li> <b>WORK_PAGER</b> - рабочий пэйджер </li> <li>
  * <b>WORK_STREET</b> - улица, дом компании </li> <li> <b>WORK_MAILBOX</b> - почтовый ящик
  * компании </li> <li> <b>WORK_CITY</b> - город компании </li> <li> <b>WORK_STATE</b> - область
  * / край компании </li> <li> <b>WORK_ZIP</b> - индекс компании </li> <li> <b>WORK_COUNTRY</b> -
  * страна компании </li> <li> <b>WORK_PROFILE</b> - направления деятельности
  * компании </li> <li> <b>WORK_LOGO</b> - массив описывающий логотип компании,
  * допустимы следующие ключи этого массива: <ul> <li> <b>name</b> - имя файла
  * </li> <li> <b>size</b> - размер файла </li> <li> <b>tmp_name</b> - временный путь на
  * сервере </li> <li> <b>type</b> - тип загружаемого файла </li> <li> <b>del</b> - если
  * значение равно "Y", то изображение будет удалено </li> <li> <b>MODULE_ID</b> -
  * идентификатор главного модуля - "main" </li> </ul> </li> <li> <b>WORK_NOTES</b> -
  * заметки касаемо работы пользователя </li> </ul> <font color="red">*</font> -
  * обязательные поля.
  *
  *
  *
  * @return mixed 
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // создадим массив описывающий изображение 
  * // находящееся в файле на сервере
  * $arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.gif");
  * $arIMAGE["MODULE_ID"] = "main";
  * 
  * $user = new CUser;
  * $arFields = Array(
  *   "NAME"              =&gt; "Сергей",
  *   "LAST_NAME"         =&gt; "Иванов",
  *   "EMAIL"             =&gt; "*****@*****.**",
  *   "LOGIN"             =&gt; "ivan",
  *   "LID"               =&gt; "ru",
  *   "ACTIVE"            =&gt; "Y",
  *   "GROUP_ID"          =&gt; array(10,11),
  *   "PASSWORD"          =&gt; "123456",
  *   "CONFIRM_PASSWORD"  =&gt; "123456",
  *   "PERSONAL_PHOTO"    =&gt; $arIMAGE
  * );
  * 
  * $ID = <b>$user-&gt;Add</b>($arFields);
  * if (intval($ID) &gt; 0)
  *     echo "Пользователь успешно добавлен.";
  * else
  *     echo $user-&gt;LAST_ERROR;
  * ?&gt;
  * </pre>
  *
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/index.php#flds">Поля CUser</a> </li> <li>
  * <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/update.php">CUser::Update</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/delete.php">CUser::Delete</a> </li> </ul></b<a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/main/reference/cuser/add.php
  * @author Bitrix
  */
 public function Add($arFields)
 {
     /** @global CUserTypeManager $USER_FIELD_MANAGER */
     global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER;
     $ID = 0;
     if (!$this->CheckFields($arFields)) {
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } else {
         unset($arFields["ID"]);
         if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
             $arFields["ACTIVE"] = "N";
         }
         if ($arFields["PERSONAL_GENDER"] == "NOT_REF" || $arFields["PERSONAL_GENDER"] != "M" && $arFields["PERSONAL_GENDER"] != "F") {
             $arFields["PERSONAL_GENDER"] = "";
         }
         $original_pass = $arFields["PASSWORD"];
         $salt = randString(8);
         $arFields["PASSWORD"] = $salt . md5($salt . $arFields["PASSWORD"]);
         unset($arFields["STORED_HASH"]);
         $salt = randString(8);
         $checkword = $arFields["CHECKWORD"] == '' ? md5(CMain::GetServerUniqID() . uniqid()) : $arFields["CHECKWORD"];
         $arFields["CHECKWORD"] = $salt . md5($salt . $checkword);
         $arFields["~CHECKWORD_TIME"] = $DB->CurrentTimeFunction();
         if (is_set($arFields, "EMAIL")) {
             $arFields["EMAIL"] = strtolower($arFields["EMAIL"]);
         }
         if (is_set($arFields, "WORK_COUNTRY")) {
             $arFields["WORK_COUNTRY"] = intval($arFields["WORK_COUNTRY"]);
         }
         if (is_set($arFields, "PERSONAL_COUNTRY")) {
             $arFields["PERSONAL_COUNTRY"] = intval($arFields["PERSONAL_COUNTRY"]);
         }
         if (array_key_exists("PERSONAL_PHOTO", $arFields) && is_array($arFields["PERSONAL_PHOTO"]) && (!array_key_exists("MODULE_ID", $arFields["PERSONAL_PHOTO"]) || strlen($arFields["PERSONAL_PHOTO"]["MODULE_ID"]) <= 0)) {
             $arFields["PERSONAL_PHOTO"]["MODULE_ID"] = "main";
         }
         CFile::SaveForDB($arFields, "PERSONAL_PHOTO", "main");
         if (array_key_exists("WORK_LOGO", $arFields) && is_array($arFields["WORK_LOGO"]) && (!array_key_exists("MODULE_ID", $arFields["WORK_LOGO"]) || strlen($arFields["WORK_LOGO"]["MODULE_ID"]) <= 0)) {
             $arFields["WORK_LOGO"]["MODULE_ID"] = "main";
         }
         CFile::SaveForDB($arFields, "WORK_LOGO", "main");
         $arInsert = $DB->PrepareInsert("b_user", $arFields);
         if (!is_set($arFields, "DATE_REGISTER")) {
             $arInsert[0] .= ", DATE_REGISTER";
             $arInsert[1] .= ", " . $DB->GetNowFunction();
         }
         $strSql = "\n\t\t\t\tINSERT INTO b_user (\n\t\t\t\t\t" . $arInsert[0] . "\n\t\t\t\t) VALUES (\n\t\t\t\t\t" . $arInsert[1] . "\n\t\t\t\t)\n\t\t\t";
         $DB->Query($strSql);
         $ID = $DB->LastID();
         $USER_FIELD_MANAGER->Update("USER", $ID, $arFields);
         if (is_set($arFields, "GROUP_ID")) {
             CUser::SetUserGroup($ID, $arFields["GROUP_ID"]);
         }
         //update digest hash for http digest authorization
         if (COption::GetOptionString('main', 'use_digest_auth', 'N') == 'Y') {
             CUser::UpdateDigest($ID, $original_pass);
         }
         $Result = $ID;
         $arFields["ID"] =& $ID;
         $arFields["CHECKWORD"] = $checkword;
     }
     $arFields["RESULT"] =& $Result;
     foreach (GetModuleEvents("main", "OnAfterUserAdd", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(&$arFields));
     }
     if ($ID > 0 && defined("BX_COMP_MANAGED_CACHE")) {
         $CACHE_MANAGER->ClearByTag("USER_CARD_" . intval($ID / TAGGED_user_card_size));
         $CACHE_MANAGER->ClearByTag("USER_CARD");
         $CACHE_MANAGER->ClearByTag("USER_NAME_" . $ID);
         $CACHE_MANAGER->ClearByTag("USER_NAME");
     }
     return $Result;
 }
 function AuthorizeAdmin($arParams = array())
 {
     global $USER;
     $ADMIN_ID = 0;
     if ($arParams["ID"] > 0) {
         $ADMIN_ID = $arParams["ID"];
     } else {
         unset($arParams["GROUP_ID"]);
         $ADMIN_ID = CControllerClient::UpdateUser($arParams);
     }
     if ($ADMIN_ID > 0) {
         CUser::SetUserGroup($ADMIN_ID, array(1));
         $USER->Authorize($ADMIN_ID);
         $USER->SetControllerAdmin();
         return $ADMIN_ID;
     }
     return false;
 }
Example #10
0
 function Update($ID, $arFields)
 {
     global $DB, $USER_FIELD_MANAGER;
     $ID = intval($ID);
     if (!$this->CheckFields($arFields, $ID)) {
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } else {
         unset($arFields["ID"]);
         if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
             $arFields["ACTIVE"] = "N";
         }
         if (is_set($arFields, "PERSONAL_GENDER") && ($arFields["PERSONAL_GENDER"] != "M" && $arFields["PERSONAL_GENDER"] != "F")) {
             $arFields["PERSONAL_GENDER"] = "";
         }
         if (is_set($arFields, "PASSWORD")) {
             $original_pass = $arFields["PASSWORD"];
             $salt = randString(8, array("abcdefghijklnmopqrstuvwxyz", "ABCDEFGHIJKLNMOPQRSTUVWXYZ", "0123456789", ",.<>/?;:[]{}\\|~!@#\$%^&*()-_+="));
             $arFields["PASSWORD"] = $salt . md5($salt . $arFields["PASSWORD"]);
             $rUser = CUser::GetByID($ID);
             if ($arUser = $rUser->Fetch()) {
                 if ($arUser["PASSWORD"] != $arFields["PASSWORD"]) {
                     $DB->Query("DELETE FROM b_user_stored_auth WHERE USER_ID=" . $ID);
                 }
             }
             if (COption::GetOptionString("main", "event_log_password_change", "N") === "Y") {
                 CEventLog::Log("SECURITY", "USER_PASSWORD_CHANGED", "main", $ID);
             }
             //$arFields["STORED_HASH"] = CUser::GetPasswordHash($arFields["PASSWORD"]);
         }
         unset($arFields["STORED_HASH"]);
         $checkword = '';
         if (!is_set($arFields, "CHECKWORD")) {
             if (is_set($arFields, "PASSWORD") || is_set($arFields, "EMAIL") || is_set($arFields, "LOGIN") || is_set($arFields, "ACTIVE")) {
                 $salt = randString(8);
                 $checkword = md5(CMain::GetServerUniqID() . uniqid());
                 $arFields["CHECKWORD"] = $salt . md5($salt . $checkword);
             }
         } else {
             $salt = randString(8);
             $checkword = $arFields["CHECKWORD"];
             $arFields["CHECKWORD"] = $salt . md5($salt . $checkword);
         }
         if (is_set($arFields, "CHECKWORD") && !is_set($arFields, "CHECKWORD_TIME")) {
             $arFields["~CHECKWORD_TIME"] = $DB->CurrentTimeFunction();
         }
         if (is_set($arFields, "WORK_COUNTRY")) {
             $arFields["WORK_COUNTRY"] = IntVal($arFields["WORK_COUNTRY"]);
         }
         if (is_set($arFields, "PERSONAL_COUNTRY")) {
             $arFields["PERSONAL_COUNTRY"] = IntVal($arFields["PERSONAL_COUNTRY"]);
         }
         if (array_key_exists("PERSONAL_PHOTO", $arFields) && is_array($arFields["PERSONAL_PHOTO"]) && (!array_key_exists("MODULE_ID", $arFields["PERSONAL_PHOTO"]) || strlen($arFields["PERSONAL_PHOTO"]["MODULE_ID"]) <= 0)) {
             $arFields["PERSONAL_PHOTO"]["MODULE_ID"] = "main";
         }
         CFile::SaveForDB($arFields, "PERSONAL_PHOTO", "main");
         if (array_key_exists("WORK_LOGO", $arFields) && is_array($arFields["WORK_LOGO"]) && (!array_key_exists("MODULE_ID", $arFields["WORK_LOGO"]) || strlen($arFields["WORK_LOGO"]["MODULE_ID"]) <= 0)) {
             $arFields["WORK_LOGO"]["MODULE_ID"] = "main";
         }
         CFile::SaveForDB($arFields, "WORK_LOGO", "main");
         $strUpdate = $DB->PrepareUpdate("b_user", $arFields);
         if (!is_set($arFields, "TIMESTAMP_X")) {
             $strUpdate .= ($strUpdate != "" ? "," : "") . " TIMESTAMP_X = " . $DB->GetNowFunction();
         }
         $strSql = "UPDATE b_user SET " . $strUpdate . " WHERE ID=" . $ID;
         $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         $USER_FIELD_MANAGER->Update("USER", $ID, $arFields);
         if (COption::GetOptionString("main", "event_log_user_edit", "N") === "Y") {
             $res_log["user"] = $arFields["NAME"] != "" || $arFields["LAST_NAME"] != "" ? trim($arFields["NAME"] . " " . $arFields["LAST_NAME"]) : $arFields["LOGIN"];
             CEventLog::Log("SECURITY", "USER_EDIT", "main", $ID, serialize($res_log));
         }
         if (is_set($arFields, "GROUP_ID")) {
             CUser::SetUserGroup($ID, $arFields["GROUP_ID"]);
         }
         //update digest hash for http digest authorization
         if (is_set($arFields, "PASSWORD") && COption::GetOptionString('main', 'use_digest_auth', 'N') == 'Y') {
             CUser::UpdateDigest($arUser["ID"], $original_pass);
         }
         $Result = true;
         $arFields["CHECKWORD"] = $checkword;
         //update session information and cache for current user
         global $USER;
         if (is_object($USER) && $USER->GetID() == $ID) {
             static $arSessFields = array('LOGIN' => 'LOGIN', 'EMAIL' => 'EMAIL', 'FIRST_NAME' => 'NAME', 'SECOND_NAME' => 'SECOND_NAME', 'LAST_NAME' => 'LAST_NAME', 'AUTO_TIME_ZONE' => 'AUTO_TIME_ZONE', 'TIME_ZONE' => 'TIME_ZONE');
             foreach ($arSessFields as $key => $val) {
                 if (isset($arFields[$val])) {
                     $USER->SetParam($key, $arFields[$val]);
                 }
             }
             $name = $USER->GetParam("FIRST_NAME");
             $last_name = $USER->GetParam("LAST_NAME");
             $USER->SetParam("NAME", $name . ($name == '' || $last_name == '' ? "" : " ") . $last_name);
             //cache for GetByID()
             self::$CURRENT_USER = false;
         }
     }
     $arFields["ID"] = $ID;
     $arFields["RESULT"] =& $Result;
     $events = GetModuleEvents("main", "OnAfterUserUpdate");
     while ($arEvent = $events->Fetch()) {
         ExecuteModuleEventEx($arEvent, array(&$arFields));
     }
     if (defined("BX_COMP_MANAGED_CACHE")) {
         $GLOBALS["CACHE_MANAGER"]->ClearByTag("USER_CARD_" . intval($ID / 100));
         $GLOBALS["CACHE_MANAGER"]->ClearByTag("USER_CARD");
     }
     return $Result;
 }
Example #11
0
 public static function OnAfterUserRegister($arFields)
 {
     global $DB;
     $err_mess = CRatings::err_mess() . "<br>Function: OnAfterUserRegister<br>Line: ";
     $userId = isset($arFields["USER_ID"]) ? intval($arFields["USER_ID"]) : (isset($arFields["ID"]) ? intval($arFields["ID"]) : 0);
     if ($userId > 0) {
         $authorityRatingId = CRatings::GetAuthorityRating();
         $ratingStartValue = COption::GetOptionString("main", "rating_start_authority", 3);
         $ratingCountVote = COption::GetOptionString("main", "rating_count_vote", 10);
         $arParam = array('RATING_ID' => $authorityRatingId, 'ENTITY_ID' => $userId, 'BONUS' => intval($ratingStartValue), 'VOTE_WEIGHT' => intval($ratingStartValue) * COption::GetOptionString("main", "rating_vote_weight", 1), 'VOTE_COUNT' => intval($ratingCountVote) + intval($ratingStartValue));
         CRatings::UpdateRatingUserBonus($arParam);
         if (IsModuleInstalled("intranet")) {
             $strSql = "INSERT INTO b_rating_subordinate (RATING_ID, ENTITY_ID, VOTES) VALUES ('" . $authorityRatingId . "', '" . $userId . "', '" . (intval($ratingCountVote) + intval($ratingStartValue)) . "')";
             $DB->Query($strSql, false, $err_mess . __LINE__);
         }
         $sRatingAssignType = COption::GetOptionString("main", "rating_assign_type", 'manual');
         if ($sRatingAssignType == 'auto') {
             $assignRatingGroup = COption::GetOptionString("main", "rating_assign_rating_group", 0);
             $assignAuthorityGroup = COption::GetOptionString("main", "rating_assign_authority_group", 0);
             if ($assignRatingGroup == 0 && $assignAuthorityGroup == 0) {
                 return false;
             }
             $arGroups = array();
             $res = CUser::GetUserGroupList($userId);
             while ($res_arr = $res->Fetch()) {
                 $arGroups[] = array("GROUP_ID" => $res_arr["GROUP_ID"], "DATE_ACTIVE_FROM" => $res_arr["DATE_ACTIVE_FROM"], "DATE_ACTIVE_TO" => $res_arr["DATE_ACTIVE_TO"]);
             }
             if ($assignRatingGroup > 0) {
                 $arGroups[] = array("GROUP_ID" => intval($assignRatingGroup));
             }
             if ($assignAuthorityGroup > 0 && $assignRatingGroup != $assignAuthorityGroup) {
                 $arGroups[] = array("GROUP_ID" => intval($assignAuthorityGroup));
             }
             CUser::SetUserGroup($userId, $arGroups);
         }
         if (CACHED_b_rating_vote !== false) {
             global $CACHE_MANAGER;
             $bucket_size = intval(CACHED_b_rating_bucket_size);
             if ($bucket_size <= 0) {
                 $bucket_size = 100;
             }
             $bucket = intval($userId / $bucket_size);
             $CACHE_MANAGER->Clean("b_rvu_" . $authorityRatingId . $bucket, "b_rating_user");
         }
     }
 }
Example #12
0
function CatalogPayOrderCallback($productID, $userID, $bPaid, $orderID)
{
    global $DB;
    global $USER;
    $productID = intval($productID);
    $userID = intval($userID);
    $bPaid = $bPaid ? true : false;
    $orderID = intval($orderID);
    if ($userID <= 0) {
        return false;
    }
    $dbIBlockElement = CIBlockElement::GetList(array(), array("ID" => $productID, "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "CHECK_PERMISSIONS" => "N"), false, false, array('ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL'));
    if ($arIBlockElement = $dbIBlockElement->GetNext()) {
        $arCatalog = CCatalog::GetByID($arIBlockElement["IBLOCK_ID"]);
        if ($arCatalog["SUBSCRIPTION"] == "Y") {
            $arProduct = CCatalogProduct::GetByID($productID);
            if ($bPaid) {
                if ('E' == CIBlock::GetArrayByID($arIBlockElement['IBLOCK_ID'], "RIGHTS_MODE")) {
                    $arUserRights = CIBlockElementRights::GetUserOperations($productID, $userID);
                    if (empty($arUserRights)) {
                        return false;
                    } elseif (!is_array($arUserRights) || !array_key_exists('element_read', $arUserRights)) {
                        return false;
                    }
                } else {
                    if ('R' > CIBlock::GetPermission($arIBlockElement['IBLOCK_ID'], $userID)) {
                        return false;
                    }
                }
                $arUserGroups = array();
                $arTmp = array();
                $ind = -1;
                $curTime = time();
                $dbProductGroups = CCatalogProductGroups::GetList(array(), array("PRODUCT_ID" => $productID), false, false, array("GROUP_ID", "ACCESS_LENGTH", "ACCESS_LENGTH_TYPE"));
                while ($arProductGroups = $dbProductGroups->Fetch()) {
                    $ind++;
                    $arProductGroups['GROUP_ID'] = intval($arProductGroups['GROUP_ID']);
                    $accessType = $arProductGroups["ACCESS_LENGTH_TYPE"];
                    $accessLength = intval($arProductGroups["ACCESS_LENGTH"]);
                    $accessVal = 0;
                    if (0 < $accessLength) {
                        if ($accessType == CCatalogProduct::TIME_PERIOD_HOUR) {
                            $accessVal = mktime(date("H") + $accessLength, date("i"), date("s"), date("m"), date("d"), date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_DAY) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d") + $accessLength, date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_WEEK) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7 * $accessLength, date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_MONTH) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m") + $accessLength, date("d"), date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_QUART) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m") + 3 * $accessLength, date("d"), date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_SEMIYEAR) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m") + 6 * $accessLength, date("d"), date("Y"));
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_YEAR) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y") + $accessLength);
                        } elseif ($accessType == CCatalogProduct::TIME_PERIOD_DOUBLE_YEAR) {
                            $accessVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y") + 2 * $accessLength);
                        }
                    }
                    $arUserGroups[$ind] = array("GROUP_ID" => $arProductGroups["GROUP_ID"], "DATE_ACTIVE_FROM" => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID)), $curTime), "DATE_ACTIVE_TO" => 0 < $accessLength ? date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID)), $accessVal) : false);
                    $arTmp[$arProductGroups["GROUP_ID"]] = $ind;
                }
                if (!empty($arUserGroups)) {
                    $dbOldGroups = CUser::GetUserGroupEx($userID);
                    while ($arOldGroups = $dbOldGroups->Fetch()) {
                        $arOldGroups["GROUP_ID"] = intval($arOldGroups["GROUP_ID"]);
                        if (array_key_exists($arOldGroups["GROUP_ID"], $arTmp)) {
                            if (strlen($arOldGroups["DATE_ACTIVE_FROM"]) <= 0) {
                                $arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_FROM"] = false;
                            } else {
                                $oldDate = CDatabase::FormatDate($arOldGroups["DATE_ACTIVE_FROM"], CSite::GetDateFormat("SHORT", SITE_ID), "YYYYMMDDHHMISS");
                                $newDate = CDatabase::FormatDate($arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_FROM"], CSite::GetDateFormat("SHORT", SITE_ID), "YYYYMMDDHHMISS");
                                if ($oldDate > $newDate) {
                                    $arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_FROM"] = $arOldGroups["DATE_ACTIVE_FROM"];
                                }
                            }
                            if (strlen($arOldGroups["DATE_ACTIVE_TO"]) <= 0) {
                                $arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_TO"] = false;
                            } elseif (false !== $arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_TO"]) {
                                $oldDate = CDatabase::FormatDate($arOldGroups["DATE_ACTIVE_TO"], CSite::GetDateFormat("SHORT", SITE_ID), "YYYYMMDDHHMISS");
                                $newDate = CDatabase::FormatDate($arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_TO"], CSite::GetDateFormat("SHORT", SITE_ID), "YYYYMMDDHHMISS");
                                if ($oldDate > $newDate) {
                                    $arUserGroups[$arTmp[$arOldGroups["GROUP_ID"]]]["DATE_ACTIVE_TO"] = $arOldGroups["DATE_ACTIVE_TO"];
                                }
                            }
                        } else {
                            $ind++;
                            $arUserGroups[$ind] = array("GROUP_ID" => $arOldGroups["GROUP_ID"], "DATE_ACTIVE_FROM" => $arOldGroups["DATE_ACTIVE_FROM"], "DATE_ACTIVE_TO" => $arOldGroups["DATE_ACTIVE_TO"]);
                        }
                    }
                    CUser::SetUserGroup($userID, $arUserGroups);
                    if (CCatalog::IsUserExists()) {
                        if (intval($USER->GetID()) == $userID) {
                            $arUserGroupsTmp = array();
                            foreach ($arUserGroups as &$arOneGroup) {
                                $arUserGroupsTmp[] = $arOneGroup["GROUP_ID"];
                            }
                            if (isset($arOneGroup)) {
                                unset($arOneGroup);
                            }
                            $USER->SetUserGroupArray($arUserGroupsTmp);
                        }
                    }
                }
            } else {
                $arUserGroups = array();
                $ind = -1;
                $arTmp = array();
                $dbOldGroups = CUser::GetUserGroupEx($userID);
                while ($arOldGroups = $dbOldGroups->Fetch()) {
                    $ind++;
                    $arOldGroups["GROUP_ID"] = intval($arOldGroups["GROUP_ID"]);
                    $arUserGroups[$ind] = array("GROUP_ID" => $arOldGroups["GROUP_ID"], "DATE_ACTIVE_FROM" => $arOldGroups["DATE_ACTIVE_FROM"], "DATE_ACTIVE_TO" => $arOldGroups["DATE_ACTIVE_FROM"]);
                    $arTmp[$arOldGroups["GROUP_ID"]] = $ind;
                }
                $bNeedUpdate = false;
                $dbProductGroups = CCatalogProductGroups::GetList(array(), array("PRODUCT_ID" => $productID), false, false, array("GROUP_ID"));
                while ($arProductGroups = $dbProductGroups->Fetch()) {
                    $arProductGroups["GROUP_ID"] = intval($arProductGroups["GROUP_ID"]);
                    if (array_key_exists($arProductGroups["GROUP_ID"], $arTmp)) {
                        unset($arUserGroups[$arProductGroups["GROUP_ID"]]);
                        $bNeedUpdate = true;
                    }
                }
                if ($bNeedUpdate) {
                    CUser::SetUserGroup($userID, $arUserGroups);
                    if (CCatalog::IsUserExists()) {
                        if (intval($USER->GetID()) == $userID) {
                            $arUserGroupsTmp = array();
                            foreach ($arUserGroups as &$arOneGroup) {
                                $arUserGroupsTmp[] = $arOneGroup["GROUP_ID"];
                            }
                            if (isset($arOneGroup)) {
                                unset($arOneGroup);
                            }
                            $USER->SetUserGroupArray($arUserGroupsTmp);
                        }
                    }
                }
            }
            if ($arProduct["PRICE_TYPE"] != "S") {
                if ($bPaid) {
                    $recurType = $arProduct["RECUR_SCHEME_TYPE"];
                    $recurLength = intval($arProduct["RECUR_SCHEME_LENGTH"]);
                    $recurSchemeVal = 0;
                    if ($recurType == CCatalogProduct::TIME_PERIOD_HOUR) {
                        $recurSchemeVal = mktime(date("H") + $recurLength, date("i"), date("s"), date("m"), date("d"), date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_DAY) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d") + $recurLength, date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_WEEK) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7 * $recurLength, date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_MONTH) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m") + $recurLength, date("d"), date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_QUART) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m") + 3 * $recurLength, date("d"), date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_SEMIYEAR) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m") + 6 * $recurLength, date("d"), date("Y"));
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_YEAR) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y") + $recurLength);
                    } elseif ($recurType == CCatalogProduct::TIME_PERIOD_DOUBLE_YEAR) {
                        $recurSchemeVal = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y") + 2 * $recurLength);
                    }
                    $arFields = array("USER_ID" => $userID, "MODULE" => "catalog", "PRODUCT_ID" => $productID, "PRODUCT_NAME" => $arIBlockElement["~NAME"], "PRODUCT_URL" => $arIBlockElement["~DETAIL_PAGE_URL"], "PRODUCT_PRICE_ID" => false, "PRICE_TYPE" => $arProduct["PRICE_TYPE"], "RECUR_SCHEME_TYPE" => $recurType, "RECUR_SCHEME_LENGTH" => $recurLength, "WITHOUT_ORDER" => $arProduct["WITHOUT_ORDER"], "PRICE" => false, "CURRENCY" => false, "CANCELED" => "N", "CANCELED_REASON" => false, "PRODUCT_PROVIDER_CLASS" => "CCatalogProductProvider", "DESCRIPTION" => false, "PRIOR_DATE" => false, "NEXT_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID)), $recurSchemeVal));
                    return $arFields;
                }
            }
        }
        return true;
    }
    return false;
}
Example #13
0
 function SetUser($arLdapUser, $bAddNew = true)
 {
     global $USER;
     $isHead = false;
     $bUSERGen = false;
     if (!is_object($USER)) {
         $USER = new CUser();
         $bUSERGen = true;
     }
     // process previously saved department data
     if (IsModuleInstalled('intranet') && is_array($arLdapUser['UF_DEPARTMENT'])) {
         $isHead = $arLdapUser['UF_DEPARTMENT']['IS_HEAD'];
         // replace temporary value with a real one
         $arLdapUser['UF_DEPARTMENT'] = array($arLdapUser['UF_DEPARTMENT']['ID']);
     }
     if (isset($arLdapUser["ID"])) {
         $ID = intval($arLdapUser["ID"]);
         self::PrepareUserPhoto($ID, $arLdapUser);
         $USER->Update($ID, $arLdapUser);
     } else {
         $ldapUserID = 0;
         if (isset($_REQUEST["ldap_user_id"]) && strlen($_REQUEST["ldap_user_id"]) == 32) {
             $dbUser = CUser::GetList($O = "", $B = "", array("XML_ID" => $_REQUEST["ldap_user_id"], 'EXTERNAL_AUTH_ID' => $arLdapUser['EXTERNAL_AUTH_ID']));
             if ($arUser = $dbUser->Fetch()) {
                 if ($arUser["XML_ID"]) {
                     $ldapUserID = $arUser["ID"];
                 }
             }
         }
         $res = CUser::GetList($O = "", $B = "", array('LOGIN_EQUAL_EXACT' => $arLdapUser['LOGIN'], 'EXTERNAL_AUTH_ID' => $arLdapUser['EXTERNAL_AUTH_ID']));
         $arLdapUser['PASSWORD'] = uniqid(rand(), true);
         if (!($ar_res = $res->Fetch()) && $ldapUserID < 1) {
             if ($bAddNew) {
                 if (strlen($arLdapUser["EMAIL"]) <= 0) {
                     $arLdapUser["EMAIL"] = COption::GetOptionString("ldap", "default_email", 'no@email');
                 }
                 $ID = $USER->Add($arLdapUser);
             } else {
                 $ID = 0;
             }
         } else {
             $ID = $ldapUserID > 1 ? $ldapUserID : $ar_res['ID'];
             self::PrepareUserPhoto($ID, $arLdapUser);
             $USER->Update($ID, $arLdapUser);
         }
         $ID = intval($ID);
     }
     // - add this user to groups
     if ($ID > 0) {
         // - set as head of department
         if (IsModuleInstalled('intranet') && $isHead) {
             CLdapUtil::SetDepartmentHead($ID, $arLdapUser['UF_DEPARTMENT'][0]);
         }
         // For each group finding all superior ones
         $arUserLdapGroups = array();
         $arLdapGroups = $this->GetGroupListArray();
         $this->GetAllMemberOf($arLdapUser['LDAP_GROUPS'], $arUserLdapGroups, $arLdapGroups);
         $arGroupMaps = $this->GetGroupMaps();
         $arUserBitrixGroups = $USER->GetUserGroup($ID);
         $arUserBitrixGroupsNew = array();
         $prevGroups = $arUserBitrixGroups;
         sort($prevGroups);
         foreach ($arGroupMaps as $fromLdapGroup => $arToUserGroups) {
             foreach ($arToUserGroups as $toUserGroup) {
                 if (($k = array_search($toUserGroup, $arUserBitrixGroups)) !== false) {
                     unset($arUserBitrixGroups[$k]);
                 }
                 // If there is such a group among user's
                 if (in_array($fromLdapGroup, $arUserLdapGroups)) {
                     $arUserBitrixGroupsNew[] = $toUserGroup;
                 }
             }
         }
         $arUserBitrixGroups = array_merge($arUserBitrixGroups, array_unique($arUserBitrixGroupsNew));
         sort($arUserBitrixGroups);
         if ($arUserBitrixGroups != $prevGroups) {
             $USER->SetUserGroup($ID, $arUserBitrixGroups);
         }
     }
     if ($bUSERGen) {
         unset($USER);
     }
     return $ID;
 }
Example #14
0
             } else {
                 $UserId = CustomUser::NewUser($Fields);
             }
             if ($UserId > 0) {
                 /*
                 if($Fields["UF_YOU_HAVE_18"] == 1){
                 	CustomUser::AddUserGroupClosedCommunity(array("USER_ID"=> $UserId,"UF_YOU_HAVE_18" => 1));
                 }
                 */
                 $USER->Authorize($UserId);
                 $Fields["UF_FB_PROFILE"] = array($UserDate->id);
                 CustomUser::UserUpdate($Fields);
                 if ($ambassador) {
                     $arGroups = CUser::GetUserGroup($UserId);
                     $arGroups[] = 13;
                     CUser::SetUserGroup($UserId, $arGroups);
                 }
             }
         }
     }
 }
 if (strripos($_SERVER['HTTP_USER_AGENT'], "iphone") || strripos($_SERVER['HTTP_USER_AGENT'], "android") || strripos($_SERVER['HTTP_USER_AGENT'], "ipod") || strripos($_SERVER['HTTP_USER_AGENT'], "windows phone")) {
     $backurl = $APPLICATION->get_cookie("MQ_BACKURL");
     if ($backurl) {
         $APPLICATION->set_cookie("MQ_BACKURL", "", time(), "/");
     }
     LocalRedirect('http://' . $_SERVER['SERVER_NAME'] . "/?backurl=" . $backurl);
 } else {
     echo "<script type=\"text/javascript\">window.close();</script>";
 }
 require_once $_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/epilog_after.php";
Example #15
0
						"ACTIVE" => "Y",
						"NAME" => GetMessage("USER_IMPORT_GROUP_PERM_NAME"),
						"STRING_ID" => "1C_USER_IMPORT_GROUP",
					);

					$groupID = $group->Add($arFields);
				}

				if ($groupID > 0)
				{
					$arGroups = array($groupID);
					COption::SetOptionString("intranet", "1C_USER_IMPORT_GROUP_PERMISSIONS", $groupID);
				}
			}

			CUser::SetUserGroup($userID, $arGroups);
		}
		else
			$strError = $user->LAST_ERROR;
	}

	if ($strError !== false)
		$tabStep = 2;

	//Ajax (Main form action)
	if (isset($_REQUEST["action"]) && $_REQUEST["action"] == "import" && $strError === false)
	{
		if ($csvImport)
		{
			$csvFile =& $csvImport->GetCsvObject();
Example #16
0
     if ($arIBlock = $rsIBlock->Fetch()) {
         $iblockID = $arIBlock["ID"];
         $arFilter["ID"] = WIZARD_SITE_DEPARTAMENT;
         $rsSections = CIBlockSection::GetList(array(), $arFilter);
         $arSection = $rsSections->GetNext();
         $arFilter = array("LEFT_MARGIN" => $arSection["LEFT_MARGIN"], "RIGHT_MARGIN" => $arSection["RIGHT_MARGIN"], "BLOCK_ID" => $iblockID, 'ACTIVE' => 'Y', 'GLOBAL_ACTIVE' => 'Y');
         $rsSections = CIBlockSection::GetList(array("left_margin" => "asc"), $arFilter);
         $arSectionUsers = array();
         while ($arSection = $rsSections->GetNext()) {
             $arSectionUsers[] = $arSection['ID'];
         }
         $rsUsers = CUser::GetList($by = "id", $order = "asc", array("UF_DEPARTMENT" => $arSectionUsers));
         while ($arUsers = $rsUsers->Fetch()) {
             $arGroups = CUser::GetUserGroup($arUsers["ID"]);
             $arGroups[] = $groupID;
             CUser::SetUserGroup($arUsers["ID"], $arGroups);
         }
     }
     $dbResult = CGroup::GetList($by, $order, array("STRING_ID" => "PERSONNEL_DEPARTMENT", "STRING_ID_EXACT_MATCH" => "Y"));
     if ($arExistsGroup = $dbResult->Fetch()) {
         $groupID = $arExistsGroup["ID"];
         $arSubordinateGroups = CGroup::GetSubordinateGroups($groupID);
         $arSubordinateGroups[] = $SiteGroups["EMPLOYEES_" . WIZARD_SITE_ID];
         $arSubordinateGroups[] = $SiteGroups["RATING_VOTE"];
         $arSubordinateGroups[] = $SiteGroups["RATING_VOTE_AUTHORITY"];
         CGroup::SetSubordinateGroups($groupID, $arSubordinateGroups);
     }
     CGroup::SetSubordinateGroups($SiteGroups["PORTAL_ADMINISTRATION_" . WIZARD_SITE_ID], array($SiteGroups["EMPLOYEES_" . WIZARD_SITE_ID]));
 }
 /*$allowGuests = COption::GetOptionString("main", "wizard_allow_group", "N", WIZARD_SITE_ID);
 		if($allowGuests == "Y")
Example #17
0
    foreach ($arGroup["TASKS_FILE"] as $arFile) {
        $taskName = $arFile[0];
        $filePath = $arFile[1];
        $dbResult = CTask::GetList(array(), array("NAME" => $taskName));
        if ($arTask = $dbResult->Fetch()) {
            CExtranetWizardServices::SetFilePermission(array(WIZARD_SITE_ID, $filePath), array($groupID => "T_" . $arTask["ID"]));
        }
    }
}
// set view perms for employee groups
$rsGroupEmployees = CGroup::GetList($by = "c_sort", $order = "asc", array("STRING_ID" => "EMPLOYEES%"));
while ($arGroupEmployees = $rsGroupEmployees->Fetch()) {
    $dbResult = CTask::GetList(array(), array("NAME" => "fm_folder_access_read"));
    if ($arTask = $dbResult->Fetch()) {
        CExtranetWizardServices::SetFilePermission(array(WIZARD_SITE_ID, WIZARD_SITE_DIR), array($arGroupEmployees["ID"] => "T_" . $arTask["ID"]));
    }
}
$APPLICATION->SetGroupRight("fileman", WIZARD_EXTRANET_ADMIN_GROUP, "F");
$task_id = CTask::GetIdByLetter("F", "fileman");
if (intval($task_id) > 0) {
    CGroup::SetTasksForModule("fileman", array(WIZARD_EXTRANET_ADMIN_GROUP => array("ID" => $task_id)));
}
CWizardUtil::ReplaceMacros(WIZARD_SITE_PATH . "/.top.menu.php", array("EXTRANET_ADMIN_GROUP_ID" => $ExtranetAdminGroupID));
$rsUser = CUser::GetList($by = "ID", $order = "desc", array("GROUPS_ID" => array(1)));
while ($arAdminUser = $rsUser->Fetch()) {
    $arUserGroups = CUser::GetUserGroup($arAdminUser["ID"]);
    if (is_array($arUserGroups) && !in_array(WIZARD_EXTRANET_GROUP, $arUserGroups)) {
        $arUserGroups[] = WIZARD_EXTRANET_GROUP;
        CUser::SetUserGroup($arAdminUser["ID"], $arUserGroups);
    }
}
Example #18
0
                            // Тут что-то обновляется неведомое от старого сайта
                            /*
                            if ($APPLICATION->get_cookie("MQ_REGISTRATION_TOKEN")) {
                            	$fields = array_merge($fields, array(
                            		'UF_INVITE_STATUS' => 1,
                            		'UF_STATUS' => 31
                            	));
                            }
                            */
                            if (!$APPLICATION->get_cookie("MQ_AUTH_TOKEN")) {
                                $APPLICATION->set_cookie("MQ_AUTH_TOKEN", $token, time() + 60 * 60 * 24 * 30 * 12 * 4, "/");
                                $fields = array_merge($fields, array('UF_AUTH_TOKEN' => $token));
                            }
                            if ($APPLICATION->get_cookie("MQ_AMBASSADOR")) {
                                $APPLICATION->set_cookie("MQ_AMBASSADOR", 0, time() - 60, "/");
                                CUser::SetUserGroup($ID, array_merge(array(13), CUser::GetUserGroup($ID)));
                            }
                        }
                    } else {
                        $result['url'] = '/signup/lock/';
                    }
                    $user = new CUser();
                    $user->Update($ID, $fields);
                }
            }
        } else {
            $result['url'] = '/';
        }
        ?>
			<script type="text/javascript">
				if(window.opener) {
Example #19
0
 function LoadUser($arXMLElement, &$counter)
 {
     $start_time = microtime(true);
     static $USER_COUNTER = null;
     static $property_state_final = 0;
     if (!is_array($property_state_final)) {
         $property_state_final = array();
         $property_state = CIBlockPropertyEnum::GetList(array(), array("IBLOCK_ID" => $this->STATE_HISTORY_IBLOCK_ID, "CODE" => "STATE"));
         while ($property_state_enum = $property_state->GetNext()) {
             $property_state_final[ToLower($property_state_enum["VALUE"])] = $property_state_enum["ID"];
         }
     }
     $obUser =& $this->__user;
     // this counter'll be used for generating users login name
     if (null == $USER_COUNTER) {
         $dbRes = $GLOBALS['DB']->Query('SELECT MAX(ID) M FROM b_user');
         $ar = $dbRes->Fetch();
         $USER_COUNTER = $ar['M'];
     }
     $CURRENT_USER = false;
     // check user existence
     if ($arCurrentUser = $this->GetUserByXML_ID($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ID')])) {
         $CURRENT_USER = $arCurrentUser['ID'];
     }
     // common user data
     $arFields = array('ACTIVE' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATUS')] == GetMessage('IBLOCK_XML2_USER_VALUE_DELETED') ? 'N' : 'Y', 'UF_1C' => 'Y', 'XML_ID' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ID')], 'LID' => $this->arParams['SITE_ID'], 'LAST_NAME' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_LAST_NAME')], 'NAME' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_FIRST_NAME')], 'SECOND_NAME' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_SECOND_NAME')], 'PERSONAL_BIRTHDAY' => !empty($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_BIRTH_DATE')]) ? ConvertTimeStamp(MakeTimeStamp($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_BIRTH_DATE')], 'YYYY-MM-DD')) : '', 'PERSONAL_GENDER' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_GENDER')] == GetMessage('IBLOCK_XML2_USER_VALUE_FEMALE') ? 'F' : 'M', 'UF_INN' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_INN')], 'WORK_POSITION' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_POST')], 'PERSONAL_PROFESSION' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_POST')]);
     if (array_key_exists(GetMessage('IBLOCK_XML2_USER_TAG_PHOTO'), $arXMLElement)) {
         if ($arCurrentUser['PERSONAL_PHOTO'] > 0) {
             CFile::Delete($arCurrentUser['PERSONAL_PHOTO']);
         }
         if (strlen($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_PHOTO')]) > 0) {
             $arFields['PERSONAL_PHOTO'] = $this->MakeFileArray($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_PHOTO')]);
         }
     }
     // address fields
     if (is_array($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ADDRESS')])) {
         foreach ($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ADDRESS')] as $key => $arAddressField) {
             if (GetMessage('IBLOCK_XML2_USER_TAG_FULLADDRESS') == $key) {
                 $arFields['PERSONAL_STREET'] = $arAddressField;
             } else {
                 $type = $arAddressField[GetMessage('IBLOCK_XML2_USER_TAG_TYPE')];
                 $value = $arAddressField[GetMessage('IBLOCK_XML2_USER_TAG_VALUE')];
                 switch ($type) {
                     case GetMessage('IBLOCK_XML2_USER_VALUE_ZIP'):
                         $arFields['PERSONAL_ZIP'] = $value;
                         break;
                     case GetMessage('IBLOCK_XML2_USER_VALUE_STATE'):
                         $arFields['PERSONAL_STATE'] = $value;
                         break;
                     case GetMessage('IBLOCK_XML2_USER_VALUE_DISTRICT'):
                         $arFields['UF_DISTRICT'] = $value;
                         break;
                     case GetMessage('IBLOCK_XML2_USER_VALUE_CITY1'):
                     case GetMessage('IBLOCK_XML2_USER_VALUE_CITY2'):
                         if ($arFields['PERSONAL_CITY']) {
                             $arFields['PERSONAL_CITY'] .= ', ';
                         }
                         $arFields['PERSONAL_CITY'] .= $value;
                         break;
                     default:
                         break;
                 }
             }
         }
     }
     // contact fields
     if (is_array($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_CONTACTS')])) {
         foreach ($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_CONTACTS')] as $arContactsField) {
             $type = $arContactsField[GetMessage('IBLOCK_XML2_USER_TAG_TYPE')];
             $value = $arContactsField[GetMessage('IBLOCK_XML2_USER_TAG_VALUE')];
             switch ($type) {
                 case GetMessage('IBLOCK_XML2_USER_VALUE_PHONE_INNER'):
                     $arFields['UF_PHONE_INNER'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_PHONE_WORK'):
                     $arFields['WORK_PHONE'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_PHONE_MOBILE'):
                     $arFields['PERSONAL_MOBILE'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_PHONE_PERSONAL'):
                     $arFields['PERSONAL_PHONE'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_PAGER'):
                     $arFields['PERSONAL_PAGER'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_FAX'):
                     $arFields['PERSONAL_FAX'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_EMAIL'):
                     $arFields['EMAIL'] = $value;
                     // b_user.EMAIL
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_ICQ'):
                     $arFields['PERSONAL_ICQ'] = $value;
                     break;
                 case GetMessage('IBLOCK_XML2_USER_VALUE_WWW'):
                     $arFields['PERSONAL_WWW'] = $value;
                     break;
                 default:
                     break;
             }
         }
     }
     //departments data
     $arFields['UF_DEPARTMENT'] = array();
     if (is_array($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENTS')])) {
         foreach ($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENTS')] as $DEPT_XML_ID) {
             if ($DEPT_ID = $this->GetSectionByXML_ID($this->DEPARTMENTS_IBLOCK_ID, $DEPT_XML_ID)) {
                 $arFields['UF_DEPARTMENT'][] = $DEPT_ID;
             }
         }
     }
     // state history
     if (is_array($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATE_HISTORY')])) {
         $last_state_date = 0;
         $first_state_date = 1767132000;
         //strtotime('2025-12-31')
         $arStateHistory = array();
         foreach ($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATE_HISTORY')] as $arState) {
             $state = $arState[GetMessage('IBLOCK_XML2_USER_TAG_VALUE')];
             $date = intval(MakeTimeStamp($arState[GetMessage('IBLOCK_XML2_USER_TAG_DATE')], 'YYYY-MM-DD'));
             while (is_array($arStateHistory[$date])) {
                 $date++;
             }
             if (!$last_state_date || doubleval($last_state_date) < doubleval($date)) {
                 $last_state_date = $date;
             }
             if (doubleval($first_state_date) > doubleval($date)) {
                 $first_state_date = $date;
             }
             $DEPARTMENT_ID = $this->GetSectionByXML_ID($this->DEPARTMENTS_IBLOCK_ID, $arState[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT')]);
             $arStateHistory[$date] = array('STATE' => $state, 'POST' => $arState[GetMessage('IBLOCK_XML2_USER_TAG_POST')], 'DEPARTMENT' => $DEPARTMENT_ID);
         }
         ksort($arStateHistory);
         // if person's last state is "Fired" - deactivate him.
         if (GetMessage('IBLOCK_XML2_USER_VALUE_FIRED') == $arStateHistory[$last_state_date]['STATE']) {
             $arFields['ACTIVE'] = 'N';
         }
         // save data serialized
         //$arFields['UF_1C_STATE_HISTORY'] = serialize($arStateHistory);
     } else {
         $arStateHistory = array();
         $last_state_date = null;
         $first_state_date = null;
     }
     // properties data
     if (is_array($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_PROPERTY_VALUES')])) {
         foreach ($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_PROPERTY_VALUES')] as $arPropertyData) {
             $PROP_XML_ID = $arPropertyData[GetMessage('IBLOCK_XML2_USER_TAG_ID')];
             $PROP_VALUE = $arPropertyData[GetMessage('IBLOCK_XML2_USER_TAG_VALUE')];
             $arFields[$this->CalcPropertyFieldName($PROP_XML_ID)] = $PROP_VALUE;
         }
     }
     if (!$arFields['EMAIL'] && $this->arParams['EMAIL_PROPERTY_XML_ID']) {
         $arFields['EMAIL'] = $arFields[$this->CalcPropertyFieldName($this->arParams['EMAIL_PROPERTY_XML_ID'])];
     }
     $bEmailExists = true;
     if (!$arFields['EMAIL'] && $this->arParams['DEFAULT_EMAIL']) {
         $bEmailExists = false;
         $arFields['EMAIL'] = $this->arParams['DEFAULT_EMAIL'];
     }
     if (!$arFields['EMAIL']) {
         $bEmailExists = false;
         $arFields['EMAIL'] = COption::GetOptionString('main', 'email_from', "admin@" . $_SERVER['SERVER_NAME']);
     }
     // EMAIL, LOGIN and PASSWORD fields
     if (!$CURRENT_USER) {
         // for a new user
         $USER_COUNTER++;
         $arFields['LOGIN'] = '';
         if ($this->arParams['LDAP_ID_PROPERTY_XML_ID'] && $this->arParams['LDAP_SERVER']) {
             if ($arFields['LOGIN'] = $arFields[$this->CalcPropertyFieldName($this->arParams['LDAP_ID_PROPERTY_XML_ID'])]) {
                 $arFields['EXTERNAL_AUTH_ID'] = 'LDAP#' . $this->arParams['LDAP_SERVER'];
             }
         }
         if (!$arFields['LOGIN'] && $this->arParams['LOGIN_PROPERTY_XML_ID']) {
             $arFields['LOGIN'] = $arFields[$this->CalcPropertyFieldName($this->arParams['LOGIN_PROPERTY_XML_ID'])];
         }
         if (!$arFields['LOGIN'] && $this->arParams['LOGIN_TEMPLATE']) {
             $arFields['LOGIN'] = str_replace('#', $USER_COUNTER, $this->arParams['LOGIN_TEMPLATE']);
         }
         if (!$arFields['LOGIN']) {
             $arFields['LOGIN'] = '******' . $USER_COUNTER;
         }
         if (!$arFields['EXTERNAL_AUTH_ID']) {
             if ($this->arParams['PASSWORD_PROPERTY_XML_ID']) {
                 $arFields['PASSWORD'] = $arFields['CONFIRM_PASSWORD'] = $arFields[$this->CalcPropertyFieldName($this->arParams['PASSWORD_PROPERTY_XML_ID'])];
             }
             if (!$arFields['PASSWORD']) {
                 $arFields['PASSWORD'] = $arFields['CONFIRM_PASSWORD'] = RandString($this->arParams['PASSWORD_LENGTH'] ? $this->arParams['PASSWORD_LENGTH'] : 7);
             }
         }
         // set user groups list to default from main module setting
         if (is_array($this->arUserGroups)) {
             $arFields['GROUP_ID'] = $this->arUserGroups;
         }
     } else {
         // for an existing user
         if ($this->arParams['UPDATE_LOGIN']) {
             $arFields['LOGIN'] = $arFields[$this->CalcPropertyFieldName($this->arParams['LOGIN_PROPERTY_XML_ID'])];
             if (strlen($arFields['LOGIN']) <= 0) {
                 unset($arFields['LOGIN']);
             }
         }
         if ($this->arParams['UPDATE_PASSWORD']) {
             $arFields['PASSWORD'] = $arFields['CONFIRM_PASSWORD'] = $arFields[$this->CalcPropertyFieldName($this->arParams['PASSWORD_PROPERTY_XML_ID'])];
             if (strlen($arFields['PASSWORD']) <= 0) {
                 unset($arFields['PASSWORD']);
                 unset($arFields['CONFIRM_PASSWORD']);
             }
         }
         if (!$this->arParams['UPDATE_EMAIL'] || strlen($arFields['EMAIL']) <= 0) {
             unset($arFields['EMAIL']);
         }
     }
     $bNew = $CURRENT_USER <= 0;
     if (!$bNew) {
         foreach ($arFields as $key => $value) {
             if ($key !== 'ACTIVE' && !in_array($key, $this->arParams['UPDATE_PROPERTIES'])) {
                 unset($arFields[$key]);
             }
         }
         // update existing user
         if ($res = $obUser->Update($CURRENT_USER, $arFields)) {
             $counter[$arFields['ACTIVE'] == 'Y' ? 'UPD' : 'DEA']++;
         }
     } else {
         $group_id = $arFields['GROUP_ID'];
         unset($arFields['GROUP_ID']);
         // create new user
         if ($CURRENT_USER = $obUser->Add($arFields)) {
             $counter['ADD']++;
             CUser::SetUserGroup($CURRENT_USER, $group_id);
             if (isset($this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'][$arFields['XML_ID']])) {
                 $obSection = new CIBlockSection();
                 foreach ($this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'][$arFields['XML_ID']] as $dpt) {
                     $obSection->Update($dpt, array('UF_HEAD' => $CURRENT_USER), false, false);
                 }
             }
             if ($this->arParams['EMAIL_NOTIFY'] == 'Y' || $this->arParams['EMAIL_NOTIFY'] == 'E' && $bEmailExists) {
                 $arFields['ID'] = $CURRENT_USER;
                 //$this->__event->Send("USER_INFO", SITE_ID, $arFields);
                 //echo CEvent::Send("USER_INFO", 's1', $arFields);
                 $this->__user->SendUserInfo($CURRENT_USER, $this->arParams['SITE_ID'], '', $this->arParams['EMAIL_NOTIFY_IMMEDIATELY'] == 'Y');
             }
         }
         if (!($res = $CURRENT_USER > 0)) {
             $USER_COUNTER--;
         }
     }
     if (!$res) {
         $counter['ERR']++;
         $fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intranet/cml2-import-user.log', 'a');
         fwrite($fp, "==============================================================\r\n");
         fwrite($fp, $obUser->LAST_ERROR . "\r\n");
         fwrite($fp, print_r($arFields, true));
         fwrite($fp, "==============================================================\r\n");
         fclose($fp);
     } elseif (is_array($arStateHistory) && count($arStateHistory) > 0) {
         if (null == $this->__ib) {
             $this->__ib = new CIBlockElement();
         }
         if (!$bNew) {
             $dbRes = $this->__ib->GetList(array(), array('PROPERTY_USER' => $CURRENT_USER, 'IBLOCK_ID' => $this->STATE_HISTORY_IBLOCK_ID), false, false, array('ID', 'IBLOCK_ID'));
             while ($arRes = $dbRes->Fetch()) {
                 $this->__ib->Delete($arRes['ID']);
             }
         }
         foreach ($arStateHistory as $date => $arState) {
             $arStateFields = array('IBLOCK_SECTION' => false, 'IBLOCK_ID' => $this->STATE_HISTORY_IBLOCK_ID, 'DATE_ACTIVE_FROM' => ConvertTimeStamp($date, 'SHORT'), 'ACTIVE' => 'Y', 'NAME' => $arState['STATE'] . ' - ' . $arFields['LAST_NAME'] . ' ' . $arFields['NAME'], 'PREVIEW_TEXT' => $arState['STATE'], 'PROPERTY_VALUES' => array('POST' => $arState['POST'], 'USER' => $CURRENT_USER, 'DEPARTMENT' => $arState['DEPARTMENT'], 'STATE' => array("VALUE" => $property_state_final[ToLower($arState['STATE'])])));
             if (!$this->__ib->Add($arStateFields, false, false)) {
                 $fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intranet/cml2-import-state.log', 'a');
                 fwrite($fp, "==============================================================\r\n");
                 fwrite($fp, $this->__ib->LAST_ERROR . "\r\n");
                 fwrite($fp, print_r($arStateFields, true));
                 fwrite($fp, "==============================================================\r\n");
                 fclose($fp);
             }
         }
     }
     return $CURRENT_USER;
 }
Example #20
0
     if ($gr_id <= 0) {
         continue;
     }
     if ($gr_id == 1 && !$USER->CanDoOperation('edit_php')) {
         // not admin can't edit admins
         continue;
     }
     if ($USER->CanDoOperation('edit_subordinate_users') && !$USER->CanDoOperation('edit_all_users') && !in_array($gr_id, $arUserSubordinateGroups)) {
         continue;
     }
     if ($_REQUEST['action'] == "add_group") {
         $arGroups[$gr_id] = array("GROUP_ID" => $gr_id);
     } else {
         unset($arGroups[$gr_id]);
     }
     CUser::SetUserGroup($ID, $arGroups);
     break;
 case "add_structure":
 case "remove_structure":
     if ($struct_id <= 0) {
         continue;
     }
     $dbUser = CUser::GetByID($ID);
     $arUser = $dbUser->Fetch();
     $arDep = $arUser['UF_DEPARTMENT'];
     if (!is_array($arDep)) {
         $arDep = array();
     }
     if ($_REQUEST['action'] == "add_structure") {
         $arDep[] = $struct_id;
     } else {
Example #21
0
					$lAdmin->AddGroupError(GetMessage("MAIN_EDIT_ERROR").$ob->LAST_ERROR, $ID);
				break;
			case "add_group":
			case "remove_group":
				if($gr_id <= 0)
					continue;
				if($gr_id == 1 && !$USER->CanDoOperation('edit_php')) // not admin can't edit admins
					continue;
				if ($USER->CanDoOperation('edit_subordinate_users') && !$USER->CanDoOperation('edit_all_users') && !in_array($gr_id, $arUserSubordinateGroups))
					continue;
				$newGroups = array_diff($UGroups, array(2));
				if($_REQUEST['action']=="add_group")
					$newGroups[] = $gr_id;
				else
					$newGroups = array_diff($newGroups, array($gr_id));
				CUser::SetUserGroup($ID, $newGroups);
				break;
			case "add_structure":
			case "remove_structure":
				if($struct_id <= 0)
					continue;

				$dbUser = CUser::GetByID($ID);
				$arUser = $dbUser->Fetch();
				$arDep = $arUser['UF_DEPARTMENT'];
				if(!is_array($arDep))
					$arDep = array();

				if($_REQUEST['action']=="add_structure")
					$arDep[] = $struct_id;
				else