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: 94:
<?php
namespace DispatchModule\Tools;
/**
* BaseTool contains default implementation of some mandatory tool methods
* - serves only as a helper (reduces code duplicity)
*/
abstract class BaseTool extends \BaseModule\Services\BaseService {
/**
* List of all wanted parameters by the tool in format
* 'parameterName' => array('parameterType', 'parameterLabel', possiblyAnotherOptions)
* parameterType depends on \Base\Form
*
* @var array array of wanted parameters
*/
protected $wantedParameters = array();
/**
* Short description of the tool
* @var string
*/
public $description;
/**
* Default file name for tool temp files (without ext)
* @var string
*/
public $fileName;
/**
* @var array additional data for tool (basically data collected from POST of HTTP request)
*/
public $completeData;
/**
* Tells whether any sequence is set
* @return boolean
*/
public function used() {
return true;
}
/**
* Indicates, whether tool needs parameter with specified name
*
* @param string parameter name
* @return boolean true, if specified parameter is required by the tool
*/
public function requireParameter($parameter) {
$modifiers = array();
foreach ($this->getWantedParameters() as $item) {
if (isset($item[2]) && isset($item[2]['modifiers'])) {
foreach ($item[2]['modifiers'] as $modifierName => $modifier) {
$modifiers[$modifierName] = $modifier;
}
}
}
$searchArray = array_merge($this->getWantedParameters(), $modifiers);
return array_key_exists($parameter, $searchArray);
}
/**
* Gets lowercase tool class name without postfix (so for "BaseTool", "base" is returned)
*
* @return string lowercased tool name without postfix
*/
public function getName() {
$className = \Nette\Utils\Strings::lower(get_class($this));
// remove namespaces
if (preg_match('@\\\\([\w]+)$@', $className, $matches)) {
$className = $matches[1];
}
// remove postfix, if it exists
if (\Nette\Utils\Strings::endsWith($className, 'tool')) {
return \Nette\Utils\Strings::substring($className, 0, -4);
}
return $className;
}
/**
* Get parameters, that tool wants
*
* @return array array of wanted parameters (indexed by its name)
*/
public function getWantedParameters() {
return $this->wantedParameters;
}
}