$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); }
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; }