Example #1
0
 private function SearchUserByName($user)
 {
     $user = trim($user);
     if (strlen($user) <= 0) {
         return array();
     }
     $userId = 0;
     if ($user . "|" == intval($user) . "|") {
         $userId = intval($user);
     }
     if ($userId <= 0) {
         $arMatches = array();
         if (preg_match("#\\[(\\d+)\\]#i", $user, $arMatches)) {
             $userId = intval($arMatches[1]);
         }
     }
     $arResult = array();
     $dbUsers = false;
     if ($userId > 0) {
         $arFilter = array("ID_EQUAL_EXACT" => $userId);
         $dbUsers = CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter, array("NAV_PARAMS" => false));
     } else {
         $userLogin = "";
         $arMatches = array();
         if (preg_match("#\\((.+?)\\)#i", $user, $arMatches)) {
             $userLogin = $arMatches[1];
             $user = trim(str_replace("(" . $userLogin . ")", "", $user));
         }
         $userEmail = "";
         $arMatches = array();
         if (preg_match("#<(.+?)>#i", $user, $arMatches)) {
             if (check_email($arMatches[1])) {
                 $userEmail = $arMatches[1];
                 $user = Trim(Str_Replace("<" . $userEmail . ">", "", $user));
             }
         }
         $arUser = array();
         $arUserTmp = Explode(" ", $user);
         foreach ($arUserTmp as $s) {
             $s = Trim($s);
             if (StrLen($s) > 0) {
                 $arUser[] = $s;
             }
         }
         if (strlen($userLogin) > 0) {
             $arUser[] = $userLogin;
         }
         $dbUsers = CUser::SearchUserByName($arUser, $userEmail, true);
     }
     if ($dbUsers) {
         while ($arUsers = $dbUsers->GetNext()) {
             $arResult[] = $arUsers["ID"];
         }
     }
     return $arResult;
 }
Example #2
0
 public function AjaxRequest($arParams = false)
 {
     global $USER;
     if (!$USER->CanDoOperation('view_all_users')) {
         return false;
     }
     $search = urldecode($_REQUEST['search']);
     $elements = "";
     $arFinderParams = array("PROVIDER" => $this->id, "TYPE" => 2);
     $strUserIDs = '';
     $dbRes = CUser::SearchUserByName(explode(' ', $search), '', true);
     if ($dbRes) {
         while ($arRes = $dbRes->Fetch()) {
             $strUserIDs .= ($strUserIDs == '' ? '' : '|') . $arRes['ID'];
         }
     }
     $arFilter = array('ACTIVE' => 'Y', 'NAME_SEARCH' => $search, 'ID' => $strUserIDs);
     $dbRes = CUser::GetList($by = 'last_name', $order = 'asc', $arFilter);
     $dbRes->NavStart(20);
     while ($arUser = $dbRes->NavNext(false)) {
         $arItem = array("ID" => "U" . $arUser["ID"], "NAME" => CUser::FormatName(CSite::GetNameFormat(false), $arUser, true, false));
         $elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
     }
     return $elements;
 }
