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