Open Journal Systems  3.3.0
PersistableFilter.inc.php
1 <?php
39 import('lib.pkp.classes.filter.Filter');
40 import('lib.pkp.classes.filter.FilterGroup');
41 
42 define('FILTER_GROUP_TEMPORARY_ONLY', '$$$temporary$$$');
43 
44 class PersistableFilter extends Filter {
46  var $_filterGroup;
47 
49  var $_settings = array();
50 
68  function __construct($filterGroup) {
69  // Check and set the filter group.
70  assert(is_a($filterGroup, 'FilterGroup'));
71  $this->_filterGroup = $filterGroup;
72 
73  // Initialize the filter.
74  $this->setParentFilterId(0);
75  $this->setIsTemplate(false);
76  parent::__construct($filterGroup->getInputType(), $filterGroup->getOutputType());
77  }
78 
79 
80  //
81  // Setters and Getters
82  //
87  function getFilterGroup() {
88  return $this->_filterGroup;
89  }
90 
106  function setIsTemplate($isTemplate) {
107  $this->setData('isTemplate', (boolean)$isTemplate);
108  }
109 
115  function getIsTemplate() {
116  return $this->getData('isTemplate');
117  }
118 
123  function setParentFilterId($parentFilterId) {
124  $this->setData('parentFilterId', $parentFilterId);
125  }
126 
131  function getParentFilterId() {
132  return $this->getData('parentFilterId');
133  }
134 
139  function addSetting($setting) {
140  assert(is_a($setting, 'FilterSetting'));
141  $settingName = $setting->getName();
142 
143  // Check that the setting name does not
144  // collide with one of the internal settings.
145  if (in_array($settingName, $this->getInternalSettings())) fatalError('Trying to override an internal filter setting!');
146 
147  assert(!isset($this->_settings[$settingName]));
148  $this->_settings[$settingName] = $setting;
149  }
150 
156  function getSetting($settingName) {
157  assert(isset($this->_settings[$settingName]));
158  return $this->_settings[$settingName];
159  }
160 
165  function &getSettings() {
166  return $this->_settings;
167  }
168 
173  function hasSetting($settingName) {
174  return isset($this->_settings[$settingName]);
175  }
176 
181  function hasSettings() {
182  return (is_array($this->_settings) && count($this->_settings));
183  }
184 
185  //
186  // Abstract template methods to be implemented by subclasses
187  //
199  function getClassName() {
200  assert(false);
201  }
202 
203  //
204  // Public methods
205  //
215  function getSettingNames() {
216  $settingNames = array();
217  foreach($this->getSettings() as $setting) { /* @var $setting FilterSetting */
218  if (!$setting->getIsLocalized()) {
219  $settingNames[] = $setting->getName();
220  }
221  }
222  return $settingNames;
223  }
224 
234  function getLocalizedSettingNames() { /* @var $setting FilterSetting */
235  $localizedSettingNames = array();
236  foreach($this->getSettings() as $setting) {
237  if ($setting->getIsLocalized()) {
238  $localizedSettingNames[] = $setting->getName();
239  }
240  }
241  return $localizedSettingNames;
242  }
243 
244 
245  //
246  // Public static helper methods
247  //
268  static function tempGroup($inputType, $outputType) {
269  $temporaryGroup = new FilterGroup();
270  $temporaryGroup->setSymbolic(FILTER_GROUP_TEMPORARY_ONLY);
271  $temporaryGroup->setInputType($inputType);
272  $temporaryGroup->setOutputType($outputType);
273  return $temporaryGroup;
274  }
275 
276 
277  //
278  // Protected helper methods
279  //
286  function getInternalSettings() {
287  return array('id', 'displayName', 'isTemplate', 'parentFilterId', 'seq');
288  }
289 }
290 
DataObject\getData
& getData($key, $locale=null)
Definition: DataObject.inc.php:100
PersistableFilter\getIsTemplate
getIsTemplate()
Definition: PersistableFilter.inc.php:121
PersistableFilter\$_settings
$_settings
Definition: PersistableFilter.inc.php:55
PersistableFilter\getSettings
& getSettings()
Definition: PersistableFilter.inc.php:171
PersistableFilter\getSetting
getSetting($settingName)
Definition: PersistableFilter.inc.php:162
FilterGroup
Class that represents filter groups.
Definition: FilterGroup.inc.php:45
PersistableFilter\getSettingNames
getSettingNames()
Definition: PersistableFilter.inc.php:221
PersistableFilter\setIsTemplate
setIsTemplate($isTemplate)
Definition: PersistableFilter.inc.php:112
Clue\StreamFilter
Definition: CallbackFilter.php:3
PersistableFilter\getParentFilterId
getParentFilterId()
Definition: PersistableFilter.inc.php:137
PersistableFilter\__construct
__construct($filterGroup)
Definition: PersistableFilter.inc.php:74
PersistableFilter\getLocalizedSettingNames
getLocalizedSettingNames()
Definition: PersistableFilter.inc.php:240
PersistableFilter\getInternalSettings
getInternalSettings()
Definition: PersistableFilter.inc.php:292
PersistableFilter\tempGroup
static tempGroup($inputType, $outputType)
Definition: PersistableFilter.inc.php:274
PersistableFilter\addSetting
addSetting($setting)
Definition: PersistableFilter.inc.php:145
PersistableFilter\getClassName
getClassName()
Definition: PersistableFilter.inc.php:205
PersistableFilter\$_filterGroup
$_filterGroup
Definition: PersistableFilter.inc.php:49
DataObject\__construct
__construct()
Definition: DataObject.inc.php:58
PersistableFilter\getFilterGroup
getFilterGroup()
Definition: PersistableFilter.inc.php:93
Seboettg\Collection\count
count()
Definition: ArrayListTrait.php:253
PersistableFilter\setParentFilterId
setParentFilterId($parentFilterId)
Definition: PersistableFilter.inc.php:129
PersistableFilter\hasSetting
hasSetting($settingName)
Definition: PersistableFilter.inc.php:179
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
PersistableFilter\hasSettings
hasSettings()
Definition: PersistableFilter.inc.php:187
DataObject\setData
setData($key, $value, $locale=null)
Definition: DataObject.inc.php:132
PersistableFilter
A filter that can be persisted to the database.
Definition: PersistableFilter.inc.php:44