Merge branch 'MDL-57570-master' of https://github.com/mwehr/moodle
[moodle.git] / mod / forum / classes / output / big_search_form.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Big search form.
19  *
20  * @package    mod_forum
21  * @copyright  2016 Frédéric Massart - FMCorz.net
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace mod_forum\output;
26 defined('MOODLE_INTERNAL') || die();
28 use html_writer;
29 use moodle_url;
30 use renderable;
31 use renderer_base;
32 use stdClass;
33 use templatable;
35 /**
36  * Big search form class.
37  *
38  * @package    mod_forum
39  * @copyright  2016 Frédéric Massart - FMCorz.net
40  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
41  */
42 class big_search_form implements renderable, templatable {
44     public $course;
45     public $datefrom;
46     public $dateto;
47     public $forumoptions;
48     public $fullwords;
49     public $notwords;
50     public $phrase;
51     public $scripturl;
52     public $showfullwords;
53     public $subject;
54     public $user;
55     public $words;
57     /**
58      * Constructor.
59      *
60      * @param object $course The course.
61      * @param object $user The user.
62      */
63     public function __construct($course) {
64         global $DB;
65         $this->course = $course;
66         $this->scripturl = new moodle_url('/mod/forum/forum.js');
67         $this->showfullwords = $DB->get_dbfamily() == 'mysql' || $DB->get_dbfamily() == 'postgres';
69         $forumoptions = ['' => get_string('allforums', 'forum')] + forum_menu_list($course);
70         $this->forumoptions = array_map(function($option) use ($forumoptions) {
71             return [
72                 'value' => $option,
73                 'name' => $forumoptions[$option]
74             ];
75         }, array_keys($forumoptions));
76     }
78     /**
79      * Set date from.
80      *
81      * @param mixed $value Date from.
82      */
83     public function set_datefrom($value) {
84         $this->datefrom = $value;
85     }
87     /**
88      * Set date to.
89      *
90      * @param mixed $value Date to.
91      */
92     public function set_dateto($value) {
93         $this->dateto = $value;
94     }
96     /**
97      * Set full words.
98      *
99      * @param mixed $value Full words.
100      */
101     public function set_fullwords($value) {
102         $this->fullwords = $value;
103     }
105     /**
106      * Set not words.
107      *
108      * @param mixed $value Not words.
109      */
110     public function set_notwords($value) {
111         $this->notwords = $value;
112     }
114     /**
115      * Set phrase.
116      *
117      * @param mixed $value Phrase.
118      */
119     public function set_phrase($value) {
120         $this->phrase = $value;
121     }
123     /**
124      * Set subject.
125      *
126      * @param mixed $value Subject.
127      */
128     public function set_subject($value) {
129         $this->subject = $value;
130     }
132     /**
133      * Set user.
134      *
135      * @param mixed $value User.
136      */
137     public function set_user($value) {
138         $this->user = $value;
139     }
141     /**
142      * Set words.
143      *
144      * @param mixed $value Words.
145      */
146     public function set_words($value) {
147         $this->words = $value;
148     }
150     public function export_for_template(renderer_base $output) {
151         $data = new stdClass();
153         $data->scripturl = $this->scripturl->out(false);
154         $data->courseid = $this->course->id;
155         $data->words = $this->words;
156         $data->phrase = $this->phrase;
157         $data->notwords = $this->notwords;
158         $data->fullwords = $this->fullwords;
159         $data->datefromchecked = !empty($this->datefrom);
160         $data->datetochecked = !empty($this->dateto);
161         $data->subject = $this->subject;
162         $data->user = $this->user;
163         $data->showfullwords = $this->showfullwords;
165         $datefrom = $this->datefrom;
166         if (empty($datefrom)) {
167             $datefrom = make_timestamp(2000, 1, 1, 0, 0, 0);
168         }
170         $dateto = $this->dateto;
171         if (empty($dateto)) {
172             $dateto = time() + HOURSECS;
173         }
175         $data->datefromfields = html_writer::select_time('days', 'fromday', $datefrom)
176                               . html_writer::select_time('months', 'frommonth', $datefrom)
177                               . html_writer::select_time('years', 'fromyear', $datefrom)
178                               . html_writer::select_time('hours', 'fromhour', $datefrom)
179                               . html_writer::select_time('minutes', 'fromminute', $datefrom);
181         $data->datetofields = html_writer::select_time('days', 'today', $dateto)
182                             . html_writer::select_time('months', 'tomonth', $dateto)
183                             . html_writer::select_time('years', 'toyear', $dateto)
184                             . html_writer::select_time('hours', 'tohour', $dateto)
185                             . html_writer::select_time('minutes', 'tominute', $dateto);
187         $data->forumoptions = $this->forumoptions;
189         return $data;
190     }