/** * Overrule to implement snippet specific filtering and sorting. * * @param \MUtil_Model_ModelAbstract $model */ protected function processFilterAndSort(\MUtil_Model_ModelAbstract $model) { parent::processFilterAndSort($model); $appId = $this->request->getParam(\Gems_Model::APPOINTMENT_ID); if ($appId) { $appKeyPrefix = $this->db->quote(FieldsDefinition::makeKey(FieldMaintenanceModel::APPOINTMENTS_NAME, '')); $appSource = $this->db->quote(\Gems_Tracker_Engine_StepEngineAbstract::APPOINTMENT_TABLE); $or[] = $this->db->quoteInto("gro_valid_after_source = {$appSource} AND\n (gto_id_respondent_track, gro_valid_after_field) IN\n (SELECT gr2t2a_id_respondent_track, CONCAT({$appKeyPrefix}, gr2t2a_id_app_field)\n FROM gems__respondent2track2appointment\n WHERE gr2t2a_id_appointment = ?)", $appId); $or[] = $this->db->quoteInto("gro_valid_for_source = {$appSource} AND\n (gto_id_respondent_track, gro_valid_for_field) IN\n (SELECT gr2t2a_id_respondent_track, CONCAT({$appKeyPrefix}, gr2t2a_id_app_field)\n FROM gems__respondent2track2appointment\n WHERE gr2t2a_id_appointment = ?)", $appId); } $model->addFilter(array('(' . implode(') OR (', $or) . ')')); }