예제 #1
0
/**
 * 
 * @param array $arData with element "arDataName"
 * @param string $strRequest, for example: #RC#arDataName#-2#field1#field2#...#fieldN
 */
function BXTasksParseAndGetDynaParamValue($arData, $strRequest)
{
    CTaskAssert::assert(is_array($arData) && is_string($strRequest) && substr($strRequest, 0, 4) === '#RC#');
    $dataCount = count($arData);
    $strToParse = substr($strRequest, 4);
    $arrayToParse = explode('#', $strToParse);
    CTaskAssert::assert(is_array($arrayToParse) && count($arrayToParse) >= 3 && isset($arData[$arrayToParse[0]]) && CTaskAssert::isLaxIntegers($arrayToParse[1]) && $arrayToParse[1] < 0);
    $arRequestedData = $arData[$arrayToParse[0]];
    $curDataIndex = count($arRequestedData) - 1;
    $deltaIndex = (int) $arrayToParse[1];
    $requestedIndex = $curDataIndex + $deltaIndex + 1;
    // +1 because last data item mustn't be in data array yet
    if (!isset($arRequestedData[$requestedIndex])) {
        return null;
    }
    // Now, iterate throws given fields
    $maxIndex = count($arrayToParse) - 1;
    $arIteratedData = $arRequestedData[$requestedIndex];
    for ($i = 2; $i <= $maxIndex; $i++) {
        $requestedNthFieldName = $arrayToParse[$i];
        if (!isset($arIteratedData[$requestedNthFieldName])) {
            return null;
        }
        $arIteratedData = $arIteratedData[$requestedNthFieldName];
    }
    return $arIteratedData;
}
예제 #2
0
 public function __construct($oTaskItem, $itemId)
 {
     CTaskAssert::assert($oTaskItem instanceof CTaskItemInterface && CTaskAssert::isLaxIntegers($itemId) && $itemId > 0);
     $this->oTaskItem = $oTaskItem;
     $this->itemId = (int) $itemId;
     $this->taskId = (int) $oTaskItem->getId();
     $this->executiveUserId = $oTaskItem->getExecutiveUserId();
 }
예제 #3
0
 /**
  * @param CTaskItemInterface $oTaskItem
  * @param array $arFields with mandatory elements MINUTES, COMMENT_TEXT
  * @throws TasksException
  * @return CTaskElapsedItem
  */
 public static function add(CTaskItemInterface $oTaskItem, $arFields)
 {
     CTaskAssert::assert(is_array($arFields) && count($arFields) == 2 && isset($arFields['COMMENT_TEXT']) && (isset($arFields['MINUTES']) && CTaskAssert::isLaxIntegers($arFields['MINUTES']) || isset($arFields['SECONDS']) && CTaskAssert::isLaxIntegers($arFields['SECONDS'])) && is_string($arFields['COMMENT_TEXT']));
     if (!$oTaskItem->isActionAllowed(CTaskItem::ACTION_ELAPSED_TIME_ADD)) {
         throw new TasksException('', TasksException::TE_ACTION_NOT_ALLOWED);
     }
     $arFields['USER_ID'] = $oTaskItem->getExecutiveUserId();
     $arFields['TASK_ID'] = $oTaskItem->getId();
     /** @noinspection PhpDeprecationInspection */
     $obElapsed = new CTaskElapsedTime();
     $logId = $obElapsed->Add($arFields);
     // Reset tagged system cache by tag 'tasks_user_' . $userId for each task member
     self::__resetSystemWideTasksCacheByTag($oTaskItem->getData(false));
     if ($logId === false) {
         throw new TasksException('', TasksException::TE_ACTION_FAILED_TO_BE_PROCESSED);
     }
     return new self($oTaskItem, (int) $logId);
 }
예제 #4
0
 private static function convertItemForImport($arItem)
 {
     static $arManifest = false;
     static $arAllowedFields = false;
     $arResult = array();
     if ($arManifest === false) {
         $arManifest = self::getManifest();
         $arAllowedFields = array_keys($arManifest['Fields']);
     }
     foreach ($arItem as $itemName => $itemData) {
         CTaskAssert::assert(strlen($itemName) > 2 || CTaskAssert::isLaxIntegers($itemName));
         if ($itemName === '::LOGIC') {
             $arResult[$itemName] = $itemData;
             continue;
         }
         if (substr($itemName, 0, 12) === '::SUBFILTER-') {
             $arResult[$itemName] = self::convertItemForImport($itemData);
             continue;
         }
         CTaskAssert::assert(isset($itemData['operation'], $itemData['field']) && array_key_exists('value', $itemData) && CTaskAssert::isLaxIntegers($itemData['operation']) && is_string($itemData['field']) && $itemData['field'] !== '');
         if (!in_array($itemData['field'], $arAllowedFields, true)) {
             throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
         }
         $arSupportedOperations = $arManifest['Fields'][$itemData['field']]['Supported operations'];
         $itemType = $arManifest['Fields'][$itemData['field']]['Type'];
         $operation = (int) $itemData['operation'];
         if (!in_array($operation, $arSupportedOperations, true)) {
             throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
         }
         // Resolve operation prefix
         CTaskAssert::assert(isset(self::$arOperationsMap[$operation]));
         $operationPrefix = self::$arOperationsMap[$operation];
         $value = false;
         switch ($itemType) {
             case self::TYPE_DATE:
                 if (!(is_string($itemData['value']) || CTaskAssert::isLaxIntegers($itemData['value']))) {
                     throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                 }
                 $value = self::convertDateStringToTimestamp($operation, $itemData['value']);
                 break;
             case self::TYPE_TEXT:
                 if (!is_string($itemData['value'])) {
                     throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                 }
                 $value = (string) $itemData['value'];
                 break;
             case self::TYPE_PRIORITY:
                 if (!(is_string($itemData['value']) || CTaskAssert::isLaxIntegers($itemData['value']))) {
                     throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                 }
                 $value = (int) $itemData['value'];
                 if (!in_array($value, array(CTasks::PRIORITY_LOW, CTasks::PRIORITY_AVERAGE, CTasks::PRIORITY_HIGH), true)) {
                     throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                 }
                 break;
             case self::TYPE_STATUS:
                 if (is_array($itemData['value'])) {
                     foreach ($itemData['value'] as $statusId) {
                         if (!CTaskAssert::isLaxIntegers($statusId)) {
                             throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                         }
                     }
                     $value = array_map('intval', $itemData['value']);
                 } else {
                     $statusId = $itemData['value'];
                     if (!CTaskAssert::isLaxIntegers($statusId)) {
                         throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                     }
                     $value = (int) $statusId;
                 }
                 break;
             case self::TYPE_GROUP_ID:
             case self::TYPE_USER_ID:
                 $entityId = $itemData['value'];
                 if (!CTaskAssert::isLaxIntegers($entityId)) {
                     throw new TasksException('', TasksException::TE_FILTER_MANIFEST_MISMATCH);
                 }
                 $value = (int) $entityId;
                 break;
             default:
                 CTaskAssert::assert(false);
                 break;
         }
         $arKey = $operationPrefix . $itemData['field'];
         while (isset($arResult[$arKey])) {
             $arKey = ' ' . $arKey;
         }
         $arResult[$arKey] = $value;
     }
     return $arResult;
     /*
     	data in:
     	array(
     		'::LOGIC' => 'AND',
     		array(
     			'field'     => 'RESPONSIBLE_ID',
     			'operation' => CTaskFilterCtrlInterface::OP_EQUAL,
     			'value'     => 1
     		),
     		'::SUBFILTER-1' => array(
     			'::LOGIC' => 'OR',
     			array(
     				'field'     => 'CREATED_BY',
     				'operation' => CTaskFilterCtrlInterface::OP_EQUAL,
     				'value'     => 1
     			),
     			array(
     				'field'     => 'CREATED_BY',
     				'operation' => CTaskFilterCtrlInterface::OP_NOT_EQUAL,
     				'value'     => 2
     			)
     		),
     		'::SUBFILTER-2' => array(
     			'::LOGIC' => 'AND',
     			array(
     				'field'     => 'TITLE',
     				'operation' => CTaskFilterCtrlInterface::OP_SUBSTRING,
     				'value'     => 1
     			),
     			array(
     				'field'     => 'TITLE',
     				'operation' => CTaskFilterCtrlInterface::OP_NOT_SUBSTRING,
     				'value'     => 2
     			)
     		)
     	)
     
     	data out:
     	$arFilter = array(
     		'::LOGIC' => 'AND',
     		'RESPONSIBLE_ID' => 1,
     		'::SUBFILTER-1' => array(
     			'::LOGIC' => 'OR',
     			'CREATED_BY' => 1,
     			'!=CREATED_BY' => 2
     		),
     		'::SUBFILTER-2' => array(
     			'::LOGIC' => 'AND',
     			'%TITLE' => 'some interesting substring',
     			'!%TITLE' => 'some not interesting substring'
     		)
     	);
     */
 }
