コード例 #1
0
ファイル: taskentity.php プロジェクト: DarneoStudio/bitrix
 /**
  * @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;
 }
コード例 #2
0
 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());
     }
 }
コード例 #3
0
ファイル: taskentity.php プロジェクト: rasuldev/torino
 /**
  * @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();
 }
コード例 #4
0
ファイル: tasklog.php プロジェクト: DarneoStudio/bitrix
 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__);
 }
コード例 #5
0
ファイル: restservice.php プロジェクト: mrdeadmouse/u136006
 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();
     }
 }
コード例 #6
0
ファイル: checklistitem.php プロジェクト: mrdeadmouse/u136006
 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);
 }
コード例 #7
0
ファイル: ajax.php プロジェクト: mrdeadmouse/u136006
 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;
 }
コード例 #8
0
ファイル: taskcomments.php プロジェクト: DarneoStudio/bitrix
 /**
  * @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);
 }
コード例 #9
0
ファイル: taskfiles.php プロジェクト: mrdeadmouse/u136006
 /**
  * @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__);
 }
コード例 #10
0
 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);
 }
コード例 #11
0
ファイル: template.php プロジェクト: mrdeadmouse/u136006
 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;
 }
コード例 #12
0
ファイル: elapseditem.php プロジェクト: mrdeadmouse/u136006
 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;
 }
コード例 #13
0
 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];
 }
コード例 #14
0
 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);
     }
 }
コード例 #15
0
ファイル: tasktemplates.php プロジェクト: mrdeadmouse/u136006
 /**
  * @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;
 }
コード例 #16
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
    }
}
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']);
コード例 #17
0
ファイル: taskelapsed.php プロジェクト: DarneoStudio/bitrix
 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;
 }
コード例 #18
0
ファイル: taskreminders.php プロジェクト: DarneoStudio/bitrix
 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__);
 }
コード例 #19
0
ファイル: show_file.php プロジェクト: spas-viktor/books
         }
         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';
コード例 #20
0
ファイル: class.php プロジェクト: mrdeadmouse/u136006
 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;
 }
コード例 #21
0
ファイル: tools.php プロジェクト: mrdeadmouse/u136006
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");
    }
}
コード例 #22
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
        $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();
}
コード例 #23
0
ファイル: livefeed.php プロジェクト: DarneoStudio/bitrix
 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));
 }
コード例 #24
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
            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;
コード例 #25
0
ファイル: template.php プロジェクト: mrdeadmouse/u136006
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">
コード例 #26
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
        }
        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();
コード例 #27
0
ファイル: taskmembers.php プロジェクト: mrdeadmouse/u136006
 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__);
 }
コード例 #28
0
ファイル: ajax.php プロジェクト: mrdeadmouse/u136006
                    }
                    $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
コード例 #29
0
ファイル: taskitem.php プロジェクト: DarneoStudio/bitrix
 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));
 }
コード例 #30
0
ファイル: component.php プロジェクト: webgksupport/alpina
        }
    }
}
/********************************************************************
				/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"));