Пример #1
0
     $arCountsAll = $obCache->GetVars();
 } else {
     $arCountsAll = array();
 }
 $arResult['ROLES_LIST'] = array();
 foreach ($viewState['ROLES'] as $roleCodename => $arRoleData) {
     if (!isset($arCountsAll[$arRoleData['ID']])) {
         if ($arRoleData['ID'] == CTaskListState::VIEW_ROLE_AUDITOR || $arRoleData['ID'] == CTaskListState::VIEW_ROLE_ACCOMPLICE) {
             $rs = CTasks::GetCount(CTaskListCtrl::getFilterFor($arParams['USER_ID'], $arRoleData['ID'], CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS), array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true, 'bNeedJoinMembersTable' => true));
             if ($arTmp = $rs->fetch()) {
                 $arCountsAll[$arRoleData['ID']] = (int) $arTmp['CNT'];
             } else {
                 $arCountsAll[$arRoleData['ID']] = 0;
             }
         } else {
             $arCountsAll[$arRoleData['ID']] = CTasks::GetCountInt(CTaskListCtrl::getFilterFor($arParams['USER_ID'], $arRoleData['ID'], CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS), array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true));
         }
         $bNeedCacheData = true;
     }
     $arRoleData['CNT_ALL'] = $arCountsAll[$arRoleData['ID']];
     $arRoleData['CNT_NOTIFY'] = CTaskListCtrl::getUserRoleCounterForUser($arParams['USER_ID'], $arRoleData['ID']);
     $arRoleData['HREF'] = $arParams['PATH_TO_TASKS'] . '?F_CANCEL=Y&F_STATE=sR' . base_convert($arRoleData['ID'], 10, 32);
     $arResult["ROLES_LIST"][$roleCodename] = $arRoleData;
 }
 if ($bNeedCacheData && defined('BX_COMP_MANAGED_CACHE') && $obCache->StartDataCache()) {
     global $CACHE_MANAGER;
     $CACHE_MANAGER->StartTagCache($cacheDir);
     $CACHE_MANAGER->RegisterTag("tasks_user_" . $arResult['LOGGED_IN_USER']);
     $CACHE_MANAGER->EndTagCache();
     $obCache->EndDataCache($arCountsAll);
 }
Пример #2
0
 private static function getCounts($arUsersIds)
 {
     $arUsersIds = array_unique(array_filter($arUsersIds));
     $arCounters = array();
     foreach ($arUsersIds as $userId) {
         $arCounters[$userId] = array();
         $responsiblesNoticedTasks = CTaskListCtrl::getUserRoleCounterForUser($userId, CTaskListState::VIEW_ROLE_RESPONSIBLE);
         $accomplicesNoticedTasks = CTaskListCtrl::getUserRoleCounterForUser($userId, CTaskListState::VIEW_ROLE_ACCOMPLICE);
         $originatorsNoticedTasks = CTaskListCtrl::getUserRoleCounterForUser($userId, CTaskListState::VIEW_ROLE_ORIGINATOR);
         $auditorsNoticedTasks = CTaskListCtrl::getUserRoleCounterForUser($userId, CTaskListState::VIEW_ROLE_AUDITOR);
         if ($responsiblesNoticedTasks < 0) {
             $responsiblesNoticedTasks = 0;
         }
         if ($accomplicesNoticedTasks < 0) {
             $accomplicesNoticedTasks = 0;
         }
         if ($originatorsNoticedTasks < 0) {
             $originatorsNoticedTasks = 0;
         }
         if ($auditorsNoticedTasks < 0) {
             $auditorsNoticedTasks = 0;
         }
         $arCounters[$userId]['RESPONSIBLES_TOTAL_TASKS'] = 0;
         $arCounters[$userId]['RESPONSIBLES_NOTICED_TASKS'] = $responsiblesNoticedTasks;
         $arCounters[$userId]['ACCOMPLICES_TOTAL_TASKS'] = 0;
         $arCounters[$userId]['ACCOMPLICES_NOTICED_TASKS'] = $accomplicesNoticedTasks;
         $arCounters[$userId]['ORIGINATORS_TOTAL_TASKS'] = 0;
         $arCounters[$userId]['ORIGINATORS_NOTICED_TASKS'] = $originatorsNoticedTasks;
         $arCounters[$userId]['AUDITORS_TOTAL_TASKS'] = 0;
         $arCounters[$userId]['AUDITORS_NOTICED_TASKS'] = $auditorsNoticedTasks;
     }
     // Get RESPONSIBLES_TOTAL_TASKS counters
     $arFilterMy = CTaskListCtrl::getFilterFor($arUsersIds, CTaskListState::VIEW_ROLE_RESPONSIBLE, CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS);
     $rs = CTasks::GetCount($arFilterMy, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true), array('RESPONSIBLE_ID'));
     while ($ar = $rs->fetch()) {
         $userId = (int) $ar['RESPONSIBLE_ID'];
         if ($userId) {
             $arCounters[$userId]['RESPONSIBLES_TOTAL_TASKS'] = (int) $ar['CNT'];
         }
     }
     // Get ORIGINATORS_TOTAL_TASKS counters
     $arFilterOriginator = CTaskListCtrl::getFilterFor($arUsersIds, CTaskListState::VIEW_ROLE_ORIGINATOR, CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS);
     $rs = CTasks::GetCount($arFilterOriginator, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true), array('CREATED_BY'));
     while ($ar = $rs->fetch()) {
         $userId = (int) $ar['CREATED_BY'];
         if ($userId) {
             $arCounters[$userId]['ORIGINATORS_TOTAL_TASKS'] = (int) $ar['CNT'];
         }
     }
     // Get ACCOMPLICES_TOTAL_TASKS counters
     $arFilterAccomplice = CTaskListCtrl::getFilterFor($arUsersIds, CTaskListState::VIEW_ROLE_ACCOMPLICE, CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS);
     $rs = CTasks::GetCount($arFilterAccomplice, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true), array('ACCOMPLICE'));
     while ($ar = $rs->fetch()) {
         $userId = (int) $ar['ACCOMPLICE'];
         if ($userId) {
             $arCounters[$userId]['ACCOMPLICES_TOTAL_TASKS'] = (int) $ar['CNT'];
         }
     }
     // Get AUDITORS_TOTAL_TASKS counters
     $arFilterAuditor = CTaskListCtrl::getFilterFor($arUsersIds, CTaskListState::VIEW_ROLE_AUDITOR, CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS);
     $rs = CTasks::GetCount($arFilterAuditor, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => true), array('AUDITOR'));
     while ($ar = $rs->fetch()) {
         $userId = (int) $ar['AUDITOR'];
         if ($userId) {
             $arCounters[$userId]['AUDITORS_TOTAL_TASKS'] = (int) $ar['CNT'];
         }
     }
     return $arCounters;
 }