xref: /plugin/bez/ctl/threads.php (revision de02284c1e90f3c0d8df29c1c019b3ef912eafd9)
1*de02284cSSzymon Olewniczak<?php
2*de02284cSSzymon Olewniczak/** @var action_plugin_bez $this */
3*de02284cSSzymon Olewniczak
4*de02284cSSzymon Olewniczakdefine('BEZ_THREAD_FILTERS_COOKIE_NAME', 'bez_thread_filters');
5*de02284cSSzymon Olewniczak
6*de02284cSSzymon Olewniczakif (count($_POST) > 0) {
7*de02284cSSzymon Olewniczak	$raw_filters = $_POST;
8*de02284cSSzymon Olewniczak} elseif (empty($this->params) && isset($_COOKIE[BEZ_THREAD_FILTERS_COOKIE_NAME])) {
9*de02284cSSzymon Olewniczak	$raw_filters = $_COOKIE[BEZ_THREAD_FILTERS_COOKIE_NAME];
10*de02284cSSzymon Olewniczak}
11*de02284cSSzymon Olewniczak
12*de02284cSSzymon Olewniczakif (isset($raw_filters)) {
13*de02284cSSzymon Olewniczak    //save filters
14*de02284cSSzymon Olewniczak    foreach ($raw_filters as $k => $v) {
15*de02284cSSzymon Olewniczak        setcookie(BEZ_THREAD_FILTERS_COOKIE_NAME."[$k]", $v);
16*de02284cSSzymon Olewniczak    }
17*de02284cSSzymon Olewniczak
18*de02284cSSzymon Olewniczak    $filters = array_filter($raw_filters, function($v) {
19*de02284cSSzymon Olewniczak       return $v !== '-all' && $v !== '';
20*de02284cSSzymon Olewniczak    });
21*de02284cSSzymon Olewniczak
22*de02284cSSzymon Olewniczak    if (empty($filters)) {
23*de02284cSSzymon Olewniczak        $filters['year'] = '-all';
24*de02284cSSzymon Olewniczak    }
25*de02284cSSzymon Olewniczak
26*de02284cSSzymon Olewniczak	header('Location: '.$this->url('threads', $filters));
27*de02284cSSzymon Olewniczak} else {
28*de02284cSSzymon Olewniczak    $filters = $this->params;
29*de02284cSSzymon Olewniczak}
30*de02284cSSzymon Olewniczak
31*de02284cSSzymon Olewniczak$this->tpl->set_values($filters);
32*de02284cSSzymon Olewniczak
33*de02284cSSzymon Olewniczak//$issuetypes = $this->model->issuetypes->get_all();
34*de02284cSSzymon Olewniczak$years = $this->model->threadFactory->get_years_scope();
35*de02284cSSzymon Olewniczak
36*de02284cSSzymon Olewniczak//some filters are just copied
37*de02284cSSzymon Olewniczak$db_filters = array_filter($filters, function ($k) {
38*de02284cSSzymon Olewniczak    return in_array($k, array('state', 'label', 'coordinator'));
39*de02284cSSzymon Olewniczak}, ARRAY_FILTER_USE_KEY);
40*de02284cSSzymon Olewniczak
41*de02284cSSzymon Olewniczak//-none filters become empty filters
42*de02284cSSzymon Olewniczak$db_filters = array_map(function($v) {
43*de02284cSSzymon Olewniczak    if ($v === '-none') {
44*de02284cSSzymon Olewniczak        return NULL;
45*de02284cSSzymon Olewniczak    }
46*de02284cSSzymon Olewniczak    return $v;
47*de02284cSSzymon Olewniczak}, $db_filters);
48*de02284cSSzymon Olewniczak
49*de02284cSSzymon Olewniczakif (isset($filters['year']) && $filters['year'] !== '-all') {
50*de02284cSSzymon Olewniczak    $year = $filters['year'];
51*de02284cSSzymon Olewniczak
52*de02284cSSzymon Olewniczak    $start_day = "$year-01-01";
53*de02284cSSzymon Olewniczak    $end_day = "$year-12-31";
54*de02284cSSzymon Olewniczak
55*de02284cSSzymon Olewniczak    $db_filters['create_date'] = array('BETWEEN', array($start_day, $end_day), array('date'));
56*de02284cSSzymon Olewniczak}
57*de02284cSSzymon Olewniczak
58*de02284cSSzymon Olewniczakif (isset($filters['coordinator']) &&
59*de02284cSSzymon Olewniczak        substr($filters['coordinator'], 0, 1) === '@') {
60*de02284cSSzymon Olewniczak    $group = substr($filters['coordinator'], 1);
61*de02284cSSzymon Olewniczak    $db_filters['coordinator'] = array('OR', $this->model->userFactory->users_of_group($group));
62*de02284cSSzymon Olewniczak}
63*de02284cSSzymon Olewniczak
64*de02284cSSzymon Olewniczakif (isset($filters['title'])) {
65*de02284cSSzymon Olewniczak    $title = preg_replace('/\s/', '%', $filters['title']);
66*de02284cSSzymon Olewniczak    $db_filters['title'] = array('LIKE', "%$title%");
67*de02284cSSzymon Olewniczak}
68*de02284cSSzymon Olewniczak
69*de02284cSSzymon Olewniczak$threads = $this->model->threadFactory->get_all($db_filters);
70*de02284cSSzymon Olewniczak
71*de02284cSSzymon Olewniczak//$this->tpl->set('issuetypes', $issuetypes);
72*de02284cSSzymon Olewniczak$this->tpl->set('threads', $threads);
73*de02284cSSzymon Olewniczak$this->tpl->set('years', $years);
74