Open Journal Systems  3.3.0
GenericMultiplexerFilter.inc.php
1 <?php
21 import('lib.pkp.classes.filter.CompositeFilter');
22 
28  var $_tolerateFailures = false;
29 
35  function __construct(&$filterGroup, $displayName = null) {
36  parent::__construct($filterGroup, $displayName);
37  }
38 
39 
40  //
41  // Setters and Getters
42  //
48  function setTolerateFailures($tolerateFailures) {
49  $this->_tolerateFailures = $tolerateFailures;
50  }
51 
57  function getTolerateFailures() {
59  }
60 
61 
62  //
63  // Implementing abstract template methods from PersistentFilter
64  //
68  function getClassName() {
69  return 'lib.pkp.classes.filter.GenericMultiplexerFilter';
70  }
71 
72 
73  //
74  // Implementing abstract template methods from Filter
75  //
81  function &process(&$input) {
82  // Iterate over all filters and return the results
83  // as an array.
84  $output = array();
85  foreach($this->getFilters() as $filter) {
86  // Make a copy of the input so that the filters don't interfere
87  // with each other.
88  if (is_object($input)) {
89  $clonedInput = clone($input);
90  } else {
91  $clonedInput = $input;
92  }
93 
94  // Execute the filter
95  $intermediateOutput =& $filter->execute($clonedInput);
96 
97  // Propagate errors of sub-filters (if any)
98  foreach($filter->getErrors() as $errorMessage) $this->addError($errorMessage);
99 
100  // Handle sub-filter failure.
101  if (is_null($intermediateOutput))
102  if ($this->getTolerateFailures()) {
103  continue;
104  } else {
105  // No need to go on as the filter will fail
106  // anyway out output validation so we better
107  // safe time and return immediately.
108  $output = null;
109  break;
110  } else {
111  // Add the output to the output array.
112  $output[] =& $intermediateOutput;
113  }
114  unset($clonedInput, $intermediateOutput);
115  }
116 
117  // Fail in any case if all sub-filters failed.
118  if (empty($output)) $output = null;
119 
120  return $output;
121  }
122 }
123 
GenericMultiplexerFilter
A generic filter that is configured with a number of equal type filters. It takes the input argument,...
Definition: GenericMultiplexerFilter.inc.php:23
GenericMultiplexerFilter\$_tolerateFailures
$_tolerateFailures
Definition: GenericMultiplexerFilter.inc.php:31
GenericMultiplexerFilter\setTolerateFailures
setTolerateFailures($tolerateFailures)
Definition: GenericMultiplexerFilter.inc.php:51
GenericMultiplexerFilter\getClassName
getClassName()
Definition: GenericMultiplexerFilter.inc.php:71
Filter\addError
addError($message)
Definition: Filter.inc.php:265
CompositeFilter
An abstract base class for generic filters that compose other filters into filter networks.
Definition: CompositeFilter.inc.php:18
GenericMultiplexerFilter\getTolerateFailures
getTolerateFailures()
Definition: GenericMultiplexerFilter.inc.php:60
CompositeFilter\getFilters
& getFilters()
Definition: CompositeFilter.inc.php:95
DataObject\__construct
__construct()
Definition: DataObject.inc.php:58
GenericMultiplexerFilter\__construct
__construct(&$filterGroup, $displayName=null)
Definition: GenericMultiplexerFilter.inc.php:38
GenericMultiplexerFilter\process
& process(&$input)
Definition: GenericMultiplexerFilter.inc.php:84