Ejemplo n.º 1
0
 /**
  * @param integer $fileId
  * @throws TasksException
  * @throws CTaskAssertException
  * 
  * This function is deprecated, it wont work with a new disk-based file attachment mechanism
  * 
  * @deprecated
  */
 public function removeAttachedFile($fileId)
 {
     CTaskAssert::assertLaxIntegers($fileId);
     CTaskAssert::assert($fileId > 0);
     if (!$this->isActionAllowed(self::ACTION_EDIT)) {
         CTaskAssert::log('access denied while trying to remove file: fileId=' . $fileId . ', taskId=' . $this->taskId . ', userId=' . $this->executiveUserId, CTaskAssert::ELL_WARNING);
         throw new TasksException('', TasksException::TE_ACTION_NOT_ALLOWED);
     }
     if (!CTaskFiles::Delete($this->taskId, $fileId)) {
         throw new TasksException('File #' . $fileId . ' not attached to task #' . $this->taskId, TasksException::TE_FILE_NOT_ATTACHED_TO_TASK);
     }
 }
Ejemplo n.º 2
0
 /**
  * Fetch predefined presets and presets from DB.
  * 
  * @return array of fetched filter presets. Includes predefined presets.
  *
  * @var CDatabase $DB
  */
 protected function fetchFilterPresets()
 {
     global $DB;
     $arActiveStatuses = array(CTasks::METASTATE_VIRGIN_NEW, CTasks::METASTATE_EXPIRED, CTasks::STATE_NEW, CTasks::STATE_PENDING, CTasks::STATE_IN_PROGRESS);
     if (!$this->bGroupMode) {
         // Init list with predefined presets
         $arPresets = array(self::ROOT_PRESET => array('Name' => '/', 'Parent' => null, 'Condition' => null), self::STD_PRESET_ACTIVE_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'MEMBER' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => array(CTasks::STATE_DECLINED, CTasks::STATE_SUPPOSEDLY_COMPLETED))))), 'SQL: select count' => "SELECT COUNT(TT.ID) AS CNT\n\t\t\t\t\t\tFROM (\n\t\t\t\t\t\t\tSELECT T.ID\n\t\t\t\t\t\t\tFROM b_tasks T\n\t\t\t\t\t\t\tINNER JOIN b_tasks_member TM on TM.TASK_ID = T.ID\n\t\t\t\t\t\t\tWHERE T.CREATED_BY = {$this->userId}\n\t\t\t\t\t\t\t\tAND T.RESPONSIBLE_ID != {$this->userId}\n\t\t\t\t\t\t\t\tAND TM.USER_ID = {$this->userId}\n\t\t\t\t\t\t\t\tAND T.STATUS != 4\n\t\t\t\t\t\t\t\tAND T.STATUS != 5\n\t\t\t\t\t\t\t\tAND T.ZOMBIE = 'N'\n\n\t\t\t\t\t\t\tUNION \n\n\t\t\t\t\t\t\tSELECT T.ID\n\t\t\t\t\t\t\tFROM b_tasks T\n\t\t\t\t\t\t\tINNER JOIN b_tasks_member TM on TM.TASK_ID = T.ID\n\t\t\t\t\t\t\tWHERE T.RESPONSIBLE_ID = {$this->userId}\n\t\t\t\t\t\t\t\tAND TM.USER_ID = {$this->userId}\n\t\t\t\t\t\t\t\tAND T.STATUS != 4\n\t\t\t\t\t\t\t\tAND T.STATUS != 5\n\t\t\t\t\t\t\t\tAND T.ZOMBIE = 'N'\n\n\t\t\t\t\t\t\tUNION \n\n\t\t\t\t\t\t\tSELECT T.ID\n\t\t\t\t\t\t\tFROM b_tasks T\n\t\t\t\t\t\t\tWHERE T.CREATED_BY = {$this->userId}\n\t\t\t\t\t\t\t\tAND (T.STATUS = 4 OR T.STATUS = 5)\n\t\t\t\t\t\t\t\tAND T.ZOMBIE = 'N'\n\t\t\t\t\t\t) AS TT\n\t\t\t\t\t"), self::STD_PRESET_ACTIVE_I_AM_DOER => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_I_AM_DOER'), 'Parent' => self::STD_PRESET_ACTIVE_MY_TASKS, 'Condition' => serialize(array('::LOGIC' => 'AND', 'DOER' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => CTasks::STATE_DECLINED))))), self::STD_PRESET_ACTIVE_I_AM_RESPONSIBLE => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_I_AM_RESPONSIBLE'), 'Parent' => self::STD_PRESET_ACTIVE_I_AM_DOER, 'Condition' => serialize(array('::LOGIC' => 'AND', 'RESPONSIBLE_ID' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => CTasks::STATE_DECLINED))))), self::STD_PRESET_ACTIVE_I_AM_ACCOMPLICE => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_I_AM_ACCOMPLICE'), 'Parent' => self::STD_PRESET_ACTIVE_I_AM_DOER, 'Condition' => serialize(array('::LOGIC' => 'AND', 'ACCOMPLICE' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => CTasks::STATE_DECLINED))))), self::STD_PRESET_ACTIVE_I_AM_ORIGINATOR => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_I_AM_ORIGINATOR'), 'Parent' => self::STD_PRESET_ACTIVE_MY_TASKS, 'Condition' => serialize(array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => array(CTasks::STATE_DECLINED, CTasks::STATE_SUPPOSEDLY_COMPLETED)))))), self::STD_PRESET_ACTIVE_I_AM_AUDITOR => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_I_AM_AUDITOR'), 'Parent' => self::STD_PRESET_ACTIVE_MY_TASKS, 'Condition' => serialize(array('::LOGIC' => 'AND', 'AUDITOR' => $this->userId, '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => CTasks::STATE_DECLINED))))), self::STD_PRESET_DEFERRED_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_DEFERRED_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'MEMBER' => $this->userId, 'STATUS' => CTasks::STATE_DEFERRED))), self::STD_PRESET_COMPLETED_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_COMPLETED_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'MEMBER' => $this->userId, 'STATUS' => array(CTasks::STATE_SUPPOSEDLY_COMPLETED, CTasks::STATE_COMPLETED)))), self::STD_PRESET_ALL_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ALL_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'MEMBER' => $this->userId))));
     } else {
         // Init list with predefined presets
         $arPresets = array(self::ROOT_PRESET => array('Name' => '/', 'Parent' => null, 'Condition' => null), self::STD_PRESET_ACTIVE_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ACTIVE_GROUP_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', '::SUBFILTER-1' => array('::LOGIC' => 'OR', 'STATUS' => $arActiveStatuses, '::SUBFILTER-1' => array('::LOGIC' => 'AND', 'CREATED_BY' => $this->userId, 'STATUS' => CTasks::STATE_DECLINED))))), self::STD_PRESET_DEFERRED_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_DEFERRED_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'STATUS' => CTasks::STATE_DEFERRED))), self::STD_PRESET_COMPLETED_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_COMPLETED_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND', 'STATUS' => array(CTasks::STATE_SUPPOSEDLY_COMPLETED, CTasks::STATE_COMPLETED)))), self::STD_PRESET_ALL_MY_TASKS => array('Name' => GetMessage('TASKS_FILTER_PRESET_STD_PRESET_ALL_MY_TASKS'), 'Parent' => self::ROOT_PRESET, 'Condition' => serialize(array('::LOGIC' => 'AND'))));
     }
     $arPresetsFromDb = array();
     $bNeedFetchFromDatabase = true;
     $cacheDir = $obCache = null;
     if (defined('BX_COMP_MANAGED_CACHE')) {
         $obCache = new CPHPCache();
         $lifeTime = CTasksTools::CACHE_TTL_UNLIM;
         $cacheDir = '/tasks/filter_presets/' . $this->loggedInUserId % 300;
         $cacheId = 'tasks_filters_presets_' . $this->loggedInUserId;
         if ($obCache->InitCache($lifeTime, $cacheId, $cacheDir)) {
             $arPresetsFromDb = $obCache->GetVars();
             $bNeedFetchFromDatabase = false;
         }
     }
     if ($bNeedFetchFromDatabase) {
         $dbRes = $DB->query("SELECT ID, NAME, PARENT, SERIALIZED_FILTER\n\t\t\t\tFROM b_tasks_filters\n\t\t\t\tWHERE USER_ID = " . (int) $this->loggedInUserId . "\n\t\t\t\tORDER BY NAME, ID");
         if ($dbRes) {
             while ($arData = $dbRes->fetch()) {
                 $arPresetsFromDb[(int) $arData['ID']] = array('Name' => $arData['NAME'], 'Parent' => (int) $arData['PARENT'], 'Condition' => $arData['SERIALIZED_FILTER']);
             }
         } else {
             CTaskAssert::log('DB error', CTaskAssert::ELL_ERROR, true);
         }
         if (defined('BX_COMP_MANAGED_CACHE') && $obCache->StartDataCache()) {
             global $CACHE_MANAGER;
             $CACHE_MANAGER->StartTagCache($cacheDir);
             $CACHE_MANAGER->RegisterTag('tasks_filters_presets_' . $this->loggedInUserId);
             $CACHE_MANAGER->EndTagCache();
             $obCache->EndDataCache($arPresetsFromDb);
         }
     }
     // Merge with predefined presets list
     foreach ($arPresetsFromDb as $presetId => $presetData) {
         $arPresets[$presetId] = $presetData;
     }
     return $arPresets;
 }
