function CheckFields(&$arFields, $ID = false) { /** @global CMain $APPLICATION */ global $APPLICATION; $arMsg = array(); if (!is_set($arFields, "TASK_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID"), "id" => "ERROR_TASKS_BAD_TASK_ID"); } else { /** @noinspection PhpDeprecationInspection */ $r = CTasks::GetByID($arFields["TASK_ID"], false); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID_EX"), "id" => "ERROR_TASKS_BAD_TASK_ID_EX"); } } if (!is_set($arFields, "USER_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_USER_ID"), "id" => "ERROR_TASKS_BAD_USER_ID"); } else { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $r = CUser::GetByID($arFields["USER_ID"]); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_USER_ID_EX"), "id" => "ERROR_TASKS_BAD_USER_ID_EX"); } } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } //Defaults if (!is_set($arFields, "TYPE") || !in_array($arFields["TYPE"], array("A", "U"))) { $arFields["TYPE"] = "A"; } return true; }
function CheckFields(&$arFields) { /** @global CMain $APPLICATION */ global $APPLICATION; $arMsg = array(); if (!is_set($arFields, "TASK_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID"), "id" => "ERROR_TASKS_BAD_TASK_ID"); } else { $r = CTasks::GetByID($arFields["TASK_ID"]); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID_EX"), "id" => "ERROR_TASKS_BAD_TASK_ID_EX"); } } if (!is_set($arFields, "DEPENDS_ON_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_DEPENDS_ON_ID"), "id" => "ERROR_TASKS_BAD_DEPENDS_ON_ID"); } else { $r = CTasks::GetByID($arFields["DEPENDS_ON_ID"]); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_DEPENDS_ON_ID_EX"), "id" => "ERROR_TASKS_BAD_DEPENDS_ON_ID_EX"); } } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } return true; }
public static function SyncModifyTaskItem($arModifyEventArray) { global $DB; $ID = $arModifyEventArray["ID"]; // sanitize description here $Sanitizer = new CBXSanitizer(); $Sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW); $Sanitizer->ApplyHtmlSpecChars(false); $Sanitizer->DeleteSanitizedTags(true); $arModifyEventArray['BODY'] = trim($Sanitizer->SanitizeHtml($arModifyEventArray['BODY'])); $arFields = array("RESPONSIBLE_ID" => $arModifyEventArray["USER_ID"], "SITE_ID" => SITE_ID, "EXCHANGE_ID" => $arModifyEventArray["XML_ID"], "EXCHANGE_MODIFIED" => $arModifyEventArray["MODIFICATION_LABEL"], "TITLE" => $arModifyEventArray["SUBJECT"], "DESCRIPTION" => $arModifyEventArray["BODY"], "DESCRIPTION_IN_BBCODE" => 'N', "CREATED_DATE" => $arModifyEventArray["DATE_CREATE"], "PRIORITY" => self::$PriorityMapping[strtolower($arModifyEventArray["IMPORTANCE"])], "DURATION_FACT" => ceil($arModifyEventArray["ACTUAL_WORK"] / 60), "START_DATE_PLAN" => $arModifyEventArray["START_DATE"], "DEADLINE" => $arModifyEventArray["DUE_DATE"], "STATUS" => self::$StatusMapping[strtolower($arModifyEventArray["STATUS"])], "DURATION_PLAN" => ceil($arModifyEventArray["TOTAL_WORK"] / 60), "DURATION_TYPE" => "hours"); $arExtraFields = array(); if (isset($arModifyEventArray['ExtendedProperty']) && is_array($arModifyEventArray['ExtendedProperty'])) { foreach ($arModifyEventArray['ExtendedProperty'] as $arExtendedProperty) { $arExtraFields[$arExtendedProperty['Name']] = $arExtendedProperty['Value']; } } if ($ID == 0) { $arFields["STATUS_CHANGED_BY"] = $arFields["CHANGED_BY"] = $arFields["CREATED_BY"] = $arFields["RESPONSIBLE_ID"]; $arFields["STATUS_CHANGED_DATE"] = $arFields["CHANGED_DATE"] = $arFields["CREATED_DATE"]; $ID = $DB->Add("b_tasks", $arFields, array("DESCRIPTION"), "tasks"); if ($ID) { $arFields["ID"] = $ID; CTaskNotifications::SendAddMessage($arFields); $arLogFields = array("TASK_ID" => $ID, "USER_ID" => $arFields["CREATED_BY"], "CREATED_DATE" => $arFields["CREATED_DATE"], "FIELD" => "NEW"); $log = new CTaskLog(); $log->Add($arLogFields); } } else { $strUpdate = $DB->PrepareUpdate("b_tasks", $arFields, "tasks"); $strSql = "UPDATE b_tasks SET " . $strUpdate . " WHERE ID=" . $ID; $arBinds = array('DESCRIPTION' => $arFields['DESCRIPTION']); $result = $DB->QueryBind($strSql, $arBinds, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($result) { $rsTask = CTasks::GetByID($ID, false); if ($arTask = $rsTask->Fetch()) { $arFields["CHANGED_BY"] = $arFields["RESPONSIBLE_ID"]; $arFields["CHANGED_DATE"] = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time() + CTimeZone::GetOffset()); CTaskNotifications::SendUpdateMessage($arFields, $arTask); $arChanges = CTaskLog::GetChanges($arTask, $arFields); foreach ($arChanges as $key => $value) { $arLogFields = array("TASK_ID" => $ID, "USER_ID" => $arFields["CHANGED_BY"], "CREATED_DATE" => $arFields["CHANGED_DATE"], "FIELD" => $key, "FROM_VALUE" => $value["FROM_VALUE"], "TO_VALUE" => $value["TO_VALUE"]); $log = new CTaskLog(); $log->Add($arLogFields); } } } } }
function CheckFields(&$arFields, $ID = false, $effectiveUserId = null) { /** @global CMain $APPLICATION */ global $APPLICATION; $arMsg = array(); if (!is_set($arFields, "TASK_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID"), "id" => "ERROR_TASKS_BAD_TASK_ID"); } else { $arParams = array(); if ($effectiveUserId !== null) { $arParams['USER_ID'] = $effectiveUserId; } $r = CTasks::GetByID($arFields["TASK_ID"], true, $arParams); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID_EX"), "id" => "ERROR_TASKS_BAD_TASK_ID_EX"); } } if ($effectiveUserId !== null && !isset($arFields['USER_ID'])) { $arFields['USER_ID'] = $effectiveUserId; } if (!is_set($arFields, "USER_ID")) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_USER_ID"), "id" => "ERROR_TASKS_BAD_USER_ID"); } else { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $r = CUser::GetByID($arFields["USER_ID"]); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_USER_ID_EX"), "id" => "ERROR_TASKS_BAD_USER_ID_EX"); } } if (!is_set($arFields, "NAME") || strlen(trim($arFields["NAME"])) <= 0) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_NAME"), "id" => "ERROR_BAD_TASKS_NAME"); } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } return true; }
public static function SaveTask($tasksData) { $rc = false; if (!$GLOBALS['USER']->IsAuthorized()) { return false; } $delegateToUser = false; if (isset($tasksData['META::DELEGATE_TO_USER'])) { $delegateToUser = (int) $tasksData['META::DELEGATE_TO_USER']; } $bDelegate = false; if ($delegateToUser > 0) { $bDelegate = true; } $curUserId = (int) $GLOBALS['USER']->GetID(); if (!CModule::IncludeModule('socialnetwork')) { return false; } $arNewTaskFields = false; $bErrorOccuredOnTaskCreation = false; if (isset($tasksData['TASK_ID']) && check_bitrix_sessid()) { $bCreateMode = true; if ($tasksData['TASK_ID'] > 0) { $bCreateMode = false; } // We are in edit mode if ($bCreateMode && $bDelegate) { throw new Exception('$bCreateMode && $bDelegate'); } if (!$bCreateMode && $bDelegate) { $arNewTaskFields = array(); if (intval($delegateToUser) !== $curUserId) { $arNewTaskFields['RESPONSIBLE_ID'] = $delegateToUser; $arNewTaskFields['STATUS'] = CTasks::STATE_PENDING; $rsTask = CTasks::GetByID($tasksData['TASK_ID']); $arTask = $rsTask->Fetch(); if (!$arTask || !isset($arTask['ID'])) { return false; } if (sizeof($arTask['AUDITORS'] > 0)) { if (!in_array($curUserId, $arTask['AUDITORS'])) { $arNewTaskFields['AUDITORS'] = $arTask['AUDITORS']; $arNewTaskFields['AUDITORS'][] = $curUserId; } } else { $arNewTaskFields['AUDITORS'] = array($curUserId); } } else { return false; } } else { $arNewTaskFields = array('TITLE' => $tasksData['TITLE'], 'DESCRIPTION' => $tasksData['DESCRIPTION'], 'RESPONSIBLE_ID' => $tasksData['RESPONSIBLE_ID'], 'PRIORITY' => $tasksData['PRIORITY'], 'DEADLINE' => CAllDatabase::FormatDate(str_replace('T', ' ', $tasksData['DEADLINE']), 'YYYY-MM-DD HH:MI:SS', FORMAT_DATETIME)); if (isset($tasksData['ACCOMPLICES'])) { if ($tasksData['ACCOMPLICES'] == -1) { $arNewTaskFields['ACCOMPLICES'] = array(); } else { $arNewTaskFields['ACCOMPLICES'] = $tasksData['ACCOMPLICES']; } } if (isset($tasksData['AUDITORS'])) { if ($tasksData['AUDITORS'] == -1) { $arNewTaskFields['AUDITORS'] = array(); } else { $arNewTaskFields['AUDITORS'] = $tasksData['AUDITORS']; } } $arNewTaskFields['GROUP_ID'] = 0; if (isset($tasksData['GROUP_ID']) && intval($tasksData['GROUP_ID']) > 0) { if (CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, (int) $tasksData['GROUP_ID'], 'tasks', 'create_tasks')) { $arNewTaskFields['GROUP_ID'] = (int) $tasksData['GROUP_ID']; } else { unset($arNewTaskFields['GROUP_ID']); } } if ($bCreateMode) { $arNewTaskFields['CREATED_BY'] = $curUserId; } } if (isset($tasksData['META::EVENT_GUID'])) { $arNewTaskFields['META::EVENT_GUID'] = $tasksData['META::EVENT_GUID']; } if ($bCreateMode) { $arNewTaskFields['ID'] = 0; } else { $arNewTaskFields['ID'] = (int) $tasksData['TASK_ID']; } $oTask = new CTasks(); if (!$bCreateMode) { $rc = $oTask->Update($arNewTaskFields['ID'], $arNewTaskFields); } else { $arNewTaskFields['MULTITASK'] = 'N'; $arNewTaskFields['DESCRIPTION_IN_BBCODE'] = 'Y'; // Only creator or priveleged user can set responsible person. $arNewTaskFields['RESPONSIBLE_ID'] = $curUserId; if ($arNewTaskFields['CREATED_BY'] === $curUserId || $GLOBALS['USER']->IsAdmin() || CTasksTools::IsPortalB24Admin()) { $arNewTaskFields['RESPONSIBLE_ID'] = (int) $tasksData['RESPONSIBLE_ID']; } $arNewTaskFields['SITE_ID'] = SITE_ID; $rc = $oTask->Add($arNewTaskFields); if ($rc > 0) { $arNewTaskFields['ID'] = $rc; } else { $bErrorOccuredOnTaskCreation = true; } } $rc = $arNewTaskFields['ID']; } if ($bErrorOccuredOnTaskCreation) { return false; } return $rc; }
public static function AddCrmActivityComment($arFields) { if (!CModule::IncludeModule("forum")) { return false; } $ufFileID = array(); $ufDocID = array(); $messageID = false; $dbResult = CSocNetLog::GetList(array(), array("ID" => $arFields["LOG_ID"]), false, false, array('ID', 'ENTITY_ID', 'SOURCE_ID', 'SITE_ID', 'TITLE', 'PARAMS')); if ($arLog = $dbResult->Fetch()) { $dbCrmActivity = CCrmActivity::GetList(array(), array('ID' => $arLog['ENTITY_ID'], 'CHECK_PERMISSIONS' => 'N')); if ($arCrmActivity = $dbCrmActivity->Fetch()) { if ($arCrmActivity['TYPE_ID'] == CCrmActivityType::Task && CModule::IncludeModule('tasks')) { $userID = $GLOBALS["USER"]->GetID(); $dbTask = CTasks::GetByID($arCrmActivity["ASSOCIATED_ENTITY_ID"], false); if ($arTaskFields = $dbTask->Fetch()) { if (!($userName = trim($GLOBALS["USER"]->GetFormattedName(false)))) { $userName = $GLOBALS["USER"]->GetLogin(); } $FORUM_ID = CTasksTools::GetForumIdForIntranet(); if (!$arTaskFields["FORUM_TOPIC_ID"]) { $arTopicFields = array("TITLE" => $arTaskFields["TITLE"], "USER_START_ID" => $arFields["USER_ID"], "STATE" => "Y", "FORUM_ID" => $FORUM_ID, "USER_START_NAME" => $userName, "START_DATE" => ConvertTimeStamp(time(), "FULL"), "POSTS" => 0, "VIEWS" => 0, "APPROVED" => "Y", "LAST_POSTER_NAME" => $userName, "LAST_POST_DATE" => ConvertTimeStamp(time(), "FULL"), "LAST_MESSAGE_ID" => 0, "XML_ID" => 'TASK_' . $arTaskFields['ID']); $TOPIC_ID = CForumTopic::Add($arTopicFields); if ($TOPIC_ID) { $arFieldsFirstMessage = array("POST_MESSAGE" => $arTopicFields["XML_ID"], "AUTHOR_ID" => $arTopicFields["USER_START_ID"], "AUTHOR_NAME" => $arTopicFields["USER_START_NAME"], "FORUM_ID" => $arTopicFields["FORUM_ID"], "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y", "NEW_TOPIC" => "Y", "PARAM1" => 'TK', "PARAM2" => $arTaskFields['ID'], "PERMISSION_EXTERNAL" => 'E', "PERMISSION" => 'E'); CForumMessage::Add($arFieldsFirstMessage, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N")); $oTask = new CTasks(); $oTask->Update($arTaskFields["ID"], array("FORUM_TOPIC_ID" => $TOPIC_ID)); } } else { $TOPIC_ID = $arTaskFields["FORUM_TOPIC_ID"]; } if ($TOPIC_ID) { $arFieldsP = array("AUTHOR_ID" => $arFields["USER_ID"], "AUTHOR_NAME" => $userName, "POST_MESSAGE" => $arFields["TEXT_MESSAGE"], "FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y"); $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("SONET_COMMENT", $arTmp); if (is_array($arTmp)) { if (array_key_exists("UF_SONET_COM_DOC", $arTmp)) { $GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"]; } elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp)) { $arFieldsP["FILES"] = array(); foreach ($arTmp["UF_SONET_COM_FILE"] as $file_id) { $arFieldsP["FILES"][] = array("FILE_ID" => $file_id); } } } $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("FORUM_MESSAGE", $arFieldsP); $messageID = CForumMessage::Add($arFieldsP); // get UF DOC value and FILE_ID there if ($messageID > 0) { $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID)); while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch()) { $ufFileID[] = $arAddedMessageFiles["FILE_ID"]; } $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID); } } } } else { return array("NO_SOURCE" => "Y"); } } else { $sError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR"); } } else { $sError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR"); } return array("SOURCE_ID" => $messageID, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageID, "ERROR" => $sError, "NOTES" => $sNote, "UF" => array("FILE" => $ufFileID, "DOC" => $ufDocID)); }
/** * @param integer $taskId * @param array $arFilesIds * @return bool */ public static function CheckFieldsMultiple($taskId, $arFilesIds) { /** * @global CMain $APPLICATION */ global $APPLICATION; $arMsg = array(); if (!($taskId > 0)) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID"), "id" => "ERROR_TASKS_BAD_TASK_ID"); } else { /** @noinspection PhpDeprecationInspection */ $r = CTasks::GetByID($taskId, false); if (!$r->Fetch()) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_TASK_ID_EX"), "id" => "ERROR_TASKS_BAD_TASK_ID_EX"); } } if (!is_array($arFilesIds)) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_FILE_ID"), "id" => "ERROR_TASKS_BAD_FILE_ID"); } elseif (!empty($arFilesIds)) { $arFilesIds = array_unique($arFilesIds); $arNotFetchedFilesIds = $arFilesIds; /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $r = CFile::GetList(array(), array('@ID' => implode(',', $arFilesIds))); while ($ar = $r->Fetch()) { $fileId = (int) $ar['ID']; $key = array_search($fileId, $arFilesIds); if ($key !== false) { unset($arNotFetchedFilesIds[$key]); } } if (count($arNotFetchedFilesIds)) { $arMsg[] = array("text" => GetMessage("TASKS_BAD_FILE_ID_EX"), "id" => "ERROR_TASKS_BAD_FILE_ID_EX"); } } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } return true; }
} $arRes['FILES'] = array(); if ($arRes['ITEM_ID'] > 0) { $dbFiles = CMeetingItem::GetFiles($arRes['ITEM_ID']); while ($arFile = $dbFiles->Fetch()) { $arRes['FILES'][$arFile['FILE_ID']] = $arFile['FILE_SRC']; } if (count($arRes['FILES']) > 0) { $arRes['FILES'] = CMeeting::GetFilesData($arRes['FILES'], array("ITEM" => $arRes['ITEM_ID'])); } } $arRes['TASKS_COUNT'] = CMeetingItem::GetTasksCount($arRes['ITEM_ID'], $arRes['ID']); if (!$arParams['COPY']) { $arRes['EDITABLE'] = CMeetingItem::IsEditable($arRes['ITEM_ID']); if ($arRes['TASK_ID'] && CModule::IncludeModule('tasks')) { $dbTask = CTasks::GetByID($arRes['TASK_ID']); if ($arTask = $dbTask->Fetch()) { $arRes['TASK_ACCESS'] = true; } } } $arResult['MEETING']['AGENDA'][$arRes['ID']] = $arRes; } } if ($arResult['MEETING']['DATE_START'] && MakeTimeStamp($arResult['MEETING']['DATE_START']) > 0) { $arFormats = array('ru' => 'j F', 'en' => 'F j', 'de' => 'j. F'); $dateFormat = isset($arFormats[LANGUAGE_ID]) ? $arFormats[LANGUAGE_ID] : $arFormats[LangSubst(LANGUAGE_ID)]; $APPLICATION->SetTitle(GetMessage('ME_MEETING_EDIT', array('#ID#' => $arResult['MEETING']['ID'], '#DATE#' => FormatDate($dateFormat, MakeTimeStamp($arResult['MEETING']['DATE_START'])), '#TITLE#' => $arResult['MEETING']['TITLE']))); // $arResult['MEETING']['DATE_START'] = FormatDate($DB->DateFormatToPhp(FORMAT_DATE).' H:i', MakeTimeStamp($arResult['MEETING']['DATE_START'])); // $arResult['MEETING']['DATE_START'] = date($DB->DateFormatToPhp(FORMAT_DATE).((IsAmPmMode()) ? ' g:i a' : ' H:i'), MakeTimeStamp($arResult['MEETING']['DATE_START'])); } else {
if (CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $GROUP_ID, "tasks", "create_tasks")) { $arFields["GROUP_ID"] = $GROUP_ID; } } if ($DB->FormatDate($_POST["deadline"], CSite::GetDateFormat("FULL"))) { $arFields["DEADLINE"] = $_POST["deadline"]; } $depth = intval($_POST["depth"]); if (intval($_POST["parent"]) > 0) { $arFields["PARENT_ID"] = intval($_POST["parent"]); } $arFields["STATUS"] = $status; $task = new CTasks(); $ID = $task->Add($arFields); if ($ID) { $rsTask = CTasks::GetByID($ID); if ($task = $rsTask->GetNext()) { $APPLICATION->RestartBuffer(); ob_start(); if ($task["GROUP_ID"]) { $arGroup = CSocNetGroup::GetByID($task["GROUP_ID"]); if ($arGroup) { $task["GROUP_NAME"] = $arGroup["NAME"]; } } $params = array("PATHS" => $arPaths, "PLAIN" => false, "DEFER" => true, "SITE_ID" => $SITE_ID, "TASK_ADDED" => true, 'IFRAME' => 'N', "NAME_TEMPLATE" => $nameTemplate, 'DATA_COLLECTION' => array(array("CHILDREN_COUNT" => 0, "DEPTH" => $depth, "UPDATES_COUNT" => 0, "PROJECT_EXPANDED" => true, 'ALLOWED_ACTIONS' => null, "TASK" => $task))); $columnsOrder = null; if (isset($_POST['columnsOrder'])) { $columnsOrder = array_map('intval', $_POST['columnsOrder']); } if ($columnsOrder !== null) {
return false; } unset($paramsCheck); if (!CBXFeatures::IsFeatureEnabled('Tasks')) { if ($arParams['SHOW_TEMPLATE'] === 'Y' && $arParams['RENDER_FORMAT'] === 'HTML') { ShowError(GetMessage('TASKS_MODULE_NOT_AVAILABLE_IN_THIS_EDITION')); } return false; } $rsUser = CUser::GetByID($arParams['USER_ID']); if (!(is_object($rsUser) && ($arUser = $rsUser->GetNext()))) { return false; } $arResult['USER'] = $arUser; unset($rsUser, $arUser); $rsTask = CTasks::GetByID($arParams['TASK_ID']); if (!(is_object($rsTask) && ($arTask = $rsTask->Fetch()))) { if ($arParams['SHOW_TEMPLATE'] === 'Y' && $arParams['RENDER_FORMAT'] === 'HTML') { ShowError(str_replace('#TASK_ID#', (int) $arParams['TASK_ID'], GetMessage('MB_TASKS_TASK_DETAIL_TASK_NOT_ACCESSIBLE'))); } return false; } $arResult['FORUM_ID'] = false; if ($arTask['FORUM_TOPIC_ID']) { $arTopic = CForumTopic::GetByID($arTask['FORUM_TOPIC_ID']); if ($arTopic) { $arResult['FORUM_ID'] = (int) $arTopic['FORUM_ID']; } unset($arTopic); } if ($arResult['FORUM_ID'] === false) {
function FormatEvent_Task2($arFields, $arParams, $bMail = false) { if ($bMail && strlen($arFields["MAIL_LANGUAGE_ID"]) > 0) { IncludeModuleLangFile(__FILE__, $arFields["MAIL_LANGUAGE_ID"]); } // Prevent module versions dependency between tasks and socialnetwork if (CModule::IncludeModule('tasks') && method_exists('CTaskNotifications', 'FormatTask4SocialNetwork')) { // Code moved out to tasks, use it if ($bMail && strlen($arFields["MAIL_LANGUAGE_ID"]) > 0) { IncludeModuleLangFile(__FILE__, LANGUAGE_ID); } return CTaskNotifications::FormatTask4SocialNetwork($arFields, $arParams, $bMail); } // Code wasn't moved out to tasks yet, use current function $GLOBALS['APPLICATION']->SetAdditionalCSS("/bitrix/js/tasks/css/tasks.css"); $arFields["PARAMS"] = unserialize($arFields["~PARAMS"]); $arResult = array("EVENT" => $arFields, "CREATED_BY" => CSocNetLogTools::FormatEvent_GetCreatedBy($arFields, $arParams, $bMail), "ENTITY" => CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail), "EVENT_FORMATTED" => array()); if (!$bMail) { $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams); } if (!$bMail && $arParams["MOBILE"] != "Y" && array_key_exists("URL", $arFields) && strlen($arFields["URL"]) > 0) { $task_tmp = '<a href="' . $arFields["URL"] . '" onclick="if (taskIFramePopup.isLeftClick(event)) {taskIFramePopup.view(' . $arFields["SOURCE_ID"] . '); return false;}">' . $arFields["TITLE"] . '</a>'; } else { $task_tmp = $arFields["TITLE"]; } $title_tmp = str_replace("#TITLE#", $task_tmp, GetMessage("SONET_GL_EVENT_TITLE_TASK")); if ($arFields["PARAMS"] && $arFields["PARAMS"]["CREATED_BY"]) { $suffix = is_array($GLOBALS["arExtranetUserID"]) && in_array($arFields["PARAMS"]["CREATED_BY"], $GLOBALS["arExtranetUserID"]) ? GetMessage("SONET_LOG_EXTRANET_SUFFIX") : ""; $rsUser = CUser::GetByID(intval($arFields["PARAMS"]["CREATED_BY"])); if ($arUser = $rsUser->Fetch()) { $title_tmp .= " (" . str_replace("#USER_NAME#", CUser::FormatName(CSite::GetNameFormat(false), $arUser) . $suffix, GetMessage("SONET_GL_EVENT_TITLE_TASK_CREATED")) . ")"; } } if ($bMail) { $title = str_replace(array("#TASK#", "#ENTITY#", "#CREATED_BY#"), array($title_tmp, $arResult["ENTITY"]["FORMATTED"], $bMail ? $arResult["CREATED_BY"]["FORMATTED"] : ""), GetMessage("SONET_GL_EVENT_TITLE_" . ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP ? "GROUP" : "USER") . "_TASK_MAIL")); } else { $title = $title_tmp; if (!is_array($arFields["PARAMS"]) || !array_key_exists("TYPE", $arFields["PARAMS"]) || strlen($arFields["PARAMS"]["TYPE"]) <= 0) { $arFields["PARAMS"]["TYPE"] = "DEFAULT"; } switch ($arFields["CREATED_BY_PERSONAL_GENDER"]) { case "M": $suffix = "_M"; break; case "F": $suffix = "_F"; break; default: $suffix = ""; } $title_24 = str_replace("#TITLE#", $task_tmp, GetMessage("SONET_GL_EVENT_TITLE_TASK_" . strtoupper($arFields["PARAMS"]["TYPE"]) . "_24" . $suffix)); } if (!$bMail && (in_array($arFields["PARAMS"]["TYPE"], array("create", "status")) || $arFields["PARAMS"]["TYPE"] == "modify" && is_array($arFields["PARAMS"]["CHANGED_FIELDS"])) && CModule::IncludeModule("tasks")) { $rsTask = CTasks::GetByID($arFields["SOURCE_ID"], false); if ($arTask = $rsTask->Fetch()) { $task_datetime = $arTask["CHANGED_DATE"]; if ($arFields["PARAMS"]["TYPE"] == "create") { if ($arParams["MOBILE"] == "Y") { $title_24 = GetMessage("SONET_GL_TASKS2_NEW_TASK_MESSAGE"); $message_24_1 = $task_tmp; } else { $message = $message_24_1 = GetMessage("SONET_GL_TASKS2_NEW_TASK_MESSAGE"); $message_24_2 = $changes_24 = ""; } } elseif ($arFields["PARAMS"]["TYPE"] == "modify") { $arChangesFields = $arFields["PARAMS"]["CHANGED_FIELDS"]; $changes_24 = implode(", ", CTaskNotifications::__Fields2Names($arChangesFields)); if ($arParams["MOBILE"] == "Y") { $title_24 = GetMessage("SONET_GL_TASKS2_TASK_CHANGED_MESSAGE_24_1"); $message_24_1 = $task_tmp; } else { $message = str_replace("#CHANGES#", implode(", ", CTaskNotifications::__Fields2Names($arChangesFields)), GetMessage("SONET_GL_TASKS2_TASK_CHANGED_MESSAGE")); $message_24_1 = GetMessage("SONET_GL_TASKS2_TASK_CHANGED_MESSAGE_24_1"); $message_24_2 = GetMessage("SONET_GL_TASKS2_TASK_CHANGED_MESSAGE_24_2"); } } elseif ($arFields["PARAMS"]["TYPE"] == "status") { $message = GetMessage("SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"]); $message_24_1 = GetMessage("SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"] . "_24"); if ($arTask["STATUS"] == 7) { $message = str_replace("#TASK_DECLINE_REASON#", $arTask["DECLINE_REASON"], $message); $message_24_2 = GetMessage("SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"] . "_24_2"); $changes_24 = $arTask["DECLINE_REASON"]; } elseif ($arTask["STATUS"] == 4) { $message_24_2 = GetMessage("SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"] . "_24_2"); $changes_24 = GetMessage("SONET_GL_TASKS2_TASK_STATUS_MESSAGE_4_24_CHANGES"); } else { $message_24_2 = $changes_24 = ""; } } ob_start(); $GLOBALS['APPLICATION']->IncludeComponent("bitrix:tasks.task.livefeed", $arParams["MOBILE"] == "Y" ? 'mobile' : '', array("MOBILE" => $arParams["MOBILE"] == "Y" ? "Y" : "N", "TASK" => $arTask, "MESSAGE" => $message, "MESSAGE_24_1" => $message_24_1, "MESSAGE_24_2" => $message_24_2, "CHANGES_24" => $changes_24, "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "PATH_TO_USER" => $arParams["PATH_TO_USER"]), null, array("HIDE_ICONS" => "Y")); $arFields["MESSAGE"] = ob_get_contents(); ob_end_clean(); } } if ($arParams["MOBILE"] == "Y") { $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "TITLE_24" => $title_24, "MESSAGE" => htmlspecialcharsbx($arFields["MESSAGE"]), "DESCRIPTION" => $message_24_1, "DESCRIPTION_STYLE" => "task"); } else { $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "TITLE_24" => $title_24, "MESSAGE" => $bMail ? str_replace(array("<nobr>", "</nobr>"), array("", ""), $arFields["TEXT_MESSAGE"]) : $arFields["MESSAGE"], "SHORT_MESSAGE" => $bMail ? str_replace(array("<nobr>", "</nobr>"), array("", ""), $arFields["TEXT_MESSAGE"]) : $arFields["~MESSAGE"], "IS_MESSAGE_SHORT" => true, "STYLE" => "tasks-info"); if (!$bMail && strlen($task_datetime) > 0) { $arResult["EVENT_FORMATTED"]["LOG_DATE_FORMAT"] = $task_datetime; } } if ($bMail) { $url = CSocNetLogTools::FormatEvent_GetURL($arFields); if (strlen($url) > 0) { $arResult["EVENT_FORMATTED"]["URL"] = $url; } } elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP) { $arResult["EVENT_FORMATTED"]["DESTINATION"] = array(array("STYLE" => "sonetgroups", "TITLE" => $arResult["ENTITY"]["FORMATTED"]["NAME"], "URL" => $arResult["ENTITY"]["FORMATTED"]["URL"], "IS_EXTRANET" => is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]))); } if ($bMail && strlen($arFields["MAIL_LANGUAGE_ID"]) > 0) { IncludeModuleLangFile(__FILE__, LANGUAGE_ID); } return $arResult; }
function SendAgent() { global $DB; /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $arFilter = array("<=REMIND_DATE" => (string) new \Bitrix\Main\Type\DateTime()); $rsReminders = CTaskReminders::GetList(array("date" => "asc"), $arFilter); while ($arReminder = $rsReminders->Fetch()) { $rsTask = CTasks::GetByID($arReminder["TASK_ID"], false); if ($arTask = $rsTask->Fetch()) { // remind about not closed tasks only if ($arTask['CLOSED_DATE'] === NULL) { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rsUser = CUser::GetByID($arReminder["USER_ID"]); if ($arUser = $rsUser->Fetch()) { $arTask["PATH_TO_TASK"] = CTaskNotifications::GetNotificationPath($arUser, $arTask["ID"]); $arFilterForSendedRemind = array_merge($arFilter, array('TASK_ID' => $arReminder['TASK_ID'], 'USER_ID' => $arReminder['USER_ID'], 'TRANSPORT' => $arReminder['TRANSPORT'], 'TYPE' => $arReminder['TYPE'])); CTaskReminders::Delete($arFilterForSendedRemind); if ($arReminder["TRANSPORT"] == self::REMINDER_TRANSPORT_EMAIL || !CModule::IncludeModule("socialnetwork") || !CTaskReminders::__SendJabberReminder($arUser["ID"], $arTask)) { CTaskReminders::__SendEmailReminder($arUser["EMAIL"], $arTask); } } } } } // Some older items can still exists (for removed users, etc.) CTaskReminders::Delete($arFilter); return "CTaskReminders::SendAgent();"; }
public static function FormatTask4SocialNetwork($arFields, $arParams, $bMail = false) { /** @global CMain $APPLICATION */ global $APPLICATION; $task_datetime = null; if (!CModule::IncludeModule('socialnetwork')) { return false; } $APPLICATION->SetAdditionalCSS('/bitrix/js/tasks/css/tasks.css'); if (isset($arFields['~PARAMS']) && $arFields['~PARAMS']) { $arFields['PARAMS'] = unserialize($arFields['~PARAMS']); } elseif (isset($arFields['PARAMS']) && $arFields['PARAMS']) { $arFields['PARAMS'] = unserialize($arFields['PARAMS']); } else { $arFields['PARAMS'] = array(); } $arResult = array('EVENT' => $arFields, 'CREATED_BY' => CSocNetLogTools::FormatEvent_GetCreatedBy($arFields, $arParams, $bMail), 'ENTITY' => CSocNetLogTools::FormatEvent_GetEntity($arFields, $arParams, $bMail), 'EVENT_FORMATTED' => array(), 'CACHED_CSS_PATH' => '/bitrix/js/tasks/css/tasks.css'); if (!$bMail) { $arResult["AVATAR_SRC"] = CSocNetLogTools::FormatEvent_CreateAvatar($arFields, $arParams); } if (!$bMail && $arParams["MOBILE"] != "Y" && array_key_exists("URL", $arFields) && strlen($arFields["URL"]) > 0) { $taskHtmlTitle = '<a href="' . $arFields["URL"] . '" onclick="if (taskIFramePopup.isLeftClick(event)) {taskIFramePopup.view(' . $arFields["SOURCE_ID"] . '); return false;}">' . $arFields["TITLE"] . '</a>'; } else { $taskHtmlTitle = $arFields["TITLE"]; } $actorUserId = null; $actorUserName = ''; $actorMaleSuffix = ''; $eventTitlePhraseSuffix = '_DEFAULT'; if (isset($arParams['NAME_TEMPLATE'])) { $nameTemplate = $arParams['NAME_TEMPLATE']; } else { $nameTemplate = CSite::GetNameFormat(); } if (isset($arFields["PARAMS"], $arFields['PARAMS']['TYPE'])) { if ($arFields["PARAMS"]["TYPE"] === "create") { $eventTitlePhraseSuffix = '_CREATE_24'; if (isset($arFields["PARAMS"]["CREATED_BY"])) { $actorUserId = $arFields["PARAMS"]["CREATED_BY"]; } } elseif ($arFields["PARAMS"]["TYPE"] === 'modify') { $eventTitlePhraseSuffix = '_MODIFY_24'; if (isset($arFields["PARAMS"]["CHANGED_BY"])) { $actorUserId = $arFields["PARAMS"]["CHANGED_BY"]; } } elseif ($arFields["PARAMS"]["TYPE"] === 'status') { $eventTitlePhraseSuffix = '_STATUS_24'; if (isset($arFields["PARAMS"]["CHANGED_BY"])) { $actorUserId = $arFields["PARAMS"]["CHANGED_BY"]; } } elseif ($arFields["PARAMS"]["TYPE"] === 'comment') { $eventTitlePhraseSuffix = ''; } } if ($actorUserId) { $rsUser = CUser::GetList($by = 'id', $order = 'asc', array('ID_EQUAL_EXACT' => (int) $actorUserId), array('FIELDS' => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'PERSONAL_GENDER'))); if ($arUser = $rsUser->fetch()) { if (isset($arUser['PERSONAL_GENDER'])) { switch ($arUser['PERSONAL_GENDER']) { case "F": case "M": $actorMaleSuffix = '_' . $arUser['PERSONAL_GENDER']; break; } } $actorUserName = CUser::FormatName($nameTemplate, $arUser); } } $eventTitleTemplate = GetMessage('TASKS_SONET_GL_EVENT_TITLE_TASK' . $eventTitlePhraseSuffix . $actorMaleSuffix); $eventTitle = str_replace(array('#USER_NAME#', '#TITLE#'), array($actorUserName, $taskHtmlTitle), $eventTitleTemplate); $eventTitleWoTaskName = str_replace(array('#USER_NAME#', '#TITLE#'), array($actorUserName, ''), $eventTitleTemplate); $title_tmp = str_replace("#TITLE#", $taskHtmlTitle, GetMessage("TASKS_SONET_GL_EVENT_TITLE_TASK")); if ($arFields["PARAMS"] && $arFields["PARAMS"]["CREATED_BY"]) { $suffix = is_array($GLOBALS["arExtranetUserID"]) && in_array($arFields["PARAMS"]["CREATED_BY"], $GLOBALS["arExtranetUserID"]) ? GetMessage("TASKS_SONET_LOG_EXTRANET_SUFFIX") : ""; $rsUser = CUser::GetList($by = 'id', $order = 'asc', array('ID_EQUAL_EXACT' => (int) $arFields['PARAMS']['CREATED_BY']), array('FIELDS' => array('PERSONAL_GENDER', 'ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN'))); if ($arUser = $rsUser->Fetch()) { $title_tmp .= " (" . str_replace("#USER_NAME#", CUser::FormatName(CSite::GetNameFormat(false), $arUser) . $suffix, GetMessage("TASKS_SONET_GL_EVENT_TITLE_TASK_CREATED")) . ")"; } } if ($bMail) { $title = str_replace(array("#TASK#", "#ENTITY#", "#CREATED_BY#"), array($title_tmp, $arResult["ENTITY"]["FORMATTED"], $bMail ? $arResult["CREATED_BY"]["FORMATTED"] : ""), GetMessage("SONET_GL_EVENT_TITLE_" . ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP ? "GROUP" : "USER") . "_TASK_MAIL")); } else { $title = $title_tmp; $title_24 = $eventTitle; } if (!$bMail && in_array($arFields["PARAMS"]["TYPE"], array("create", "status", 'modify', 'comment'), true)) { if (!(isset($arFields['PARAMS']['CHANGED_FIELDS']) && is_array($arFields['PARAMS']['CHANGED_FIELDS']))) { $arFields['PARAMS']['CHANGED_FIELDS'] = array(); } $rsTask = CTasks::GetByID($arFields["SOURCE_ID"], false); if ($arTask = $rsTask->Fetch()) { $task_datetime = $arTask["CHANGED_DATE"]; if ($arFields["PARAMS"]["TYPE"] == "create") { if ($arParams["MOBILE"] == "Y") { $title_24 = GetMessage("TASKS_SONET_GL_TASKS2_NEW_TASK_MESSAGE"); $message_24_1 = $taskHtmlTitle; } else { $message = $message_24_1 = $eventTitle; $message_24_2 = $changes_24 = ""; } } elseif ($arFields["PARAMS"]["TYPE"] == "modify") { $arChangesFields = $arFields["PARAMS"]["CHANGED_FIELDS"]; $changes_24 = implode(", ", CTaskNotifications::__Fields2Names($arChangesFields)); if ($arParams["MOBILE"] == "Y") { $title_24 = GetMessage("TASKS_SONET_GL_TASKS2_TASK_CHANGED_MESSAGE_24_1"); $message_24_1 = $taskHtmlTitle; } else { $message = str_replace("#CHANGES#", implode(", ", CTaskNotifications::__Fields2Names($arChangesFields)), GetMessage("TASKS_SONET_GL_TASKS2_TASK_CHANGED_MESSAGE")); $message_24_1 = $eventTitle; $message_24_2 = GetMessage("TASKS_SONET_GL_TASKS2_TASK_CHANGED_MESSAGE_24_2"); } } elseif ($arFields["PARAMS"]["TYPE"] == "status") { $message = GetMessage("TASKS_SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"]); $message_24_1 = $eventTitle; if ($arTask["STATUS"] == CTasks::STATE_DECLINED) { $message = str_replace("#TASK_DECLINE_REASON#", $arTask["DECLINE_REASON"], $message); $message_24_2 = GetMessage("TASKS_SONET_GL_TASKS2_TASK_STATUS_MESSAGE_" . $arTask["STATUS"] . "_24_2"); $changes_24 = $arTask["DECLINE_REASON"]; } else { $message_24_2 = $changes_24 = $message; } } elseif ($arFields['PARAMS']['TYPE'] === 'comment') { $message_24_1 = $eventTitle; $message_24_2 = $changes_24 = $message = ''; } $prevRealStatus = false; if (isset($arFields['PARAMS']['PREV_REAL_STATUS'])) { $prevRealStatus = $arFields['PARAMS']['PREV_REAL_STATUS']; } ob_start(); $GLOBALS['APPLICATION']->IncludeComponent("bitrix:tasks.task.livefeed", $arParams["MOBILE"] == "Y" ? 'mobile' : '', array("MOBILE" => $arParams["MOBILE"] == "Y" ? "Y" : "N", "TASK" => $arTask, "MESSAGE" => $message, "MESSAGE_24_1" => $message_24_1, "MESSAGE_24_2" => $message_24_2, "CHANGES_24" => $changes_24, "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "PATH_TO_USER" => $arParams["PATH_TO_USER"], 'TYPE' => $arFields["PARAMS"]["TYPE"], 'task_tmp' => $taskHtmlTitle, 'taskHtmlTitle' => $taskHtmlTitle, 'PREV_REAL_STATUS' => $prevRealStatus), null, array("HIDE_ICONS" => "Y")); $arFields["MESSAGE"] = ob_get_contents(); ob_end_clean(); } } if ($arParams["MOBILE"] == "Y") { $arResult["EVENT_FORMATTED"] = array("TITLE" => '', "TITLE_24" => $eventTitleWoTaskName, "MESSAGE" => htmlspecialcharsbx($arFields['MESSAGE']), "DESCRIPTION" => $arFields['TITLE'], "DESCRIPTION_STYLE" => 'task'); } else { $strMessage = $strShortMessage = ''; if ($bMail) { $strMessage = $strShortMessage = str_replace(array('<nobr>', '</nobr>'), array('', ''), $arFields['TEXT_MESSAGE']); } else { $strMessage = $arFields['MESSAGE']; $strShortMessage = $arFields['~MESSAGE']; } $arResult["EVENT_FORMATTED"] = array("TITLE" => $title, "MESSAGE" => $strMessage, "SHORT_MESSAGE" => $strShortMessage, "IS_MESSAGE_SHORT" => true, "STYLE" => 'tasks-info', "COMMENT_URL" => !$bMail ? $arFields['~URL'] . (strpos($arFields['~URL'], '?') > 0 ? '&' : '?') . 'MID=#ID##com#ID#' : ''); } if ($bMail) { $url = CSocNetLogTools::FormatEvent_GetURL($arFields); if (strlen($url) > 0) { $arResult["EVENT_FORMATTED"]["URL"] = $url; } } elseif ($arFields["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP) { $arResult["EVENT_FORMATTED"]["DESTINATION"] = array(array("STYLE" => "sonetgroups", "TITLE" => $arResult["ENTITY"]["FORMATTED"]["NAME"], "URL" => $arResult["ENTITY"]["FORMATTED"]["URL"], "IS_EXTRANET" => is_array($GLOBALS["arExtranetGroupID"]) && in_array($arFields["ENTITY_ID"], $GLOBALS["arExtranetGroupID"]))); } if (!$bMail && strlen($task_datetime) > 0) { $arResult["EVENT_FORMATTED"]["LOG_DATE_FORMAT"] = $task_datetime; } return $arResult; }
$arResult["ROLE_FILTER_SUFFIX"] = "_M"; } } $arPreDefindFilters = tasksPredefinedFilters($arParams["USER_ID"], $arResult["ROLE_FILTER_SUFFIX"]); $preDefinedFilterRole =& $arPreDefindFilters["ROLE"]; $preDefinedFilterStatus =& $arPreDefindFilters["STATUS"][0]; if (isset($arParams['COMMON_FILTER'])) { $arCommonFilter = $arParams['COMMON_FILTER']; } else { $arCommonFilter = $oListCtrl->getCommonFilter(); } if ($taskType == "group") { $preDefinedFilterRole[7]["FILTER"] = array(); } if (isset($_GET["F_SEARCH"])) { if (is_numeric($_GET["F_SEARCH"]) && intval($_GET["F_SEARCH"]) > 0 && ($rsSearch = CTasks::GetByID(intval($_GET["F_SEARCH"]))) && $rsSearch->Fetch()) { $_GET["F_META::ID_OR_NAME"] = intval($_GET["F_SEARCH"]); } elseif (strlen(trim($_GET["F_SEARCH"]))) { $_GET["F_TITLE"] = $_GET["F_SEARCH"]; } else { $_GET["F_ADVANCED"] = "N"; $_SESSION["FILTER"] = array(); } } if (isset($_GET["F_CANCEL"]) && $_GET["F_CANCEL"] == "Y" || !isset($_GET["F_CANCEL"]) || isset($_GET["FILTERR"]) || isset($_GET["FILTERS"]) || isset($_GET["F_ADVANCED"]) && $_GET["F_ADVANCED"] == "Y") { $_SESSION["FILTER"] = array(); } if (isset($_GET["F_ADVANCED"]) && $_GET["F_ADVANCED"] == "Y" || isset($_SESSION["FILTER"]["F_ADVANCED"]) && $_SESSION["FILTER"]["F_ADVANCED"] == "Y") { $arResult["ADV_FILTER"]["F_ADVANCED"] = $_SESSION["FILTER"]["F_ADVANCED"] = "Y"; $arFilter = array(); if (intval($fID = tasksGetFilter("F_META::ID_OR_NAME")) > 0) {
/** * This method is deprecated. Use CTaskItem::delete() instead. * @deprecated */ public static function Delete($ID, $arParams = array()) { global $DB, $CACHE_MANAGER, $USER; if (isset($USER) && is_object($USER)) { $actorUserId = (int) $USER->getId(); } else { $actorUserId = 1; } if (isset($arParams['META::EVENT_GUID'])) { $eventGUID = $arParams['META::EVENT_GUID']; unset($arParams['META::EVENT_GUID']); } else { $eventGUID = sha1(uniqid('AUTOGUID', true)); } $paramSkipExchangeSync = false; if (is_array($arParams)) { if (isset($arParams['skipExchangeSync']) && ($arParams['skipExchangeSync'] === 'Y' || $arParams['skipExchangeSync'] === true)) { $paramSkipExchangeSync = true; } } $ID = intval($ID); if ($ID < 1) { return false; } $rsTask = CTasks::GetByID($ID, false); if ($arTask = $rsTask->Fetch()) { foreach (GetModuleEvents('tasks', 'OnBeforeTaskDelete', true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, $arTask)) === false) { return false; } } CTaskCountersProcessor::onBeforeTaskDelete($ID, $arTask); CTaskMembers::DeleteByTaskID($ID); CTaskFiles::DeleteByTaskID($ID); CTaskDependence::DeleteByTaskID($ID); CTaskDependence::DeleteByDependsOnID($ID); CTaskTags::DeleteByTaskID($ID); $strSql = "DELETE FROM b_tasks_viewed WHERE TASK_ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strSql = "DELETE FROM b_tasks_reminder WHERE TASK_ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); // clear cache if ($arTask["GROUP_ID"]) { $CACHE_MANAGER->ClearByTag("tasks_group_" . $arTask["GROUP_ID"]); } $arParticipants = array_unique(array_merge(array($arTask["CREATED_BY"], $arTask["RESPONSIBLE_ID"]), $arTask["ACCOMPLICES"], $arTask["AUDITORS"])); foreach ($arParticipants as $userId) { $CACHE_MANAGER->ClearByTag("tasks_user_" . $userId); } $strSql = "UPDATE b_tasks_template SET TASK_ID = NULL WHERE TASK_ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strSql = "UPDATE b_tasks_template SET PARENT_ID = " . ($arTask["PARENT_ID"] ? $arTask["PARENT_ID"] : "NULL") . " WHERE PARENT_ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strSql = "UPDATE b_tasks SET PARENT_ID = " . ($arTask["PARENT_ID"] ? $arTask["PARENT_ID"] : "NULL") . " WHERE PARENT_ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strUpdate = $DB->PrepareUpdate("b_tasks", array('ZOMBIE' => 'Y', 'CHANGED_BY' => $actorUserId, 'CHANGED_DATE' => date($DB->DateFormatToPHP(CSite::GetDateFormat('FULL')), time() + CTasksTools::getTimeZoneOffset())), "tasks"); $strSql = "UPDATE b_tasks SET " . $strUpdate . " WHERE ID = " . (int) $ID; if ($DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__)) { CTaskNotifications::SendDeleteMessage($arTask); if ($arTask["FORUM_TOPIC_ID"] && CModule::IncludeModule("forum")) { CForumTopic::Delete($arTask["FORUM_TOPIC_ID"]); } if (!$paramSkipExchangeSync) { CTaskSync::DeleteItem($arTask); } // MS Exchange // Emit pull event try { $arPullRecipients = array(); foreach ($arParticipants as $userId) { $arPullRecipients[] = (int) $userId; } $taskGroupId = 0; // no group if (isset($arTask['GROUP_ID']) && $arTask['GROUP_ID'] > 0) { $taskGroupId = (int) $arTask['GROUP_ID']; } $arPullData = array('TASK_ID' => (int) $ID, 'BEFORE' => array('GROUP_ID' => $taskGroupId), 'TS' => time(), 'event_GUID' => $eventGUID); self::EmitPullWithTagPrefix($arPullRecipients, 'TASKS_GENERAL_', 'task_remove', $arPullData); self::EmitPullWithTag($arPullRecipients, 'TASKS_TASK_' . (int) $ID, 'task_remove', $arPullData); } catch (Exception $e) { } foreach (GetModuleEvents('tasks', 'OnTaskDelete', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID)); } if (CModule::IncludeModule("search")) { CSearch::DeleteIndex("tasks", $ID); } } return true; } return false; }
function AddAttachment($listName, $listItemID, $fileName, $attachment) { global $USER; if (!$this->__Init()) { return $this->error; } if (!($listName_original = CIntranetUtils::checkGUID($listName))) { return new CSoapFault('Data error', 'Wrong GUID - ' . $listName); } if (strlen($attachment) <= 0) { return new CSoapFault('Wrong attachment', 'Wrong attachment'); } $listName = ToUpper(CIntranetUtils::makeGUID($listName_original)); $listItemID = intval($listItemID); $dbRes = CTasks::GetByID($listItemID); if ($task = $dbRes->Fetch()) { $fileName = str_replace(array('/', '\\', '..'), '', $fileName); // minor security foreach ($task["FILES"] as $fileID) { $FILE = ToLower(basename(CFile::GetPath($fileID))); if ($FILE == ToLower($fileName)) { Header('HTTP/1.1 500 Internal Server Error'); $obDetail = new CXMLCreator('detail'); $obDetail->addChild(CXMLCreator::createTagAttributed('errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/"', 'The specified name is already in use.')); $obDetail->addChild(CXMLCreator::createTagAttributed('errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/"', '0x81020067')); return new CSoapFault('soap::Server', 'Exception of type \'Microsoft.SharePoint.SoapServer.SoapServerException\' was thrown.', $obDetail); } } $tmpFileName = CTempFile::GetFileName('sheet_happens'); RewriteFile($tmpFileName, $attachment); $arFile = CFile::MakeFileArray($tmpFileName); $arFile['name'] = basename($fileName); $arFile['MODULE_ID'] = 'tasks'; $arValue = array($FILE_ID = CFile::SaveFile($arFile, 'outlook/Lists/' . $listItemID)); CTasks::AddFiles($task["ID"], $arValue); return array('AddAttachmentResult' => '/tasks/getfile/' . (int) $listItemID . '/' . (int) $FILE_ID . '/' . urlencode(ToLower(basename(CFile::GetPath($FILE_ID))))); } else { return new CSoapFault('0x81020016', 'List item not found'); } }
private static function RegisterLiveFeedEvent(&$arFields) { $ID = isset($arFields['ID']) ? intval($arFields['ID']) : 0; if ($ID <= 0) { $arFields['ERROR'] = 'Could not find activity ID.'; return false; } $ownerTypeID = isset($arFields['OWNER_TYPE_ID']) ? intval($arFields['OWNER_TYPE_ID']) : CCrmOwnerType::Undefined; if (!CCrmOwnerType::IsDefined($ownerTypeID)) { $arFields['ERROR'] = 'Could not find owner type ID.'; return false; } $ownerID = isset($arFields['OWNER_ID']) ? intval($arFields['OWNER_ID']) : 0; if ($ownerID <= 0) { $arFields['ERROR'] = 'Could not find owner ID.'; return false; } $arOwners = array(array("OWNER_TYPE_ID" => $ownerTypeID, "OWNER_ID" => $ownerID)); $authorID = isset($arFields['AUTHOR_ID']) ? intval($arFields['AUTHOR_ID']) : 0; $editorID = isset($arFields['EDITOR_ID']) ? intval($arFields['EDITOR_ID']) : 0; $userID = $authorID > 0 ? $authorID : $editorID; if ($userID <= 0) { $userID = CCrmSecurityHelper::GetCurrentUserID(); } // Params are not assigned - we will use current activity only. $liveFeedFields = array('ENTITY_TYPE_ID' => CCrmOwnerType::Activity, 'ENTITY_ID' => $ID, 'USER_ID' => $userID, 'MESSAGE' => '', 'TITLE' => ''); $bindings = isset($arFields['BINDINGS']) && is_array($arFields['BINDINGS']) ? $arFields['BINDINGS'] : array(); if (!empty($bindings)) { $liveFeedFields['PARENTS'] = $bindings; $liveFeedFields['PARENT_OPTIONS'] = array('ENTITY_TYPE_ID_KEY' => 'OWNER_TYPE_ID', 'ENTITY_ID_KEY' => 'OWNER_ID'); $ownerInfoOptions = array('ENTITY_TYPE_ID_KEY' => 'OWNER_TYPE_ID', 'ENTITY_ID_KEY' => 'OWNER_ID', 'ADDITIONAL_DATA' => array('LEVEL' => 2)); $additionalParents = array(); foreach ($bindings as &$binding) { $ownerTypeID = isset($binding['OWNER_TYPE_ID']) ? intval($binding['OWNER_TYPE_ID']) : CCrmOwnerType::Undefined; $ownerID = isset($binding['OWNER_ID']) ? intval($binding['OWNER_ID']) : 0; if ($ownerTypeID != CCrmOwnerType::Undefined && $ownerID > 0) { $arOwners[] = array("OWNER_TYPE_ID" => $ownerTypeID, "OWNER_ID" => $ownerID); } if ($ownerTypeID === CCrmOwnerType::Contact && $ownerID > 0) { $owners = array(); if (CCrmOwnerType::TryGetOwnerInfos(CCrmOwnerType::Contact, $ownerID, $owners, $ownerInfoOptions)) { $additionalParents = array_merge($additionalParents, $owners); } } } unset($binding); if (!empty($additionalParents)) { $liveFeedFields['PARENTS'] = array_merge($bindings, $additionalParents); } $arOwners = array_unique($arOwners); } self::PrepareStorageElementIDs($arFields); $arStorageElementID = $arFields["STORAGE_ELEMENT_IDS"]; if (!empty($arStorageElementID)) { if ($arFields["STORAGE_TYPE_ID"] == StorageType::WebDav) { $liveFeedFields["UF_SONET_LOG_DOC"] = $arStorageElementID; } else { if ($arFields["STORAGE_TYPE_ID"] == StorageType::Disk) { $liveFeedFields["UF_SONET_LOG_DOC"] = array(); //We have to add prefix Bitrix\Disk\Uf\FileUserType::NEW_FILE_PREFIX to file ID foreach ($arStorageElementID as $elementID) { $liveFeedFields["UF_SONET_LOG_DOC"][] = "n{$elementID}"; } } else { $liveFeedFields["UF_SONET_LOG_FILE"] = $arStorageElementID; } } } if ($arFields['TYPE_ID'] == CCrmActivityType::Task && isset($arFields["ASSOCIATED_ENTITY_ID"]) && intval($arFields["ASSOCIATED_ENTITY_ID"]) > 0 && CModule::IncludeModule("tasks")) { $dbTask = CTasks::GetByID($arFields["ASSOCIATED_ENTITY_ID"], false); if ($arTask = $dbTask->Fetch()) { $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("TASKS_TASK", "UF_TASK_WEBDAV_FILES", $arTask["ID"], LANGUAGE_ID); if ($ufDocID) { $liveFeedFields["UF_SONET_LOG_DOC"] = $ufDocID; } } } $bConvert = false; if ($arTask) { $rsLog = CSocNetLog::GetList(array(), array("EVENT_ID" => "tasks", "SOURCE_ID" => $arTask["ID"]), array("ID")); if ($arLog = $rsLog->Fetch()) { $eventID = CCrmLiveFeed::ConvertTasksLogEvent(array("LOG_ID" => $arLog["ID"], "ACTIVITY_ID" => $ID)); $bConvert = true; } } if (!$bConvert) { $eventID = CCrmLiveFeed::CreateLogEvent($liveFeedFields, CCrmLiveFeedEvent::Add); } if (!(is_int($eventID) && $eventID > 0) && isset($liveFeedFields['ERROR'])) { $arFields['ERROR'] = $liveFeedFields['ERROR']; } else { if ($arTask) { $arTaskParticipant = CTaskNotifications::GetRecipientsIDs($arTask, false); $arSocnetRights = CTaskNotifications::__UserIDs2Rights($arTaskParticipant); if (isset($arTask['GROUP_ID']) && intval($arTask['GROUP_ID']) > 0) { $perm = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arTask['GROUP_ID'], "tasks", "view"); $arSocnetRights = array_merge($arSocnetRights, array('SG' . $arTask['GROUP_ID'], 'SG' . $arTask['GROUP_ID'] . '_' . $perm)); } CSocNetLogRights::DeleteByLogID($eventID); CSocNetLogRights::Add($eventID, $arSocnetRights); } if (intval($arFields["RESPONSIBLE_ID"]) > 0 && $arFields["RESPONSIBLE_ID"] != $userID && CModule::IncludeModule("im")) { $bHasPermissions = false; $perms = CCrmPerms::GetUserPermissions($arFields["RESPONSIBLE_ID"]); foreach ($arOwners as $arOwner) { if (CCrmActivity::CheckReadPermission($arOwner["OWNER_TYPE_ID"], $arOwner["OWNER_ID"], $perms)) { $bHasPermissions = true; break; } } switch ($arFields['TYPE_ID']) { case CCrmActivityType::Call: $type = 'CALL'; break; case CCrmActivityType::Meeting: $type = 'MEETING'; break; default: $type = false; } if ($bHasPermissions && $type) { $url = "/crm/stream/?log_id=#log_id#"; $url = str_replace(array("#log_id#"), array($eventID), $url); $serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", "")); $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arFields["RESPONSIBLE_ID"], "FROM_USER_ID" => $userID, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "crm", "LOG_ID" => $eventID, "NOTIFY_EVENT" => "activity_add", "NOTIFY_TAG" => "CRM|ACTIVITY|" . $ID, "NOTIFY_MESSAGE" => GetMessage("CRM_ACTIVITY_" . $type . "_RESPONSIBLE_IM_NOTIFY", array("#title#" => '<a href="' . $url . '">' . htmlspecialcharsbx($arFields['SUBJECT']) . '</a>')), "NOTIFY_MESSAGE_OUT" => GetMessage("CRM_ACTIVITY_" . $type . "_RESPONSIBLE_IM_NOTIFY", array("#title#" => htmlspecialcharsbx($arFields['SUBJECT']))) . " (" . $serverName . $url . ")"); CIMNotify::Add($arMessageFields); } } } return $eventID; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule('crm')) { return; } if (intval($arParams["FIELDS"]["ENTITY_ID"]) > 0) { $arActivity = $arParams["ACTIVITY"]; if ($arActivity["TYPE_ID"] == CCrmActivityType::Task) { $APPLICATION->SetAdditionalCSS('/bitrix/js/tasks/css/tasks.css'); if (intval($arActivity["ASSOCIATED_ENTITY_ID"]) > 0 && CModule::IncludeModule("tasks")) { $rsTask = CTasks::GetByID($arActivity["ASSOCIATED_ENTITY_ID"], false); if ($arTask = $rsTask->GetNext()) { $path = str_replace(array("#user_id#", "#task_id#"), array($arTask["RESPONSIBLE_ID"], $arTask["ID"]), COption::GetOptionString("tasks", "paths_task_user_entry", "/company/personal/user/#user_id#/tasks/task/view/#task_id#/", $arTask["SITE_ID"])); $taskHtmlTitle = !isset($arParams["PARAMS"]) || !isset($arParams["PARAMS"]["MOBILE"]) || $arParams["PARAMS"]["MOBILE"] != "Y" ? '<a href="' . $path . '" onclick="if (taskIFramePopup.isLeftClick(event)) {taskIFramePopup.view(' . $arTask["ID"] . '); return false;}">' . $arTask["TITLE"] . '</a>' : $arTask["TITLE"]; $actorUserId = null; $actorUserName = ''; $actorMaleSuffix = ''; $eventTitlePhraseSuffix = '_DEFAULT'; if (isset($arParams['NAME_TEMPLATE'])) { $nameTemplate = $arParams['NAME_TEMPLATE']; } else { $nameTemplate = CSite::GetNameFormat(); } if ($arActivity["COMPLETED"] == "N") { $eventTitlePhraseSuffix = '_CREATE'; $actorUserId = $arTask["CREATED_BY"]; } else { $eventTitlePhraseSuffix = '_COMPLETE';
break; } $obSection = CIBLockSection::GetByID($arSection['IBLOCK_SECTION_ID']); $arSection = $obSection->Fetch(); } if ($arSection['XML_ID']) { $url = str_replace(array('#GROUP_ID#', '#TASK_ID#'), array($arSection['XML_ID'], $ID), COption::GetOptionString('intranet', 'path_task_group_entry', '/workgroups/group/#GROUP_ID#/tasks/task/view/#TASK_ID#/')); } else { $url = str_replace(array('#USER_ID#'), array(intval($url)), COption::GetOptionString('intranet', 'path_task_user', '/company/personal/user/#USER_ID#/tasks/')); } } } } } else { if (($ID = intval($matches[1][0])) && CModule::IncludeModule('tasks')) { $dbRes = CTasks::GetByID($ID); if ($arTask = $dbRes->Fetch()) { if (intval($arTask["GROUP_ID"]) > 0) { $url = str_replace(array('#GROUP_ID#', '#TASK_ID#'), array($arTask["GROUP_ID"], $ID), COption::GetOptionString('intranet', 'path_task_group_entry', '/workgroups/group/#GROUP_ID#/tasks/task/view/#TASK_ID#/')); } else { $url = str_replace(array('#USER_ID#', '#TASK_ID#'), array($arTask["RESPONSIBLE_ID"], $ID), COption::GetOptionString('intranet', 'path_task_user_entry', '/company/personal/user/#USER_ID#/tasks/task/view/#TASK_ID#/')); } } } } } else { $url = str_replace(array('#USER_ID#'), array(intval($url)), COption::GetOptionString('intranet', 'path_task_user', '/company/personal/user/#USER_ID#/tasks/')); } $url = str_replace('.php/', '.php', $url); if (substr($url, 0, 1) != '/') { $url = '/' . $url;
} /* if ( ! isset($arCopy["PARENT_ID"]) || ( ! $arCopy["PARENT_ID"]) ) { $arCopy["PARENT_ID"] = intval($_GET["COPY"]); } */ $arResult['COPY_PARAMS']['ORIGIN_TASK'] = intval($_GET["COPY"]); // get template.php to know task being copied $arData = $arCopy; } } elseif (intval($_GET["PARENT_ID"]) > 0) { $rsParent = CTasks::GetByID(intval($_GET["PARENT_ID"])); if ($rsParent = $rsParent->GetNext()) { $arData["GROUP_ID"] = $rsParent["GROUP_ID"]; if (isset($rsParent["DESCRIPTION_IN_BBCODE"])) { $arData["DESCRIPTION_IN_BBCODE"] = $rsParent["DESCRIPTION_IN_BBCODE"]; } } } $bNeedDecodeUtf8 = false; if (isset($_GET['UTF8encoded']) && ToUpper(SITE_CHARSET) !== 'UTF-8') { $bNeedDecodeUtf8 = true; } $arGotData = array(); foreach ($_GET as $key => $val) { if ($key === 'UTF8encoded') { continue;