// register start task handler
AddEventHandler
("tasks", "OnBeforeTaskUpdate", array("StartTask", "OnBeforeTaskUpdateHandler"));
class StartTask {
// Create task function
function OnBeforeTaskUpdateHandler($id, $arFields) {
if ($arFields["STATUS"] == CTasks::STATE_IN_PROGRESS) {
// Stop all started tasks
//
$obTask = new CTasks;
$arFilter = array();
$arFilter["REAL_STATUS"] = $obTask::STATE_IN_PROGRESS;
$arFilter["STATUS_CHANGED_BY"] = CUser::GetID();
$tasksList = $obTask->GetList(
$arOrder = array(), $arFilter, $arSelect = array()
);
while ($task = $tasksList->GetNext()) :
if ($task['ID'] != $id) {
$uptask = array();
$uptask['STATUS'] = $obTask::STATE_DEFERRED;
$ret = $obTask->Update($task['ID'], $uptask);
}
endwhile;
}
}
} |