示例#1
0
    $arParams['PATH_TO_TASKS_FILTER'] = str_replace(array('#user_id#', '#USER_ID#'), $arParams['USER_ID'], $arParams['PATH_TO_USER_TASKS_FILTER']);
}
$paramsCheck = ($arParams['SHOW_TEMPLATE'] === 'Y' || $arParams['SHOW_TEMPLATE'] === 'N') && $arParams['RENDER_FORMAT'] === 'HTML' && is_int($arParams['TASKS_PER_PAGE']) && $arParams['TASKS_PER_PAGE'] > 0 && is_int($arParams['USER_ID']) && (is_int($arParams['GROUP_ID']) || $arParams['GROUP_ID'] === false) && is_string($arParams['NAME_TEMPLATE']) && strlen($arParams['NAME_TEMPLATE']) > 0 && is_string($arParams['DATE_TIME_FORMAT']) && strlen($arParams['DATE_TIME_FORMAT']) && is_string($arParams['PATH_TEMPLATE_TO_USER_PROFILE']) && is_string($arParams['PATH_TO_USER_TASKS']) && is_string($arParams['PATH_TO_USER_TASKS_TASK']) && is_string($arParams['PATH_TO_TASKS']) && is_string($arParams['PATH_TO_TASKS_EDIT']) && is_string($arParams['PATH_TO_TASKS_TASK']) && is_string($arParams['PATH_TO_TASKS_FILTER']) && in_array($arParams['OPTIMIZATION_MODE'], array('NONE', 'SELECT_ONLY_FILES_COUNT', 'SELECT_FULL_DATA_EXCEPT_FILES'), true);
if (!$paramsCheck) {
    return false;
}
unset($paramsCheck);
if (!CBXFeatures::IsFeatureEnabled('Tasks')) {
    if ($arParams['SHOW_TEMPLATE'] === 'Y' && $arParams['RENDER_FORMAT'] === 'HTML') {
        ShowError(GetMessage('TASKS_MODULE_NOT_AVAILABLE_IN_THIS_EDITION'));
    }
    return false;
}
require_once dirname(__FILE__) . '/functions.php';
// Init filter controller
$oFilter = CTaskFilterCtrl::GetInstance($arParams['USER_ID']);
$curFilterId = $oFilter->GetSelectedFilterPresetId();
// Switch filter, if need
if (isset($_GET['SWITCH_TO_FILTER_PRESET_ID'])) {
    $newFilterId = (int) $_GET['SWITCH_TO_FILTER_PRESET_ID'];
    // prevent idle action
    if ($newFilterId !== $curFilterId) {
        try {
            $oFilter->SwitchFilterPreset($newFilterId);
        } catch (Exception $e) {
            $oFilter->SwitchFilterPreset(CTaskFilterCtrl::STD_PRESET_ACTIVE_MY_TASKS);
        }
    }
}
// Set filter params for CTasks::GetList();
$arResult['FILTER'] = $oFilter->GetSelectedFilterPresetCondition();
示例#2
0
     $bLoadCommentsData = true;
 } elseif ($_POST['subject'] === 'DETAIL_AND_COMMENTS') {
     $bLoadDetailData = true;
     $bLoadCommentsData = true;
 } elseif ($_POST['subject'] === 'DETAIL') {
     $bLoadDetailData = true;
 } elseif ($_POST['subject'] === 'COMMENTS') {
     $bLoadCommentsData = true;
 }
 $arParams = array('USER_ID' => $userId, 'TASK_ID' => $taskId, 'DATE_TIME_FORMAT' => $_POST['DATE_TIME_FORMAT'], 'SHOW_TEMPLATE' => 'N', 'PATH_TO_USER_TASKS_EDIT' => '...');
 $arRes = $APPLICATION->IncludeComponent('bitrix:mobile.tasks.detail', '.default', $arParams, false);
 $filterCheckResult = 'not checked';
 // We must check filter condition for this task?
 if (isset($_POST['CHECK_FILTER_ID'])) {
     $filterPresetId = (int) $_POST['CHECK_FILTER_ID'];
     $oFilter = CTaskFilterCtrl::GetInstance($userId);
     $arFilter = $oFilter->GetFilterPresetConditionById($filterPresetId);
     if ($arFilter !== false) {
         $arFilter['ID'] = (int) $taskId;
         $rsTasks = CTasks::GetList($arOrder = array(), $arFilter, $arSelect = array('ID'));
         if ($rsTasks->Fetch()) {
             $filterCheckResult = 'match filter';
         } else {
             $filterCheckResult = 'dismatch filter';
         }
     }
 }
 $arTaskData = array('task_id' => $task_id, 'filter_check_result' => $filterCheckResult);
 if ($bLoadBaseData) {
     $arTaskData['baseData'] = MBTasksCptDetailAjax::PrepareBaseData($task_id, $arRes);
 }
示例#3
0
		pulltext: '<?php 
echo GetMessageJS('MB_TASKS_TASKS_FILTER_PULLDOWN_PULL');
?>
',
		downtext: '<?php 
