16 import(
'lib.pkp.classes.filter.PersistableFilter');
30 function __construct(&$filterGroup, $displayName =
null) {
32 parent::__construct($filterGroup);
51 assert(is_a($filter,
'Filter'));
54 $seq = $filter->getSequence();
55 if (is_numeric($seq) && $seq > 0) {
57 if (isset($this->_filters[$seq]))
return null;
58 if ($seq > $this->_maxSeq) $this->_maxSeq = $seq;
63 $filter->setSequence($seq);
67 $this->_filters[$seq] =& $filter;
79 if (isset($this->_filters[$seq])) {
80 $filter =& $this->_filters[$seq];
118 $this->
setData(
'settingsMapping', $settingsMapping);
125 $settingsMapping = $this->
getData(
'settingsMapping');
126 if (is_null($settingsMapping)) {
129 return $settingsMapping;
138 $settingsMapping = array();
139 $settingsMappingData = $this->
getData(
'settingsMapping');
140 if (isset($settingsMappingData[$settingName])) {
141 $settingsMapping = $settingsMappingData[$settingName];
143 return $settingsMapping;
155 if (parent::hasSetting($settingName))
return parent::getSetting($settingName);
166 $settings = parent::getSettings();
183 return (parent::hasSettings() || !empty($settingsMapping));
199 $settingNames = array(
'settingsMapping');
202 foreach(parent::getSettings() as $setting) {
203 if (!$setting->getIsLocalized()) {
204 $settingNames[] = $setting->getName();
207 return $settingNames;
217 $localizedSettingNames = array();
218 foreach(parent::getSettings() as $setting) {
219 if ($setting->getIsLocalized()) {
220 $localizedSettingNames[] = $setting->getName();
223 return $localizedSettingNames;
230 $filterInternalSettings = parent::getInternalSettings();
231 $filterInternalSettings[] =
'settingsMapping';
232 return $filterInternalSettings;
245 if (!$filter->isCompatibleWithRuntimeEnvironment())
return false;
257 function &
getData($key, $locale =
null) {
264 return $filter->getData($settingName, $locale);
270 function setData($key, $value, $locale =
null) {
272 if (is_null($locale)) {
280 if (!is_array($settingsMapping)) $settingsMapping = array($settingsMapping);
281 foreach($settingsMapping as $compositeSettingName) {
284 $filter->setData($settingName, $value, $locale);
291 function hasData($key, $locale =
null) {
296 if (parent::hasData($key, $locale))
return true;
300 if (is_null($compositeSettingName))
return false;
302 return $filter->hasData($settingName, $locale);
320 if (empty($compositeSettingName))
return null;
321 if (is_array($compositeSettingName)) $compositeSettingName = $compositeSettingName[0];
322 return $compositeSettingName;
338 return $filter->getSetting($settingName);
349 assert(is_string($compositeSettingName));
353 $compositeSettingNameParts = explode(
'_', $compositeSettingName, 2);
354 if (count($compositeSettingNameParts) != 2)
fatalError(
'Invalid composite setting name "'.$compositeSettingName.
'"!');
355 list($seq, $settingName) = $compositeSettingNameParts;
356 $seq = str_replace(
'seq',
'', $seq);
357 if (!is_numeric($seq))
fatalError(
'Invalid sequence number in "'.$compositeSettingName.
'"!');
358 $seq = (integer)$seq;
362 if (is_null($filter))
fatalError(
'Invalid filter sequence number!');
365 return array(&$filter, $settingName);