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