Сохраняю для себя, может пригодиться этот кусок говнокода.
Оповещения не реализованы. Смотрите по списку литературы - кагбэ не сложно, но просто не нужно в текущей реализации.
#
# Проверим, что модуль задачи активен
#
if (CModule::IncludeModule("tasks")) {
#
# Взять ID пользователя по адресу почты
#
$email = CMailUtil::ExtractMailAddress($arMessageFields['FIELD_FROM']);
$from=$email;
$rsUser = CUser::GetList(($by="ID"), ($order="desc"), array("email"=>$from));
if ($oUser = $rsUser->Fetch())
$id_created="1";
$id_created = $oUser["ID"];
#
# Добавим задачи этим людям. Первый - исполнитель, остальные - соисполнители.
#
$arr_to=explode(";","additional_user_not_listed_here@gmail.com");
foreach ($arr_to as $to) {
if (empty($to)) continue;
$rsUser = CUser::GetList(($by="ID"), ($order="desc"), array("email"=>$to));
if ($oUser = $rsUser->Fetch())
$arr_responsible[] = $oUser["ID"];
}
#
# Заполнить массив аргументов для создания задачи
#
$arFields = Array(
"TITLE" => "Bitrix24-Support: ".$arMessageFields['SUBJECT'],
"DESCRIPTION" => htmlspecialcharsBack(TxtToHTML($email."\n".$arMessageFields['BODY'],true,0,"Y","N","Y","Y")),
"RESPONSIBLE_ID" => $arr_responsible[0],
"STATUS"=>2,
"CREATED_BY" => $id_created );
#
# Создать задачу
#
$obTask = new CTasks;
$ID = $obTask->Add($arFields);
#
# Список соиссполнителей берем из ответственных
# Добавим соисполнителей в задачу
#
$arr_accomp = array_splice($arr_responsible, 1, (count($arr_responsible)-1));
#
# Или вручную назначим исполнителя по UserID
#
# $arr_accomp = Array ( 59);
#
CTasks::AddAccomplices($ID, $arr_accomp);
#
# Список наблюдателей
# Добавить наблюдателей в задачу
# То же самое, что с исполнителем
$arr_auditors= Array ( 6 );
CTasks::AddAuditors($ID,$arr_auditors);
#
#Сохраняем вложения
#
$dbr_attach = CMailAttachment::GetList(Array("NAME" => "ASC", "ID" => "ASC"), Array("MESSAGE_ID" => $arMessageFields['ID']));
while ($dbr_attach_arr = $dbr_attach->GetNext()) {
if ($dbr_attach_arr["FILE_NAME"]=='1.tmp' ||
preg_match_all('/\\.(?:exe|html|phtml|pl|js|htm|py|php|php4|php3|phtml|shtml)$/i', $dbr_attach_arr["FILE_NAME"], $p_matches, PREG_PATTERN_ORDER))
continue;
$attach_id = $dbr_attach_arr["ID"];
$dbr = CMailAttachment::GetByID($attach_id);
if($dbr_arr = $dbr->Fetch()) {
$fname = $_SERVER['DOCUMENT_ROOT']."/upload/from_mail/".$dbr_attach_arr["FILE_NAME"];
$handle = fopen($fname, 'wb');
fwrite($handle, $dbr_arr["FILE_DATA"]);
fclose($handle);
$arFile = CFile::MakeFileArray($fname);
$arFile["old_file"] = "";
$arFile["del"] = "Y";
$arFile["MODULE_ID"] = "tasks";
$storage = Bitrix\Disk\Driver::getInstance()->getStorageByUserId($id_created);
$folder = $storage->getFolderForUploadedFiles();
$file = $folder->uploadFile($arFile, array(
'NAME' => $arFile["name"],
'CREATED_BY' => $id_created
), array(), true);
$FILE_ID = $file->getId();
$oTaskItem = new CTaskItem($ID, $id_created);
$rs = $oTaskItem->Update(array("UF_TASK_WEBDAV_FILES" => Array("n$FILE_ID")));
}
}
}
#
# Источники информации:
#
# https://dev.1c-bitrix.ru/support/forum/forum23/topic89021/
# https://pai-bx.com/wiki/1c-bitrix/44-kp-create-task-from-email/
Комментариев нет:
Отправить комментарий