/** * 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'); } }
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"])); } } } }
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; }
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); }
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; }
/** * <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> * <? * // создадим массив описывающий изображение * // находящееся в файле на сервере * $arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.gif"); * $arIMAGE["MODULE_ID"] = "main"; * * $user = new CUser; * $arFields = Array( * "NAME" => "Сергей", * "LAST_NAME" => "Иванов", * "EMAIL" => "*****@*****.**", * "LOGIN" => "ivan", * "LID" => "ru", * "ACTIVE" => "Y", * "GROUP_ID" => array(10,11), * "PASSWORD" => "123456", * "CONFIRM_PASSWORD" => "123456", * "PERSONAL_PHOTO" => $arIMAGE * ); * * $ID = <b>$user->Add</b>($arFields); * if (intval($ID) > 0) * echo "Пользователь успешно добавлен."; * else * echo $user->LAST_ERROR; * ?> * </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; }
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; }
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"); } } }
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; }
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; }
} 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";
"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();
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")
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); } }
// Тут что-то обновляется неведомое от старого сайта /* 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) {
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; }
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 {
$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