Example #3
0
 /**
  * <p>Метод ищет пользователя по его имени или коду.</p>
  *
  *
  *
  *
  * @param string $user  Имя или код пользователя. Если параметр является числом или
  * строкой, в которой содержится число в квадратных скобках, то это
  * число рассматривается как код пользователя. В противном случае
  * параметр рассматривается как строка, содержащая ФИО
  * пользователя.
  *
  *
  *
  * @param bool $bIntranet = false Флаг, определяющий, осуществляется ли работа в рамках решения
  * интранет. Необязательный параметр. По умолчанию равен false.
  *
  *
  *
  * @return array <p>Массив пользователей, удовлетворяющих условию поиска.</p> <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetUser/searchuser.php
  * @author Bitrix
  */
 public static function SearchUser($user, $bIntranet = false)
 {
     $user = Trim($user);
     if (StrLen($user) <= 0) {
         return false;
     }
     $userID = 0;
     if ($user . "|" == IntVal($user) . "|") {
         $userID = IntVal($user);
     }
     if ($userID <= 0) {
         $arMatches = array();
         if (preg_match("#\\[(\\d+)\\]#i", $user, $arMatches)) {
             $userID = IntVal($arMatches[1]);
         }
     }
     $dbUsers = false;
     if ($userID > 0) {
         $arFilter = array("ID_EQUAL_EXACT" => $userID);
         $dbUsers = CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter, array("NAV_PARAMS" => false));
     } else {
         $email = "";
         $arMatches = array();
         if (preg_match("#<(.+?)>#i", $user, $arMatches)) {
             if (check_email($arMatches[1])) {
                 $email = $arMatches[1];
                 $user = Trim(Str_Replace("<" . $email . ">", "", $user));
             }
         }
         $arUser = array();
         $arUserTmp = Explode(" ", $user);
         foreach ($arUserTmp as $s) {
             $s = Trim($s);
             if (StrLen($s) > 0) {
                 $arUser[] = $s;
             }
         }
         if (count($arUser) <= 0 && strlen($email) > 0) {
             $arFilter = array("ACTIVE" => "Y", "EMAIL" => $email);
             $dbUsers = CUser::GetList($by = "id", $order = "asc", $arFilter);
         } else {
             $dbUsers = CUser::SearchUserByName($arUser, $email);
         }
     }
     if ($dbUsers) {
         $arResult = array();
         while ($arUsers = $dbUsers->GetNext()) {
             $arResult[$arUsers["ID"]] = CSocNetUser::FormatNameEx($arUsers["NAME"], $arUsers["SECOND_NAME"], $arUsers["LAST_NAME"], $arUsers["LOGIN"], $bIntranet ? $arUsers["EMAIL"] : "", $arUsers["ID"]);
         }
         return $arResult;
     }
     return false;
 }
 public static function SearchUsers($search, $nameTemplate = "", $bSelf = true, $bEmployeesOnly = false)
 {
     CUtil::JSPostUnescape();
     $bIntranetEnable = IsModuleInstalled('intranet');
     $bExtranetEnable = IsModuleInstalled('extranet');
     $bBitrix24Enable = IsModuleInstalled('bitrix24');
     $arUsers = array();
     $arTmpUsers = array();
     $arExtranetTestUsers = array();
     $search = trim($search);
     if (strlen($search) <= 0) {
         return $arUsers;
     }
     $strUserIDs = '';
     $arUserSearch = explode(' ', urldecode($search));
     if (empty($arUserSearch)) {
         return $arUsers;
     }
     $dbRes = CUser::SearchUserByName($arUserSearch, '', true);
     while ($arRes = $dbRes->Fetch()) {
         if (!$bSelf && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->GetID() == $arRes['ID']) {
             continue;
         }
         $strUserIDs .= ($strUserIDs == '' ? '' : '|') . $arRes['ID'];
     }
     $arFilter = array("ACTIVE" => "Y", "NAME_SEARCH" => $search, "ID" => $strUserIDs);
     if ($bEmployeesOnly || $bBitrix24Enable && !$bExtranetEnable) {
         $arFilter["!UF_DEPARTMENT"] = false;
     }
     $arExtParams = array("FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION"));
     if ($bIntranetEnable) {
         $arExtParams['SELECT'] = array('UF_DEPARTMENT');
     }
     $dbUsers = CUser::GetList($sort_by = array('last_name' => 'asc', 'IS_ONLINE' => 'desc'), $dummy = '', $arFilter, $arExtParams);
     $dbUsers->NavStart(20);
     while ($arUser = $dbUsers->NavNext(false)) {
         if (!$bSelf && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->GetID() == $arUser['ID']) {
             continue;
         }
         $arTmpUsers[$arUser["ID"]] = $arUser;
         if ($bIntranetEnable && $bExtranetEnable && (!is_array($arUser["UF_DEPARTMENT"]) || empty($arUser["UF_DEPARTMENT"]))) {
             $arExtranetTestUsers[$arUser["ID"]] = $arUser["ID"];
         }
     }
     if (!empty($arExtranetTestUsers) && CModule::IncludeModule('extranet') && CExtranet::IsIntranetUser()) {
         global $USER;
         $arUserSocNetGroups = array();
         $rsGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), array("USER_ID" => $USER->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => SITE_ID, "GROUP_ACTIVE" => "Y", "!GROUP_CLOSED" => "Y"), false, array("nPageSize" => 500, "bDescPageNumbering" => false), array("ID", "GROUP_ID"));
         while ($arGroup = $rsGroups->Fetch()) {
             $arUserSocNetGroups[] = $arGroup["GROUP_ID"];
         }
         if (count($arUserSocNetGroups) > 0) {
             $dbUsersInGroup = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arUserSocNetGroups, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("ID", "USER_ID", "GROUP_ID"));
             while ($ar = $dbUsersInGroup->GetNext(true, false)) {
                 $arSelect[$ar["USER_ID"]] = $ar["USER_ID"];
             }
             foreach ($arExtranetTestUsers as $userId) {
                 if (!isset($arSelect[$userId])) {
                     unset($arTmpUsers[$userId]);
                 }
             }
         } else {
             foreach ($arExtranetTestUsers as $userId) {
                 unset($arTmpUsers[$userId]);
             }
         }
     }
     foreach ($arTmpUsers as $arUser) {
         $sName = CUser::FormatName(empty($nameTemplate) ? CSite::GetNameFormat(false) : $nameTemplate, $arUser, true, false);
         $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 32, 'height' => 32), BX_RESIZE_IMAGE_EXACT, false);
         $arUsers['U' . $arUser["ID"]] = array('id' => 'U' . $arUser["ID"], 'entityId' => $arUser["ID"], 'name' => $sName, 'avatar' => empty($arFileTmp['src']) ? '' : $arFileTmp['src'], 'desc' => $arUser['WORK_POSITION'] ? $arUser['WORK_POSITION'] : ($arUser['PERSONAL_PROFESSION'] ? $arUser['PERSONAL_PROFESSION'] : '&nbsp;'));
     }
     return $arUsers;
 }
