Improve search algorithm and enable searching for Ids

This commit is contained in:
Karsten Heiken
2011-10-29 15:18:08 +00:00
parent ec7073659e
commit 4edafd0ed5
2 changed files with 16 additions and 16 deletions

View File

@@ -215,22 +215,22 @@ class Experiment extends CI_Model {
$this->db->where('projects.id', $projectId); $this->db->where('projects.id', $projectId);
} }
if ($searchAll) { $this->db->select('experiments.*')->from('experiments');
$query = $this->db->like('name', $needle)->get('experiments');
} else { if (!$searchAll) {
$this->db->select('experiments.*')->from('experiments');
$this->db->join('projects', 'projects.id = experiments.project_id', 'left'); $this->db->join('projects', 'projects.id = experiments.project_id', 'left');
$this->db->join('shares', 'shares.project_id = projects.id', 'left'); $this->db->join('shares', 'shares.project_id = projects.id', 'left');
$this->db->where("(`shares`.`user_id` = " . $this->db->escape($this->session->userdata('user_id')) $this->db->where("(`shares`.`user_id` = " . $this->db->escape($this->session->userdata('user_id'))
. " OR `projects`.`owner` = " . $this->db->escape($this->session->userdata('user_id')) . " OR `projects`.`owner` = " . $this->db->escape($this->session->userdata('user_id'))
. " OR `projects`.`public` = 1)"); . " OR `projects`.`public` = 1)");
$this->db->like('experiments.name', $needle);
$query = $this->db->get();
} }
$this->db->like('experiments.name', $needle);
$this->db->or_like('experiments.id', $needle);
$query = $this->db->get();
return $query->result_array(); return $query->result_array();
} }
} }

View File

@@ -172,21 +172,21 @@ class Project extends CI_Model {
* @return array Returns an array of all found projects. * @return array Returns an array of all found projects.
*/ */
public function search($needle, $searchAll = false) { public function search($needle, $searchAll = false) {
if ($searchAll) {
$query = $this->db->like('name', $needle)->get('projects'); $this->db->select('projects.*')->from('projects');
} else {
$this->db->select('projects.*')->from('projects'); if (!$searchAll) {
$this->db->join('shares', 'shares.project_id = projects.id', 'left'); $this->db->join('shares', 'shares.project_id = projects.id', 'left');
$this->db->where("(`shares`.`user_id` = " . $this->db->escape($this->session->userdata('user_id')) $this->db->where("(`shares`.`user_id` = " . $this->db->escape($this->session->userdata('user_id'))
. " OR `projects`.`owner` = " . $this->db->escape($this->session->userdata('user_id')) . " OR `projects`.`owner` = " . $this->db->escape($this->session->userdata('user_id'))
. " OR `projects`.`public` = 1)"); . " OR `projects`.`public` = 1)");
$this->db->like('projects.name', $needle);
$query = $this->db->get();
} }
$this->db->like('projects.name', $needle);
$this->db->or_like('projects.id', $needle);
$query = $this->db->get();
return $this->addShortNames($query->result_array()); return $this->addShortNames($query->result_array());
} }