当前位置: 首页>>代码示例>>PHP>>正文


PHP CIntranetUtils::getSubDepartments方法代码示例

本文整理汇总了PHP中CIntranetUtils::getSubDepartments方法的典型用法代码示例。如果您正苦于以下问题:PHP CIntranetUtils::getSubDepartments方法的具体用法?PHP CIntranetUtils::getSubDepartments怎么用?PHP CIntranetUtils::getSubDepartments使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CIntranetUtils的用法示例。


在下文中一共展示了CIntranetUtils::getSubDepartments方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: searchImmediateEmployeesInSubDepartments

 private static function searchImmediateEmployeesInSubDepartments($departmentId)
 {
     $arDepartmentHeads = array();
     $arQueueDepartmentsEmployees = array();
     // IDs of departments where we need employees
     $arSubDepartments = CIntranetUtils::getSubDepartments($departmentId);
     if (is_array($arSubDepartments)) {
         foreach ($arSubDepartments as $subDepId) {
             $headUserId = CIntranetUtils::GetDepartmentManagerID($subDepId);
             if ($headUserId) {
                 $arDepartmentHeads[] = $headUserId;
             } else {
                 $arQueueDepartmentsEmployees[] = $subDepId;
                 $result = self::searchImmediateEmployeesInSubDepartments($subDepId);
                 $arDepartmentHeads = array_merge($arDepartmentHeads, $result['arDepartmentHeads']);
                 $arQueueDepartmentsEmployees = array_merge($arQueueDepartmentsEmployees, $result['arQueueDepartmentsEmployees']);
             }
         }
     }
     return array('arDepartmentHeads' => $arDepartmentHeads, 'arQueueDepartmentsEmployees' => $arQueueDepartmentsEmployees);
 }
开发者ID:DarneoStudio,项目名称:bitrix,代码行数:21,代码来源:intranettools.php