Example #5
0
 if (empty($arLocalPath[0])) {
     unset($arLocalPath[0]);
 }
 if (sizeof($arLocalPath) > 0) {
     $userName = $arLocalPath[0];
     $userFilter = array();
     if (strpos($userName, '(') !== false) {
         $userFilter = array('LOGIN_EQUAL' => trim($userName, '()'));
         $dbUser = CUser::GetList($by, $order, $userFilter);
     } else {
         //$userFilter = array('NAME' => $userName);
         $arName = explode(' ', $userName);
         foreach ($arName as &$namePart) {
             $namePart = trim(trim($namePart), ".,-");
         }
         $dbUser = CUser::SearchUserByName($arName, '', false);
     }
     if ($dbUser !== false && ($arUser = $dbUser->Fetch())) {
         $userID = $arUser['ID'];
         $userLogin = $arUser['LOGIN'];
     } else {
         CHTTP::SetStatus('404 Not Found');
         ShowError(GetMessage("WD_USER_NOT_FOUND"));
         return 0;
     }
     $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_USER_ID"], "SOCNET_GROUP_ID" => false, "SECTION_ID" => 0, "CHECK_PERMISSIONS" => "N", "CREATED_BY" => $userID);
     $dbSection = CIBlockSection::GetList(array(), $arFilter, false, array('ID'));
     if ($arUserSection = $dbSection->Fetch()) {
         $sectionID = $arUserSection['ID'];
     } else {
         CHTTP::SetStatus('404 Not Found');