public function searchAction() { $this->_helper->viewRenderer->setNoRender(true); $this->_helper->layout()->disableLayout(); $request = $this->getRequest(); $param_view = array_diff($request->getParams(), $request->getUserParams()); $format = $this->_getParam('format', 'log'); $params = $param_view['myarray']; $member_ids = array(); $member_ids = $this->fetchAllStudents(); if (empty($member_ids)) { return $this->returnResult($format, false); } $member_ids = $this->combineResult($member_ids, $member_ids); $batch_member_ids = array(); $department_member_ids = array(); $programme_member_ids = array(); $personal_matches = array(); $rel_matches = array(); $student = new Core_Model_Member_Student(); $critical_fields = array(); $rel_fields = array(); if (!empty($params)) { if (!empty($params['programme_id'])) { $p_search = $this->programmeSearch($params['programme_id']); if (empty($p_search)) { return $this->returnResult($format, false); } } $member_ids = $this->combineResult($member_ids, $programme_member_ids); Zend_Registry::get('logger')->debug($member_ids); if (!empty($params['discipline_id'])) { $d_search = $this->disciplineSearch($params['discipline_id']); Zend_Registry::get('logger')->debug($d_search); if (empty($p_search)) { return $this->returnResult($format, false); } } if (!empty($d_search)) { $member_ids = array_intersect($member_ids, $d_search); } if (!empty($params['batch_start'])) { $b_search = $this->batchStartSearch($params['batch_start']); if (empty($b_search)) { return $this->returnResult($format, false); } } $member_ids = $this->combineResult($member_ids, $batch_member_ids); foreach ($params as $key => $value) { switch (substr($key, 0, 1)) { case '0': $critical_key = substr($key, 1); $critical_fields[$critical_key] = $params[$key]; break; case '1': $rel_key = substr($key, 1); $rel_fields[$rel_key] = $params[$key]; break; default: //throw new Exception('invalid params'); break; } } if (!empty($critical_fields)) { $critical_range_fields = array('dob' => ''); $critical_range_params = array_intersect_key($critical_fields, $critical_range_fields); $critical_exact_params = array_diff_key($critical_fields, $critical_range_params); $student = new Core_Model_Member_Student(); $personal_matches = $student->search($critical_exact_params, $critical_range_params); if (empty($personal_matches)) { return $this->returnResult($format, false); } } $member_ids = $this->combineResult($member_ids, $personal_matches); if (!empty($rel_fields)) { $rel_range_fields = array('annual_income' => ''); $rel_range_params = array_intersect_key($rel_fields, $rel_range_fields); $rel_exact_params = array_diff_key($rel_fields, $rel_range_params); $relatives = new Core_Model_MemberRelatives(); $rel_matches = $relatives->search($rel_exact_params, $rel_range_params); if (empty($rel_matches)) { return $this->returnResult($format, false); } } $member_ids = $this->combineResult($member_ids, $rel_matches); } $this->returnResult($format, $member_ids); }