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
An exception for terminatinating execution or to throw for unit testing.
Class for search actions in ILIAS survey tool.
search()
Executes a search.
__construct($search_text="", $concatenation=self::CONCAT_AND, $search_field="all", $search_type="all")
SurveySearch constructor.
Database Wrapper.
Definition: class.ilDB.php:30
$params
Definition: example_049.php:96