echo GetMessageJS('MB_TASKS_TASKS_FILTER_PULLDOWN_DOWN');
?>
',
		loadtext: '<?php 
echo GetMessageJS('MB_TASKS_TASKS_FILTER_PULLDOWN_LOADING');
?>
',
		action:   'RELOAD',
		callback: function() { app.reload(); }
	});
</script>
<?php 
$arResult = array();
$environmentCheck = isset($GLOBALS['APPLICATION']) && is_object($GLOBALS['APPLICATION']) && isset($GLOBALS['USER']) && is_object($GLOBALS['USER']) && isset($arParams) && is_array($arParams) && CModule::IncludeModule('tasks');
try {
    CTaskAssert::assert($environmentCheck);
    unset($environmentCheck);
    $arResult['USER_ID'] = (int) $_GET['USER_ID'];
    $oFilter = CTaskFilterCtrl::GetInstance($arResult['USER_ID']);
    $arResult['PRESETS_TREE'] = $oFilter->ListFilterPresets($bTreeMode = true);
    $arResult['CURRENT_PRESET_ID'] = $oFilter->GetSelectedFilterPresetId();
} catch (Exception $e) {
    return false;
}
$this->IncludeComponentTemplate();
return $arResult;
示例#4
0
 CTaskAssert::assertLaxIntegers($arAction['userId'], $arAction['groupId']);
 CTaskAssert::assert(unserialize($arAction['rawState']) !== false);
 $oListState = CTaskListState::getInstance($loggedInUserId);
 $oListState->setRawState($arAction['rawState']);
 // just update current value of an option
 $oListCtrl = CTaskListCtrl::getInstance($arAction['userId']);
 $oListCtrl->useState($oListState);
 // just saving reference to $oListState inside $oListCtrl
 if ($arAction['groupId'] > 0) {
     $bGroupMode = true;
     $oListCtrl->setFilterByGroupId((int) $arAction['groupId']);
 } else {
     $bGroupMode = false;
     $oListCtrl->setFilterByGroupId(null);
 }
 $oFilter = CTaskFilterCtrl::GetInstance($arAction['userId'], $bGroupMode);
 $oListCtrl->useAdvancedFilterObject($oFilter);
 // just saving reference to $oFilter inside $oListCtrl
 $arFilter = array_merge($oListCtrl->getFilter(), $oListCtrl->getCommonFilter());
 $arSqlSearch = CTasks::GetFilter($arFilter, '', array('USER_ID' => $loggedInUserId));
 $arSqlSearch[] = " T.ZOMBIE = 'N' ";
 if ($arAction['operation'] === 'tasks.list::getOriginators()') {
     $sql = "SELECT T.CREATED_BY AS USER_ID, COUNT(T.ID) AS TASKS_CNT \n\t\t\t\t\t\tFROM b_tasks T \n\t\t\t\t\t\tLEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "\n\t\t\t\t\t\tWHERE " . implode('AND', $arSqlSearch) . " GROUP BY T.CREATED_BY";
 } else {
     if ($arAction['operation'] === 'tasks.list::getResponsibles()') {
         $sql = "SELECT T.RESPONSIBLE_ID AS USER_ID, COUNT(T.ID) AS TASKS_CNT \n\t\t\t\t\t\tFROM b_tasks T \n\t\t\t\t\t\tLEFT JOIN b_tasks_viewed TV ON TV.TASK_ID = T.ID AND TV.USER_ID = " . $loggedInUserId . "\n\t\t\t\t\t\tWHERE " . implode('AND', $arSqlSearch) . " GROUP BY T.RESPONSIBLE_ID";
     } else {
         throw new Exception('unknown operation: ' . $arAction['operation']);
     }
 }
 global $DB;
示例#5
0
 public function getFilter()
 {
     $curSection = $this->oListState->getSection();
     if ($curSection === CTaskListState::VIEW_SECTION_ADVANCED_FILTER) {
         // we are in "advanced-mode" (section "all" and user-defined filters)
         $bGroupMode = false;
         if ($this->filterByGroupId !== null) {
             $bGroupMode = true;
         }
         if ($this->oFilter) {
             $oFilter = $this->oFilter;
         } else {
             $oFilter = CTaskFilterCtrl::GetInstance($this->userId, $bGroupMode);
         }
         $arFilter = $oFilter->GetSelectedFilterPresetCondition();
     } elseif ($curSection === CTaskListState::VIEW_SECTION_ROLES) {
         // we are in "role-mode" (four pre-defined filters at the top of the list)
         $arFilter = $this->__getFilterFor($this->oListState->getUserRole(), $this->oListState->getTaskCategory());
     }
     $counterId = self::resolveCounterIdByRoleAndCategory($this->oListState->getUserRole(), $this->oListState->getTaskCategory());
     $arFilter['CHECK_PERMISSIONS'] = 'Y';
     // Mark filter. So when it will be used by CTasks::GetList(),
     // CTaskCountersProcessorHomeostasis will check if counter is right
     // or not.
     // This will work out only when resolved counter is not null and we are in "role-mode"
     $arFilter = CTaskCountersProcessorHomeostasis::injectMarker($arFilter, $curSection, $counterId, $this->userId);
     return $arFilter;
 }
