Exemplo n.º 1
0
 function Delete($ID)
 {
     global $DB, $USER_FIELD_MANAGER;
     $ID = intval($ID);
     if ($ID > 0) {
         $rsTemplate = CTaskTemplates::GetByID($ID);
         if ($arTemplate = $rsTemplate->Fetch()) {
             // Remove all agents for this template
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ');', 'tasks');
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks');
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 1);', 'tasks');
             if ($arTemplate["FILES"]) {
                 $arFiles = unserialize($arTemplate["FILES"]);
                 if (is_array($arFiles)) {
                     $arFilesToDelete = array();
                     foreach ($arFiles as $file) {
                         $rsFile = CTaskFiles::GetList(array(), array("FILE_ID" => $file));
                         if (!($arFile = $rsFile->Fetch())) {
                             $arFilesToDelete[] = $file;
                         }
                     }
                     foreach ($arFilesToDelete as $file) {
                         CFile::Delete($file);
                     }
                 }
             }
             $dbConnection = \Bitrix\Main\HttpApplication::getConnection();
             $strSql = "DELETE FROM b_tasks_template WHERE ID = " . $ID;
             if ($DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__)) {
                 $USER_FIELD_MANAGER->Delete("TASKS_TASK_TEMPLATE", $ID);
                 // drop children (sub-templates)
                 $dbConnection->query("delete from b_tasks_template where ID in (" . Template\DependencyTable::getSubTreeSql($ID) . ")");
                 // drop tree records for this templates and it`s children
                 try {
                     Template\DependencyTable::dropLinkL($ID);
                 } catch (\Bitrix\Tasks\DB\Tree\TargetNodeNotFoundException $e) {
                 }
                 return true;
             }
         }
     }
     return false;
 }