/**
  * Creates a model for getModel(). Called only for each new $action.
  *
  * The parameters allow you to easily adapt the model to the current action. The $detailed
  * parameter was added, because the most common use of action is a split between detailed
  * and summarized actions.
  *
  * @param boolean $detailed True when the current action is not in $summarizedActions.
  * @param string $action The current action.
  * @return \MUtil_Model_ModelAbstract
  */
 public function createModel($detailed, $action)
 {
     //
     $model = new \Gems_Model_JoinModel('resptrack', 'gems__respondent2track');
     $model->addTable('gems__respondent2org', array('gr2t_id_user' => 'gr2o_id_user', 'gr2t_id_organization' => 'gr2o_id_organization'));
     $model->addTable('gems__tracks', array('gr2t_id_track' => 'gtr_id_track'));
     $model->addTable('gems__reception_codes', array('gr2t_reception_code' => 'grc_id_reception_code'));
     $model->addFilter(array('grc_success' => 1));
     $model->resetOrder();
     $model->set('gr2o_patient_nr', 'label', $this->_('Respondent nr'));
     $model->set('gr2t_start_date', 'label', $this->_('Start date'), 'dateFormat', 'dd-MM-yyyy');
     $model->set('gr2t_end_date', 'label', $this->_('End date'), 'dateFormat', 'dd-MM-yyyy');
     $filter = $this->getSearchFilter($action !== 'export');
     if (!(isset($filter['gr2t_id_organization']) && $filter['gr2t_id_organization'])) {
         $model->addFilter(array('gr2t_id_organization' => $this->currentUser->getRespondentOrgFilter()));
     }
     if (!(isset($filter['gr2t_id_track']) && $filter['gr2t_id_track'])) {
         $model->setFilter(array('1=0'));
         $this->autofilterParameters['onEmpty'] = $this->_('No track selected...');
         return $model;
     }
     // Add the period filter - if any
     if ($where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db)) {
         $model->addFilter(array($where));
     }
     $trackId = $filter['gr2t_id_track'];
     $engine = $this->loader->getTracker()->getTrackEngine($trackId);
     $engine->addFieldsToModel($model, false);
     return $model;
 }
 protected function getFilter()
 {
     $filter = array();
     if (isset($this->data['gto_id_track']) && $this->data['gto_id_track']) {
         $filter['gto_id_track'] = $this->data['gto_id_track'];
     }
     if (isset($this->data['gto_round_description']) && $this->data['gto_round_description']) {
         $filter['gto_round_description'] = $this->data['gto_round_description'];
     }
     if (isset($this->data['gto_id_organization']) && $this->data['gto_id_organization']) {
         $filter['gto_id_organization'] = $this->data['gto_id_organization'];
     }
     if (isset($this->data['dateused']) && $this->data['dateused']) {
         $where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($this->data, $this->db);
         if ($where) {
             $filter[] = $where;
         }
     }
     $filter[] = 'gto_start_time IS NOT NULL';
     $filter['gco_code'] = 'consent given';
     $filter['gr2o_reception_code'] = 'OK';
     $filter['grc_success'] = 1;
     if (isset($data['ids'])) {
         $idStrings = $data['ids'];
         $idArray = preg_split('/[\\s,;]+/', $idStrings, -1, PREG_SPLIT_NO_EMPTY);
         if ($idArray) {
             // Make sure output is OK
             // $idArray = array_map(array($this->db, 'quote'), $idArray);
             $filter['gto_id_respondent'] = $idArray;
         }
     }
     return $filter;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $elements[] = new \Zend_Form_Element_Hidden(\MUtil_Model::REQUEST_ID1);
     $elements[] = new \Zend_Form_Element_Hidden(\MUtil_Model::REQUEST_ID2);
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $user = $this->loader->getCurrentUser();
     if ($user->hasPrivilege('pr.respondent.select-on-track')) {
         $tracks = $this->searchData['__active_tracks'];
         $masks['show_all'] = $this->_('(all)');
         $masks['show_without_track'] = $this->_('(no track)');
         if (count($tracks) > 1) {
             $masks['show_with_track'] = $this->_('(with track)');
         }
         if (count($tracks) > 1) {
             $elements[] = $this->_createSelectElement('gr2t_id_track', $masks + $tracks);
         } else {
             $element = $this->_createRadioElement('gr2t_id_track', $masks + $tracks);
             $element->setSeparator(' ');
             $elements[] = $element;
         }
         $lineBreak = true;
     } else {
         $lineBreak = false;
     }
     if ($user->hasPrivilege('pr.respondent.show-deleted')) {
         $elements[] = $this->_createCheckboxElement('grc_success', $this->_('Show active'));
     }
     if ($this->model->isMultiOrganization()) {
         $element = $this->_createSelectElement(\MUtil_Model::REQUEST_ID2, $user->getRespondentOrganizations(), $this->_('(all organizations)'));
         if ($lineBreak) {
             $element->setLabel($this->_('Organization'))->setAttrib('onchange', 'this.form.submit();');
             $elements[] = \MUtil_Html::create('br');
         }
         $elements[] = $element;
     }
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $elements[] = new \Zend_Form_Element_Hidden(\MUtil_Model::REQUEST_ID);
     $elements[] = $this->_createSelectElement('gtf_field_type', $this->model, $this->_('(all types)'));
     $elements[] = \MUtil_Html::create('br');
     return $elements;
 }
 /**
  * Creates a model for getModel(). Called only for each new $action.
  *
  * The parameters allow you to easily adapt the model to the current action. The $detailed
  * parameter was added, because the most common use of action is a split between detailed
  * and summarized actions.
  *
  * @param boolean $detailed True when the current action is not in $summarizedActions.
  * @param string $action The current action.
  * @return \MUtil_Model_ModelAbstract
  */
 public function createModel($detailed, $action)
 {
     $model = new \Gems_Model_JoinModel('resptrack', 'gems__respondent2track');
     $model->addTable('gems__respondent2org', array('gr2t_id_user' => 'gr2o_id_user', 'gr2t_id_organization' => 'gr2o_id_organization'));
     $model->addTable('gems__tracks', array('gr2t_id_track' => 'gtr_id_track'));
     $model->addTable('gems__reception_codes', array('gr2t_reception_code' => 'grc_id_reception_code'));
     $model->addFilter(array('grc_success' => 1));
     $model->resetOrder();
     $model->set('gr2o_patient_nr', 'label', $this->_('Respondent nr'));
     $model->set('gr2t_start_date', 'label', $this->_('Start date'), 'dateFormat', 'dd-MM-yyyy');
     $model->set('gr2t_end_date', 'label', $this->_('End date'), 'dateFormat', 'dd-MM-yyyy');
     $filter = $this->getSearchFilter($action !== 'export');
     if (!(isset($filter['gr2t_id_organization']) && $filter['gr2t_id_organization'])) {
         $model->addFilter(array('gr2t_id_organization' => $this->currentUser->getRespondentOrgFilter()));
     }
     if (!(isset($filter['gr2t_id_track']) && $filter['gr2t_id_track'])) {
         $model->setFilter(array('1=0'));
         $this->autofilterParameters['onEmpty'] = $this->_('No track selected...');
         return $model;
     }
     // Add the period filter - if any
     if ($where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db)) {
         $model->addFilter(array($where));
     }
     $select = $this->db->select();
     $select->from('gems__rounds', array('gro_id_round', 'gro_id_order', 'gro_round_description', 'gro_icon_file'))->joinInner('gems__surveys', 'gro_id_survey = gsu_id_survey', array('gsu_survey_name'))->where('gro_id_track = ?', $filter['gr2t_id_track'])->order('gro_id_order');
     if (isset($filter['gsu_id_primary_group']) && $filter['gsu_id_primary_group']) {
         $select->where('gsu_id_primary_group = ?', $filter['gsu_id_primary_group']);
     }
     $data = $this->db->fetchAll($select);
     if (!$data) {
         return $model;
     }
     $status = $this->util->getTokenData()->getStatusExpression();
     $select = $this->db->select();
     $select->from('gems__tokens', array('gto_id_respondent_track', 'gto_id_round', 'gto_id_token', 'status' => $status))->joinInner('gems__reception_codes', 'gto_reception_code = grc_id_reception_code', array())->where('gto_id_track = ?', $filter['gr2t_id_track'])->order('grc_success')->order('gto_id_respondent_track')->order('gto_round_order');
     // \MUtil_Echo::track($this->db->fetchAll($select));
     $newModel = new \MUtil_Model_SelectModel($select, 'tok');
     $newModel->setKeys(array('gto_id_respondent_track'));
     $transformer = new \MUtil_Model_Transform_CrossTabTransformer();
     $transformer->addCrosstabField('gto_id_round', 'status', 'stat_')->addCrosstabField('gto_id_round', 'gto_id_token', 'tok_');
     foreach ($data as $row) {
         $name = 'stat_' . $row['gro_id_round'];
         $transformer->set($name, 'label', \MUtil_Lazy::call('substr', $row['gsu_survey_name'], 0, 2), 'description', sprintf("%s\n[%s]", $row['gsu_survey_name'], $row['gro_round_description']), 'noSort', true, 'round', $row['gro_round_description'], 'roundIcon', $row['gro_icon_file']);
         $transformer->set('tok_' . $row['gro_id_round']);
     }
     $newModel->addTransformer($transformer);
     // \MUtil_Echo::track($data);
     $joinTrans = new \MUtil_Model_Transform_JoinTransformer();
     $joinTrans->addModel($newModel, array('gr2t_id_respondent_track' => 'gto_id_respondent_track'));
     $model->resetOrder();
     $model->set('gr2o_patient_nr');
     $model->set('gr2t_start_date');
     $model->addTransformer($joinTrans);
     return $model;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $yesNo = $this->util->getTranslated()->getYesNo();
     $elements = parent::getAutoSearchElements($data);
     $elements[] = $this->_createSelectElement('gls_when_no_user', $yesNo, $this->_('(any when no user)'));
     $elements[] = $this->_createSelectElement('gls_on_action', $yesNo, $this->_('(any on action)'));
     $elements[] = $this->_createSelectElement('gls_on_post', $yesNo, $this->_('(any on post)'));
     $elements[] = $this->_createSelectElement('gls_on_change', $yesNo, $this->_('(any on change)'));
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $groups = $this->util->getDbLookup()->getGroups();
     $elements[] = $this->_createSelectElement('gsu_id_primary_group', $groups, $this->_('(all groups)'));
     $states = array('act' => $this->_('Active'), 'sok' => $this->_('OK in source, not active'), 'nok' => $this->_('Blocked in source'));
     $elements[] = $this->_createSelectElement('status', $states, $this->_('(every state)'));
     $elements[] = \MUtil_Html::create('br');
     $yesNo = $this->util->getTranslated()->getYesNo();
     $elements[] = $this->_createSelectElement('gsu_insertable', $yesNo, $this->_('(any insertable)'));
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     // Search text
     $elements = parent::getAutoSearchElements($data);
     $this->_addPeriodSelectors($elements, array('grco_created' => $this->_('Date sent')));
     $br = \MUtil_Html::create()->br();
     $elements[] = null;
     $dbLookup = $this->util->getDbLookup();
     $elements[] = $this->_createSelectElement('gto_id_track', $this->util->getTrackData()->getAllTracks(), $this->_('(select a track)'));
     $elements[] = $this->_createSelectElement('gto_id_survey', $this->util->getTrackData()->getAllSurveys(), $this->_('(all surveys)'));
     $elements[] = $this->_createSelectElement('grco_organization', $this->loader->getCurrentUser()->getRespondentOrganizations(), $this->_('(all organizations)'));
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $orgs = $this->currentUser->getRespondentOrganizations();
     if (count($orgs) > 1) {
         $elements[] = $this->_createSelectElement('gap_id_organization', $orgs, $this->_('(all organizations)'));
     }
     $locations = $this->loader->getAgenda()->getLocations();
     if (count($locations) > 1) {
         $elements[] = $this->_createSelectElement('gap_id_location', $locations, $this->_('(all locations)'));
     }
     $elements[] = null;
     $this->_addPeriodSelectors($elements, 'gap_admission_time');
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     if ($elements) {
         $br = \MUtil_Html::create('br');
         $elements[] = $this->_createSelectElement('gtr_track_class', $this->model, $this->_('(all track engines)'));
         $elements[] = $br;
         $optionsA = $this->util->getTranslated()->getYesNo();
         $elementA = $this->_createSelectElement('gtr_active', $optionsA, $this->_('(both)'));
         $elementA->setLabel($this->model->get('gtr_active', 'label'));
         $elements[] = $elementA;
         $user = $this->loader->getCurrentUser();
         $optionsO = $user->getRespondentOrganizations();
         $elementO = $this->_createSelectElement('org', $optionsO, $this->_('(all organizations)'));
         $elements[] = $elementO;
     }
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     if ($elements) {
         $optionsG = $this->util->getDbLookup()->getGroups();
         $elementG = $this->_createSelectElement('gsf_id_primary_group', $optionsG, $this->_('(all functions)'));
         $elements[] = $elementG;
         $user = $this->loader->getCurrentUser();
         $optionsO = $user->getAllowedOrganizations();
         if (count($optionsO) > 1) {
             $elementO = $this->_createSelectElement('gsf_id_organization', $optionsO, $this->_('(all organizations)'));
             $elements[] = $elementO;
         }
         $optionsA = $this->util->getTranslated()->getYesNo();
         $elementA = $this->_createSelectElement('gsf_active', $optionsA, $this->_('(both)'));
         $elementA->setLabel($this->model->get('gsf_active', 'label'));
         $elements[] = $elementA;
     }
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     if ($this->organizationField) {
         $user = $this->loader->getCurrentUser();
         if ($this->respondentOrganizations) {
             $availableOrganizations = $this->util->getDbLookup()->getOrganizationsWithRespondents();
         } else {
             $availableOrganizations = $this->util->getDbLookup()->getActiveOrganizations();
         }
         if ($user->hasPrivilege('pr.staff.see.all')) {
             // Select organization
             $options = $availableOrganizations;
         } else {
             $options = array_intersect($availableOrganizations, $user->getAllowedOrganizations());
         }
         if ($options) {
             $elements[] = $this->_createSelectElement($this->organizationField, $options, $this->_('(all organizations)'));
         }
     }
     return $elements;
 }
 /**
  * Returns a text element for autosearch. Can be overruled.
  *
  * The form / html elements to search on. Elements can be grouped by inserting null's between them.
  * That creates a distinct group of elements
  *
  * @param array $data The $form field values (can be usefull, but no need to set them)
  * @return array Of \Zend_Form_Element's or static tekst to add to the html or null for group breaks.
  */
 protected function getAutoSearchElements(array $data)
 {
     $elements = parent::getAutoSearchElements($data);
     $user = $this->loader->getCurrentUser();
     if ($user->hasPrivilege('pr.respondent.select-on-track')) {
         $elements[] = $this->_createCheckboxElement('show_with_track', $this->_('Has track'));
         $elements[] = $this->_createCheckboxElement('show_without_track', $this->_('No track'));
         $lineBreak = true;
     } else {
         $lineBreak = false;
     }
     if ($user->hasPrivilege('pr.respondent.show-deleted')) {
         $elements[] = $this->_createCheckboxElement('grc_success', $this->_('Show active'));
     }
     if ($this->model->isMultiOrganization()) {
         $element = $this->_createSelectElement(\MUtil_Model::REQUEST_ID2, $user->getRespondentOrganizations(), $this->_('(all organizations)'));
         if ($lineBreak) {
             $element->setLabel($this->_('Organization'));
             $elements[] = \MUtil_Html::create('br');
         }
         $elements[] = $element;
     }
     return $elements;
 }