示例#6
0
        // This will be interpreted by CTasks::GetList as nPageTop
        $arGetListParams = array('nPageTop' => $itemsCount);
    }
}
$arResult["ORIGINAL_FILTER"] = $arFilter;
$arResult["FILTER"] = $arFilter;
unset($arResult["FILTER"]["ONLY_ROOT_TASKS"]);
try {
    $arSelect = array('ID', 'TITLE', 'PRIORITY', 'STATUS', 'REAL_STATUS', 'MULTITASK', 'DATE_START', 'GROUP_ID', 'DEADLINE', 'ALLOW_TIME_TRACKING', 'TIME_ESTIMATE', 'TIME_SPENT_IN_LOGS', 'COMMENTS_COUNT', 'FILES', 'MARK', 'ADD_IN_REPORT', 'SUBORDINATE', 'CREATED_DATE', 'VIEWED_DATE', 'FORUM_TOPIC_ID', 'END_DATE_PLAN', 'START_DATE_PLAN', 'CLOSED_DATE', 'PARENT_ID', 'ALLOW_CHANGE_DEADLINE', 'ALLOW_TIME_TRACKING', 'CHANGED_DATE', 'CREATED_BY', 'CREATED_BY_NAME', 'CREATED_BY_LAST_NAME', 'CREATED_BY_SECOND_NAME', 'CREATED_BY_LOGIN', 'CREATED_BY_WORK_POSITION', 'CREATED_BY_PHOTO', 'RESPONSIBLE_ID', 'RESPONSIBLE_NAME', 'RESPONSIBLE_LAST_NAME', 'RESPONSIBLE_SECOND_NAME', 'RESPONSIBLE_LOGIN', 'RESPONSIBLE_WORK_POSITION', 'RESPONSIBLE_PHOTO', 'UF_CRM_TASK');
    try {
        list($arTaskItems, $rsItems) = CTaskItem::fetchList($loggedInUserId, $arOrder, $arFilter, $arGetListParams, $arSelect);
    } catch (TasksException $e) {
        // Got SQL error for extended filter? Rollback to default filter preset.
        if ($arParams['USE_FILTER_V2'] && $e->getCode() & TasksException::TE_SQL_ERROR) {
            $bGroupMode = $taskType === 'group';
            $oFilter = CTaskFilterCtrl::GetInstance($arParams['USER_ID'], $bGroupMode);
            // Not default preset? Switch to it.
            if ($oFilter->GetSelectedFilterPresetId() != CTaskFilterCtrl::STD_PRESET_ALIAS_TO_DEFAULT) {
                $oFilter->SwitchFilterPreset(CTaskFilterCtrl::STD_PRESET_ALIAS_TO_DEFAULT);
                $arFilter = $oFilter->GetSelectedFilterPresetCondition();
                $arResult['SELECTED_PRESET_NAME'] = $oFilter->GetSelectedFilterPresetName();
                $arResult['SELECTED_PRESET_ID'] = $oFilter->GetSelectedFilterPresetId();
                // Try again to load data
                list($arTaskItems, $rsItems) = CTaskItem::fetchList($loggedInUserId, $arOrder, $arFilter, $arGetListParams, $arSelect);
            } else {
                throw new TasksException();
            }
        } else {
            throw new TasksException();
        }
    }
示例#7
0
CModule::IncludeModule('tasks');
__IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__));
$loggedInUser = (int) $USER->getId();
CTaskAssert::assert(isset($_POST['action']));
$arReply = array();
$status = 'success';
switch ($_POST['action']) {
    case 'loadFilterConstructorJs':
        $GLOBALS['APPLICATION']->IncludeComponent('bitrix:tasks.filter.v2', 'constructor', array('USER_ID' => $loggedInUser, 'LOAD_TEMPLATE_INSTANTLY' => true));
        exit;
        break;
    case 'getPresetDefinition':
        try {
            CTaskAssert::assert(isset($_POST['presetId']) && $_POST['presetId'] > 0);
            CTaskAssert::assertLaxIntegers($_POST['presetId']);
            $oFilter = CTaskFilterCtrl::GetInstance($loggedInUser);
            $arPresetDefinition = $oFilter->exportFilterDataForJs($_POST['presetId']);
            if ($arPresetDefinition !== false) {
                $arReply = array('presetData' => $arPresetDefinition);
            } else {
                $status = 'fail';
            }
        } catch (Exception $e) {
            $status = 'fail';
        }
        break;
    case 'createPreset':
    case 'replacePreset':
        try {
            CTaskAssert::assert(isset($_POST['presetData']) && is_array($_POST['presetData']) && isset($_POST['presetData']['Name']) && isset($_POST['presetData']['Condition']));
            $_POST['presetData']['Parent'] = CTaskFilterCtrl::ROOT_PRESET;