Exemplo n.º 1
0
 public static function ensureAgentExists()
 {
     if (CTaskCountersProcessorInstaller::checkProcessIsNotActive()) {
         $agent = CAgent::GetList(array(), array('MODULE_ID' => 'tasks', 'NAME' => 'CTaskCountersProcessor::agent();'))->fetch();
         if (!is_array($agent) || !isset($agent['ID'])) {
             CAgent::AddAgent('CTaskCountersProcessor::agent();', 'tasks', 'N', 900);
             // every 15 minutes
         }
     }
 }
 public static function onExpirityRecountAgent()
 {
     $optionCountersBrokeDetected = (int) COption::GetOptionString('tasks', '~counters_broke_detected', -1, $siteId = '');
     $lastRecalculationTimestamp = (int) COption::GetOptionString('tasks', '~counters_last_recalculation', -1, $siteId = '');
     if ($optionCountersBrokeDetected === 1) {
         $isCountersBrokeDetected = true;
     } else {
         $isCountersBrokeDetected = false;
     }
     $secondsSinceLastRecalculation = time() - $lastRecalculationTimestamp;
     if ($isCountersBrokeDetected && $secondsSinceLastRecalculation > 1 * 3600) {
         CTaskCountersProcessorInstaller::runSetup();
     }
 }
Exemplo n.º 3
0
         break;
     case 'VIEW_ROLE_ORIGINATOR':
         $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleName]['VIEW_TASK_CATEGORY_WO_DEADLINE'] = array('COUNTER' => $oListCtrl->getCounter($selectedRoleId, CTaskListState::VIEW_TASK_CATEGORY_WO_DEADLINE));
         $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleName]['VIEW_TASK_CATEGORY_WAIT_CTRL'] = array('COUNTER' => $oListCtrl->getCounter($selectedRoleId, CTaskListState::VIEW_TASK_CATEGORY_WAIT_CTRL));
         $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleName]['VIEW_TASK_CATEGORY_EXPIRED'] = array('COUNTER' => $oListCtrl->getCounter($selectedRoleId, CTaskListState::VIEW_TASK_CATEGORY_EXPIRED));
         break;
 }
 ####################################################
 ### counter break detection
 ####################################################
 /*
 The purpose of this section is to handle a situation when we cannot perform on-the-fly re-checking of some additional counters appeared on the page.
 Normally, we check and recount just one counter per page (request) using CTaskCountersProcessorHomeostasis::onTaskGetList when calling CTask::GetList. 
 But in some cases we have more then one counter on the page, so we unable to check them since CTaskListCtrl::resolveCounterIdByRoleAndCategory wont return ther ids.
 */
 if (CTaskCountersProcessorInstaller::isInstallComplete() && isset($arResult['VIEW_STATE'])) {
     $selectedRoleCodename = $arResult['VIEW_STATE']['ROLE_SELECTED']['CODENAME'];
     if (CTaskListState::VIEW_SECTION_ROLES === $arResult['VIEW_STATE']['SECTION_SELECTED']['ID']) {
         $role = $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename];
         $countersSumValues = (isset($role['VIEW_TASK_CATEGORY_NEW']['COUNTER']) ? intval($role['VIEW_TASK_CATEGORY_NEW']['COUNTER']) : 0) + (isset($role['VIEW_TASK_CATEGORY_EXPIRED']['COUNTER']) ? intval($role['VIEW_TASK_CATEGORY_EXPIRED']['COUNTER']) : 0) + (isset($role['VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES']['COUNTER']) ? intval($role['VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES']['COUNTER']) : 0) + (isset($role['VIEW_TASK_CATEGORY_WAIT_CTRL']['COUNTER']) ? intval($role['VIEW_TASK_CATEGORY_WAIT_CTRL']['COUNTER']) : 0) + (isset($role['VIEW_TASK_CATEGORY_WO_DEADLINE']['COUNTER']) ? intval($role['VIEW_TASK_CATEGORY_WO_DEADLINE']['COUNTER']) : 0);
         if ($role['VIEW_TASK_CATEGORY_EXPIRED']['COUNTER'] < 0 || $role['VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES']['COUNTER'] < 0 || $countersSumValues !== $role['TOTAL']['COUNTER']) {
             CTaskCountersProcessorHomeostasis::pendCountersRecalculation();
         }
     }
 }
 ####################################################
 ### counter break detection END
 ####################################################
 // Set plural forms
 $arResult['VIEW_COUNTERS']['TOTAL']['PLURAL'] = CTasksTools::getPluralForm($arResult['VIEW_COUNTERS']['TOTAL']['COUNTER']);
 foreach ($arResult['VIEW_COUNTERS']['ROLES'] as $roleId => $arData) {