示例2: executeComponent

 public function executeComponent()
 {
     global $APPLICATION;
     $APPLICATION->SetTitle(GetMessage('TASKS_TITLE_TASKS'));
     if (!CModule::IncludeModule('tasks')) {
         ShowError(GetMessage('TASKS_MODULE_NOT_FOUND'));
         return 0;
     }
     if (!CModule::IncludeModule('intranet')) {
         return 0;
     }
     $this->arResult['DEPARTMENTS'] = array();
     $this->processParams();
     // preparw arResult
     if (!($this->arResult['LOGGED_IN_USER'] >= 1)) {
         return 0;
     }
     $nameTemplate = $this->arResult['NAME_TEMPLATE'];
     $startFromDepartments = $this->getInitDepartmentsIds();
     $arDepartmentsData = CIntranetUtils::GetDepartmentsData($startFromDepartments);
     if (!is_array($arDepartmentsData) || empty($arDepartmentsData)) {
         $this->IncludeComponentTemplate();
         return 0;
     }
     $allUsersIds = array();
     $arSubDepartmentsUsers = array();
     foreach ($arDepartmentsData as $departmentId => $departmentName) {
         $departmentHead = CIntranetUtils::GetDepartmentManagerID($departmentId);
         $arSubDepartmentsIds = CIntranetUtils::getSubDepartments($departmentId);
         $this->arResult['DEPARTMENTS'][$departmentId] = array('~TITLE' => $departmentName, 'TITLE' => htmlspecialcharsbx($departmentName), 'HEAD_USER_ID' => $departmentHead, 'RESPONSIBLES_TOTAL_TASKS' => 0, 'RESPONSIBLES_NOTICED_TASKS' => 0, 'ACCOMPLICES_TOTAL_TASKS' => 0, 'ACCOMPLICES_NOTICED_TASKS' => 0, 'ORIGINATORS_TOTAL_TASKS' => 0, 'ORIGINATORS_NOTICED_TASKS' => 0, 'AUDITORS_TOTAL_TASKS' => 0, 'AUDITORS_NOTICED_TASKS' => 0, 'USERS' => array(), 'SUBDEPARTMENTS' => array());
         $rsUsers = CTaskIntranetTools::getDepartmentsUsers(array($departmentId), array('ID', 'PERSONAL_PHOTO', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'WORK_POSITION'));
         $arUsers = array();
         $arDepartmentUsersIds = array();
         while ($arUser = $rsUsers->getNext()) {
             $arUser['USER_IN_SUBDEPS'] = false;
             $arUsers[] = $arUser;
             $arDepartmentUsersIds[] = (int) $arUser['ID'];
         }
         if ($departmentHead > 0) {
             $arImmediateEmployees = CTaskIntranetTools::getImmediateEmployees($departmentHead, array($departmentId));
             if (is_array($arImmediateEmployees) && !empty($arImmediateEmployees)) {
                 // Remove immediate manager's employees in subdeps, if they are already in current department
                 $arImmediateEmployees = array_diff($arImmediateEmployees, $arDepartmentUsersIds);
                 if (!empty($arImmediateEmployees)) {
                     $rsUsers = CUser::GetList($by = 'ID', $order = 'ASC', array('ACTIVE' => 'Y', 'ID' => implode('|', array_unique($arImmediateEmployees))), array('SELECT' => array('UF_DEPARTMENT'), 'FIELDS' => array('ID', 'PERSONAL_PHOTO', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'WORK_POSITION')));
                     while ($arUser = $rsUsers->getNext()) {
                         $arUser['USER_IN_SUBDEPS'] = true;
                         $arUsers[] = $arUser;
                     }
                 }
             }
         }
         foreach ($arUsers as $arUser) {
             $userId = (int) $arUser['ID'];
             $allUsersIds[] = $userId;
             $userPhoto = false;
             if ($arUser['PERSONAL_PHOTO'] > 0) {
                 $userPhoto = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 30, 0, BX_RESIZE_IMAGE_EXACT);
             }
             $tasksHref = CComponentEngine::MakePathFromTemplate($this->arResult['PATH_TO_USER_TASKS'], array('user_id' => $userId));
             $this->arResult['DEPARTMENTS'][$departmentId]['USERS'][] = array('ID' => $userId, 'PHOTO' => $userPhoto, 'DEPARTMENT_HEAD' => $departmentHead == $userId ? 'Y' : 'N', 'USER_IN_SUBDEPS' => $arUser['USER_IN_SUBDEPS'] ? 'Y' : 'N', 'FORMATTED_NAME' => CUser::FormatName($nameTemplate, array('NAME' => $arUser['~NAME'], 'LAST_NAME' => $arUser['~LAST_NAME'], 'SECOND_NAME' => $arUser['~SECOND_NAME'], 'LOGIN' => $arUser['~LOGIN']), true, true), 'WORK_POSITION' => $arUser['WORK_POSITION'], '~WORK_POSITION' => $arUser['~WORK_POSITION'], 'NAME' => $arUser['NAME'], 'LAST_NAME' => $arUser['LAST_NAME'], 'SECOND_NAME' => $arUser['SECOND_NAME'], '~NAME' => $arUser['~NAME'], '~LAST_NAME' => $arUser['~LAST_NAME'], '~SECOND_NAME' => $arUser['~SECOND_NAME'], 'HREF' => CComponentEngine::MakePathFromTemplate($this->arResult['PATH_TO_USER'], array('user_id' => $userId)), 'RESPONSIBLES_TOTAL_TASKS' => 0, 'RESPONSIBLES_NOTICED_TASKS' => 0, 'ACCOMPLICES_TOTAL_TASKS' => 0, 'ACCOMPLICES_NOTICED_TASKS' => 0, 'ORIGINATORS_TOTAL_TASKS' => 0, 'ORIGINATORS_NOTICED_TASKS' => 0, 'AUDITORS_TOTAL_TASKS' => 0, 'AUDITORS_NOTICED_TASKS' => 0, 'RESPONSIBLES_TOTAL_HREF' => $tasksHref . '?F_CANCEL=Y&F_STATE=sR400', 'RESPONSIBLES_NOTICED_HREF' => null, 'ACCOMPLICES_TOTAL_HREF' => $tasksHref . '?F_CANCEL=Y&F_STATE=sR800', 'ACCOMPLICES_NOTICED_HREF' => null, 'ORIGINATORS_TOTAL_HREF' => $tasksHref . '?F_CANCEL=Y&F_STATE=sRg00', 'ORIGINATORS_NOTICED_HREF' => null, 'AUDITORS_TOTAL_HREF' => $tasksHref . '?F_CANCEL=Y&F_STATE=sRc00', 'AUDITORS_NOTICED_HREF' => null);
         }
         if (is_array($arSubDepartmentsIds)) {
             $arSubDepartmentsData = CIntranetUtils::GetDepartmentsData($arSubDepartmentsIds);
             foreach ($arSubDepartmentsIds as $subDepartmentId) {
                 $title = '';
                 if (array_key_exists($subDepartmentId, $arSubDepartmentsData)) {
                     $title = $arSubDepartmentsData[$subDepartmentId];
                 }
                 $this->arResult['DEPARTMENTS'][$departmentId]['SUBDEPARTMENTS'][$subDepartmentId] = array('ID' => $subDepartmentId, '~TITLE' => $title, 'TITLE' => htmlspecialcharsbx($title), 'COUNTERS' => array('RESPONSIBLES_TOTAL_TASKS' => 0, 'RESPONSIBLES_NOTICED_TASKS' => 0, 'ACCOMPLICES_TOTAL_TASKS' => 0, 'ACCOMPLICES_NOTICED_TASKS' => 0, 'ORIGINATORS_TOTAL_TASKS' => 0, 'ORIGINATORS_NOTICED_TASKS' => 0, 'AUDITORS_TOTAL_TASKS' => 0, 'AUDITORS_NOTICED_TASKS' => 0), 'HREF' => '?DEP_ID=' . (int) $subDepartmentId);
                 $arSubDepartmentsUsers[$subDepartmentId] = array();
             }
             $rsUsers = CIntranetUtils::GetDepartmentEmployees($arSubDepartmentsIds, $bRecursive = false, $bSkipSelf = false);
             while ($arUser = $rsUsers->fetch()) {
                 if (is_array($arUser['UF_DEPARTMENT'])) {
                     $userId = (int) $arUser['ID'];
                     $allUsersIds[] = $userId;
                     foreach ($arUser['UF_DEPARTMENT'] as $subDepartmentId) {
                         if ($subDepartmentId > 0) {
                             $arSubDepartmentsUsers[$subDepartmentId][] = $userId;
                         }
                     }
                 }
             }
         }
         usort($this->arResult['DEPARTMENTS'][$departmentId]['USERS'], function ($a, $b) {
             if ($a['USER_IN_SUBDEPS'] !== $b['USER_IN_SUBDEPS']) {
                 if ($a['USER_IN_SUBDEPS'] === 'N') {
                     return -1;
                 } else {
                     return 1;
                 }
             }
             if ($a['DEPARTMENT_HEAD'] !== $b['DEPARTMENT_HEAD']) {
                 if ($a['DEPARTMENT_HEAD'] === 'Y') {
                     return -1;
                 } else {
                     return 1;
                 }
             }
//.........这里部分代码省略.........
开发者ID:mrdeadmouse,项目名称:u136006,代码行数:101,代码来源:class.php


注:本文中的CIntranetUtils::getSubDepartments方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。