Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Обработчик, который удаляет пинги по измененным файлам в закрытых задачах



Читайте также:
работа с задачами коробка битрикс24 api  примеры

У клиента один и тот, же файл с диска используется в задачах. После изменения данного файла были пинги и в закрытых задачах. Что очень бесило.
Задача:
При изменении файла в закрытой задачи не добавлять комментарий.
Совсем не добавлять можно, но это трогать ядро (а это зло), а вот после добавления сообщения к задаче есть обработчик, в нем и будем удалять данный коммент.

AddEventHandler("tasks","OnAfterCommentAdd","MyOnAfterCommentAdd");
function MyOnAfterCommentAdd($commentId, &$arFields){   
      
   if(
            (($arFields["COMMENT_TEXT"]=="Загрузила новую версию файла")||($arFields["COMMENT_TEXT"]=="Загрузил новую версию файла")) && 
             CModule::IncludeModule('tasks')
        ){      
             $adminId = 1; //из-под админа получаем задачу и потом удаляем коммент
               $arFilter = array(                       
         'ID' => $arFields["TASK_ID"],
         'STATUS' => CTasks::STATE_COMPLETED
      );
      $res = CTasks::GetList(
          Array(), 
          $arFilter,
          array("ID","STATUS","FORUM_TOPIC_ID"),
          array("USER_ID"=>$adminId)                 
      );
      $obTask = new CTasks;
      if($arTask = $res->GetNext()){                                  
         CTaskComments::Remove($arFields["TASK_ID"],$commentId,$adminId,array('FORUM_TOPIC_ID'=>$arTask['FORUM_TOPIC_ID']));
      }
   }
}
и пуш сообщения по измененным файлам
ВАЖНО!
было раньше
$arFields["PARAMS"]['taskId']

стало
$arFields["PUSH_PARAMS"]["PARAMS"]['TASK_ID']

по коду ниже старый вариант
AddEventHandler("im","OnBeforeMessageNotifyAdd","MyOnBeforeMessageNotifyAdd");
function MyOnBeforeMessageNotifyAdd($arFields){   
   if(
      !empty($arFields["MESSAGE"]) && !empty($arFields["PARAMS"]['taskId']) && !empty($arFields["PARAMS"]['operation']) && ($arFields["PARAMS"]['operation']=="UPDATE")&&
      !empty($arFields["TO_USER_ID"])
   ){
      if(
         (strpos($arFields["MESSAGE"], "Изменена задача ")!==false)&&
         (strpos($arFields["MESSAGE"], " Крайний срок:")!==false)&&
         CModule::IncludeModule('tasks')
      ){
         $arFilter = array(                       
            'ID' => $arFields["PARAMS"]['taskId'],
            "RESPONSIBLE_ID"=>$arFields["TO_USER_ID"],            
         );
         $res = CTasks::GetList(
             Array(), 
             $arFilter,
             array("ID","TITLE"),
             array("USER_ID"=>1)   //из-под админа получаем                 
         );         
         if($arTask = $res->GetNext()){         
            //AddMessage2Log($arTask);
         }
         else{
            $arFilter = array(                       
                  'ID' => $arFields["PARAMS"]['taskId'],
                  "CREATED_BY"=>$arFields["TO_USER_ID"],            
               
            );
            $res = CTasks::GetList(
                Array(), 
                $arFilter,
                array("ID","TITLE"),
                array("USER_ID"=>1)   //из-под админа получаем                 
            );
            if($arTask = $res->GetNext()){         
               //AddMessage2Log($arTask);
            }
            else{               
               return false;
            }
         }
      }
   }
   
   if(!empty($arFields["MESSAGE"]) && !empty($arFields["PARAMS"]['taskId'])){      
      if(
         (strpos($arFields["MESSAGE"], "агрузила новую версию файла") !==false)||
         (strpos($arFields["MESSAGE"], "агрузил новую версию файла") !==false)
      ){
         
         return false;
      }
      elseif(
         !empty($arFields["PARAMS"]['operation'])&&
         ($arFields["PARAMS"]['operation']=="STATUS")&&
         (
            (strpos($arFields["MESSAGE"], "акрыла задачу") !==false)||
            (strpos($arFields["MESSAGE"], "акрыл задачу") !==false)
         )&&
         (strpos($arFields["MESSAGE"], "требуется контроль постановщика")===false)

      ){
         
         return false;
      }
   }
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!