예제 #1
0
 private function getCounts($arGroupsIds)
 {
     $arCounters = array();
     if (empty($arGroupsIds)) {
         return;
     }
     foreach ($arGroupsIds as $groupId) {
         $arCounters[$groupId] = array('ALL' => 0, 'IN_WORK' => 0, 'COMPLETE' => 0);
     }
     $oFilter = CTaskFilterCtrl::getInstance($this->arParams['USER_ID'], true);
     $arFilterAll = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_ALL_MY_TASKS);
     $arFilterInWork = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_ACTIVE_MY_TASKS);
     $arFilterComplete = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_COMPLETED_MY_TASKS);
     $arFilterInWorkExpired = $arFilterInWork;
     $arFilterInWorkExpired['<DEADLINE'] = ConvertTimeStamp(time() + CTasksTools::getTimeZoneOffset(), 'FULL');
     $arFilterAll['GROUP_ID'] = $arGroupsIds;
     $arFilterInWork['GROUP_ID'] = $arGroupsIds;
     $arFilterComplete['GROUP_ID'] = $arGroupsIds;
     $arFilterInWorkExpired['GROUP_ID'] = $arGroupsIds;
     $arMap = array('ALL' => &$arFilterAll, 'IN_WORK' => &$arFilterInWork, 'COMPLETE' => &$arFilterComplete, 'EXPIRED' => &$arFilterInWorkExpired);
     foreach ($arMap as $key => &$arFilter) {
         $rs = CTasks::GetCount($arFilter, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => false), array('GROUP_ID'));
         while ($ar = $rs->fetch()) {
             $groupId = (int) $ar['GROUP_ID'];
             if ($groupId) {
                 $arCounters[$groupId][$key] = (int) $ar['CNT'];
             }
         }
     }
     unset($arFilter);
     return $arCounters;
 }
예제 #2
0
 private static function getTasksCount($arTasks)
 {
     $cnt = 0;
     if (is_array($arTasks) && count($arTasks) > 0) {
         $dbRes = CTasks::GetCount(array('ID' => $arTasks, 'RESPONSIBLE_ID' => self::$USER_ID, '!STATUS' => self::$arTaskStatusOpened));
         if ($arRes = $dbRes->Fetch()) {
             $cnt = $arRes['CNT'];
         }
     }
     return $cnt;
 }
예제 #3
0
     $bDataNotCached = false;
 } else {
     foreach ($arResult['PRESETS_LIST'] as $presetId => $presetData) {
         // We can't cache counters for user-defined filters
         if ($presetId > 0) {
             continue;
         }
         $arFilter = $oFilter->GetFilterPresetConditionById($presetId);
         if ($taskType === 'group' && $presetId <= 0) {
             $arFilter['GROUP_ID'] = (int) $arParams['GROUP_ID'];
         }
         if ($arFilter === false) {
             $arFiltersCount[$presetId] = 0;
         } else {
             $count = 0;
             $rsCount = CTasks::GetCount($arFilter, array('bIgnoreDbErrors' => true, 'bSkipExtraTables' => true, 'bSkipUserFields' => true));
             if ($rsCount !== false) {
                 if ($arCount = $rsCount->fetch()) {
                     $count = (int) $arCount['CNT'];
                 }
             }
             $arFiltersCount[$presetId] = $count;
         }
     }
 }
 $arResult['COUNTS'] = $arFiltersCount;
 if ($bDataNotCached) {
     if (defined('BX_COMP_MANAGED_CACHE') && $obCache->StartDataCache()) {
         global $CACHE_MANAGER;
         $CACHE_MANAGER->StartTagCache($cacheDir);
         foreach ($arCacheTags as $cacheTag) {
예제 #4
0
 public static function GetCountInt($arFilter = array(), $arParams = array())
 {
     $count = 0;
     $rsCount = CTasks::GetCount($arFilter, $arParams);
     if ($arCount = $rsCount->Fetch()) {
         $count = intval($arCount["CNT"]);
     }
     return $count;
 }
예제 #5
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;
 }