예제 #5
0
 /**
  * Removes all checklist's items for given task.
  * WARNING: This function doesn't check rights!
  * 
  * @param integer $taskId
  * @throws TasksException
  */
 public static function deleteByTaskId($taskId)
 {
     global $DB;
     CTaskAssert::assert(CTaskAssert::isLaxIntegers($taskId) && $taskId > 0);
     $rc = $DB->Query("DELETE FROM b_tasks_checklist_items WHERE TASK_ID = {$taskId}", true);
     if ($rc === false) {
         throw new TasksException('', TasksException::TE_ACTION_FAILED_TO_BE_PROCESSED);
     }
 }
예제 #6
0
 /**
  * This is not a part of public API.
  * This function is for internal use only.
  * 
  * This function WILL send notifications in case of comment add through bitrix:forum.comments component
  * 
  * @access private
  */
 public static function onAfterCommentAdd($entityType, $entityId, $arData)
 {
     global $USER;
     $MESSAGE_TYPE = 'NEW';
     $arFilesIds = array();
     // 'TK' is our entity type
     if ($entityType !== 'TK') {
         return;
     }
     if (!(CTaskAssert::isLaxIntegers($entityId) && (int) $entityId >= 1)) {
         CTaskAssert::logWarning('[0xc4b31fa6] Expected integer $entityId >= 1');
         return;
     }
     $loggedInUserId = 1;
     if (is_object($USER) && method_exists($USER, 'getId')) {
         $loggedInUserId = (int) $USER->getId();
     }
     $taskId = (int) $entityId;
     $topicId = $arData['TOPIC_ID'];
     $messageId = $arData['MESSAGE_ID'];
     $strMessage = $arData['PARAMS']['POST_MESSAGE'];
     if (isset($arData['PARAMS']['UF_FORUM_MESSAGE_DOC']) && !empty($arData['PARAMS']['UF_FORUM_MESSAGE_DOC'])) {
         $arFilesIds = $arData['PARAMS']['UF_FORUM_MESSAGE_DOC'];
     }
     if (isset($arData['PARAMS']['UF_FORUM_MES_URL_PRV']) && !empty($arData['PARAMS']['UF_FORUM_MES_URL_PRV'])) {
         $urlPreviewId = $arData['PARAMS']['UF_FORUM_MES_URL_PRV'];
     }
     $parser = new CTextParser();
     $messageAuthorId = null;
     $messageEditDate = null;
     $messagePostDate = null;
     if (array_key_exists('AUTHOR_ID', $arData['PARAMS']) && array_key_exists('EDIT_DATE', $arData['PARAMS']) && array_key_exists('POST_DATE', $arData['PARAMS'])) {
         $messageAuthorId = $arData['PARAMS']['AUTHOR_ID'];
         $messageEditDate = $arData['PARAMS']['EDIT_DATE'];
         $messageEditDate = $arData['PARAMS']['POST_DATE'];
     } else {
         $arMessage = CForumMessage::GetByID($messageId);
         $messageAuthorId = $arMessage['AUTHOR_ID'];
         $messageEditDate = $arMessage['EDIT_DATE'];
         $messageEditDate = $arMessage['POST_DATE'];
     }
     $occurAsUserId = CTasksTools::getOccurAsUserId();
     if (!$occurAsUserId) {
         $occurAsUserId = $messageAuthorId ? $messageAuthorId : 1;
     }
     $oTask = CTaskItem::getInstance($taskId, CTasksTools::GetCommanderInChief());
     $arTask = $oTask->getData();
     $arRecipientsIDs = self::getTaskMembersByTaskId($taskId, $excludeUser = $occurAsUserId);
     // Instant Messages
     if (IsModuleInstalled("im") && CModule::IncludeModule("im") && sizeof($arRecipientsIDs)) {
         CTaskComments::sendAddMessage(array('ID' => $messageId, 'POST_MESSAGE' => $strMessage), $arTask, $occurAsUserId, $arRecipientsIDs, $arData);
     }
     $strURL = $GLOBALS['APPLICATION']->GetCurPageParam("", array("IFRAME", "MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result"));
     $strURL = ForumAddPageParams($strURL, array("MID" => $messageId, "result" => "reply"), false, false);
     // sonet log
     if (CModule::IncludeModule("socialnetwork")) {
         $bCrmTask = isset($arTask["UF_CRM_TASK"]) && (is_array($arTask["UF_CRM_TASK"]) && (isset($arTask["UF_CRM_TASK"][0]) && strlen($arTask["UF_CRM_TASK"][0]) > 0) || !is_array($arTask["UF_CRM_TASK"]) && strlen($arTask["UF_CRM_TASK"]) > 0);
         if (!$bCrmTask) {
             $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "tasks", "SOURCE_ID" => $taskId), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID"));
             if ($arRes = $dbRes->Fetch()) {
                 $log_id = $arRes["ID"];
                 $entity_type = $arRes["ENTITY_TYPE"];
                 $entity_id = $arRes["ENTITY_ID"];
             } else {
                 $entity_type = $arTask["GROUP_ID"] ? SONET_ENTITY_GROUP : SONET_ENTITY_USER;
                 $entity_id = $arTask["GROUP_ID"] ? $arTask["GROUP_ID"] : $arTask["CREATED_BY"];
                 $rsUser = CUser::GetByID($arTask["CREATED_BY"]);
                 if ($arUser = $rsUser->Fetch()) {
                     $arSoFields = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "tasks", "LOG_DATE" => $arTask["CREATED_DATE"], "TITLE_TEMPLATE" => "#TITLE#", "TITLE" => $arTask["TITLE"], "MESSAGE" => "", "TEXT_MESSAGE" => $strMsgNewTask, "MODULE_ID" => "tasks", "CALLBACK_FUNC" => false, "SOURCE_ID" => $taskId, "ENABLE_COMMENTS" => "Y", "USER_ID" => $arTask["CREATED_BY"], "URL" => CTaskNotifications::GetNotificationPath($arUser, $taskId), "PARAMS" => serialize(array("TYPE" => "create")));
                     $log_id = CSocNetLog::Add($arSoFields, false);
                     if (intval($log_id) > 0) {
                         CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
                         $arRights = CTaskNotifications::__UserIDs2Rights(self::getTaskMembersByTaskId($taskId));
                         if ($arTask["GROUP_ID"]) {
                             $arRights[] = "S" . SONET_ENTITY_GROUP . $arTask["GROUP_ID"];
                         }
                         CSocNetLogRights::Add($log_id, $arRights);
                     }
                 }
             }
         }
         if (intval($log_id) > 0) {
             $sText = COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"];
             CSocNetLog::Update($log_id, array('PARAMS' => serialize(array('TYPE' => 'comment'))));
             $arFieldsForSocnet = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "tasks_comment", "MESSAGE" => $sText, "TEXT_MESSAGE" => $parser->convert4mail($sText), "URL" => str_replace("?IFRAME=Y", "", str_replace("&IFRAME=Y", "", str_replace("IFRAME=Y&", "", $strURL))), "MODULE_ID" => "tasks", "SOURCE_ID" => $messageId, "LOG_ID" => $log_id, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageId);
             if ($MESSAGE_TYPE == "EDIT") {
                 $dbRes = CSocNetLogComments::GetList(array("ID" => "DESC"), array("EVENT_ID" => array("tasks_comment"), "SOURCE_ID" => $messageId), false, false, array("ID"));
                 while ($arRes = $dbRes->Fetch()) {
                     CSocNetLogComments::Update($arRes["ID"], $arFieldsForSocnet);
                 }
             } else {
                 $arFieldsForSocnet["USER_ID"] = $occurAsUserId;
                 $arFieldsForSocnet["=LOG_DATE"] = $GLOBALS['DB']->CurrentTimeFunction();
                 $ufFileID = array();
                 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageId));
                 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch()) {
                     $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
                 }
                 if (count($ufFileID) > 0) {
                     $arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
                 }
                 $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageId, LANGUAGE_ID);
                 if ($ufDocID) {
                     $arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
                 }
                 $ufUrlPreview = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", $messageId, LANGUAGE_ID);
                 if ($ufUrlPreview) {
                     $arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
                 }
                 $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
                 CSocNetLog::CounterIncrement($comment_id, false, false, "LC");
             }
         }
     }
     // Tasks log
     $arLogFields = array("TASK_ID" => $taskId, "USER_ID" => $occurAsUserId, "CREATED_DATE" => $messageEditDate ? ConvertTimeStamp(MakeTimeStamp($messageEditDate, CSite::GetDateFormat()), "FULL") : $messagePostDate, "FIELD" => "COMMENT", "TO_VALUE" => $messageId);
     $log = new CTaskLog();
     $log->Add($arLogFields);
     CTaskComments::fireOnAfterCommentAddEvent($messageId, $taskId, $strMessage, $arFilesIds, $urlPreviewId);
 }
