/** * @return bool */ public function canEdit() { $userId = $this->getUser()->getId(); // admin is always able to edit\remove comments if (Loader::includeModule("tasks") && (\CTasksTools::isAdmin($userId) || \CTasksTools::isPortalB24Admin($userId))) { return true; } return false; }
public static function onAfterTimeManagerDayStart($arData) { if (!(isset($arData['USER_ID'], $arData['MODIFIED_BY']) && $arData['USER_ID'] > 0 && $arData['MODIFIED_BY'] > 0 && $arData['MODIFIED_BY'] == $arData['USER_ID'] && IsModuleInstalled("im") && CModule::IncludeModule("im"))) { return; } $recipientId = (int) $arData['USER_ID']; try { $tasksCounter = CTaskListCtrl::getMainCounterForUser($recipientId); if ($tasksCounter <= 0) { return; } /** @noinspection PhpDeprecationInspection */ CIMNotify::Add(array('FROM_USER_ID' => 0, 'TO_USER_ID' => $recipientId, 'NOTIFY_MODULE' => 'tasks', 'NOTIFY_EVENT' => 'notice', 'NOTIFY_TYPE' => IM_NOTIFY_SYSTEM, 'NOTIFY_TAG' => 'TASKS|COUNTERS_NOTICE|' . $recipientId, 'MESSAGE' => CTasksTools::getMessagePlural($tasksCounter, 'TASKS_COUNTERS_NOTICE_CONTENT_V2', array('#TASKS_COUNT#' => $tasksCounter, '#HREF#' => self::getTasksListLink($recipientId))), 'TITLE' => GetMessage('TASKS_COUNTERS_NOTICE_TITLE'))); } catch (Exception $e) { CTaskAssert::logWarning('[0xb83d6845] unexpected exception in CTaskCountersNotifier::onAfterTimeManagerDayStart()' . ', file: ' . $e->getFile() . ', line: ' . $e->getLine() . ', code: ' . $e->getCode() . ', message: ' . $e->getMessage()); } }
/** * @return bool */ public function canEdit() { $userId = $this->getUser()->getId(); // admin is always able to edit\remove comments if (Loader::includeModule("tasks") && (\CTasksTools::isAdmin($userId) || \CTasksTools::IsPortalB24Admin($userId))) { return true; } // if you are not an admin, you must obey "tasks" module settings if (!static::checkEditOptionIsOn()) { return false; } // you are not allowed to view the task, so you can not edit messages either (even own) if (!$this->checkHasAccess()) { return false; } // in all other ways - depends on "forum" module settings return parent::canEdit(); }
public static function GetList($arOrder, $arFilter) { global $DB; $arSqlSearch = CTaskLog::GetFilter($arFilter); $strSql = "\n\t\t\tSELECT\n\t\t\t\tTL.*,\n\t\t\t\t" . $DB->DateToCharFunction("TL.CREATED_DATE", "FULL") . " AS CREATED_DATE,\n\t\t\t\tU.NAME AS USER_NAME,\n\t\t\t\tU.LAST_NAME AS USER_LAST_NAME,\n\t\t\t\tU.SECOND_NAME AS USER_SECOND_NAME,\n\t\t\t\tU.LOGIN AS USER_LOGIN\n\t\t\tFROM\n\t\t\t\tb_tasks_log TL\n\t\t\tINNER JOIN\n\t\t\t\tb_user U\n\t\t\tON\n\t\t\t\tU.ID = TL.USER_ID\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t"; if (!is_array($arOrder) || sizeof($arOrder) == 0) { $arOrder = array("CREATED_DATE" => "ASC"); } foreach ($arOrder as $by => $order) { $by = strtolower($by); $order = strtolower($order); if ($order != "asc") { $order = "desc"; } if ($by == "user" || $by == "user_id") { $arSqlOrder[] = " TL.USER_ID " . $order . " "; } elseif ($by == "field") { $arSqlOrder[] = " TL.FIELD " . $order . " "; } elseif ($by == "task_id") { $arSqlOrder[] = " TL.TASK_ID " . $order . " "; } elseif ($by == "rand") { $arSqlOrder[] = CTasksTools::getRandFunction(); } else { $arSqlOrder[] = " TL.CREATED_DATE " . $order . " "; } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); for ($i = 0, $arSqlOrderCnt = count($arSqlOrder); $i < $arSqlOrderCnt; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= $strSqlOrder; return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); }
public static function tasks_extended_meta_occurInLogsAs($args) { $arMessages = array(); $parsedReturnValue = null; $withoutExceptions = false; try { if (!(CTasksTools::IsAdmin() || CTasksTools::IsPortalB24Admin())) { throw new TasksException('Only root can do this', TasksException::TE_ACCESS_DENIED); } CTaskAssert::assert(is_array($args) && count($args) == 1); $userId = array_pop($args); CTasksTools::setOccurAsUserId($userId); $parsedReturnValue = CTasksTools::getOccurAsUserId(); $withoutExceptions = true; } catch (CTaskAssertException $e) { $arMessages[] = array('id' => 'TASKS_ERROR_ASSERT_EXCEPTION', 'text' => 'TASKS_ERROR_ASSERT_EXCEPTION'); } catch (TasksException $e) { $errCode = $e->getCode(); $errMsg = $e->getMessage(); if ($e->GetCode() & TasksException::TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE) { $arMessages = unserialize($errMsg); } else { $arMessages[] = array('id' => 'TASKS_ERROR_EXCEPTION_#' . $errCode, 'text' => 'TASKS_ERROR_EXCEPTION_#' . $errCode . '; ' . $errMsg . '; ' . TasksException::renderErrorCode($e)); } } catch (Exception $e) { $errMsg = $e->getMessage(); if ($errMsg !== '') { $arMessages[] = array('text' => $errMsg, 'id' => 'TASKS_ERROR'); } } if ($withoutExceptions) { return $parsedReturnValue; } else { self::_emitError($arMessages); throw new Exception(); } }
public function delete() { global $DB; $taskId = (int) $this->oTaskItem->getId(); $executiveUserId = (int) $this->oTaskItem->getExecutiveUserId(); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $curDatetime = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time() + CTimeZone::GetOffset()); if (!$this->isActionAllowed(self::ACTION_REMOVE)) { throw new TasksException('', TasksException::TE_ACTION_NOT_ALLOWED); } $arCurrentData = $this->getData(); $rc = $DB->Query("DELETE FROM b_tasks_checklist_items \n\t\t\tWHERE ID = " . $this->itemId . " AND TASK_ID = " . $taskId, $bIgnoreErrors = true); // Reset cache $this->resetCache(); if ($rc === false) { throw new TasksException('', TasksException::TE_ACTION_FAILED_TO_BE_PROCESSED); } $occurAsUserId = CTasksTools::getOccurAsUserId(); if (!$occurAsUserId) { $occurAsUserId = $executiveUserId; } // changes log $arLogFields = array('TASK_ID' => $taskId, 'USER_ID' => $occurAsUserId, 'CREATED_DATE' => $curDatetime, 'FIELD' => 'CHECKLIST_ITEM_REMOVE', 'FROM_VALUE' => $arCurrentData['~TITLE'], 'TO_VALUE' => ''); $log = new CTaskLog(); $log->Add($arLogFields); }
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; }
/** * @deprecated */ public static function runRestMethod($executiveUserId, $methodName, $args, $navigation) { static $arManifest = null; static $arMethodsMetaInfo = null; if ($arManifest === null) { $arManifest = self::getManifest(); $arMethodsMetaInfo = $arManifest['REST: available methods']; } // Check and parse params CTaskAssert::assert(isset($arMethodsMetaInfo[$methodName])); $arMethodMetaInfo = $arMethodsMetaInfo[$methodName]; $argsParsed = CTaskRestService::_parseRestParams('ctaskcomments', $methodName, $args); $returnValue = null; if (isset($arMethodMetaInfo['staticMethod']) && $arMethodMetaInfo['staticMethod']) { if ($methodName === 'add') { $occurAsUserId = CTasksTools::getOccurAsUserId(); if (!$occurAsUserId) { $occurAsUserId = $executiveUserId; } $taskId = $argsParsed[0]; $commentText = $argsParsed[1]; $commentAuthorId = $occurAsUserId; $returnValue = self::add($taskId, $commentAuthorId, $commentText); } } else { $taskId = array_shift($argsParsed); $oTask = self::getInstanceFromPool($taskId, $executiveUserId); $returnValue = call_user_func_array(array($oTask, $methodName), $argsParsed); } return array($returnValue, null); }
/** * @param $arOrder * @param $arFilter * @return bool|CDBResult * * @var CDatabase $DB */ public static function GetList($arOrder, $arFilter) { global $DB; $arSqlSearch = CTaskFiles::GetFilter($arFilter); $strSql = "\n\t\t\tSELECT\n\t\t\t\tTF.*\n\t\t\tFROM\n\t\t\t\tb_tasks_file TF\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t"; if (!is_array($arOrder)) { $arOrder = array(); } foreach ($arOrder as $by => $order) { $by = strtolower($by); $order = strtolower($order); if ($order != "asc") { $order = "desc"; } if ($by == "task") { $arSqlOrder[] = " TF " . $order . " "; } elseif ($by == "file") { $arSqlOrder[] = " TF.FILE_ID " . $order . " "; } elseif ($by == "rand") { $arSqlOrder[] = CTasksTools::getRandFunction(); } else { $arSqlOrder[] = " TF.FILE_ID " . $order . " "; } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); for ($i = 0, $arSqlOrderCnt = count($arSqlOrder); $i < $arSqlOrderCnt; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= $strSqlOrder; return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); }
function GetListItemChangesSinceToken($listName, $viewFields = '', $query = '', $rowLimit = 0, $changeToken = '') { global $APPLICATION, $USER; if (!$this->__Init()) { return $this->error; } if (!($listName_original = CIntranetUtils::checkGUID($listName))) { return new CSoapFault('Data error', 'Wrong GUID - ' . $listName); } $listName = ToUpper(CIntranetUtils::makeGUID($listName_original)); $arFilter = array(); if ($changeToken) { $bitrixTimestamp = $changeToken + CTasksTools::getTimeZoneOffset(); $arFilter['>CHANGED_DATE'] = ConvertTimeStamp($bitrixTimestamp, 'FULL'); if (!$arFilter['>CHANGED_DATE']) { return new CSoapFault('Params error', 'Wrong changeToken: ' . $changeToken); } } $last_change = 0; $data = new CXMLCreator('listitems'); $data->setAttribute('MinTimeBetweenSyncs', 0); $data->setAttribute('RecommendedTimeBetweenSyncs', 180); $data->setAttribute('TimeStamp', $this->__makeDateTime()); $data->setAttribute('EffectivePermMask', 'FullMask'); $data->setAttribute('IncludeAttachmentUrls', 'False'); $data->addChild($obChanges = new CXMLCreator('Changes')); if (!$changeToken) { $obChanges->addChild($this->__getFieldsDefinition()); } $data->addChild($obData = new CXMLCreator('rs:data')); $counter = 0; $arFilter['MEMBER'] = $USER->GetID(); $dbRes = CTasks::GetList(array("ID" => "ASC"), $arFilter, array(), array('bGetZombie' => true)); while ($arRes = $dbRes->Fetch()) { if ($arRes['ZOMBIE'] === 'Y') { $obId = new CXMLCreator('Id'); $obId->setAttribute('ChangeType', 'Delete'); $obId->setData($arRes['ID']); $obChanges->addChild($obId); } else { $rsFiles = CTaskFiles::GetList(array(), array("TASK_ID" => $arRes["ID"])); $arRes["FILES"] = array(); while ($arFiles = $rsFiles->fetch()) { $arRes["FILES"][] = $arFiles["FILE_ID"]; } $obData->addChild($this->__getRow($arRes, $listName, $last_change)); $counter++; } } $obData->setAttribute('ItemCount', $counter); $data->setAttribute('xmlns:rs', 'urn:schemas-microsoft-com:rowset'); $data->setAttribute('xmlns:z', '#RowsetSchema'); if ($last_change > 0) { $obChanges->setAttribute('LastChangeToken', $last_change); } return array('GetListItemChangesSinceTokenResult' => $data); }
function lambda_sgkrg457d_funcFormatForHumanMinutes($in, $bDataInSeconds = false) { if ($in === NULL) { return ''; } if ($bDataInSeconds) { $minutes = (int) round($in / 60, 0); } $hours = (int) ($minutes / 60); if ($minutes < 60) { $duration = $minutes . ' ' . CTasksTools::getMessagePlural($minutes, 'TASKS_TASK_DURATION_MINUTES'); } elseif ($minutesInResid = $minutes % 60) { $duration = $hours . ' ' . CTasksTools::getMessagePlural($hours, 'TASKS_TASK_DURATION_HOURS') . ' ' . (int) $minutesInResid . ' ' . CTasksTools::getMessagePlural((int) $minutesInResid, 'TASKS_TASK_DURATION_MINUTES'); } else { $duration = $hours . ' ' . CTasksTools::getMessagePlural($hours, 'TASKS_TASK_DURATION_HOURS'); } if ($bDataInSeconds && $in < 3600) { if ($secondsInResid = $in % 60) { $duration .= ' ' . (int) $secondsInResid . ' ' . CTasksTools::getMessagePlural((int) $secondsInResid, 'TASKS_TASK_DURATION_SECONDS'); } } return $duration; }
public function isActionAllowed($actionId) { $isActionAllowed = false; CTaskAssert::assertLaxIntegers($actionId); $actionId = (int) $actionId; $isAdmin = CTasksTools::IsAdmin($this->executiveUserId) || CTasksTools::IsPortalB24Admin($this->executiveUserId); if ($actionId === self::ACTION_ELAPSED_TIME_ADD) { $isActionAllowed = $this->oTaskItem->isActionAllowed(CTaskItem::ACTION_ELAPSED_TIME_ADD); } elseif ($actionId === self::ACTION_ELAPSED_TIME_MODIFY || $actionId === self::ACTION_ELAPSED_TIME_REMOVE) { $arItemData = $this->getData($bEscape = false); if ($isAdmin || $arItemData['USER_ID'] == $this->executiveUserId) { $isActionAllowed = true; } } return $isActionAllowed; }
private static function checkUserCanViewGroupExtended($userId, $groupId) { if (!isset(self::$cache['GROUP_ACCESS_EXT'][$groupId][$userId]) || !self::$cacheData) { self::$cache['GROUP_ACCESS_EXT'][$groupId][$userId] = CTasksTools::HasUserReadAccessToGroup($userId, $groupId); } return self::$cache['GROUP_ACCESS_EXT'][$groupId][$userId]; }
protected static function getTimemanCloseDayData($arParams) { if (CModule::IncludeModule('timeman')) { global $USER; $arTasks = array(); $userId = $USER->getId(); $runningTaskId = null; $taskRunTime = null; // key features of that info: // [REPORT_REQ] => 'A' means that day will be closed right now. other variants - just form show. // [INFO][DATE_START] => 1385459336 - unix timestamp of day start // [INFO][TIME_START] => 46136 - short timestamp of day start // [DURATION] // [TIME_LEAKS] $arTimemanInfo = CTimeMan::GetRunTimeInfo(true); if (!($userId > 0)) { foreach ($arTimemanInfo['PLANNER']['DATA']['TASKS'] as $arTask) { $arTask['TIME'] = 0; $arTasks[] = $arTask; } return array('TASKS' => $arTasks); } $unixTsDateStart = (int) $arTimemanInfo['INFO']['DATE_START']; $oTimer = CTaskTimerManager::getInstance($userId); $arTimer = $oTimer->getLastTimer(); if ($arTimer && $arTimer['TIMER_STARTED_AT'] > 0) { $runningTaskId = $arTimer['TASK_ID']; if ($arTimer['TIMER_STARTED_AT'] >= $unixTsDateStart) { $taskRunTime = max(0, time() - (int) $arTimer['TIMER_STARTED_AT']); } else { $taskRunTime = max(0, time() - $unixTsDateStart); } } $bitrixTimestampDateStart = $unixTsDateStart + CTasksTools::getTimeZoneOffset(); $dateStartAsString = ConvertTimeStamp($bitrixTimestampDateStart, 'FULL'); foreach ($arTimemanInfo['PLANNER']['DATA']['TASKS'] as $arTask) { $rsElapsedTime = CTaskElapsedTime::getList(array('ID' => 'ASC'), array('TASK_ID' => $arTask['ID'], 'USER_ID' => $userId, '>=CREATED_DATE' => $dateStartAsString), array('skipJoinUsers' => true)); $arTask['TIME'] = 0; while ($arElapsedTime = $rsElapsedTime->fetch()) { $arTask['TIME'] += max(0, $arElapsedTime['SECONDS']); } if ($runningTaskId && $arTask['ID'] == $runningTaskId) { $arTask['TIME'] += $taskRunTime; } $arTasks[] = $arTask; } return array('TASKS' => $arTasks); } }
/** * @param $arOrder * @param $arFilter * @param array $arNavParams * @param array $arParams * @param array $arSelect * @return bool|CDBResult * * @global $DB CDatabase * @global $DBType string */ public static function GetList($arOrder, $arFilter, $arNavParams = array(), $arParams = array(), $arSelect = array()) { global $DB, $DBType, $USER_FIELD_MANAGER; $arSqlSearch = CTaskTemplates::GetFilter($arFilter, $arParams); // check permissions if (isset($arParams['USER_ID'])) { $executiveUserId = (int) $arParams['USER_ID']; $isAdmin = CTasksTools::IsAdmin($executiveUserId) || CTasksTools::IsPortalB24Admin($executiveUserId); if (!$isAdmin) { $sql = 'TT.CREATED_BY = ' . (int) $executiveUserId; if ($executiveUserId && ($arDepsIDs = CTasks::GetSubordinateDeps($executiveUserId))) { if (!is_array($arDepsIDs)) { $arDepsIDs = array(intval($arDepsIDs)); } /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rsDepartmentField = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => "USER", "FIELD_NAME" => "UF_DEPARTMENT")); $cntOfDepartments = count($arDepsIDs); if ($cntOfDepartments && ($arDepartmentField = $rsDepartmentField->Fetch())) { if (strtolower($DBType) === 'oracle' && ($valuesLimit = 1000) && $cntOfDepartments > $valuesLimit) { $arConstraints = array(); $sliceIndex = 0; while ($sliceIndex < $cntOfDepartments) { $arConstraints[] = 'BUF1.VALUE_INT IN (' . implode(',', array_slice($arDepsIDs, $sliceIndex, $valuesLimit)) . ')'; $sliceIndex += $valuesLimit; } $strConstraint = '(' . implode(' OR ', $arConstraints) . ')'; } else { $strConstraint = "BUF1.VALUE_INT IN (" . implode(",", $arDepsIDs) . ")"; } $sql .= "\n\t\t\t\t\t\t\tOR EXISTS (\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\t'x'\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\tb_utm_user BUF1\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\tBUF1.FIELD_ID = " . $arDepartmentField["ID"] . "\n\t\t\t\t\t\t\t\tAND BUF1.VALUE_ID = TT.CREATED_BY\n\t\t\t\t\t\t\t\tAND " . $strConstraint . "\n\t\t\t\t\t\t\t) "; } } $arSqlSearch[] = ' (' . $sql . ') '; } } $obUserFieldsSql = new CUserTypeSQL(); $obUserFieldsSql->SetEntity("TASKS_TASK_TEMPLATE", "TT.ID"); $obUserFieldsSql->SetSelect($arSelect); $obUserFieldsSql->SetFilter($arFilter); $obUserFieldsSql->SetOrder($arOrder); $r = $obUserFieldsSql->GetFilter(); if (strlen($r) > 0) { $arSqlSearch[] = "(" . $r . ")"; } $arFields = array('ID' => array('FIELD' => 'TT.ID', 'DEFAULT' => true), 'TITLE' => array('FIELD' => 'TT.TITLE', 'DEFAULT' => true), 'DESCRIPTION' => array('FIELD' => 'TT.DESCRIPTION', 'DEFAULT' => true), 'DESCRIPTION_IN_BBCODE' => array('FIELD' => 'TT.DESCRIPTION_IN_BBCODE', 'DEFAULT' => true), 'PRIORITY' => array('FIELD' => 'TT.PRIORITY', 'DEFAULT' => true), 'STATUS' => array('FIELD' => 'TT.STATUS', 'DEFAULT' => true), 'RESPONSIBLE_ID' => array('FIELD' => 'TT.RESPONSIBLE_ID', 'DEFAULT' => true), 'DEADLINE_AFTER' => array('FIELD' => 'TT.DEADLINE_AFTER', 'DEFAULT' => true), 'REPLICATE' => array('FIELD' => 'TT.REPLICATE', 'DEFAULT' => true), 'REPLICATE_PARAMS' => array('FIELD' => 'TT.REPLICATE_PARAMS', 'DEFAULT' => true), 'CREATED_BY' => array('FIELD' => 'TT.CREATED_BY', 'DEFAULT' => true), 'XML_ID' => array('FIELD' => 'TT.XML_ID', 'DEFAULT' => true), 'ALLOW_CHANGE_DEADLINE' => array('FIELD' => 'TT.ALLOW_CHANGE_DEADLINE', 'DEFAULT' => true), 'ALLOW_TIME_TRACKING' => array('FIELD' => 'TT.ALLOW_TIME_TRACKING', 'DEFAULT' => true), 'TASK_CONTROL' => array('FIELD' => 'TT.TASK_CONTROL', 'DEFAULT' => true), 'ADD_IN_REPORT' => array('FIELD' => 'TT.ADD_IN_REPORT', 'DEFAULT' => true), 'GROUP_ID' => array('FIELD' => 'TT.GROUP_ID', 'DEFAULT' => true), 'PARENT_ID' => array('FIELD' => 'TT.PARENT_ID', 'DEFAULT' => true), 'MULTITASK' => array('FIELD' => 'TT.MULTITASK', 'DEFAULT' => true), 'SITE_ID' => array('FIELD' => 'TT.SITE_ID', 'DEFAULT' => true), 'ACCOMPLICES' => array('FIELD' => 'TT.ACCOMPLICES', 'DEFAULT' => true), 'AUDITORS' => array('FIELD' => 'TT.AUDITORS', 'DEFAULT' => true), 'RESPONSIBLES' => array('FIELD' => 'TT.RESPONSIBLES', 'DEFAULT' => true), 'FILES' => array('FIELD' => 'TT.FILES', 'DEFAULT' => true), 'TAGS' => array('FIELD' => 'TT.TAGS', 'DEFAULT' => true), 'DEPENDS_ON' => array('FIELD' => 'TT.DEPENDS_ON', 'DEFAULT' => true), 'TASK_ID' => array('FIELD' => 'TT.TASK_ID', 'DEFAULT' => true), 'TPARAM_TYPE' => array('FIELD' => 'TT.TPARAM_TYPE', 'DEFAULT' => true), 'BASE_TEMPLATE_ID' => array('FIELD' => 'CASE WHEN TDD.' . Template\DependencyTable::getPARENTIDColumnName() . ' IS NULL THEN 0 ELSE TDD.' . Template\DependencyTable::getPARENTIDColumnName() . ' END', 'DEFAULT' => false), 'TEMPLATE_CHILDREN_COUNT' => array('FIELD' => 'CASE WHEN TEMPLATE_CHILDREN_COUNT IS NULL THEN 0 ELSE TEMPLATE_CHILDREN_COUNT END', 'DEFAULT' => false), 'CREATED_BY_NAME' => array('FIELD' => 'CU.NAME', 'DEFAULT' => true, 'ALWAYS' => true), 'CREATED_BY_LAST_NAME' => array('FIELD' => 'CU.LAST_NAME ', 'DEFAULT' => true, 'ALWAYS' => true), 'CREATED_BY_SECOND_NAME' => array('FIELD' => 'CU.SECOND_NAME', 'DEFAULT' => true, 'ALWAYS' => true), 'CREATED_BY_LOGIN' => array('FIELD' => 'CU.LOGIN', 'DEFAULT' => true, 'ALWAYS' => true), 'CREATED_BY_WORK_POSITION' => array('FIELD' => 'CU.WORK_POSITION', 'DEFAULT' => true, 'ALWAYS' => true), 'CREATED_BY_PHOTO' => array('FIELD' => 'CU.PERSONAL_PHOTO', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_NAME' => array('FIELD' => 'RU.NAME', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_LAST_NAME' => array('FIELD' => 'RU.LAST_NAME', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_SECOND_NAME' => array('FIELD' => 'RU.SECOND_NAME', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_LOGIN' => array('FIELD' => 'RU.LOGIN', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_WORK_POSITION' => array('FIELD' => 'RU.WORK_POSITION', 'DEFAULT' => true, 'ALWAYS' => true), 'RESPONSIBLE_PHOTO' => array('FIELD' => 'RU.PERSONAL_PHOTO', 'DEFAULT' => true, 'ALWAYS' => true)); $filterByBaseTemplate = false; $selectBaseTemplateId = false; $useChildrenCount = false; if (!is_array($arSelect)) { $arSelect = array(); } $defaultSelect = array(); $alwaysSelect = array(); foreach ($arFields as $field => $rule) { if ($rule['DEFAULT']) { $defaultSelect[] = $field; } if ($rule['ALWAYS']) { $alwaysSelect[] = $field; } } if (count($arSelect) <= 0) { $arSelect = $defaultSelect; } elseif (in_array("*", $arSelect)) { $arSelect = array_diff(array_merge($defaultSelect, $arSelect), array("*")); } $arSelect = array_merge($arSelect, $alwaysSelect); $selectBaseTemplateId = in_array('BASE_TEMPLATE_ID', $arSelect); $useChildrenCount = in_array('TEMPLATE_CHILDREN_COUNT', $arSelect); if (!is_array($arOrder)) { $arOrder = array(); } foreach ($arOrder as $field => $direction) { if ($field == 'BASE_TEMPLATE_ID') { $selectBaseTemplateId = true; } if ($field == 'TEMPLATE_CHILDREN_COUNT') { $useChildrenCount = true; } } if (!is_array($arFilter)) { $arFilter = array(); } if (!is_array($arParams)) { $arParams = array(); } foreach ($arFilter as $key => $value) { $keyParsed = CTasks::MkOperationFilter($key); if ($keyParsed['FIELD'] == 'BASE_TEMPLATE_ID') { $filterByBaseTemplate = true; } if ($keyParsed['FIELD'] == 'TEMPLATE_CHILDREN_COUNT') { $useChildrenCount = true; } } $includeSubtree = $arParams['INCLUDE_TEMPLATE_SUBTREE'] === true || $arParams['INCLUDE_TEMPLATE_SUBTREE'] === 'Y'; $excludeSubtree = $arParams['EXCLUDE_TEMPLATE_SUBTREE'] === true || $arParams['EXCLUDE_TEMPLATE_SUBTREE'] === 'Y'; $treeJoin = ''; if ($excludeSubtree) { $treeJoin = ""; } else { $treeJoin = "LEFT JOIN " . Template\DependencyTable::getTableName() . " TD on TT.ID = TD.TEMPLATE_ID" . ($includeSubtree ? "" : " AND TD.DIRECT = '1'"); } $temporalTableName = \Bitrix\Tasks\DB\Helper::getTemporaryTableNameSql(); $strFrom = "FROM\n\t\t\t\tb_tasks_template TT\n\n\t\t\t" . $treeJoin . "\n\n\t\t\t" . ($selectBaseTemplateId ? "\n\t\t\tLEFT JOIN\n\t\t\t\t" . Template\DependencyTable::getTableName() . " TDD ON TT.ID = TDD.TEMPLATE_ID AND TDD.DIRECT = '1'\n\t\t\t" : "\n\t\t\t") . "\n\n\t\t\t" . ($useChildrenCount ? "\n\t\t\t\tLEFT JOIN (\n\t\t\t\t\tSELECT TTI.ID, COUNT(TDDC.TEMPLATE_ID) AS TEMPLATE_CHILDREN_COUNT\n\t\t\t\t\tfrom\n\t\t\t\t\t\tb_tasks_template TTI\n\t\t\t\t\t\tINNER JOIN " . Template\DependencyTable::getTableName() . " TDDC ON TTI.ID = TDDC.PARENT_TEMPLATE_ID AND TDDC.DIRECT = '1'\n\t\t\t\t\tGROUP BY TTI.ID\n\t\t\t\t) " . $temporalTableName . " on " . $temporalTableName . ".ID = TT.ID\n\t\t\t" : "\n\t\t\t") . "\n\n\t\t\tLEFT JOIN\n\t\t\t\tb_user CU ON CU.ID = TT.CREATED_BY\n\t\t\tLEFT JOIN\n\t\t\t\tb_user RU ON RU.ID = TT.RESPONSIBLE_ID\n\t\t\t\n\t\t\t" . $obUserFieldsSql->GetJoin("TT.ID") . "\n\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . " "; foreach ($arOrder as $by => $order) { $by = strtolower($by); $order = strtolower($order); if ($order != "asc") { $order = "desc"; } if ($by == "task") { $arSqlOrder[] = " TT " . $order . " "; } elseif ($by == "title") { $arSqlOrder[] = " TT.TITLE " . $order . " "; } elseif ($by == "depends_on") { $arSqlOrder[] = " TT.DEPENDS_ON " . $order . " "; } elseif ($by == "rand") { $arSqlOrder[] = CTasksTools::getRandFunction(); } elseif ($by === 'responsible_last_name') { $arSqlOrder[] = " RU.LAST_NAME " . $order . " "; } elseif ($by === 'tparam_type') { $arSqlOrder[] = " TT.TPARAM_TYPE " . $order . " "; } elseif ($by === 'template_children_count') { $arSqlOrder[] = " TEMPLATE_CHILDREN_COUNT " . $order . " "; } elseif ($by === 'base_template_id') { $arSqlOrder[] = " BASE_TEMPLATE_ID " . $order . " "; } elseif (substr($by, 0, 3) === 'uf_') { if ($s = $obUserFieldsSql->GetOrder($by)) { $arSqlOrder[$by] = " " . $s . " " . $order . " "; } } else { $arSqlOrder[] = " TT.ID " . $order . " "; $by = "id"; } if ($by !== 'rand' && !in_array(strtoupper($by), $arSelect)) { $arSelect[] = strtoupper($by); } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); $arSqlOrderCnt = count($arSqlOrder); for ($i = 0; $i < $arSqlOrderCnt; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } if (!in_array("ID", $arSelect)) { $arSelect[] = "ID"; } $arSqlSelect = array(); foreach ($arSelect as $field) { $field = strtoupper($field); if (array_key_exists($field, $arFields)) { $arSqlSelect[$field] = \Bitrix\Tasks\DB\Helper::wrapColumnWithFunction($arFields[$field]['FIELD'], $arFields[$field]['WRAP']) . " AS " . $field; } } if (!sizeof($arSqlSelect)) { $arSqlSelect = "TT.ID AS ID"; } else { $arSqlSelect = implode(",\n", $arSqlSelect); } $ufSelect = $obUserFieldsSql->GetSelect(); if (strlen($ufSelect)) { $arSqlSelect .= $ufSelect; } $strSql = "\n\t\t\tSELECT \n\t\t\t\t" . $arSqlSelect . "\n\t\t\t\t" . $strFrom . "\n\t\t\t\t" . $strSqlOrder; if (isset($arNavParams["NAV_PARAMS"]) && is_array($arNavParams["NAV_PARAMS"])) { $nTopCount = (int) $arNavParams['NAV_PARAMS']['nTopCount']; if ($nTopCount > 0) { $strSql = $DB->TopSql($strSql, $nTopCount); $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $res->SetUserFields($USER_FIELD_MANAGER->GetUserFields("TASKS_TASK_TEMPLATE")); } else { $res_cnt = $DB->Query("SELECT COUNT(TT.ID) as C " . $strFrom); $res_cnt = $res_cnt->Fetch(); $res = new CDBResult(); $res->SetUserFields($USER_FIELD_MANAGER->GetUserFields("TASKS_TASK_TEMPLATE")); $res->NavQuery($strSql, $res_cnt["C"], $arNavParams["NAV_PARAMS"]); } } else { $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $res->SetUserFields($USER_FIELD_MANAGER->GetUserFields("TASKS_TASK_TEMPLATE")); } return $res; }
} } if (!$arData["CREATED_BY"]) { $arData["CREATED_BY"] = $USER->GetID(); $arData["CREATED_BY_NAME"] = $USER->GetFirstName(); $arData["CREATED_BY_LAST_NAME"] = $USER->GetLastName(); $arData["CREATED_BY_SECOND_NAME"] = $USER->GetSecondName(); $arData["CREATED_BY_LOGIN"] = $USER->GetLogin(); } // HTML-format must be supported in future, because old tasks' data not converted from HTML to BB if ($arData['DESCRIPTION_IN_BBCODE'] !== 'Y') { if (array_key_exists('DESCRIPTION', $arData)) { $arData['DESCRIPTION'] = CTasksTools::SanitizeHtmlDescriptionIfNeed($arData['DESCRIPTION']); } if (array_key_exists('~DESCRIPTION', $arData)) { $arData['~DESCRIPTION'] = CTasksTools::SanitizeHtmlDescriptionIfNeed($arData['~DESCRIPTION']); } } else { $arData['META:DESCRIPTION_FOR_BBCODE'] = $arData['DESCRIPTION']; $parser = new CTextParser(); $arData['~DESCRIPTION'] = $parser->convertText($arData['META:DESCRIPTION_FOR_BBCODE']); $arData['DESCRIPTION'] = $arData['~DESCRIPTION']; } $arResult["DATA"] = $arData; // base template, if any if (intval($arResult["DATA"]['BASE_TEMPLATE_ID'])) { $baseTemplate = CTaskTemplates::GetList(array(), array("ID" => $arResult["DATA"]['BASE_TEMPLATE_ID']), array(), array('USER_ID' => $USER->getId()), array('*'))->GetNext(); if (is_array($baseTemplate)) { $arResult["DATA"]['BASE_TEMPLATE_DATA'] = $baseTemplate; } else { unset($arResult["DATA"]['BASE_TEMPLATE_ID']);
function CanCurrentUserAdd($task) { global $USER; if (!($userID = $USER->GetID())) { return false; } elseif ($USER->IsAdmin() || CTasksTools::IsPortalB24Admin() || $userID == $task["RESPONSIBLE_ID"] || is_array($task["ACCOMPLICES"]) && in_array($USER->GetID(), $task["ACCOMPLICES"])) { return true; } return false; }
function GetList($arOrder, $arFilter) { /** @global CDatabase $DB */ global $DB; $arSqlSearch = CTaskReminders::GetFilter($arFilter); $strSql = "\n\t\t\tSELECT\n\t\t\t\tTR.*,\n\t\t\t\t" . $DB->DateToCharFunction("TR.REMIND_DATE") . " AS REMIND_DATE\n\t\t\tFROM\n\t\t\t\tb_tasks_reminder TR\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t"; if (!is_array($arOrder)) { $arOrder = array(); } foreach ($arOrder as $by => $order) { $by = strtolower($by); $order = strtolower($order); if ($order != "asc") { $order = "desc"; } if ($by == "task") { $arSqlOrder[] = " TR.TASK_ID " . $order . " "; } elseif ($by == "user") { $arSqlOrder[] = " TR.USER_ID " . $order . " "; } elseif ($by == "date") { $arSqlOrder[] = " TR.REMIND_DATE " . $order . " "; } elseif ($by == "rand") { $arSqlOrder[] = CTasksTools::getRandFunction(); } else { $arSqlOrder[] = " TR.TASK_ID " . $order . " "; } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); $arSqlOrderCnt = count($arSqlOrder); for ($i = 0; $i < $arSqlOrderCnt; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= $strSqlOrder; return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); }
} preg_match('/MEETING_([0-9]+)/', $xmlID, $matches); if (sizeof($matches) > 0) { $meetingID = $matches[1]; if (CMeeting::GetUserRole($meetingID) !== false) { $arParams['PERMISSION'] = 'M'; } } } } if (IsModuleInstalled('tasks') && CModule::IncludeModule('tasks')) { $tasksIsTasksJurisdiction = false; // Insurance for cross-modules version compatibility if (method_exists('CTasksTools', 'ListTasksForumsAsArray')) { try { $arTasksForums = CTasksTools::ListTasksForumsAsArray(); if (in_array((int) $arResult['FORUM']['ID'], $arTasksForums, true)) { $tasksIsTasksJurisdiction = true; } } catch (TasksException $e) { // do nothing } } else { // TODO: this old code section to be removed in next versions. $forumId = COption::GetOptionString('tasks', 'task_forum_id', -1); if ($forumId !== -1 && (int) $arResult['FORUM']['ID'] === (int) $forumId) { $tasksIsTasksJurisdiction = true; } } if ($tasksIsTasksJurisdiction) { $arParams['PERMISSION'] = 'D';
private function getCounts($arGroupsIds) { $arCounters = array(); if (empty($arGroupsIds)) { return; } foreach ($arGroupsIds as $groupId) { $arCounters[$groupId] = array('ALL' => 0, 'IN_WORK' => 0, 'COMPLETE' => 0); } $oFilter = CTaskFilterCtrl::getInstance($this->arParams['USER_ID'], true); $arFilterAll = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_ALL_MY_TASKS); $arFilterInWork = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_ACTIVE_MY_TASKS); $arFilterComplete = $oFilter->getFilterPresetConditionById(CTaskFilterCtrl::STD_PRESET_COMPLETED_MY_TASKS); $arFilterInWorkExpired = $arFilterInWork; $arFilterInWorkExpired['<DEADLINE'] = ConvertTimeStamp(time() + CTasksTools::getTimeZoneOffset(), 'FULL'); $arFilterAll['GROUP_ID'] = $arGroupsIds; $arFilterInWork['GROUP_ID'] = $arGroupsIds; $arFilterComplete['GROUP_ID'] = $arGroupsIds; $arFilterInWorkExpired['GROUP_ID'] = $arGroupsIds; $arMap = array('ALL' => &$arFilterAll, 'IN_WORK' => &$arFilterInWork, 'COMPLETE' => &$arFilterComplete, 'EXPIRED' => &$arFilterInWorkExpired); foreach ($arMap as $key => &$arFilter) { $rs = CTasks::GetCount($arFilter, array('bSkipUserFields' => true, 'bSkipExtraTables' => true, 'bSkipJoinTblViewed' => false), array('GROUP_ID')); while ($ar = $rs->fetch()) { $groupId = (int) $ar['GROUP_ID']; if ($groupId) { $arCounters[$groupId][$key] = (int) $ar['CNT']; } } } unset($arFilter); return $arCounters; }
function __checkForum($forumID) { if (!($settingsForumID = COption::GetOptionString("tasks", "task_forum_id"))) { if ((int) $forumID > 0) { COption::SetOptionString("tasks", "task_forum_id", intval($forumID)); } } if (IsModuleInstalled('extranet')) { if (-1 === COption::GetOptionString('tasks', 'task_extranet_forum_id', -1, $siteId = '')) { try { $extranetForumID = CTasksTools::GetForumIdForExtranet(); COption::SetOptionString('tasks', 'task_extranet_forum_id', $extranetForumID, '', $siteId = ''); } catch (TasksException $e) { COption::SetOptionString('tasks', 'task_extranet_forum_id', (int) $forumID, '', $siteId = ''); } } } if (CModule::IncludeModule("forum") && $forumID && COption::GetOptionString("tasks", "forum_checked", false)) { $arGroups = array(); $rs = CGroup::GetList($order = 'id', $by = 'asc', array()); while ($ar = $rs->Fetch()) { $arGroups[$ar['ID']] = 'A'; } CForumNew::Update($forumID, array("GROUP_ID" => $arGroups, "INDEXATION" => "Y")); COption::RemoveOption("tasks", "forum_checked"); } }
$imageFile = CFile::GetFileArray($arUser['PERSONAL_PHOTO']); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet($imageFile, array("width" => $arParams['AVATAR_SIZE']['width'], "height" => $arParams['AVATAR_SIZE']['height']), BX_RESIZE_IMAGE_EXACT, false); $arUsersExtraData[$arUser['ID']]['META:AVATAR_SRC'] = $arFileTmp['src']; } } } unset($rsUser, $arUser); $arTask['META::RESPONSIBLE_FORMATTED_NAME'] = $arUsersExtraData[$arTask['RESPONSIBLE_ID']]['META:NAME_FORMATTED']; $arTask['META::ORIGINATOR_FORMATTED_NAME'] = $arUsersExtraData[$arTask['CREATED_BY']]['META:NAME_FORMATTED']; $arTask['META::RESPONSIBLE_PHOTO_SRC'] = $arUsersExtraData[$arTask['RESPONSIBLE_ID']]['META:AVATAR_SRC']; $arTask['META::ORIGINATOR_PHOTO_SRC'] = $arUsersExtraData[$arTask['CREATED_BY']]['META:AVATAR_SRC']; // Format deadline $arTask['META:FORMATTED_DATA']['DATETIME_SEXY'] = null; if (MakeTimeStamp($arTask['DEADLINE']) > 86400) { $arTask['META:FORMATTED_DATA']['DATETIME_SEXY'] = CTasksTools::FormatDatetimeBeauty($arTask['DEADLINE'], array(), $arParams['DATE_TIME_FORMAT']); } // Get group name $arTask['META:GROUP_NAME'] = null; if ($arTask['GROUP_ID'] > 0) { $arGroup = CSocNetGroup::GetByID($arTask['GROUP_ID']); $arTask['META:GROUP_NAME'] = $arGroup['NAME']; } $arTask['META:SOME_USERS_EXTRA_DATA'] = $arUsersExtraData; $arTask['META::ALLOWED_ACTIONS'] = CTasks::GetAllowedActions($arTask); $arResult['TASK'] = $arTask; $arResult['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE']; CTasks::UpdateViewed($arTask['ID'], $arParams['USER_ID']); if ($arParams['SHOW_TEMPLATE'] === 'Y') { $this->IncludeComponentTemplate(); }
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)); }
case CTasks::STATE_DECLINED: $task['META::STATUS_FORMATTED_NAME'] = GetMessage('MB_TASKS_TASKS_LIST_STATUS_DECLINED'); break; default: $task['META::STATUS_FORMATTED_NAME'] = $task['REAL_STATUS']; break; } $task['META::STATUS_FORMATTED_NAME'] .= ' ' . GetMessage('MB_TASKS_TASKS_LIST_STATUS_DATE_PREPOSITION') . ' ' . CTasksTools::FormatDatetimeBeauty($task['STATUS_CHANGED_DATE'], array(), $arParams['DATE_TIME_FORMAT']); $task['META:DEADLINE_FORMATTED'] = ''; if (MakeTimeStamp($task['DEADLINE']) > 86400) { $task['META:DEADLINE_FORMATTED'] = CTasksTools::FormatDatetimeBeauty($task['DEADLINE'], array(), $arParams['DATE_TIME_FORMAT']); } // HTML-format must be supported in future, because old tasks' data not converted from HTML to BB if ($task['DESCRIPTION_IN_BBCODE'] === 'N') { // HTML detected, sanitize if need $task['DESCRIPTION'] = CTasksTools::SanitizeHtmlDescriptionIfNeed($task['DESCRIPTION']); } else { $task['DESCRIPTION'] = $parser->convertText($task['DESCRIPTION']); } // files list will be fetched below $task['FILES'] = array(); } $arResult['TASKS'][$task['ID']] = $task; } $arResult['TASKS_IDS_AS_INTEGERS'] = $arTasksIDs; $arTaskOriginatorsAndResponsibles = array_unique($arTaskOriginatorsAndResponsibles); // Get photos for originators and responsibles $rsUser = CUser::GetList($passByReference1 = 'id', $passByReference2 = 'asc', $passByReference3 = array('ID' => implode('|', $arTaskOriginatorsAndResponsibles))); $arUsersPhotos = array(); while ($arUser = $rsUser->Fetch()) { $arUsersPhotos[$arUser['ID']] = false;
echo GetMessage("TASKS_TASK_REPEAT_START"); ?> </label><span class="webform-field webform-field-textbox webform-field-textbox-clearable<?php echo !$arData["REPLICATE_START_DATE"] ? " webform-field-textbox-empty" : ""; ?> task-repeating-interval-start-date"><span class="webform-field-textbox-inner"><input type="text" id="task-repeating-interval-start-date" class="webform-field-textbox" name="REPLICATE_START_DATE" value="<?php echo CTasksTools::stripZeroTime($arData["REPLICATE_START_DATE"]); ?> " readonly="readonly" /><a class="webform-field-textbox-clear" href=""></a></span></span><label for="task-repeating-interval-end-date"><?php echo GetMessage("TASKS_TASK_REPEAT_END"); ?> </label><span class="webform-field webform-field-textbox webform-field-textbox-clearable<?php echo !$arData["REPLICATE_END_DATE"] ? " webform-field-textbox-empty" : ""; ?> task-repeating-interval-end-date"><span class="webform-field-textbox-inner"><input type="text" id="task-repeating-interval-end-date" class="webform-field-textbox" name="REPLICATE_END_DATE" value="<?php echo CTasksTools::stripZeroTime($arData["REPLICATE_END_DATE"]); ?> " readonly="readonly" /><a class="webform-field-textbox-clear" href=""></a></span></span></div> </div> </div> </div> </td> </tr> </table> </div> <?php if (sizeof($arResult["USER_FIELDS"])) { ?> <div class="webform-row task-additional-properties-row">
} if (isset($arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_EXPIRED']['COUNTER'])) { $arResult['TASKS_EXPIRED_COUNTER'] = array('VALUE' => $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_EXPIRED']['COUNTER']); $arResult['TASKS_EXPIRED_COUNTER']['PLURAL'] = CTasksTools::getPluralForm($arResult['TASKS_EXPIRED_COUNTER']['VALUE']); } if (isset($arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES']['COUNTER'])) { $arResult['TASKS_EXPIRED_CANDIDATES_COUNTER'] = array('VALUE' => $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES']['COUNTER']); $arResult['TASKS_EXPIRED_CANDIDATES_COUNTER']['PLURAL'] = CTasksTools::getPluralForm($arResult['TASKS_EXPIRED_CANDIDATES_COUNTER']['VALUE']); } if (isset($arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_WAIT_CTRL']['COUNTER'])) { $arResult['TASKS_WAIT_CTRL_COUNTER'] = array('VALUE' => $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_WAIT_CTRL']['COUNTER']); $arResult['TASKS_WAIT_CTRL_COUNTER']['PLURAL'] = CTasksTools::getPluralForm($arResult['TASKS_WAIT_CTRL_COUNTER']['VALUE']); } if (isset($arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_WO_DEADLINE']['COUNTER'])) { $arResult['TASKS_WO_DEADLINE_COUNTER'] = array('VALUE' => $arResult['VIEW_COUNTERS']['ROLES'][$selectedRoleCodename]['VIEW_TASK_CATEGORY_WO_DEADLINE']['COUNTER']); $arResult['TASKS_WO_DEADLINE_COUNTER']['PLURAL'] = CTasksTools::getPluralForm($arResult['TASKS_WO_DEADLINE_COUNTER']['VALUE']); } } } $arResult['SEARCH_STRING'] = null; $arResult['ADV_FILTER'] = array('F_ADVANCED' => 'N'); if (isset($arParams['ADV_FILTER']['F_ADVANCED']) && $arParams['ADV_FILTER']['F_ADVANCED'] === 'Y') { $arResult['ADV_FILTER'] = $arParams['ADV_FILTER']; if (isset($arParams['ADV_FILTER']['F_META::ID_OR_NAME'])) { $arResult['SEARCH_STRING'] = $arParams['ADV_FILTER']['F_META::ID_OR_NAME']; } elseif (isset($arParams['ADV_FILTER']['F_TITLE'])) { $arResult['SEARCH_STRING'] = $arParams['ADV_FILTER']['F_TITLE']; } } // from\for switch $queryList = $request->getQueryList();
public static function GetList($arOrder, $arFilter) { global $DB; $arSqlSearch = array_filter(CTaskMembers::GetFilter($arFilter)); $strSqlSearch = ""; $arSqlSearchCnt = count($arSqlSearch); for ($i = 0; $i < $arSqlSearchCnt; $i++) { if (strlen($arSqlSearch[$i]) > 0) { $strSqlSearch .= " AND " . $arSqlSearch[$i] . " "; } } $strSql = "\n\t\t\tSELECT\n\t\t\t\tTM.*\n\t\t\tFROM\n\t\t\t\tb_tasks_member TM\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t"; if (!is_array($arOrder)) { $arOrder = array(); } foreach ($arOrder as $by => $order) { $by = strtolower($by); $order = strtolower($order); if ($order != "asc") { $order = "desc"; } if ($by === 'task' || $by === 'task_id') { $arSqlOrder[] = " TM.TASK_ID " . $order . " "; } elseif ($by === 'user' || $by === 'user_id') { $arSqlOrder[] = " TM.USER_ID " . $order . " "; } elseif ($by === 'type') { $arSqlOrder[] = " TM.TYPE " . $order . " "; } elseif ($by == "rand") { $arSqlOrder[] = CTasksTools::getRandFunction(); } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); $arSqlOrderCnt = count($arSqlOrder); for ($i = 0; $i < $arSqlOrderCnt; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= $strSqlOrder; return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); }
} $APPLICATION->IncludeComponent("bitrix:tasks.task.detail.parts", ".default", array('INNER_HTML' => $_POST['INNER_HTML'], 'MODE' => $_POST['MODE'], 'BLOCKS' => array($_POST['BLOCK']), 'IS_IFRAME' => $isIframe, 'PATH_TO_TEMPLATES_TEMPLATE' => $_POST['PATH_TO_TEMPLATES_TEMPLATE'], 'PATH_TO_USER_PROFILE' => $_POST['PATH_TO_USER_PROFILE'], 'PATH_TO_TASKS_TASK' => $_POST['PATH_TO_TASKS_TASK'], 'FIRE_ON_CHANGED_EVENT' => $_POST['FIRE_ON_CHANGED_EVENT'], 'NAME_TEMPLATE' => $nameTemplate, 'LOAD_TASK_DATA' => 'Y', 'TASK_ID' => (int) $_POST['TASK_ID']), null, array('HIDE_ICONS' => 'Y')); break; default: CTaskAssert::logError('[0x4fae6498] Unexpected $_POST[\'BLOCK\'] value: ' . $_POST['BLOCK']); break; } } else { CTaskAssert::logError('[0x0907bb31] $_POST[\'BLOCK\'] expected, but not given'); } } elseif ($action === 'render_comments') { CModule::IncludeModule('tasks'); CModule::IncludeModule('forum'); $permission = 'A'; $oTask = CTaskItem::getInstanceFromPool($_POST['taskId'], $loggedInUserId); $arTask = $oTask->getData($bEscape = false); $arTaskUsers = CTasks::__GetSearchPermissions($arTask); if ($USER->CanAccess($arTaskUsers) === true || $USER->IsAdmin() || CTasksTools::IsPortalB24Admin()) { $permission = 'M'; } $APPLICATION->RestartBuffer(); header('Content-Type: text/html; charset=' . LANG_CHARSET); $APPLICATION->IncludeComponent("bitrix:forum.comments", "bitrix24", array("FORUM_ID" => $_POST['forumId'], "ENTITY_TYPE" => "TK", "ENTITY_ID" => $_POST['taskId'], "ENTITY_XML_ID" => "TASK_" . $_POST['taskId'], "URL_TEMPLATES_PROFILE_VIEW" => $_POST['PATH_TO_USER_PROFILE'], "MESSAGES_PER_PAGE" => $_POST['ITEM_DETAIL_COUNT'], "PAGE_NAVIGATION_TEMPLATE" => "arrows", "DATE_TIME_FORMAT" => CDatabase::DateFormatToPHP(FORMAT_DATETIME), "PATH_TO_SMILE" => $_POST['PATH_TO_FORUM_SMILE'], "EDITOR_CODE_DEFAULT" => "N", "SHOW_MODERATION" => "Y", "SHOW_AVATAR" => "Y", "SHOW_RATING" => $_POST['SHOW_RATING'], "RATING_TYPE" => $_POST['RATING_TYPE'], "SHOW_MINIMIZED" => "N", "USE_CAPTCHA" => "N", 'PREORDER' => 'N', "SHOW_LINK_TO_FORUM" => "N", "SHOW_SUBSCRIBE" => "N", "FILES_COUNT" => 10, "SHOW_WYSIWYG_EDITOR" => "Y", "AUTOSAVE" => true, "PERMISSION" => $permission, "NAME_TEMPLATE" => $_POST["NAME_TEMPLATE"], "MESSAGE_COUNT" => 3), null, array('HIDE_ICONS' => 'Y')); require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php'; exit; } else { CTaskAssert::logError('[0x447f7b28] Unknown action: ' . $action); } } CMain::FinalActions(); // to make events work on bitrix24
private static function getAllowedActionsArrayInternal($executiveUserId, array $arTaskData, $bmUserRoles) { $arBaseAllowedActions = self::getBaseAllowedActions(); $arActualBaseAllowedActions = $arBaseAllowedActions[$arTaskData['REAL_STATUS']]; // actions allowed on read-access $arAllowedActions = array(self::ACTION_TOGGLE_FAVORITE); if ($arTaskData['FAVORITE'] == 'Y') { $arAllowedActions[] = self::ACTION_DELETE_FAVORITE; } else { $arAllowedActions[] = self::ACTION_ADD_FAVORITE; } $mergesCount = 0; if (is_array($arActualBaseAllowedActions)) { foreach ($arActualBaseAllowedActions as $userRole => $arActions) { if ($userRole & $bmUserRoles) { $arAllowedActions = array_merge($arAllowedActions, $arActions); ++$mergesCount; } } } if ($mergesCount > 1) { $arAllowedActions = array_unique($arAllowedActions); } $isAdmin = CTasksTools::IsAdmin($executiveUserId) || CTasksTools::IsPortalB24Admin($executiveUserId); if (self::$bSocialNetworkModuleIncluded === null) { self::$bSocialNetworkModuleIncluded = CModule::IncludeModule('socialnetwork'); } // Admin always can edit and remove, also implement rights from task group if (!in_array(self::ACTION_REMOVE, $arAllowedActions, true)) { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ if ($isAdmin || $arTaskData['GROUP_ID'] > 0 && self::$bSocialNetworkModuleIncluded && CSocNetFeaturesPerms::CanPerformOperation($executiveUserId, SONET_ENTITY_GROUP, $arTaskData['GROUP_ID'], 'tasks', 'delete_tasks')) { $arAllowedActions[] = self::ACTION_REMOVE; } } if (!in_array(self::ACTION_EDIT, $arAllowedActions, true)) { /** @noinspection PhpDynamicAsStaticMethodCallInspection */ if ($isAdmin || $arTaskData['GROUP_ID'] > 0 && self::$bSocialNetworkModuleIncluded && CSocNetFeaturesPerms::CanPerformOperation($executiveUserId, SONET_ENTITY_GROUP, $arTaskData['GROUP_ID'], 'tasks', 'edit_tasks')) { $arAllowedActions[] = self::ACTION_EDIT; } } // Precache result of slow 'in_array' function $bCanEdit = in_array(self::ACTION_EDIT, $arAllowedActions, true); // User can change deadline, if ... if ($isAdmin || $bCanEdit || $arTaskData['ALLOW_CHANGE_DEADLINE'] === 'Y' && self::ROLE_RESPONSIBLE & $bmUserRoles) { $arAllowedActions[] = self::ACTION_CHANGE_DEADLINE; } // If user can edit task, he can also add elapsed time and checklist items if ($isAdmin || $bCanEdit) { $arAllowedActions[] = self::ACTION_ELAPSED_TIME_ADD; $arAllowedActions[] = self::ACTION_CHECKLIST_ADD_ITEMS; } // Director can change director, and user who can edit can if ($isAdmin || $bCanEdit || self::ROLE_DIRECTOR & $bmUserRoles) { $arAllowedActions[] = self::ACTION_CHANGE_DIRECTOR; } if ($arTaskData['ALLOW_TIME_TRACKING'] === 'Y') { // User can do time tracking, if he is participant in the task if ($executiveUserId == $arTaskData['RESPONSIBLE_ID'] || !empty($arTaskData['ACCOMPLICES']) && in_array($executiveUserId, $arTaskData['ACCOMPLICES'])) { $arAllowedActions[] = self::ACTION_START_TIME_TRACKING; } } return array_values(array_unique($arAllowedActions)); }
} } } /******************************************************************** /WebDav ********************************************************************/ /******************************************************************** Search Index ********************************************************************/ if (check_bitrix_sessid() || $_SERVER['REQUEST_METHOD'] == "PUT") { global $bxSocNetSearch; if (!is_object($bxSocNetSearch)) { if (CModule::IncludeModule('tasks')) { $tasksForumId = 0; try { $tasksForumId = intval(CTasksTools::getForumIdForIntranet()); } catch (Exception $e) { } } $arSocNetSearchParams = array("PATH_TO_GROUP" => $arResult["PATH_TO_GROUP"], "BLOG_GROUP_ID" => $arParams["BLOG_GROUP_ID"], "PATH_TO_GROUP_BLOG" => $arResult["PATH_TO_GROUP_BLOG"], "PATH_TO_GROUP_BLOG_POST" => $arResult["PATH_TO_GROUP_BLOG_POST"], "PATH_TO_GROUP_BLOG_COMMENT" => $arResult["PATH_TO_GROUP_BLOG_POST"] . "?commentId=#comment_id###comment_id#", "PATH_TO_USER_BLOG" => "", "PATH_TO_USER_BLOG_POST" => "", "PATH_TO_USER_BLOG_COMMENT" => "", "FORUM_ID" => $arParams["FORUM_ID"], "PATH_TO_GROUP_FORUM_MESSAGE" => $arResult["PATH_TO_GROUP_FORUM_MESSAGE"], "PATH_TO_USER_FORUM_MESSAGE" => "", "PHOTO_GROUP_IBLOCK_ID" => $arParams["PHOTO_GROUP_IBLOCK_ID"], "PATH_TO_GROUP_PHOTO_ELEMENT" => $arResult["PATH_TO_GROUP_PHOTO_ELEMENT"], "PHOTO_USER_IBLOCK_ID" => false, "PATH_TO_USER_PHOTO_ELEMENT" => "", "PHOTO_FORUM_ID" => $arParams["PHOTO_FORUM_ID"], "CALENDAR_GROUP_IBLOCK_ID" => $arParams["CALENDAR_GROUP_IBLOCK_ID"], "PATH_TO_GROUP_CALENDAR_ELEMENT" => $arResult["PATH_TO_GROUP_CALENDAR"] . "?EVENT_ID=#element_id#", "TASK_IBLOCK_ID" => $arParams["TASK_IBLOCK_ID"], "PATH_TO_GROUP_TASK_ELEMENT" => $arResult["PATH_TO_GROUP_TASKS_TASK"], "PATH_TO_USER_TASK_ELEMENT" => "", "TASK_FORUM_ID" => $tasksForumId > 0 ? $tasksForumId : $arParams["TASK_FORUM_ID"], "FILES_PROPERTY_CODE" => $arParams["NAME_FILE_PROPERTY"], "FILES_FORUM_ID" => $arParams["FILES_FORUM_ID"], "FILES_GROUP_IBLOCK_ID" => $arParams["FILES_GROUP_IBLOCK_ID"], "PATH_TO_GROUP_FILES_ELEMENT" => $arResult["PATH_TO_GROUP_FILES_ELEMENT"], "PATH_TO_GROUP_FILES" => $arResult["PATH_TO_GROUP_FILES"], "FILES_USER_IBLOCK_ID" => false, "PATH_TO_USER_FILES_ELEMENT" => "", "PATH_TO_USER_FILES" => ""); if (isset($arResult["PATH_TO_GROUP_WIKI_POST_COMMENT"])) { $arSocNetSearchParams["PATH_TO_GROUP_WIKI_POST_COMMENT"] = $arResult["PATH_TO_GROUP_WIKI_POST_COMMENT"]; } $bxSocNetSearch = new CSocNetSearch($arResult["VARIABLES"]["user_id"], $arResult["VARIABLES"]["group_id"], $arSocNetSearchParams); AddEventHandler("search", "BeforeIndex", array($bxSocNetSearch, "BeforeIndex")); AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array($bxSocNetSearch, "IBlockElementUpdate")); AddEventHandler("iblock", "OnAfterIBlockElementAdd", array($bxSocNetSearch, "IBlockElementUpdate")); AddEventHandler("iblock", "OnAfterIBlockElementDelete", array($bxSocNetSearch, "IBlockElementDelete")); AddEventHandler("iblock", "OnAfterIBlockSectionUpdate", array($bxSocNetSearch, "IBlockSectionUpdate")); AddEventHandler("iblock", "OnAfterIBlockSectionAdd", array($bxSocNetSearch, "IBlockSectionUpdate")); AddEventHandler("iblock", "OnAfterIBlockSectionDelete", array($bxSocNetSearch, "IBlockSectionDelete"));