Example #1
0
 // just update current value of an option
 $oListCtrl = CTaskListCtrl::getInstance($arAction['userId']);
 $oListCtrl->useState($oListState);
 // just saving reference to $oListState inside $oListCtrl
 if ($arAction['groupId'] > 0) {
     $bGroupMode = true;
     $oListCtrl->setFilterByGroupId((int) $arAction['groupId']);
 } else {
     $bGroupMode = false;
     $oListCtrl->setFilterByGroupId(null);
 }
 $oFilter = CTaskFilterCtrl::GetInstance($arAction['userId'], $bGroupMode);
 $oListCtrl->useAdvancedFilterObject($oFilter);
 // just saving reference to $oFilter inside $oListCtrl
 $arFilter = array_merge($oListCtrl->getFilter(), $oListCtrl->getCommonFilter());
 $arSqlSearch = CTasks::GetFilter($arFilter, '', array('USER_ID' => $loggedInUserId));
 $arSqlSearch[] = " T.ZOMBIE = 'N' ";
 if ($arAction['operation'] === 'tasks.list::getOriginators()') {
     $sql = "SELECT T.CREATED_BY AS USER_ID, COUNT(T.ID) AS TASKS_CNT \n\t\t\t\t\t\tFROM b_tasks T \n\t\t\t\t\t\tLEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "\n\t\t\t\t\t\tWHERE " . implode('AND', $arSqlSearch) . " GROUP BY T.CREATED_BY";
 } else {
     if ($arAction['operation'] === 'tasks.list::getResponsibles()') {
         $sql = "SELECT T.RESPONSIBLE_ID AS USER_ID, COUNT(T.ID) AS TASKS_CNT \n\t\t\t\t\t\tFROM b_tasks T \n\t\t\t\t\t\tLEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "\n\t\t\t\t\t\tWHERE " . implode('AND', $arSqlSearch) . " GROUP BY T.RESPONSIBLE_ID";
     } else {
         throw new Exception('unknown operation: ' . $arAction['operation']);
     }
 }
 global $DB;
 $arUsers = array();
 $rc = $DB->query($sql);
 while ($ar = $rc->fetch()) {
     $arUsers[$ar['USER_ID']] = array('USER_ID' => (int) $ar['USER_ID'], 'TASKS_CNT' => (int) $ar['TASKS_CNT']);
Example #2
0
 private static function GetFieldGrouppedByFilter($column, $arFilter, $loggedInUserId)
 {
     CTaskAssert::assert($loggedInUserId && is_array($arFilter));
     $arSqlSearch = CTasks::GetFilter($arFilter, '', array('USER_ID' => $loggedInUserId));
     $arSqlSearch[] = " T.ZOMBIE = 'N' ";
     $keysFiltered = CTasks::GetFilteredKeys($arFilter);
     $bNeedJoinFavoritesTable = in_array('FAVORITE', $keysFiltered, true);
     $sql = "SELECT T." . $column . " AS USER_ID, COUNT(T.ID) AS TASKS_CNT \n\t\t\tFROM b_tasks T \n\t\t\tLEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "\n\n\t\t\t" . ($bNeedJoinFavoritesTable ? "\n\t\t\t\tLEFT JOIN " . FavoriteTable::getTableName() . " FVT ON FVT.TASK_ID = T.ID and FVT.USER_ID = '" . $loggedInUserId . "'\n\t\t\t\t" : "") . "\n\n\t\t\tWHERE " . implode('AND', $arSqlSearch) . " GROUP BY T." . $column;
     return $GLOBALS['DB']->query($sql);
 }
Example #3
0
 function GetChildrenCount($arFilter, $arParentIDs)
 {
     global $DB, $USER;
     $obUserFieldsSql = new CUserTypeSQL();
     $obUserFieldsSql->SetEntity("TASKS_TASK", "T.ID");
     $obUserFieldsSql->SetFilter($arFilter);
     if (!is_array($arFilter)) {
         $arFilter = array();
     }
     if (!$arParentIDs) {
         return false;
     }
     $arFilter["PARENT_ID"] = $arParentIDs;
     $userID = is_object($USER) ? intval($USER->GetID()) : 0;
     unset($arFilter["ONLY_ROOT_TASKS"]);
     $arSqlSearch = CTasks::GetFilter($arFilter);
     $arSqlSearch[] = " T.ZOMBIE = 'N' ";
     $r = $obUserFieldsSql->GetFilter();
     if (strlen($r) > 0) {
         $arSqlSearch[] = "(" . $r . ")";
     }
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tT.PARENT_ID AS PARENT_ID,\n\t\t\t\tCOUNT(T.ID) AS CNT\n\t\t\tFROM\n\t\t\t\tb_tasks T\n\t\t\tINNER JOIN b_user CU ON CU.ID = T.CREATED_BY\n\t\t\tINNER JOIN b_user RU ON RU.ID = T.RESPONSIBLE_ID\n\t\t\tLEFT JOIN\n\t\t\t\tb_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $userID . "\n\t\t\t" . $obUserFieldsSql->GetJoin("T.ID") . "\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t\tGROUP BY\n\t\t\t\tT.PARENT_ID\n\t\t";
     $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     return $res;
 }
Example #4
0
 function GetCompanyStats($arFilter = array())
 {
     global $DB;
     $arSqlSearch = CTasks::GetFilter($arFilter);
     if (!array_key_exists('PERIOD', $arFilter)) {
         $arFilter['PERIOD'] = null;
     }
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tCOUNT(DISTINCT T.RESPONSIBLE_ID) AS RESPONSIBLES,\n\t\t\t\tSUM(" . CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.ADD_IN_REPORT = 'Y' AND (T.MARK = 'P' OR T.MARK = 'N')") . ") AS MARKED_IN_REPORT,\n\t\t\t\tSUM(" . CTaskReport::GetPeriodCondition($arFilter["PERIOD"], "CLOSED_DATE", "T.CLOSED_DATE IS NOT NULL AND T.ADD_IN_REPORT = 'Y' AND T.MARK = 'P'") . ") AS POSITIVE\n\t\t\tFROM\n\t\t\t\tb_tasks T\n\t\t\tINNER JOIN\n\t\t\t\tb_user U ON U.ID = T.RESPONSIBLE_ID\n\t\t\tWHERE\n\t\t\t\tT.ADD_IN_REPORT = 'Y'\n\t\t\tAND\n\t\t\t\tU.ACTIVE = 'Y'\n\t\t\t";
     if (count($arSqlSearch) !== 0) {
         $strSql .= ' AND ' . implode(' AND ', $arSqlSearch);
     }
     $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     return $res;
 }