1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
<?php
/*-----8<--------------------------------------------------------------------
*
* BEdita - a semantic content management framework
*
* Copyright 2014 ChannelWeb Srl, Chialab Srl
*
* This file is part of BEdita: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* BEdita is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with BEdita (see LICENSE.LGPL).
* If not, see <http://gnu.org/licenses/lgpl-3.0.html>.
*
*------------------------------------------------------------------->8-----
*/
App::import('Helper', 'Session');
/**
* SessionFilterHelper class
*
* work on filters put in session by SessionFilterComponent class
*/
class SessionFilterHelper extends AppHelper {
/**
* list of helpers used
* @var array
*/
public $helpers = array('Session');
/**
* the session key prefix
* @var string
*/
private $sessionKeyPrefix = 'beditaFilter';
/**
* the session key as filter.ControllerName.actionName
* if it's defined the view var $sessionFilterKey then use its value as key
* @var string
*/
private $sessionKey = null;
public function __construct() {
parent::__construct();
$view = ClassRegistry::getObject('view');
if (!empty($view->viewVars['sessionFilterKey'])) {
$this->sessionKey = $view->viewVars['sessionFilterKey'];
} elseif (!empty($view->params['controller']) && !empty($view->params['action'])) {
$this->sessionKey = $this->sessionKeyPrefix . '.' . $view->params['controller'] . '.' . $view->params['action'];
}
}
/**
* read all filters in session or a specific value for a key
*
* @param string $key the filter session key
* @return mixed false if $key doesn't exist in session
*/
public function read($key = null) {
$activeFilter = $this->Session->read($this->sessionKey);
$value = false;
if ($key) {
if (!empty($activeFilter[$key])) {
$value = $activeFilter[$key];
}
} else {
$value = $activeFilter;
}
$value = Sanitize::clean($value, array('encode' => true, 'remove_html' => true));
return $value;
}
/**
* check the existence of $key in the filter
* or if no $key is specified check if a filter is active
*
* @param string $key
* @return boolean
*/
public function check($key = null) {
$filter = $this->read($key);
return (!empty($filter));
}
}