75 import(
'lib.pkp.classes.core.DataObject');
76 import(
'lib.pkp.classes.filter.TypeDescriptionFactory');
111 parent::__construct();
123 $this->
setData(
'displayName', $displayName);
138 if (!$this->
hasData(
'displayName')) {
139 $this->
setData(
'displayName', get_class($this));
142 return $this->
getData(
'displayName');
173 if (!is_a($inputType,
'TypeDescription')) {
174 assert(is_string($inputType));
175 $inputType = $typeDescriptionFactory->instantiateTypeDescription($inputType);
177 if (!is_a($outputType,
'TypeDescription')) {
178 assert(is_string($outputType));
179 $outputType = $typeDescriptionFactory->instantiateTypeDescription($outputType);
182 $this->_inputType = $inputType;
183 $this->_outputType = $outputType;
248 $this->_errors[] = $message;
264 return (!empty($this->_errors));
271 $this->_errors = array();
279 assert(is_a($runtimeEnvironment,
'RuntimeEnvironment'));
280 $this->_runtimeEnvironment =& $runtimeEnvironment;
285 foreach($runtimeSettings as $runtimeSetting => $defaultValue) {
286 $methodName =
'get'.PKPString::ucfirst($runtimeSetting);
287 $this->
setData($runtimeSetting, $runtimeEnvironment->$methodName());
340 function supports(&$input, &$output) {
343 $validInput = $inputType->isCompatible($input);
346 if (is_null($output))
return $validInput;
350 $validOutput = $outputType->isCompatible($output);
352 return $validInput && $validOutput;
367 return($this->
supports($input, $nullVar));
376 if ($this->_runtimeEnvironment ===
false) {
382 $hasRuntimeSettings =
false;
383 foreach($runtimeSettings as $runtimeSetting => $defaultValue) {
384 if ($this->
hasData($runtimeSetting)) {
385 $$runtimeSetting = $this->
getData($runtimeSetting);
386 $hasRuntimeSettings =
true;
388 $$runtimeSetting = $defaultValue;
394 if ($hasRuntimeSettings) {
395 import(
'lib.pkp.classes.core.RuntimeEnvironment');
396 $this->_runtimeEnvironment =
new RuntimeEnvironment($phpVersionMin, $phpVersionMax, $phpExtensions, $externalPrograms);
400 $this->_runtimeEnvironment =
null;
404 if (is_null($this->_runtimeEnvironment) || $this->_runtimeEnvironment->isCompatible())
return true;
426 function &
execute(&$input, $returnErrors =
false) {
429 unset($this->_input, $this->_output);
434 fatalError(
'Trying to run a transformation that is not supported in your installation environment.');
446 $this->_input =& $input;
449 $preliminaryOutput =& $this->
process($input);
454 if ((!is_null($preliminaryOutput) && $this->
supports($input, $preliminaryOutput)) || $returnErrors) {
455 $this->_output =& $preliminaryOutput;
472 static $runtimeEnvironmentSettings = array(
473 'phpVersionMin' => PHP_REQUIRED_VERSION,
474 'phpVersionMax' =>
null,
475 'phpExtensions' => array(),
476 'externalPrograms' => array()
479 return $runtimeEnvironmentSettings;