예제 #7
0
 /**
  * This is not a part of public API.
  * This function is for internal use only.
  * 
  * @access private
  */
 public static function onAfterCommentAdd($entityType, $entityId, $arData)
 {
     global $USER;
     $MESSAGE_TYPE = 'NEW';
     $arFilesIds = array();
     // 'TK' is our entity type
     if ($entityType !== 'TK') {
         return;
     }
     if (!(CTaskAssert::isLaxIntegers($entityId) && (int) $entityId >= 1)) {
         CTaskAssert::logWarning('[0xc4b31fa6] Expected integer $entityId >= 1');
         return;
     }
     $loggedInUserId = 1;
     if (is_object($USER) && method_exists($USER, 'getId')) {
         $loggedInUserId = (int) $USER->getId();
     }
     $taskId = (int) $entityId;
     $topicId = $arData['TOPIC_ID'];
     $messageId = $arData['MESSAGE_ID'];
     $strMessage = $arData['PARAMS']['POST_MESSAGE'];
     if (isset($arData['PARAMS']['UF_FORUM_MESSAGE_DOC']) && !empty($arData['PARAMS']['UF_FORUM_MESSAGE_DOC'])) {
         $arFilesIds = $arData['PARAMS']['UF_FORUM_MESSAGE_DOC'];
     }
     $parser = new CTextParser();
     $messageAuthorId = null;
     $messageEditDate = null;
     $messagePostDate = null;
     if (array_key_exists('AUTHOR_ID', $arData['PARAMS']) && array_key_exists('EDIT_DATE', $arData['PARAMS']) && array_key_exists('POST_DATE', $arData['PARAMS'])) {
         $messageAuthorId = $arData['PARAMS']['AUTHOR_ID'];
         $messageEditDate = $arData['PARAMS']['EDIT_DATE'];
         $messageEditDate = $arData['PARAMS']['POST_DATE'];
     } else {
         $arMessage = CForumMessage::GetByID($messageId);
         $messageAuthorId = $arMessage['AUTHOR_ID'];
         $messageEditDate = $arMessage['EDIT_DATE'];
         $messageEditDate = $arMessage['POST_DATE'];
     }
     $occurAsUserId = CTasksTools::getOccurAsUserId();
     if (!$occurAsUserId) {
         $occurAsUserId = $messageAuthorId ? $messageAuthorId : 1;
     }
     $oTask = CTaskItem::getInstance($taskId, 1);
     $arTask = $oTask->getData();
     $arRecipientsIDs = self::getTaskMembersByTaskId($taskId, $excludeUser = $occurAsUserId);
     // Instant Messages
     if (IsModuleInstalled("im") && CModule::IncludeModule("im") && sizeof($arRecipientsIDs)) {
         // There are different links for extranet users
         $isExtranetEnabled = false;
         if (CModule::IncludeModule("extranet")) {
             $isExtranetEnabled = true;
         }
         if ($isExtranetEnabled) {
             $arSites = array();
             $dbSite = CSite::GetList($by = "sort", $order = "desc", array("ACTIVE" => "Y"));
             while ($arSite = $dbSite->Fetch()) {
                 if (strlen(trim($arSite["DIR"])) > 0) {
                     $arSites[$arSite['ID']]['DIR'] = $arSite['DIR'];
                 } else {
                     $arSites[$arSite['ID']]['DIR'] = '/';
                 }
                 if (strlen(trim($arSite["SERVER_NAME"])) > 0) {
                     $arSites[$arSite['ID']]['SERVER_NAME'] = $arSite["SERVER_NAME"];
                 } else {
                     $arSites[$arSite['ID']]['SERVER_NAME'] = COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"]);
                 }
                 $arSites[$arSite['ID']]['urlPrefix'] = $arSites[$arSite['ID']]['SERVER_NAME'] . $arSites[$arSite['ID']]['DIR'];
                 // remove last '/'
                 if (strlen($arSites[$arSite['ID']]['urlPrefix']) > 0 && substr($arSites[$arSite['ID']]['urlPrefix'], -1) === '/') {
                     $arSites[$arSite['ID']]['urlPrefix'] = substr($arSites[$arSite['ID']]['urlPrefix'], 0, -1);
                 }
             }
             $extranet_site_id = CExtranet::GetExtranetSiteID();
             $intranet_site_id = CSite::GetDefSite();
             $arIntranetUsers = CExtranet::GetIntranetUsers();
         } else {
             if ($arTask["GROUP_ID"]) {
                 $pathTemplateWoExtranet = str_replace("#group_id#", $arTask["GROUP_ID"], COption::GetOptionString("tasks", "paths_task_group_entry", "/workgroups/group/#group_id#/tasks/task/view/#task_id#/", $arFields["SITE_ID"]));
             } else {
                 $pathTemplateWoExtranet = COption::GetOptionString("tasks", "paths_task_user_entry", "/company/personal/user/#user_id#/tasks/task/view/#task_id#/", $arFields["SITE_ID"]);
             }
         }
         IncludeModuleLangFile(__FILE__);
         $rsUser = CUser::GetList($by = 'id', $order = 'asc', array('ID_EQUAL_EXACT' => (int) $occurAsUserId), array('FIELDS' => array('PERSONAL_GENDER')));
         $strMsgAddComment = GetMessage("TASKS_COMMENT_MESSAGE_ADD");
         $strMsgEditComment = GetMessage("TASKS_COMMENT_MESSAGE_EDIT");
         if ($arUser = $rsUser->fetch()) {
             switch ($arUser['PERSONAL_GENDER']) {
                 case "F":
                 case "M":
                     $strMsgAddComment = GetMessage("TASKS_COMMENT_MESSAGE_ADD" . '_' . $arUser['PERSONAL_GENDER']);
                     $strMsgEditComment = GetMessage("TASKS_COMMENT_MESSAGE_EDIT" . '_' . $arUser['PERSONAL_GENDER']);
                     break;
                 default:
                     break;
             }
         }
         foreach ($arRecipientsIDs as $userID) {
             $urlPrefixForUser = tasksServerName();
             if ($isExtranetEnabled) {
                 if (!in_array($userID, $arIntranetUsers) && $extranet_site_id) {
                     $userSiteId = $extranet_site_id;
                 } else {
                     $userSiteId = $intranet_site_id;
                 }
                 if (isset($arSites[$userSiteId]['SERVER_NAME'])) {
                     $urlPrefixForUser = tasksServerName($arSites[$userSiteId]['SERVER_NAME']);
                 }
                 if ($arTask["GROUP_ID"]) {
                     $pathTemplate = str_replace('#group_id#', $arTask['GROUP_ID'], CTasksTools::GetOptionPathTaskGroupEntry($userSiteId, ''));
                 } else {
                     $pathTemplate = CTasksTools::GetOptionPathTaskUserEntry($userSiteId, '');
                 }
             } else {
                 $pathTemplate = $pathTemplateWoExtranet;
             }
             $NOTIFY_MESSAGE_TITLE_TEMPLATE = '';
             $messageUrl = '';
             if (strlen($pathTemplate) > 0) {
                 $groupId = 0;
                 if (isset($arTask['GROUP_ID'])) {
                     $groupId = (int) $arTask['GROUP_ID'];
                 }
                 $messageUrl = $urlPrefixForUser . CComponentEngine::MakePathFromTemplate($pathTemplate, array("user_id" => $userID, "task_id" => $taskId, "action" => "view", "USER_ID" => $userID, "TASK_ID" => $taskId, "ACTION" => "view", 'GROUP_ID' => $groupId, 'group_id' => $groupId));
                 $messageUrl .= (strpos($messageUrl, "?") === false ? "?" : "&") . "MID=" . $messageId;
                 $NOTIFY_MESSAGE_TITLE_TEMPLATE = '[URL=' . $messageUrl . "#message" . $messageId . ']' . $arTask["TITLE"] . '[/URL]';
             } else {
                 $NOTIFY_MESSAGE_TITLE_TEMPLATE = $arTask["TITLE"];
             }
             $MESSAGE_SITE = preg_replace(array('|\\[\\/USER\\]|', '|\\[USER=\\d+\\]|', '|\\[DISK\\sFILE\\sID=[n]*\\d+\\]|', '|\\[DOCUMENT\\sID=\\d+\\]|'), '', $strMessage);
             $MESSAGE_EMAIL = $MESSAGE_SITE;
             // full message to email
             if (strlen($MESSAGE_SITE) >= 100) {
                 $dot = '...';
                 $MESSAGE_SITE = substr($MESSAGE_SITE, 0, 99);
                 if (substr($MESSAGE_SITE, -1) === '[') {
                     $MESSAGE_SITE = substr($MESSAGE_SITE, 0, 98);
                 }
                 if (($lastLinkPosition = strrpos($MESSAGE_SITE, '[u')) !== false || ($lastLinkPosition = strrpos($MESSAGE_SITE, 'http://')) !== false || ($lastLinkPosition = strrpos($MESSAGE_SITE, 'https://')) !== false || ($lastLinkPosition = strrpos($MESSAGE_SITE, 'ftp://')) !== false || ($lastLinkPosition = strrpos($MESSAGE_SITE, 'ftps://')) !== false) {
                     if (strpos($MESSAGE_SITE, ' ', $lastLinkPosition) === false) {
                         $MESSAGE_SITE = substr($MESSAGE_SITE, 0, $lastLinkPosition);
                     }
                 }
                 $MESSAGE_SITE .= $dot;
             }
             $arMessageFields = array("TO_USER_ID" => $userID, "FROM_USER_ID" => $occurAsUserId, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "tasks", "NOTIFY_EVENT" => "comment", "NOTIFY_MESSAGE" => str_replace(array("#TASK_TITLE#", "#TASK_COMMENT_TEXT#"), array($NOTIFY_MESSAGE_TITLE_TEMPLATE, '[COLOR=#000000]' . $MESSAGE_SITE . '[/COLOR]'), $MESSAGE_TYPE != "EDIT" ? $strMsgAddComment : $strMsgEditComment), "NOTIFY_MESSAGE_OUT" => str_replace(array("#TASK_TITLE#", "#TASK_COMMENT_TEXT#"), array($arTask["TITLE"], $MESSAGE_EMAIL . ' #BR# ' . $messageUrl . "#message" . $messageId . ' '), $MESSAGE_TYPE != "EDIT" ? $strMsgAddComment : $strMsgEditComment));
             CIMNotify::Add($arMessageFields);
         }
     }
     $strURL = $GLOBALS['APPLICATION']->GetCurPageParam("", array("IFRAME", "MID", "SEF_APPLICATION_CUR_PAGE_URL", BX_AJAX_PARAM_ID, "result"));
     $strURL = ForumAddPageParams($strURL, array("MID" => $messageId, "result" => "reply"), false, false);
     // sonet log
     if (CModule::IncludeModule("socialnetwork")) {
         $bCrmTask = isset($arTask["UF_CRM_TASK"]) && (is_array($arTask["UF_CRM_TASK"]) && (isset($arTask["UF_CRM_TASK"][0]) && strlen($arTask["UF_CRM_TASK"][0]) > 0) || !is_array($arTask["UF_CRM_TASK"]) && strlen($arTask["UF_CRM_TASK"]) > 0);
         if (!$bCrmTask) {
             $dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "tasks", "SOURCE_ID" => $taskId), false, false, array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID"));
             if ($arRes = $dbRes->Fetch()) {
                 $log_id = $arRes["ID"];
                 $entity_type = $arRes["ENTITY_TYPE"];
                 $entity_id = $arRes["ENTITY_ID"];
             } else {
                 $entity_type = $arTask["GROUP_ID"] ? SONET_ENTITY_GROUP : SONET_ENTITY_USER;
                 $entity_id = $arTask["GROUP_ID"] ? $arTask["GROUP_ID"] : $arTask["CREATED_BY"];
                 $rsUser = CUser::GetByID($arTask["CREATED_BY"]);
                 if ($arUser = $rsUser->Fetch()) {
                     $arSoFields = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "tasks", "LOG_DATE" => $arTask["CREATED_DATE"], "TITLE_TEMPLATE" => "#TITLE#", "TITLE" => $arTask["TITLE"], "MESSAGE" => "", "TEXT_MESSAGE" => $strMsgNewTask, "MODULE_ID" => "tasks", "CALLBACK_FUNC" => false, "SOURCE_ID" => $taskId, "ENABLE_COMMENTS" => "Y", "USER_ID" => $arTask["CREATED_BY"], "URL" => CTaskNotifications::GetNotificationPath($arUser, $taskId), "PARAMS" => serialize(array("TYPE" => "create")));
                     $log_id = CSocNetLog::Add($arSoFields, false);
                     if (intval($log_id) > 0) {
                         CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
                         $arRights = CTaskNotifications::__UserIDs2Rights(self::getTaskMembersByTaskId($taskId));
                         if ($arTask["GROUP_ID"]) {
                             $arRights[] = "S" . SONET_ENTITY_GROUP . $arTask["GROUP_ID"];
                         }
                         CSocNetLogRights::Add($log_id, $arRights);
                     }
                 }
             }
         }
         if (intval($log_id) > 0) {
             $sText = COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"];
             CSocNetLog::Update($log_id, array('PARAMS' => serialize(array('TYPE' => 'comment'))));
             $arFieldsForSocnet = array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id, "EVENT_ID" => "tasks_comment", "MESSAGE" => $sText, "TEXT_MESSAGE" => $parser->convert4mail($sText), "URL" => str_replace("?IFRAME=Y", "", str_replace("&IFRAME=Y", "", str_replace("IFRAME=Y&", "", $strURL))), "MODULE_ID" => "tasks", "SOURCE_ID" => $messageId, "LOG_ID" => $log_id, "RATING_TYPE_ID" => "FORUM_POST", "RATING_ENTITY_ID" => $messageId);
             if ($MESSAGE_TYPE == "EDIT") {
                 $dbRes = CSocNetLogComments::GetList(array("ID" => "DESC"), array("EVENT_ID" => array("tasks_comment"), "SOURCE_ID" => $messageId), false, false, array("ID"));
                 while ($arRes = $dbRes->Fetch()) {
                     CSocNetLogComments::Update($arRes["ID"], $arFieldsForSocnet);
                 }
             } else {
                 $arFieldsForSocnet["USER_ID"] = $occurAsUserId;
                 $arFieldsForSocnet["=LOG_DATE"] = $GLOBALS['DB']->CurrentTimeFunction();
                 $ufFileID = array();
                 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageId));
                 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch()) {
                     $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
                 }
                 if (count($ufFileID) > 0) {
                     $arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
                 }
                 $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageId, LANGUAGE_ID);
                 if ($ufDocID) {
                     $arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
                 }
                 $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
                 CSocNetLog::CounterIncrement($comment_id, false, false, "LC");
             }
         }
     }
     // Tasks log
     $arLogFields = array("TASK_ID" => $taskId, "USER_ID" => $occurAsUserId, "CREATED_DATE" => $messageEditDate ? ConvertTimeStamp(MakeTimeStamp($messageEditDate, CSite::GetDateFormat()), "FULL") : $messagePostDate, "FIELD" => "COMMENT", "TO_VALUE" => $messageId);
     $log = new CTaskLog();
     $log->Add($arLogFields);
     CTaskComments::fireOnAfterCommentAddEvent($messageId, $taskId, $strMessage, $arFilesIds);
 }
