Query::available_filters PHP Метод

available_filters() публичный Метод

public available_filters ( $project = [], $currentuser = [] )
    function available_filters($project = array(), $currentuser = array())
    {
        if (!empty($this->available_filters)) {
            return $this->available_filters;
        }
        //$Status = & ClassRegistry::init('Status');
        $IssueStatus =& ClassRegistry::init('IssueStatus');
        $Enumeration =& ClassRegistry::init('Enumeration');
        $user_values = array();
        $tracker_values = array();
        $version_values = array();
        if ($currentuser) {
            $user_values['me'] = __('me');
        }
        if (isset($project['User'])) {
            foreach ($project['User'] as $user) {
                if ($currentuser && $currentuser['id'] == $user['id']) {
                    continue;
                }
                $user_values[$user['id']] = $user['firstname'] . ' ' . $user['lastname'];
            }
        }
        if (isset($project['Tracker'])) {
            foreach ($project['Tracker'] as $tracker) {
                $tracker_values[$tracker['id']] = $tracker['name'];
            }
        }
        if (isset($project['Project']['id'])) {
            $Version =& ClassRegistry::init('Version');
            $version_values = $Version->find('list', array('fields' => array('Version.id', 'Version.name'), 'conditions' => array('Version.project_id' => $project['Project']['id'])));
        }
        $available_filters = array('status_id' => array('type' => 'list_status', 'values' => $IssueStatus->find('list', array('fields' => array('IssueStatus.id', 'IssueStatus.name'))), 'order' => 1), 'fixed_version_id' => array('type' => 'list', 'values' => $version_values, 'order' => 10), 'start_date' => array('type' => 'date', 'order' => 11), 'estimated_hours' => array('type' => 'integer', 'order' => 13), 'created_on' => array('type' => 'date_past', 'order' => 9), 'priority_id' => array('type' => 'list', 'values' => $Enumeration->find('list', array('fields' => array('Enumeration.id', 'Enumeration.name'), 'conditions' => array('Enumeration.opt' => 'IPRI'), 'order' => 'Enumeration.position')), 'order' => 3), 'assigned_to_id' => array('type' => 'list_optional', 'values' => $user_values, 'order' => 4), 'done_ratio' => array('type' => 'integer', 'order' => 14), 'updated_on' => array('type' => 'date_past', 'order' => 10), 'subject' => array('type' => 'text', 'order' => 8), 'tracker_id' => array('type' => 'list', 'values' => $tracker_values, 'order' => 2), 'due_date' => array('type' => 'date', 'order' => 12), 'author_id' => array('type' => 'list', 'values' => $user_values, 'order' => 5));
        foreach ($available_filters as $k => $v) {
            $available_filters[$k]['operators'] = array();
            foreach ($this->operators_by_filter_type[$v['type']] as $operator) {
                $available_filters[$k]['operators'][$operator] = $this->operators[$operator];
            }
        }
        $this->available_filters = $available_filters;
        return $available_filters;
    }