Example #1
0
 public static function GetList($arOrder, $arFilter)
 {
     global $DB;
     $arSqlSearch = CTaskDependence::GetFilter($arFilter);
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tTD.*\n\t\t\tFROM\n\t\t\t\tb_tasks_dependence TD\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t";
     if (!is_array($arOrder)) {
         $arOrder = array();
     }
     foreach ($arOrder as $by => $order) {
         $by = strtolower($by);
         $order = strtolower($order);
         if ($order != "asc") {
             $order = "desc";
         }
         if ($by == "task") {
             $arSqlOrder[] = " TD " . $order . " ";
         } elseif ($by == "depends_on") {
             $arSqlOrder[] = " TD.DEPENDS_ON " . $order . " ";
         } elseif ($by == "depends_on_id") {
             $arSqlOrder[] = " TD.DEPENDS_ON_ID " . $order . " ";
         } elseif ($by == "task_id") {
             $arSqlOrder[] = " TD.TASK_ID " . $order . " ";
         } elseif ($by == "rand") {
             $arSqlOrder[] = CTasksTools::getRandFunction();
         } else {
             $arSqlOrder[] = " TD.ID " . $order . " ";
         }
         // is it for back compatibility?!
     }
     $strSqlOrder = "";
     DelDuplicateSort($arSqlOrder);
     $arSqlOrderCnt = count($arSqlOrder);
     for ($i = 0; $i < $arSqlOrderCnt; $i++) {
         if ($i == 0) {
             $strSqlOrder = " ORDER BY ";
         } else {
             $strSqlOrder .= ",";
         }
         $strSqlOrder .= $arSqlOrder[$i];
     }
     $strSql .= $strSqlOrder;
     //echo $strSql;
     return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
 }
Example #2
0
 /**
  * Get id of tasks that current task depends on
  */
 public function getDependsOn()
 {
     // ensure we have access to the task
     $this->checkCanReadThrowException();
     if ($this->arTaskDependsOn === null) {
         $rsDependsOn = CTaskDependence::GetList(array(), array('TASK_ID' => $this->taskId));
         $arTaskDependsOn = array();
         while ($arDependsOn = $rsDependsOn->fetch()) {
             $arTaskDependsOn[] = $arDependsOn['DEPENDS_ON_ID'];
         }
         $this->arTaskDependsOn = $arTaskDependsOn;
     }
     return $this->arTaskDependsOn;
 }
Example #3
0
 function AddPrevious($ID, $arPrevious = array())
 {
     if ($arPrevious) {
         foreach ($arPrevious as $dependsOn) {
             $arDependsOn = array("TASK_ID" => $ID, "DEPENDS_ON_ID" => $dependsOn);
             $oDependsOn = new CTaskDependence();
             $oDependsOn->Add($arDependsOn);
         }
     }
 }
Example #4
0
 /**
  * Get id of tasks that current task depends on
  */
 public function getDependsOn()
 {
     if ($this->arTaskDependsOn === null) {
         $rsDependsOn = CTaskDependence::GetList(array(), array('TASK_ID' => $this->taskId));
         $arTaskDependsOn = array();
         while ($arDependsOn = $rsDependsOn->fetch()) {
             $arTaskDependsOn[] = $arDependsOn['DEPENDS_ON_ID'];
         }
         $this->arTaskDependsOn = $arTaskDependsOn;
     }
     return $this->arTaskDependsOn;
 }
Example #5
0
 }
 $arResult["TASK"] = $arTask;
 $arTasksIDs = array($arTask['ID']);
 $arGroupsIDs = array();
 // subtasks
 $rsSubtasks = CTasks::GetList(array("GROUP_ID" => "ASC"), array("PARENT_ID" => $arParams["TASK_ID"]));
 $arResult["SUBTASKS"] = array();
 while ($arSubTask = $rsSubtasks->GetNext()) {
     $arResult["SUBTASKS"][] = $arSubTask;
     $arTasksIDs[] = $arSubTask["ID"];
     if ($arSubTask["GROUP_ID"] && !in_array($arSubTask["GROUP_ID"], $arGroupsIDs)) {
         $arGroupsIDs[] = $arSubTask["GROUP_ID"];
     }
 }
 // previous tasks
 $rsPrevTasksIds = CTaskDependence::getList(array(), array('TASK_ID' => $arParams["TASK_ID"]));
 $arPrevTasksIds = array();
 while ($arPrevTask = $rsPrevTasksIds->fetch()) {
     $arPrevTasksIds[] = (int) $arPrevTask['DEPENDS_ON_ID'];
 }
 $arResult["PREV_TASKS"] = array();
 if (!empty($arPrevTasksIds)) {
     $rsPrevtasks = CTasks::GetList(array('GROUP_ID' => 'ASC'), array('ID' => $arPrevTasksIds));
     while ($arPrevTask = $rsPrevtasks->GetNext()) {
         $arResult["PREV_TASKS"][] = $arPrevTask;
         $arTasksIDs[] = $arPrevTask["ID"];
         if ($arPrevTask["GROUP_ID"] && !in_array($arPrevTask["GROUP_ID"], $arGroupsIDs)) {
             $arGroupsIDs[] = $arPrevTask["GROUP_ID"];
         }
     }
 }