Читайте также: работа с задачами коробка битрикс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; } } } |