Ejemplo n.º 3
0
         }
         if ($arData['TO_VALUE']) {
             // Don't format time, if it's 00:00
             if (date('H:i', $arData['TO_VALUE']) == '00:00') {
                 $strDateTo = FormatDate(CDatabase::DateFormatToPHP(FORMAT_DATE), $arData['TO_VALUE']);
             } else {
                 $strDateTo = FormatDate(CDatabase::DateFormatToPHP(FORMAT_DATETIME), $arData['TO_VALUE']);
             }
         }
         $arResult = array('td1' => '<span class="task-log-date">' . FormatDateFromDB($arData['CREATED_DATE']) . '</span>', 'td2' => '<a class="task-log-author" target="_top" href="' . CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_USER_PROFILE'], array('user_id' => $authorUserId)) . '">' . htmlspecialcharsbx(tasksFormatNameShort($arCurUserData["NAME"], $arCurUserData["LAST_NAME"], $arCurUserData["LOGIN"], $arCurUserData["SECOND_NAME"], $arParams["NAME_TEMPLATE"])) . '</a>', 'td3' => '<span class="task-log-where">' . GetMessage("TASKS_LOG_DEADLINE") . '</span>', 'td4' => '<span class="task-log-what">' . $strDateFrom . '<span class="task-log-arrow">&rarr;</span>' . $strDateTo . '</span>');
         header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
         echo CUtil::PhpToJsObject($arResult);
     }
 } elseif ($action === 'remove_file') {
     try {
         CTaskAssert::log('remove_file: fileId=' . $_POST['fileId'] . ', taskId=' . $_POST['taskId'] . ', userId=' . $loggedInUserId, CTaskAssert::ELL_INFO);
         CTaskAssert::assert(isset($_POST['fileId'], $_POST['taskId']));
         $oTaskItem = new CTaskItem($_POST['taskId'], $loggedInUserId);
         $oTaskItem->removeAttachedFile($_POST['fileId']);
         echo 'Success';
     } catch (Exception $e) {
         echo 'Error occured';
         CTaskAssert::logWarning('Unable to remove_file: fileId=' . $_POST['fileId'] . ', taskId=' . $_POST['taskId'] . ', userId=' . $loggedInUserId);
     }
 } elseif ($action === 'render_task_detail_part') {
     if (isset($_POST['BLOCK'])) {
         switch ($_POST['BLOCK']) {
             case 'buttons':
             case 'right_sidebar':
                 if ($_POST['IS_IFRAME'] === 'true' || $_POST['IS_IFRAME'] === true || $_POST['IS_IFRAME'] === 'Y') {
                     $isIframe = true;
Ejemplo n.º 4
0
                    usort($arUsers, create_function('$a,$b', 'return strnatcasecmp($a["LAST_NAME"], $b["LAST_NAME"]);'));
                } else {
                    usort($arUsers, create_function('$a,$b', 'return strnatcasecmp($a["NAME_FORMATTED"], $b["NAME_FORMATTED"]);'));
                }
                $arCurOperationResult = array('returnValue' => $arUsers);
                break;
            default:
                throw new Exception('Unknown operation requested. File: ' . __FILE__ . '; action: ' . $arAction['operation']);
                break;
        }
        $arCurOperationResult['requestedOperationName'] = $arAction['operation'];
        $arOperationsResults[$operationIndex] = $arCurOperationResult;
        $operationIndex++;
        if ($breakExecution) {
            break;
        }
    }
    if (!$breakExecution) {
        $status = 'success';
    } else {
        $status = 'error occured';
    }
} catch (Exception $e) {
    CTaskAssert::log('Exception. Current file: ' . __FILE__ . '; exception file: ' . $e->GetFile() . '; line: ' . $e->GetLine() . '; message: ' . $e->GetMessage(), CTaskAssert::ELL_ERROR);
    $status = 'error occured';
}
$APPLICATION->RestartBuffer();
header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
echo CUtil::PhpToJsObject(array('status' => $status, 'repliesCount' => count($arOperationsResults), 'data' => $arOperationsResults, 'batchId' => $batchId));
CMain::FinalActions();
// to make events work on bitrix24
Ejemplo n.º 5
0
 private static function getOrderSql($by, $order, $default_order, $nullable = true)
 {
     global $DBType;
     static $dbtype = null;
     if ($dbtype === null) {
         $dbtype = strtolower($DBType);
     }
     switch ($dbtype) {
         case 'mysql':
             return self::getOrderSql_mysql($by, $order, $default_order, $nullable = true);
             break;
         case 'mssql':
             return self::getOrderSql_mssql($by, $order, $default_order, $nullable = true);
             break;
         case 'oracle':
             return self::getOrderSql_oracle($by, $order, $default_order, $nullable = true);
             break;
         default:
             CTaskAssert::log('unknown DB type: ' . $dbtype, CTaskAssert::ELL_ERROR);
             return ' ';
             break;
     }
 }
Ejemplo n.º 6
0
 public static function getRandFunction()
 {
     global $DBType;
     $dbtype = strtolower($DBType);
     switch ($dbtype) {
         case 'mysql':
             return ' RAND(' . rand(0, 1000000) . ') ';
             break;
         case 'mssql':
             return ' newid() ';
             break;
         case 'oracle':
             return ' DBMS_RANDOM.RANDOM() ';
             break;
         default:
             CTaskAssert::log('unknown DB type: ' . $dbtype, CTaskAssert::ELL_ERROR);
             return ' ID ';
             break;
     }
 }