예제 #8
0
 private function checkColumns($columns)
 {
     $arAllowedColumnsIDs = array_keys(CTaskColumnList::get());
     CTaskAssert::assert(is_array($columns));
     foreach ($columns as &$columnData) {
         CTaskAssert::assert(isset($columnData['ID'], $columnData['WIDTH']) && count($columnData) == 2 && CTaskAssert::isLaxIntegers($columnData['ID'], $columnData['WIDTH']) && in_array($columnData['ID'], $arAllowedColumnsIDs) && $columnData['WIDTH'] >= 0);
     }
     unset($columnData);
 }
예제 #9
0
 function Update($ID, $arFields, $arParams = array())
 {
     global $DB, $USER, $USER_FIELD_MANAGER;
     $ID = intval($ID);
     if ($ID < 1) {
         return false;
     }
     $bCheckFilesPermissions = false;
     if (isset($arParams['CHECK_RIGHTS_ON_FILES']) && ($arParams['CHECK_RIGHTS_ON_FILES'] === true || $arParams['CHECK_RIGHTS_ON_FILES'] === 'Y')) {
         CTaskAssert::assert(isset($arParams['USER_ID']) && CTaskAssert::isLaxIntegers($arParams['USER_ID']) && $arParams['USER_ID'] > 0);
         $bCheckFilesPermissions = true;
     }
     $arParamsForCheckFields = array('CHECK_RIGHTS_ON_FILES' => $bCheckFilesPermissions);
     if (isset($arParams['USER_ID'])) {
         $arParamsForCheckFields['USER_ID'] = $arParams['USER_ID'];
     }
     // We need understand, does REPLICATE_PARAMS changed
     $rsCurData = self::GetByID($ID);
     $arCurData = $rsCurData->Fetch();
     $this->currentData = $arCurData;
     if (intval($arCurData['BASE_TEMPLATE_ID']) > 0) {
         unset($arFields['REPLICATE']);
         // ... you cannot set replicate params
         unset($arFields['PARENT_ID']);
         // ... and base task
         $isReplicateParamsChanged = false;
     } else {
         $isReplicateParamsChanged = isset($arFields['REPLICATE']) && $arCurData['REPLICATE'] !== $arFields['REPLICATE'] || isset($arFields['REPLICATE_PARAMS']) && $arCurData['REPLICATE_PARAMS'] !== $arFields['REPLICATE_PARAMS'];
     }
     if ($userID === null) {
         $userID = is_object($USER) ? intval($USER->GetID()) : 1;
     }
     if ($this->CheckFields($arFields, $ID, $arParamsForCheckFields)) {
         if ($USER_FIELD_MANAGER->CheckFields("TASKS_TASK_TEMPLATE", $ID, $arFields)) {
             unset($arFields['ID']);
             $arBinds = array('DESCRIPTION' => $arFields['DESCRIPTION'], 'REPLICATE_PARAMS' => $arFields['REPLICATE_PARAMS'], 'ACCOMPLICES' => $arFields['ACCOMPLICES'], 'AUDITORS' => $arFields['AUDITORS'], 'FILES' => $arFields['FILES'], 'TAGS' => $arFields['TAGS'], 'DEPENDS_ON' => $arFields['DEPENDS_ON']);
             $strUpdate = $DB->PrepareUpdate('b_tasks_template', $arFields, 'tasks');
             if ((string) $strUpdate !== '') {
                 $strSql = "UPDATE b_tasks_template SET " . $strUpdate . " WHERE ID=" . $ID;
                 $DB->QueryBind($strSql, $arBinds, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
             }
             if (isset($arFields['FILES'])) {
                 CTaskFiles::removeTemporaryStatusForFiles(unserialize($arFields['FILES']), $arParams['USER_ID']);
             }
             $USER_FIELD_MANAGER->Update("TASKS_TASK_TEMPLATE", $ID, $arFields, $userID);
             // update template tree, if required
             if (isset($arFields['BASE_TEMPLATE_ID'])) {
                 try {
                     Template\DependencyTable::link($ID, intval($arFields['BASE_TEMPLATE_ID']), array('CREATE_PARENT_NODE_ON_NOTFOUND' => true));
                 } catch (\Bitrix\Tasks\DB\Tree\LinkExistsException $e) {
                 }
             }
             if ($isReplicateParamsChanged) {
                 // Firstly, remove all agents for this template
                 /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                 CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ');', 'tasks');
                 /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                 CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks');
                 /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                 CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 1);', 'tasks');
                 // Set up new agent
                 if ($arFields['REPLICATE'] === 'Y') {
                     $nextTime = CTasks::GetNextTime(unserialize($arFields['REPLICATE_PARAMS']));
                     if ($nextTime) {
                         CTimeZone::Disable();
                         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
                         CAgent::AddAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks', 'N', 86400, $nextTime, 'Y', $nextTime);
                         CTimeZone::Enable();
                     }
                 }
             }
             return true;
         }
     }
     return false;
 }