Пример #15
0
 /**
  * Get the filter to use with the model for searching
  *
  * @param boolean $useRequest Use the request as source (when false, the session is used)
  * @return array or false
  */
 public function getSearchFilter($useRequest = true)
 {
     $filter = parent::getSearchFilter($useRequest);
     $where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db);
     if ($where) {
         $filter[] = $where;
     }
     return $filter;
 }
 /**
  * Creates a model for getModel(). Called only for each new $action.
  *
  * The parameters allow you to easily adapt the model to the current action. The $detailed
  * parameter was added, because the most common use of action is a split between detailed
  * and summarized actions.
  *
  * @param boolean $detailed True when the current action is not in $summarizedActions.
  * @param string $action The current action.
  * @return \MUtil_Model_ModelAbstract
  */
 public function createModel($detailed, $action)
 {
     $select = $this->getSelect();
     // \MUtil_Model::$verbose = true;
     $model = new \MUtil_Model_SelectModel($select, 'summary');
     // Make sure of filter and sort for these fields
     $model->set('gro_id_order');
     $model->set('gto_id_track');
     $model->set('gto_id_organization');
     $model->resetOrder();
     $model->set('gro_round_description', 'label', $this->_('Round'));
     $model->set('gsu_survey_name', 'label', $this->_('Survey'));
     $model->set('answered', 'label', $this->_('Answered'), 'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     $model->set('missed', 'label', $this->_('Missed'), 'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     $model->set('open', 'label', $this->_('Open'), 'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     $model->set('total', 'label', $this->_('Total'), 'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     // $model->set('future',   'label', $this->_('Future'),   'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     // $model->set('unknown',  'label', $this->_('Unknown'),  'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     // $model->set('is',       'label', ' ',                  'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     // $model->set('success',  'label', $this->_('Success'),    'tdClass', 'centerAlign', 'thClass', 'centerAlign');
     // $model->set('removed',  'label', $this->_('Removed'),  'tdClass', 'deleted centerAlign',
     //         'thClass', 'centerAlign');
     $model->set('ggp_name', 'label', $this->_('Filler'), 'column_expression', new \Zend_Db_Expr('COALESCE(gems__track_fields.gtf_field_name, gems__groups.ggp_name)'));
     $filter = $this->getSearchFilter($action !== 'export');
     if (!(isset($filter['gto_id_organization']) && $filter['gto_id_organization'])) {
         $model->addFilter(array('gto_id_organization' => $this->currentUser->getRespondentOrgFilter()));
     }
     if (isset($filter['gto_id_track']) && $filter['gto_id_track']) {
         // Add the period filter
         if ($where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db)) {
             $select->joinInner('gems__respondent2track', 'gto_id_respondent_track = gr2t_id_respondent_track', array());
             $model->addFilter(array($where));
         }
     } else {
         $model->setFilter(array('1=0'));
         $this->autofilterParameters['onEmpty'] = $this->_('No track selected...');
     }
     return $model;
 }
 /**
  * Get the filter to use with the model for searching
  *
  * @param boolean $useRequest Use the request as source (when false, the session is used)
  * @return array or false
  */
 public function getSearchFilter($useRequest = true)
 {
     $filter = parent::getSearchFilter($useRequest);
     unset($filter['AUTO_SEARCH_TEXT_BUTTON']);
     $where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db, null, 'yyyy-MM-dd HH:mm:ss');
     if ($where) {
         $filter[] = $where;
     }
     if (!isset($filter['gto_id_organization'])) {
         $filter['gto_id_organization'] = $this->currentUser->getRespondentOrgFilter();
     }
     $filter['gsu_active'] = 1;
     $filter['grc_success'] = 1;
     // Overruled with success
     if (isset($filter['main_filter'])) {
         switch ($filter['main_filter']) {
             case 'answered':
                 $filter[] = 'gto_completion_time IS NOT NULL';
                 break;
             case 'hasnomail':
                 $filter[] = sprintf("(grs_email IS NULL OR grs_email = '' OR grs_email NOT RLIKE '%s') AND\n                                ggp_respondent_members = 1", str_replace('\'', '\\\'', trim(\MUtil_Validate_SimpleEmail::EMAIL_REGEX, '/')));
                 $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
                 $filter['gto_completion_time'] = null;
                 break;
             case 'missed':
                 $filter[] = 'gto_valid_from <= CURRENT_TIMESTAMP';
                 $filter[] = 'gto_valid_until < CURRENT_TIMESTAMP';
                 $filter['gto_completion_time'] = null;
                 break;
             case 'notmailed':
                 $filter['gto_mail_sent_date'] = null;
                 $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
                 $filter['gto_completion_time'] = null;
                 break;
             case 'open':
                 $filter['gto_completion_time'] = null;
                 $filter[] = 'gto_valid_from <= CURRENT_TIMESTAMP';
                 $filter[] = '(gto_valid_until >= CURRENT_TIMESTAMP OR gto_valid_until IS NULL)';
                 break;
                 // case 'other':
                 //    $filter[] = "grs_email IS NULL OR grs_email = '' OR ggp_respondent_members = 0";
                 //    $filter['can_email'] = 0;
                 //    $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
                 //    break;
             // case 'other':
             //    $filter[] = "grs_email IS NULL OR grs_email = '' OR ggp_respondent_members = 0";
             //    $filter['can_email'] = 0;
             //    $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
             //    break;
             case 'removed':
                 $filter['grc_success'] = 0;
                 break;
             case 'toanswer':
                 $filter[] = 'gto_completion_time IS NULL';
                 break;
             case 'tomail':
                 $filter[] = sprintf("grs_email IS NOT NULL AND\n                                grs_email != '' AND\n                                grs_email RLIKE '%s' AND\n                                ggp_respondent_members = 1", str_replace('\'', '\\\'', trim(\MUtil_Validate_SimpleEmail::EMAIL_REGEX, '/')));
                 //$filter[] = "grs_email IS NOT NULL AND grs_email != '' AND ggp_respondent_members = 1";
                 $filter['gto_mail_sent_date'] = null;
                 $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
                 $filter['gto_completion_time'] = null;
                 break;
             case 'toremind':
                 // $filter['can_email'] = 1;
                 $filter[] = 'gto_mail_sent_date < CURRENT_TIMESTAMP';
                 $filter[] = '(gto_valid_until IS NULL OR gto_valid_until >= CURRENT_TIMESTAMP)';
                 $filter['gto_completion_time'] = null;
                 break;
             default:
                 break;
         }
         unset($filter['main_filter']);
     }
     return $filter;
 }
 /**
  * Get the filter to use with the model for searching
  *
  * @param boolean $useRequest Use the request as source (when false, the session is used)
  * @return array or false
  */
 public function getSearchFilter($useRequest = true)
 {
     $filter = parent::getSearchFilter($useRequest);
     $where = \Gems_Snippets_AutosearchFormSnippet::getPeriodFilter($filter, $this->db, $this->getDateFormat(), 'yyyy-MM-dd HH:mm:ss');
     if ($where) {
         $filter[] = $where;
     }
     return $filter;
 }