/**
  * Initialize the controller.
  *
  * @return  $this  Method allows chaining
  *
  * @since   1.0
  */
 public function initialize()
 {
     parent::initialize();
     /* @type Application $application */
     $application = $this->getContainer()->get('app');
     $limit = $application->getUserStateFromRequest('list.limit', 'list_limit', 20, 'int');
     $page = $application->input->getInt('page');
     $value = $page ? ($page - 1) * $limit : 0;
     $limitStart = $limit != 0 ? floor($value / $limit) * $limit : 0;
     $state = $this->model->getState();
     $state->set('list.start', $limitStart);
     $state->set('list.limit', $limit);
     $this->model->setState($state);
     $this->model->setPagination(new TrackerPagination(new Uri($this->getContainer()->get('app')->get('uri.request'))));
     return $this;
 }
Ejemplo n.º 2
0
 /**
  * Setting model state that will be used for filtering.
  *
  * @param   \App\Tracker\Model\IssuesModel  $model  The issues model
  *
  * @return  \Joomla\Registry\Registry
  *
  * @since 1.0
  */
 private function setModelState(IssuesModel $model)
 {
     /* @type \JTracker\Application $application */
     $application = $this->getContainer()->get('app');
     $state = $model->getState();
     $projectId = $application->getProject()->project_id;
     // Set up pagination values
     $limit = $application->getUserStateFromRequest('list.limit', 'limit', 20, 'int');
     $page = $application->getUserStateFromRequest('project_' . $projectId . '.page', 'page', 1, 'uint');
     $projectIdFromState = $application->getUserState('projectId', 0);
     // Reset page on project change
     if ($projectId != $projectIdFromState) {
         $application->setUserState('projectId', $projectId);
         $page = 1;
     }
     $value = $page ? ($page - 1) * $limit : 0;
     $limitStart = $limit != 0 ? floor($value / $limit) * $limit : 0;
     $state->set('list.start', $limitStart);
     $state->set('list.limit', $limit);
     // Get sort and direction
     $sort = $application->getUserStateFromRequest('project_' . $projectId . '.filter.sort', 'sort', 0, 'uint');
     switch ($sort) {
         case 1:
             $state->set('list.ordering', 'a.issue_number');
             $state->set('list.direction', 'ASC');
             break;
         case 2:
             $state->set('list.ordering', 'a.modified_date');
             $state->set('list.direction', 'DESC');
             break;
         case 3:
             $state->set('list.ordering', 'a.modified_date');
             $state->set('list.direction', 'ASC');
             break;
         default:
             $state->set('list.ordering', 'a.issue_number');
             $state->set('list.direction', 'DESC');
     }
     $state->set('filter.sort', $sort);
     $state->set('filter.priority', $application->getUserStateFromRequest('project_' . $projectId . '.filter.priority', 'priority', 0, 'uint'));
     $state->set('filter.state', $application->getUserStateFromRequest('project_' . $projectId . '.filter.state', 'state', 0, 'uint'));
     $state->set('filter.status', $application->getUserStateFromRequest('project_' . $projectId . '.filter.status', 'status', 0, 'uint'));
     $state->set('filter.search', $application->getUserStateFromRequest('project_' . $projectId . '.filter.search', 'search', '', 'string'));
     $state->set('filter.user', $application->getUserStateFromRequest('project_' . $projectId . '.filter.user', 'user', 0, 'uint'));
     $state->set('filter.category', $application->getUserStateFromRequest('project_' . $projectId . '.filter.category', 'category', 0, 'uint'));
     $state->set('filter.tests', $application->getUserStateFromRequest('project_' . $projectId . '.filter.tests', 'tests', 0, 'uint'));
     $state->set('filter.easytest', $application->getUserStateFromRequest('project_' . $projectId . '.filter.easytest', 'easytest', 0, 'uint'));
     $state->set('stools-active', $application->input->get('stools-active', 0, 'uint'));
     if ($application->getUser()->username) {
         $state->set('username', $application->getUser()->username);
     }
     $model->setState($state);
 }