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__); }
/** * 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; }
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); } } }
/** * 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; }
} $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"]; } } }