04.06.2021
14:03
04.06.2021 14:03:03
Читайте также: работа с задачами коробка битрикс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']));
}
}
} |
и пуш сообщения по измененным файлам
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;
}
}
} |
04.06.202114:0304.06.2021 14:03:03