예제 #10
0
 /**
  * This function is for internal use only, not a part of public API
  *
  * @access private
  */
 public static function _parseRestParams($className, $methodName, $inArgs)
 {
     CTaskAssert::assert(is_array($inArgs) && isset(self::$arMethodsMetaInfo[$className][$methodName]));
     $arMethodMetaInfo = self::$arMethodsMetaInfo[$className][$methodName];
     $arAllowedParams = $arMethodMetaInfo['params'];
     $mandatoryParamsCount = $arMethodMetaInfo['mandatoryParamsCount'];
     $arDateFields = array();
     if (isset(self::$arManifests[$className]['REST: date fields'])) {
         $arDateFields = self::$arManifests[$className]['REST: date fields'];
     }
     $outArgs = array();
     foreach ($arAllowedParams as $paramIndex => $paramMetaInfo) {
         // No more params given?
         if (!array_key_exists($paramIndex, $inArgs)) {
             // Set default value, if need
             if (array_key_exists('defaultValue', $paramMetaInfo)) {
                 $inArgs[$paramIndex] = $paramMetaInfo['defaultValue'];
             } elseif ($paramIndex < $mandatoryParamsCount) {
                 throw new TasksException('Param #' . $paramIndex . ' (' . $paramMetaInfo['description'] . ')' . ' expected by method ' . $className . '::' . $methodName . '(), but not given.', TasksException::TE_WRONG_ARGUMENTS);
             } else {
                 break;
             }
             // no more params to be processed
         }
         // for "galvanic isolation" of input/output
         $paramValue = $inArgs[$paramIndex];
         // Check param type
         /** @noinspection PhpUnusedLocalVariableInspection */
         $isCorrectValue = false;
         switch ($paramMetaInfo['type']) {
             case 'boolean':
                 if ($paramValue === '0' || $paramValue === 0) {
                     $paramValue = false;
                 } elseif ($paramValue === '1' || $paramValue === 1) {
                     $paramValue = true;
                 }
                 $isCorrectValue = is_bool($paramValue);
                 break;
             case 'array':
                 $isCorrectValue = is_array($paramValue);
                 break;
             case 'string':
                 $isCorrectValue = is_string($paramValue);
                 break;
             case 'integer':
                 $isCorrectValue = CTaskAssert::isLaxIntegers($paramValue);
                 break;
             default:
                 throw new TasksException('Internal error: unknown param type: ' . $paramMetaInfo['type'], TasksException::TE_UNKNOWN_ERROR);
                 break;
         }
         if (!$isCorrectValue) {
             throw new TasksException('Param #' . $paramIndex . ' (' . $paramMetaInfo['description'] . ')' . ' for method ' . $className . '::' . $methodName . '()' . ' expected to be of type "' . $paramMetaInfo['type'] . '",' . ' but given something else.', TasksException::TE_WRONG_ARGUMENTS);
         }
         // add legal aggregated columns in keys & values array
         if (is_array($paramMetaInfo['allowedAggregations'])) {
             // for keys
             if (is_array($paramMetaInfo['allowedKeysInAggregation'])) {
                 $fields = $paramMetaInfo['allowedKeysInAggregation'];
             } else {
                 $fields = $paramMetaInfo['allowedKeys'];
             }
             if (is_array($fields)) {
                 $aggrCombos = static::getAllowedAggregateCombos($paramMetaInfo['allowedAggregations'], $fields);
                 $paramMetaInfo['allowedKeys'] = array_merge($paramMetaInfo['allowedKeys'], $aggrCombos);
             }
             // for values
             if (is_array($paramMetaInfo['allowedValuesInAggregation'])) {
                 $fields = $paramMetaInfo['allowedValuesInAggregation'];
             } else {
                 $fields = $paramMetaInfo['allowedValues'];
             }
             if (is_array($fields)) {
                 $aggrCombos = static::getAllowedAggregateCombos($paramMetaInfo['allowedAggregations'], $fields);
                 $paramMetaInfo['allowedValues'] = array_merge($paramMetaInfo['allowedValues'], $aggrCombos);
             }
         }
         if (isset($paramMetaInfo['allowedKeys'])) {
             CTaskAssert::assert(is_array($paramValue));
             // ensure that $paramValue is array
             /** @var $paramValue array */
             foreach (array_keys($paramValue) as $key) {
                 // a little fix to be able to pass an empty array in order to "skip" argument
                 if ((string) $key == '0' && $paramValue[$key] == '') {
                     unset($paramValue[$key]);
                     continue;
                 }
                 if (isset($paramMetaInfo['allowedKeyPrefixes'])) {
                     $keyWoPrefix = str_replace($paramMetaInfo['allowedKeyPrefixes'], '', $key);
                 } else {
                     $keyWoPrefix = $key;
                 }
                 if (!in_array((string) $keyWoPrefix, $paramMetaInfo['allowedKeys'], true)) {
                     throw new TasksException('Param #' . $paramIndex . ' (' . $paramMetaInfo['description'] . ')' . ' for method ' . $className . '::' . $methodName . '()' . ' must not contain key "' . $key . '".', TasksException::TE_WRONG_ARGUMENTS);
                 }
                 // Additionally convert datetime fields from ISO 8601
                 if (in_array((string) $keyWoPrefix, $arDateFields, true) && !in_array($paramValue[$key], array('asc', 'desc'))) {
                     $paramValue[$key] = (string) CRestUtil::unConvertDateTime($paramValue[$key]);
                 }
             }
         }
         if (isset($paramMetaInfo['allowedValues'])) {
             CTaskAssert::assert(is_array($paramValue));
             foreach ($paramValue as $value) {
                 if ($value !== null && !is_bool($value)) {
                     $value = (string) $value;
                 }
                 if (!in_array($value, $paramMetaInfo['allowedValues'], true)) {
                     throw new TasksException('Param #' . $paramIndex . ' (' . $paramMetaInfo['description'] . ')' . ' for method ' . $className . '::' . $methodName . '()' . ' must not contain value "' . $value . '".', TasksException::TE_WRONG_ARGUMENTS);
                 }
             }
         }
         // "galvanic isolation" of input/output
         $outArgs[] = $paramValue;
     }
     if (count($inArgs) > count($arAllowedParams)) {
         throw new TasksException('Too much params(' . count($inArgs) . ') given for method ' . $className . '::' . $methodName . '()' . ', but expected not more than ' . count($arAllowedParams) . '.', TasksException::TE_WRONG_ARGUMENTS);
     }
     return $outArgs;
 }
