ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.SurveySearch.php
Go to the documentation of this file.
1 <?php
2  /*
3  +----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +----------------------------------------------------------------------------+
22 */
23 
35 {
36  const CONCAT_AND = 0;
37  const CONCAT_OR = 1;
38 
47 
56 
65 
74 
83 
91  var $ilDB;
92 
93 
105  function __construct($search_text = "", $concatenation = self::CONCAT_AND, $search_field = "all", $search_type = "all")
106  {
107  global $ilDB;
108 
109  $this->ilDB = $ilDB;
110 
111  $this->search_terms = explode(" +", $search_text);
112  $this->concatenation = $concatenation;
113  $this->search_field = $search_field;
114  $this->search_type = $search_type;
115  $this->search_results = array();
116  }
117 
125  function search()
126  {
127  global $ilDB;
128 
129  $where = "";
130  $fields = array();
131  if (strcmp($this->search_type, "all") != 0)
132  {
133  $where = "svy_qtype.type_tag = " . $ilDB->quote($this->search_type, 'text');
134  }
135  foreach ($this->search_terms as $term)
136  {
137  switch ($this->search_field)
138  {
139  case "all":
140  $fields["$term"] = array();
141  array_push($fields["$term"], $ilDB->like("svy_question.title", 'text', "%" .$term . "%"));
142  array_push($fields["$term"], $ilDB->like("svy_question.description", 'text', "%" .$term . "%"));
143  array_push($fields["$term"], $ilDB->like("svy_question.author", 'text', "%" .$term . "%"));
144  array_push($fields["$term"], $ilDB->like("svy_question.questiontext", 'text', "%" .$term . "%"));
145  break;
146  default:
147  $fields["$term"] = array();
148  array_push($fields["$term"], $ilDB->like("svy_question." . $this->search_field, 'text', "%" .$term . "%"));
149  break;
150  }
151  }
152  $cumulated_fields = array();
153  foreach ($fields as $params)
154  {
155  array_push($cumulated_fields, "(" . join($params, " OR ") . ")");
156  }
157  $str_where = "";
158  if ($this->concatenation == self::CONCAT_AND)
159  {
160  $str_where = "(" . join($cumulated_fields, " AND ") . ")";
161  }
162  else
163  {
164  $str_where = "(" . join($cumulated_fields, " OR ") . ")";
165  }
166  if ($str_where)
167  {
168  $str_where = " AND $str_where";
169  }
170  if ($where)
171  {
172  $str_where .= " AND (" . $where . ")";
173  }
174  $result = $ilDB->query("SELECT svy_question.*, svy_qtype.type_tag, object_reference.ref_id FROM " .
175  "svy_question, svy_qtype, object_reference WHERE svy_question.questiontype_fi = svy_qtype.questiontype_id ".
176  "AND svy_question.original_id IS NULL AND svy_question.obj_fi = object_reference.obj_id AND ".
177  "svy_question.obj_fi > 0$str_where");
178  $result_array = array();
179  global $rbacsystem;
180  if ($result->numRows() > 0)
181  {
182  while ($row = $ilDB->fetchAssoc($result))
183  {
184  if (($row["complete"] == 1) and ($rbacsystem->checkAccess('write', $row["ref_id"])))
185  {
186  array_push($result_array, $row);
187  }
188  }
189  }
190  $this->search_results =& $result_array;
191  }
192 }
193 
194 ?>
$result
search()
Executes a search.
__construct($search_text="", $concatenation=self::CONCAT_AND, $search_field="all", $search_type="all")
SurveySearch constructor.
Create styles array
The data for the language used.
Class for search actions in ILIAS survey tool.
Database Wrapper.
Definition: class.ilDB.php:29
$params
Definition: example_049.php:96