кому интересно, писал как-то класс для работы с пользователем
выкладываю для ознакомления
Скрытый текст |
---|
Код |
---|
<?php
require_once(dirname(__FILE__) . "/system.class.php");
/**
* Библиотека W4aUser - класс данные пользователя
* @author WEB for ALL https://web4.kz
* @version 1.0
* @package W4aUser
*/
class W4aUser {
/*
* Конструктор
* @param int $objID ИД заявки
*/
function __construct($objID=false) {
$this->objID = $objID;
$W4aSys = new W4aSys();
$SysValue = $W4aSys->SysValue;
$this->SysValue = $SysValue;
$this->cache = false;
$this->debug = false;
$this->userId = $this->getId();
}
/* ====================================================
* Функции по пользователями (сотрудникам)
* Битриксовые функции
*/
/*
* ID User
*/
function getId(){
global $USER;
return $USER->GetID();
}
/*
* Full Name User
*/
function getFullName(){
global $USER;
return $USER->GetFullName();
}
/*
* Login User
*/
function getILogin(){
global $USER;
return $USER->GetLogin();
}
function getUserGroup($userId){
$arGroups = CUser::GetUserGroup($userId);
return $arGroups;
}
/**
* проверка пользователя на принадлежность к группам
* @param [type] $userId [ID пользователя]
* @return mixed [description]
*/
function checkUserGroup($userId){
$SysValue = ($this->SysValue);
$arGroups = array_flip($this->getUserGroup($userId));
foreach ($SysValue['group'] as $key => $val) {
# code...
if(isset($arGroups[$key]))
$r[] = $val;
}
if(is_array($r))
return $r;
else return false;
}
/*
*
*/
function getPhoto($user_id=false){
if($user_id===false){
$rsUser = CUser::GetByID($this->userId);
}else{
$rsUser = CUser::GetByID($user_id);
}
$arUser = $rsUser->Fetch();
$arFile = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 30, 'height' => 30), BX_RESIZE_IMAGE_PROPORTIONAL , true);
if(empty($arFile['src'])){
$src = 'no_foto';
}else{
$src = $arFile['src'];
}
return $src;
}
/*
* Проверка на наличие подчиненных сотрудников
*/
function checkSubEmployer($user_id_del=false){
global $USER;
$arr = $this->getBitrixUserSubEmployees($USER->GetID());
if(is_array($arr)){
return true;
}else{
return false;
}
}
/*
* Полный Список подчиненных сотрудников
*/
function getBitrixUserSubEmployees($user_id){
if(CModule::IncludeModule("intranet")){
$arUsers = CIntranetUtils::GetSubordinateEmployees($user_id, true);
while($User = $arUsers->GetNext()){
$arr[] = $User['ID'];
}
return $arr;
}
}
/*
* Сотрудники отдела
*/
function getBitrixDeptUsers($deptId){
if(CModule::IncludeModule("intranet") and !empty($deptId)){
$arr = array();
$arUsers = CIntranetUtils::GetDepartmentEmployees(array($deptId), $bRecursive = false, $bSkipSelf = false, $onlyAct ive = 'Y');
while($User = $arUsers->GetNext()){
$arr[] = $User['ID'];
}
}else{
$arr = false;
}
return $arr;
}
/*
* Опредение ид непосредственного начальника
*/
function getBitrixUserManager($user_id) {
$managers = array();
$sections = CIntranetUtils::GetUserDepartments($user_id);
foreach ($sections as $section) {
$manager = CIntranetUtils::GetDepartmentManagerID($section);
while (empty($manager)) {
$res = CIBlockSection::GetByID($section);
if ($sectionInfo = $res->GetNext()) {
$manager = CIntranetUtils::GetDepartmentManagerID($section);
$section = $sectionInfo['IBLOCK_SECTION_ID'];
if ($section < 1) break;
} else break;
}
If ($manager > 0) $managers[] = $manager;
}
return $managers;
}
/*
* Метод возвращаем массив всех отделов
* @return array
* @example:
* Array
(
[1] => Array
(
[DEPT_ID] => 1
[DEPT_NAME] => ТОО Рога и Копыта
[DEPT_MANAGER_ID] => 14
[DEPT_MANAGER_NAME] => Пупкин Александр Александрович
[DEPT_SUB_DEPTS] => Array
(
[0] => 248
[1] => 696
)
)
[248] => Array
(
[DEPT_ID] => 248
[DEPT_NAME] => Коммерческий директор
[DEPT_MANAGER_ID] => 1
[DEPT_MANAGER_NAME] => Пупкина Оксана Львовна
[DEPT_SUB_DEPTS] => Array
(
[0] => 250
)
)
)
*/
function GetDeparmentsDataShort($deptId=0){
if(empty($deptId)){ // строим массив для всех отделов
// возвращает дерево департаментов
$arrDeparmentsTree = CIntranetUtils::GetDeparmentsTree();
foreach ($arrDeparmentsTree as $key => $val) {
foreach ($val as $k => $v) {
# code...
$deptNameArr[$v] = CIntranetUtils::GetDepartmentsData(array($v));
}
}
}else{ // строим массив для конкретного отдела
$deptNameArr[$deptId] = CIntranetUtils::GetDepartmentsData(array($deptId));
}
foreach ($deptNameArr as $val) {
foreach ($val as $k => $v) {
# code...
$dept[$k]['DEPT_ID'] = $k;
$dept[$k]['DEPT_NAME'] = $v;
$mangerId = CIntranetUtils::GetDepartmentManagerID($k);
if(!empty($mangerId)){
$dept[$k]['DEPT_MANAGER_ID'] = $mangerId;
$rsUser = CUser::GetByID($mangerId);
$arUser = $rsUser->Fetch();
$dept[$k]['DEPT_MANAGER_NAME'] = $arUser['LAST_NAME'].' '.$arUser['NAME'].' '.$arUser['SECOND_NAME'];
$dept[$k]['DEPT_MANAGER_NAME_SHORT'] = $arUser['LAST_NAME'].' '.
substr($arUser['NAME'],0,1).'.';
if (is_array($arrDeparmentsTree[$k])) {
$dept[$k]['DEPT_SUB_DEPTS'] = $arrDeparmentsTree[$k];
// foreach ($arrDeparmentsTree[$k] as $value) {
// # code...
// $dept[$k]['DEPT_SUB_DEPTS_CONTENT'][$value]=$deptNameArr[$value];
// }
}
}else{
$dept[$k]['DEPT_MANAGER_ID'] = 0;
$dept[$k]['DEPT_MANAGER_NAME'] = 'NoManager';
}
}
}
return $dept;
}
/*
* Метод возвращает массив всех подчиненных отделов
* array('DEPT_ID'=>'DEPT_NAME')
*/
function GetDeparmentsByManagerId($user_id){
// массив всех отделов: array('DEPT_ID'=>'DEPT_NAME')
$dept = $this->GetDeparmentsDataShort();
foreach ($dept as $key => $val) {
# code...
if($val['DEPT_MANAGER_ID']==$user_id)
$result[$val['DEPT_MANAGER_ID']][$key] = $val;
}
return $result;
}
}
?> |
|