예제 #11
0
         } else {
             $status = 'fail';
         }
     } catch (Exception $e) {
         $status = 'fail';
     }
     break;
 case 'createPreset':
 case 'replacePreset':
     try {
         CTaskAssert::assert(isset($_POST['presetData']) && is_array($_POST['presetData']) && isset($_POST['presetData']['Name']) && isset($_POST['presetData']['Condition']));
         $_POST['presetData']['Parent'] = CTaskFilterCtrl::ROOT_PRESET;
         $mode = CTaskFilterCtrl::IMPORT_MODE_CREATE;
         $presetId = null;
         if ($_POST['action'] === 'replacePreset') {
             CTaskAssert::assert(isset($_POST['presetId']) && CTaskAssert::isLaxIntegers($_POST['presetId']) && $_POST['presetId'] > 0);
             $mode = CTaskFilterCtrl::IMPORT_MODE_REPLACE;
             $presetId = (int) $_POST['presetId'];
         }
         $oFilter = CTaskFilterCtrl::getInstance($loggedInUser);
         $newPresetId = $oFilter->importFilterDataFromJs($_POST['presetData'], $mode, $presetId);
         $arReply['newPresetId'] = $newPresetId;
     } catch (Exception $e) {
         $status = 'fail';
     }
     break;
 case 'removePreset':
     try {
         CTaskAssert::assert(isset($_POST['presetId']) && $_POST['presetId'] > 0);
         CTaskAssert::assertLaxIntegers($_POST['presetId']);
         $oFilter = CTaskFilterCtrl::getInstance($loggedInUser);
예제 #12
0
 public static function isIntegerValued($i)
 {
     return CTaskAssert::isLaxIntegers($i);
 }
예제 #13
0
     }
     $APPLICATION->IncludeComponent("bitrix:socialnetwork.group.selector", ".default", array('BIND_ELEMENT' => $inData['bindElement'], 'ON_SELECT' => $onSelectFuncName, 'JS_OBJECT_NAME' => $inData['jsObjectName'], 'FEATURES_PERMS' => array('tasks', 'create_tasks'), 'SELECTED' => 0), null, array("HIDE_ICONS" => "Y"));
     break;
 case 'LHEditor':
     CTaskAssert::assert(isset($inData['jsObjectName'], $inData['elementId']));
     if (!CModule::IncludeModule("fileman")) {
         ShowError('Cannot include fileman module');
     } else {
         $Editor = new CHTMLEditor();
         $res = array_merge(array('minBodyWidth' => 350, 'minBodyHeight' => 200, 'normalBodyWidth' => 555, 'bAllowPhp' => false, 'limitPhpAccess' => false, 'showTaskbars' => false, 'showNodeNavi' => false, 'askBeforeUnloadPage' => true, 'bbCode' => true, 'siteId' => SITE_ID, 'autoResize' => true, 'autoResizeOffset' => 40, 'saveOnBlur' => true, 'setFocusAfterShow' => false, 'controlsMap' => array(array('id' => 'Bold', 'compact' => true, 'sort' => 80), array('id' => 'Italic', 'compact' => true, 'sort' => 90), array('id' => 'Underline', 'compact' => true, 'sort' => 100), array('id' => 'Strikeout', 'compact' => true, 'sort' => 110), array('id' => 'RemoveFormat', 'compact' => true, 'sort' => 120), array('id' => 'Color', 'compact' => true, 'sort' => 130), array('id' => 'FontSelector', 'compact' => false, 'sort' => 135), array('id' => 'FontSize', 'compact' => false, 'sort' => 140), array('separator' => true, 'compact' => false, 'sort' => 145), array('id' => 'OrderedList', 'compact' => true, 'sort' => 150), array('id' => 'UnorderedList', 'compact' => true, 'sort' => 160), array('id' => 'AlignList', 'compact' => false, 'sort' => 190), array('separator' => true, 'compact' => false, 'sort' => 200), array('id' => 'InsertLink', 'compact' => true, 'sort' => 210), array('id' => 'InsertImage', 'compact' => false, 'sort' => 220), array('id' => 'InsertVideo', 'compact' => true, 'sort' => 230), array('id' => 'InsertTable', 'compact' => false, 'sort' => 250), array('id' => 'Code', 'compact' => true, 'sort' => 260), array('id' => 'Quote', 'compact' => true, 'sort' => 270), array('separator' => true, 'compact' => false, 'sort' => 290), array('id' => 'Fullscreen', 'compact' => false, 'sort' => 310), array('id' => 'BbCode', 'compact' => true, 'sort' => 340), array('id' => 'More', 'compact' => true, 'sort' => 400))), array('name' => 'DESCRIPTION', 'id' => $inData['elementId'], 'width' => '100%', 'arSmiles' => array(), 'iframeCss' => 'body{font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 13px;}' . '.bx-spoiler {border:1px solid #C0C0C0;background-color:#fff4ca;padding: 4px 4px 4px 24px;color:#373737;border-radius:2px;min-height:1em;margin: 0;}'));
         $Editor->Show($res);
     }
     break;
 case 'system.field.edit::WEBDAV':
 case 'system.field.edit::CRM':
     CTaskAssert::assert(isset($inData['taskId'], $inData['userFieldName'], $inData['nameContainerId'], $inData['dataContainerId']) && CTaskAssert::isLaxIntegers($inData['taskId']) && is_string($inData['userFieldName']) && $inData['userFieldName'] !== '' && is_string($inData['nameContainerId']) && $inData['nameContainerId'] !== '' && is_string($inData['dataContainerId']) && $inData['dataContainerId'] !== '');
     if ($inData['requestedObject'] === 'system.field.edit::CRM' && $inData['taskId'] == 0) {
         break;
     }
     global $USER_FIELD_MANAGER;
     $arAvailableUserFieldsMeta = $USER_FIELD_MANAGER->GetUserFields('TASKS_TASK', $inData['taskId'], LANGUAGE_ID);
     // We need only $inData['userFieldName']
     if (!isset($arAvailableUserFieldsMeta[$inData['userFieldName']])) {
         break;
     }
     $arUserField = $arAvailableUserFieldsMeta[$inData['userFieldName']];
     if ($arUserField['EDIT_IN_LIST'] !== 'Y') {
         break;
     }
     echo '<div id="' . $inData['nameContainerId'] . '">' . htmlspecialcharsbx($arUserField['EDIT_FORM_LABEL']) . '</div>';
     echo '<div id="' . $inData['dataContainerId'] . '">';