@@ -28,7 +28,7 @@ |
||
| 28 | 28 | public function __construct(string $sDirectory) |
| 29 | 29 | { |
| 30 | 30 | $itFile = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($sDirectory)); |
| 31 | - foreach($itFile as $xFile) |
|
| 31 | + foreach ($itFile as $xFile) |
|
| 32 | 32 | { |
| 33 | 33 | $this->insert($xFile); |
| 34 | 34 | } |
@@ -68,7 +68,7 @@ discard block |
||
| 68 | 68 | private function checkDirectory(string $sDirectory): string |
| 69 | 69 | { |
| 70 | 70 | $sDirectory = rtrim(trim($sDirectory), '/\\'); |
| 71 | - if(!is_dir($sDirectory)) |
|
| 71 | + if (!is_dir($sDirectory)) |
|
| 72 | 72 | { |
| 73 | 73 | throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
| 74 | 74 | } |
@@ -81,11 +81,11 @@ discard block |
||
| 81 | 81 | */ |
| 82 | 82 | public function checkOptions(string $sCallable, $xOptions): array |
| 83 | 83 | { |
| 84 | - if(is_string($xOptions)) |
|
| 84 | + if (is_string($xOptions)) |
|
| 85 | 85 | { |
| 86 | 86 | $xOptions = ['namespace' => $xOptions]; |
| 87 | 87 | } |
| 88 | - if(!is_array($xOptions)) |
|
| 88 | + if (!is_array($xOptions)) |
|
| 89 | 89 | { |
| 90 | 90 | throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
| 91 | 91 | } |
@@ -93,14 +93,14 @@ discard block |
||
| 93 | 93 | $xOptions['directory'] = $this->checkDirectory($sCallable); |
| 94 | 94 | // Check the namespace |
| 95 | 95 | $sNamespace = $xOptions['namespace'] ?? ''; |
| 96 | - if(!($xOptions['namespace'] = trim($sNamespace, ' \\'))) |
|
| 96 | + if (!($xOptions['namespace'] = trim($sNamespace, ' \\'))) |
|
| 97 | 97 | { |
| 98 | 98 | $xOptions['namespace'] = ''; |
| 99 | 99 | } |
| 100 | 100 | |
| 101 | 101 | // Change the keys in $xOptions to have "\" as separator |
| 102 | 102 | $_aOptions = []; |
| 103 | - foreach($xOptions as $sName => $aOption) |
|
| 103 | + foreach ($xOptions as $sName => $aOption) |
|
| 104 | 104 | { |
| 105 | 105 | $sName = trim(str_replace('.', '\\', $sName), ' \\'); |
| 106 | 106 | $_aOptions[$sName] = $aOption; |
@@ -114,7 +114,7 @@ discard block |
||
| 114 | 114 | public function register(string $sType, string $sCallable, array $aOptions): bool |
| 115 | 115 | { |
| 116 | 116 | // The $sCallable var is not used here because the checkOptions() method copied it into the $aOptions array. |
| 117 | - if(($aOptions['namespace'])) |
|
| 117 | + if (($aOptions['namespace'])) |
|
| 118 | 118 | { |
| 119 | 119 | $this->xRegistry->registerNamespace($aOptions['namespace'], $aOptions); |
| 120 | 120 | return true; |
@@ -104,7 +104,7 @@ discard block |
||
| 104 | 104 | */ |
| 105 | 105 | public function configure(string $sName, string $sValue): void |
| 106 | 106 | { |
| 107 | - switch($sName) |
|
| 107 | + switch ($sName) |
|
| 108 | 108 | { |
| 109 | 109 | case 'class': // The user function is a method in the given class |
| 110 | 110 | $this->xPhpFunction = [$sValue, $this->xPhpFunction]; |
@@ -128,12 +128,12 @@ discard block |
||
| 128 | 128 | */ |
| 129 | 129 | public function call(array $aArgs = []): void |
| 130 | 130 | { |
| 131 | - if($this->sInclude !== '') |
|
| 131 | + if ($this->sInclude !== '') |
|
| 132 | 132 | { |
| 133 | 133 | require_once $this->sInclude; |
| 134 | 134 | } |
| 135 | 135 | // If the function is an alias for a class method, then instantiate the class |
| 136 | - if(is_array($this->xPhpFunction) && is_string($this->xPhpFunction[0])) |
|
| 136 | + if (is_array($this->xPhpFunction) && is_string($this->xPhpFunction[0])) |
|
| 137 | 137 | { |
| 138 | 138 | $sClassName = $this->xPhpFunction[0]; |
| 139 | 139 | $this->xPhpFunction[0] = $this->di->h($sClassName) ? |
@@ -28,29 +28,29 @@ discard block |
||
| 28 | 28 | |
| 29 | 29 | class CallableFunction |
| 30 | 30 | { |
| 31 | - /** |
|
| 31 | +/** |
|
| 32 | 32 | * A string or an array which defines the registered PHP function |
| 33 | 33 | * |
| 34 | 34 | * @var string|array |
| 35 | 35 | */ |
| 36 | - private $xPhpFunction; |
|
| 36 | +private $xPhpFunction; |
|
| 37 | 37 | |
| 38 | - /** |
|
| 38 | +/** |
|
| 39 | 39 | * The path and file name of the include file where the function is defined |
| 40 | 40 | * |
| 41 | 41 | * @var string |
| 42 | 42 | */ |
| 43 | - private $sInclude = ''; |
|
| 43 | +private $sInclude = ''; |
|
| 44 | 44 | |
| 45 | - /** |
|
| 45 | +/** |
|
| 46 | 46 | * An associative array containing call options that will be sent |
| 47 | 47 | * to the browser with the client script. |
| 48 | 48 | * |
| 49 | 49 | * @var array |
| 50 | 50 | */ |
| 51 | - private $aOptions = []; |
|
| 51 | +private $aOptions = []; |
|
| 52 | 52 | |
| 53 | - /** |
|
| 53 | +/** |
|
| 54 | 54 | * The constructor |
| 55 | 55 | * |
| 56 | 56 | * @param Container $di |
@@ -58,43 +58,43 @@ discard block |
||
| 58 | 58 | * @param string $sJsFunction |
| 59 | 59 | * @param string $sPhpFunction |
| 60 | 60 | */ |
| 61 | - public function __construct(private Container $di, private string $sFunction, |
|
| 62 | - private string $sJsFunction, string $sPhpFunction) |
|
| 63 | - { |
|
| 64 | - $this->xPhpFunction = $sPhpFunction; |
|
| 65 | - } |
|
| 61 | +public function __construct(private Container $di, private string $sFunction, |
|
| 62 | +private string $sJsFunction, string $sPhpFunction) |
|
| 63 | +{ |
|
| 64 | +$this->xPhpFunction = $sPhpFunction; |
|
| 65 | +} |
|
| 66 | 66 | |
| 67 | - /** |
|
| 67 | +/** |
|
| 68 | 68 | * Get the name of the function being referenced |
| 69 | 69 | * |
| 70 | 70 | * @return string |
| 71 | 71 | */ |
| 72 | - public function getName(): string |
|
| 73 | - { |
|
| 74 | - return $this->sFunction; |
|
| 75 | - } |
|
| 72 | +public function getName(): string |
|
| 73 | +{ |
|
| 74 | +return $this->sFunction; |
|
| 75 | +} |
|
| 76 | 76 | |
| 77 | - /** |
|
| 77 | +/** |
|
| 78 | 78 | * Get name of the corresponding javascript function |
| 79 | 79 | * |
| 80 | 80 | * @return string |
| 81 | 81 | */ |
| 82 | - public function getJsName(): string |
|
| 83 | - { |
|
| 84 | - return $this->sJsFunction; |
|
| 85 | - } |
|
| 82 | +public function getJsName(): string |
|
| 83 | +{ |
|
| 84 | +return $this->sJsFunction; |
|
| 85 | +} |
|
| 86 | 86 | |
| 87 | - /** |
|
| 87 | +/** |
|
| 88 | 88 | * Get the config options of the function being referenced |
| 89 | 89 | * |
| 90 | 90 | * @return array |
| 91 | 91 | */ |
| 92 | - public function getOptions(): array |
|
| 93 | - { |
|
| 94 | - return $this->aOptions; |
|
| 95 | - } |
|
| 92 | +public function getOptions(): array |
|
| 93 | +{ |
|
| 94 | +return $this->aOptions; |
|
| 95 | +} |
|
| 96 | 96 | |
| 97 | - /** |
|
| 97 | +/** |
|
| 98 | 98 | * Set call options for this instance |
| 99 | 99 | * |
| 100 | 100 | * @param string $sName The name of the configuration option |
@@ -102,20 +102,20 @@ discard block |
||
| 102 | 102 | * |
| 103 | 103 | * @return void |
| 104 | 104 | */ |
| 105 | - public function configure(string $sName, string $sValue): void |
|
| 106 | - { |
|
| 107 | - switch($sName) |
|
| 108 | - { |
|
| 109 | - case 'class': // The user function is a method in the given class |
|
| 110 | - $this->xPhpFunction = [$sValue, $this->xPhpFunction]; |
|
| 111 | - break; |
|
| 112 | - case 'include': |
|
| 113 | - $this->sInclude = $sValue; |
|
| 114 | - break; |
|
| 115 | - default: |
|
| 116 | - $this->aOptions[$sName] = $sValue; |
|
| 117 | - break; |
|
| 118 | - } |
|
| 105 | +public function configure(string $sName, string $sValue): void |
|
| 106 | +{ |
|
| 107 | +switch($sName) |
|
| 108 | +{ |
|
| 109 | +case 'class': // The user function is a method in the given class |
|
| 110 | +$this->xPhpFunction = [$sValue, $this->xPhpFunction]; |
|
| 111 | +break; |
|
| 112 | +case 'include': |
|
| 113 | +$this->sInclude = $sValue; |
|
| 114 | +break; |
|
| 115 | +default: |
|
| 116 | +$this->aOptions[$sName] = $sValue; |
|
| 117 | +break; |
|
| 118 | +} |
|
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | /** |
@@ -85,15 +85,15 @@ discard block |
||
| 85 | 85 | */ |
| 86 | 86 | public function checkOptions(string $sCallable, $xOptions): array |
| 87 | 87 | { |
| 88 | - if(!$this->xValidator->validateFunction(trim($sCallable))) |
|
| 88 | + if (!$this->xValidator->validateFunction(trim($sCallable))) |
|
| 89 | 89 | { |
| 90 | 90 | throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
| 91 | 91 | } |
| 92 | - if(is_string($xOptions)) |
|
| 92 | + if (is_string($xOptions)) |
|
| 93 | 93 | { |
| 94 | 94 | $xOptions = ['include' => $xOptions]; |
| 95 | 95 | } |
| 96 | - elseif(!is_array($xOptions)) |
|
| 96 | + elseif (!is_array($xOptions)) |
|
| 97 | 97 | { |
| 98 | 98 | throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
| 99 | 99 | } |
@@ -114,7 +114,7 @@ discard block |
||
| 114 | 114 | $sPhpFunction = trim($sCallable); |
| 115 | 115 | $sFunction = $sPhpFunction; |
| 116 | 116 | // Check if an alias is defined |
| 117 | - if(isset($aOptions['alias'])) |
|
| 117 | + if (isset($aOptions['alias'])) |
|
| 118 | 118 | { |
| 119 | 119 | $sFunction = (string)$aOptions['alias']; |
| 120 | 120 | unset($aOptions['alias']); |
@@ -138,13 +138,13 @@ discard block |
||
| 138 | 138 | public function getCallable(string $sCallable): CallableFunction|null |
| 139 | 139 | { |
| 140 | 140 | $sFunction = trim($sCallable); |
| 141 | - if(!isset($this->aFunctions[$sFunction])) |
|
| 141 | + if (!isset($this->aFunctions[$sFunction])) |
|
| 142 | 142 | { |
| 143 | 143 | return null; |
| 144 | 144 | } |
| 145 | 145 | $xCallable = new CallableFunction($this->di, $sFunction, |
| 146 | 146 | $this->sPrefix . $sFunction, $this->aFunctions[$sFunction]); |
| 147 | - foreach($this->aOptions[$sFunction] as $sName => $sValue) |
|
| 147 | + foreach ($this->aOptions[$sFunction] as $sName => $sValue) |
|
| 148 | 148 | { |
| 149 | 149 | $xCallable->configure($sName, $sValue); |
| 150 | 150 | } |
@@ -173,7 +173,7 @@ discard block |
||
| 173 | 173 | public function getScript(): string |
| 174 | 174 | { |
| 175 | 175 | $code = ''; |
| 176 | - foreach(array_keys($this->aFunctions) as $sFunction) |
|
| 176 | + foreach (array_keys($this->aFunctions) as $sFunction) |
|
| 177 | 177 | { |
| 178 | 178 | $xFunction = $this->getCallable($sFunction); |
| 179 | 179 | $code .= $this->getCallableScript($xFunction); |
@@ -211,8 +211,7 @@ discard block |
||
| 211 | 211 | private function throwException(Exception $xException, string $sErrorMessage): void |
| 212 | 212 | { |
| 213 | 213 | $this->di->getLogger()->error($xException->getMessage()); |
| 214 | - throw new RequestException($sErrorMessage . (!$this->bDebug ? '' : |
|
| 215 | - "\n" . $xException->getMessage())); |
|
| 214 | + throw new RequestException($sErrorMessage . (!$this->bDebug ? '' : "\n" . $xException->getMessage())); |
|
| 216 | 215 | } |
| 217 | 216 | |
| 218 | 217 | /** |
@@ -224,7 +223,7 @@ discard block |
||
| 224 | 223 | $sRequestedFunction = $this->xTarget->getFunctionName(); |
| 225 | 224 | |
| 226 | 225 | // Security check: make sure the requested function was registered. |
| 227 | - if(!$this->xValidator->validateFunction($sRequestedFunction) || |
|
| 226 | + if (!$this->xValidator->validateFunction($sRequestedFunction) || |
|
| 228 | 227 | !isset($this->aFunctions[$sRequestedFunction])) |
| 229 | 228 | { |
| 230 | 229 | // Unable to find the requested function |
@@ -237,7 +236,7 @@ discard block |
||
| 237 | 236 | /** @var CallableFunction */ |
| 238 | 237 | $xFunction = $this->getCallable($sRequestedFunction); |
| 239 | 238 | } |
| 240 | - catch(Exception $e) |
|
| 239 | + catch (Exception $e) |
|
| 241 | 240 | { |
| 242 | 241 | // Unable to find the requested function |
| 243 | 242 | $this->throwException($e, $this->xTranslator->trans('errors.functions.invalid', |
@@ -247,7 +246,7 @@ discard block |
||
| 247 | 246 | { |
| 248 | 247 | $xFunction->call($this->xTarget->args()); |
| 249 | 248 | } |
| 250 | - catch(Exception $e) |
|
| 249 | + catch (Exception $e) |
|
| 251 | 250 | { |
| 252 | 251 | // Unable to execute the requested function |
| 253 | 252 | $this->throwException($e, $this->xTranslator->trans('errors.functions.call', |
@@ -92,8 +92,7 @@ discard block |
||
| 92 | 92 | if(is_string($xOptions)) |
| 93 | 93 | { |
| 94 | 94 | $xOptions = ['include' => $xOptions]; |
| 95 | - } |
|
| 96 | - elseif(!is_array($xOptions)) |
|
| 95 | + } elseif(!is_array($xOptions)) |
|
| 97 | 96 | { |
| 98 | 97 | throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
| 99 | 98 | } |
@@ -236,8 +235,7 @@ discard block |
||
| 236 | 235 | { |
| 237 | 236 | /** @var CallableFunction */ |
| 238 | 237 | $xFunction = $this->getCallable($sRequestedFunction); |
| 239 | - } |
|
| 240 | - catch(Exception $e) |
|
| 238 | + } catch(Exception $e) |
|
| 241 | 239 | { |
| 242 | 240 | // Unable to find the requested function |
| 243 | 241 | $this->throwException($e, $this->xTranslator->trans('errors.functions.invalid', |
@@ -246,8 +244,7 @@ discard block |
||
| 246 | 244 | try |
| 247 | 245 | { |
| 248 | 246 | $xFunction->call($this->xTarget->args()); |
| 249 | - } |
|
| 250 | - catch(Exception $e) |
|
| 247 | + } catch(Exception $e) |
|
| 251 | 248 | { |
| 252 | 249 | // Unable to execute the requested function |
| 253 | 250 | $this->throwException($e, $this->xTranslator->trans('errors.functions.call', |
@@ -42,21 +42,21 @@ discard block |
||
| 42 | 42 | |
| 43 | 43 | class CallableFunctionPlugin extends AbstractRequestPlugin |
| 44 | 44 | { |
| 45 | - /** |
|
| 45 | +/** |
|
| 46 | 46 | * The registered functions names |
| 47 | 47 | * |
| 48 | 48 | * @var array |
| 49 | 49 | */ |
| 50 | - protected $aFunctions = []; |
|
| 50 | +protected $aFunctions = []; |
|
| 51 | 51 | |
| 52 | - /** |
|
| 52 | +/** |
|
| 53 | 53 | * The registered functions options |
| 54 | 54 | * |
| 55 | 55 | * @var array |
| 56 | 56 | */ |
| 57 | - protected $aOptions = []; |
|
| 57 | +protected $aOptions = []; |
|
| 58 | 58 | |
| 59 | - /** |
|
| 59 | +/** |
|
| 60 | 60 | * The constructor |
| 61 | 61 | * |
| 62 | 62 | * @param string $sPrefix |
@@ -66,41 +66,41 @@ discard block |
||
| 66 | 66 | * @param Translator $xTranslator |
| 67 | 67 | * @param Validator $xValidator |
| 68 | 68 | */ |
| 69 | - public function __construct(private string $sPrefix, private bool $bDebug, |
|
| 70 | - private Container $di, private TemplateEngine $xTemplateEngine, |
|
| 71 | - private Translator $xTranslator, private Validator $xValidator) |
|
| 72 | - {} |
|
| 69 | +public function __construct(private string $sPrefix, private bool $bDebug, |
|
| 70 | +private Container $di, private TemplateEngine $xTemplateEngine, |
|
| 71 | +private Translator $xTranslator, private Validator $xValidator) |
|
| 72 | +{} |
|
| 73 | 73 | |
| 74 | - /** |
|
| 74 | +/** |
|
| 75 | 75 | * @inheritDoc |
| 76 | 76 | */ |
| 77 | - public function getName(): string |
|
| 78 | - { |
|
| 79 | - return Jaxon::CALLABLE_FUNCTION; |
|
| 80 | - } |
|
| 77 | +public function getName(): string |
|
| 78 | +{ |
|
| 79 | +return Jaxon::CALLABLE_FUNCTION; |
|
| 80 | +} |
|
| 81 | 81 | |
| 82 | - /** |
|
| 82 | +/** |
|
| 83 | 83 | * @inheritDoc |
| 84 | 84 | * @throws SetupException |
| 85 | 85 | */ |
| 86 | - public function checkOptions(string $sCallable, $xOptions): array |
|
| 87 | - { |
|
| 88 | - if(!$this->xValidator->validateFunction(trim($sCallable))) |
|
| 89 | - { |
|
| 90 | - throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
|
| 91 | - } |
|
| 92 | - if(is_string($xOptions)) |
|
| 93 | - { |
|
| 94 | - $xOptions = ['include' => $xOptions]; |
|
| 95 | - } |
|
| 96 | - elseif(!is_array($xOptions)) |
|
| 97 | - { |
|
| 98 | - throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
|
| 99 | - } |
|
| 100 | - return $xOptions; |
|
| 101 | - } |
|
| 86 | +public function checkOptions(string $sCallable, $xOptions): array |
|
| 87 | +{ |
|
| 88 | +if(!$this->xValidator->validateFunction(trim($sCallable))) |
|
| 89 | +{ |
|
| 90 | +throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
|
| 91 | +} |
|
| 92 | +if(is_string($xOptions)) |
|
| 93 | +{ |
|
| 94 | +$xOptions = ['include' => $xOptions]; |
|
| 95 | +} |
|
| 96 | +elseif(!is_array($xOptions)) |
|
| 97 | +{ |
|
| 98 | +throw new SetupException($this->xTranslator->trans('errors.objects.invalid-declaration')); |
|
| 99 | +} |
|
| 100 | +return $xOptions; |
|
| 101 | +} |
|
| 102 | 102 | |
| 103 | - /** |
|
| 103 | +/** |
|
| 104 | 104 | * Register a user defined function |
| 105 | 105 | * |
| 106 | 106 | * @param string $sType The type of request handler being registered |
@@ -109,149 +109,149 @@ discard block |
||
| 109 | 109 | * |
| 110 | 110 | * @return bool |
| 111 | 111 | */ |
| 112 | - public function register(string $sType, string $sCallable, array $aOptions): bool |
|
| 113 | - { |
|
| 114 | - $sPhpFunction = trim($sCallable); |
|
| 115 | - $sFunction = $sPhpFunction; |
|
| 116 | - // Check if an alias is defined |
|
| 117 | - if(isset($aOptions['alias'])) |
|
| 118 | - { |
|
| 119 | - $sFunction = (string)$aOptions['alias']; |
|
| 120 | - unset($aOptions['alias']); |
|
| 121 | - } |
|
| 122 | - $this->aFunctions[$sFunction] = $sPhpFunction; |
|
| 123 | - $this->aOptions[$sFunction] = $aOptions; |
|
| 124 | - return true; |
|
| 125 | - } |
|
| 112 | +public function register(string $sType, string $sCallable, array $aOptions): bool |
|
| 113 | +{ |
|
| 114 | +$sPhpFunction = trim($sCallable); |
|
| 115 | +$sFunction = $sPhpFunction; |
|
| 116 | +// Check if an alias is defined |
|
| 117 | +if(isset($aOptions['alias'])) |
|
| 118 | +{ |
|
| 119 | +$sFunction = (string)$aOptions['alias']; |
|
| 120 | +unset($aOptions['alias']); |
|
| 121 | +} |
|
| 122 | +$this->aFunctions[$sFunction] = $sPhpFunction; |
|
| 123 | +$this->aOptions[$sFunction] = $aOptions; |
|
| 124 | +return true; |
|
| 125 | +} |
|
| 126 | 126 | |
| 127 | - /** |
|
| 127 | +/** |
|
| 128 | 128 | * @inheritDoc |
| 129 | 129 | */ |
| 130 | - public function getHash(): string |
|
| 131 | - { |
|
| 132 | - return md5(implode('', array_keys($this->aFunctions))); |
|
| 133 | - } |
|
| 130 | +public function getHash(): string |
|
| 131 | +{ |
|
| 132 | +return md5(implode('', array_keys($this->aFunctions))); |
|
| 133 | +} |
|
| 134 | 134 | |
| 135 | - /** |
|
| 135 | +/** |
|
| 136 | 136 | * @inheritDoc |
| 137 | 137 | */ |
| 138 | - public function getCallable(string $sCallable): CallableFunction|null |
|
| 139 | - { |
|
| 140 | - $sFunction = trim($sCallable); |
|
| 141 | - if(!isset($this->aFunctions[$sFunction])) |
|
| 142 | - { |
|
| 143 | - return null; |
|
| 144 | - } |
|
| 145 | - $xCallable = new CallableFunction($this->di, $sFunction, |
|
| 146 | - $this->sPrefix . $sFunction, $this->aFunctions[$sFunction]); |
|
| 147 | - foreach($this->aOptions[$sFunction] as $sName => $sValue) |
|
| 148 | - { |
|
| 149 | - $xCallable->configure($sName, $sValue); |
|
| 150 | - } |
|
| 151 | - return $xCallable; |
|
| 152 | - } |
|
| 138 | +public function getCallable(string $sCallable): CallableFunction|null |
|
| 139 | +{ |
|
| 140 | +$sFunction = trim($sCallable); |
|
| 141 | +if(!isset($this->aFunctions[$sFunction])) |
|
| 142 | +{ |
|
| 143 | +return null; |
|
| 144 | +} |
|
| 145 | +$xCallable = new CallableFunction($this->di, $sFunction, |
|
| 146 | +$this->sPrefix . $sFunction, $this->aFunctions[$sFunction]); |
|
| 147 | +foreach($this->aOptions[$sFunction] as $sName => $sValue) |
|
| 148 | +{ |
|
| 149 | +$xCallable->configure($sName, $sValue); |
|
| 150 | +} |
|
| 151 | +return $xCallable; |
|
| 152 | +} |
|
| 153 | 153 | |
| 154 | - /** |
|
| 154 | +/** |
|
| 155 | 155 | * Generate the javascript function stub that is sent to the browser on initial page load |
| 156 | 156 | * |
| 157 | 157 | * @param CallableFunction $xFunction |
| 158 | 158 | * |
| 159 | 159 | * @return string |
| 160 | 160 | */ |
| 161 | - private function getCallableScript(CallableFunction $xFunction): string |
|
| 162 | - { |
|
| 163 | - return $this->xTemplateEngine->render('jaxon::callables/function.js', [ |
|
| 164 | - 'sName' => $xFunction->getName(), |
|
| 165 | - 'sJsName' => $xFunction->getJsName(), |
|
| 166 | - 'aOptions' => $xFunction->getOptions(), |
|
| 167 | - ]); |
|
| 168 | - } |
|
| 161 | +private function getCallableScript(CallableFunction $xFunction): string |
|
| 162 | +{ |
|
| 163 | +return $this->xTemplateEngine->render('jaxon::callables/function.js', [ |
|
| 164 | +'sName' => $xFunction->getName(), |
|
| 165 | +'sJsName' => $xFunction->getJsName(), |
|
| 166 | +'aOptions' => $xFunction->getOptions(), |
|
| 167 | +]); |
|
| 168 | +} |
|
| 169 | 169 | |
| 170 | - /** |
|
| 170 | +/** |
|
| 171 | 171 | * @inheritDoc |
| 172 | 172 | */ |
| 173 | - public function getScript(): string |
|
| 174 | - { |
|
| 175 | - $code = ''; |
|
| 176 | - foreach(array_keys($this->aFunctions) as $sFunction) |
|
| 177 | - { |
|
| 178 | - $xFunction = $this->getCallable($sFunction); |
|
| 179 | - $code .= $this->getCallableScript($xFunction); |
|
| 180 | - } |
|
| 181 | - return $code; |
|
| 182 | - } |
|
| 173 | +public function getScript(): string |
|
| 174 | +{ |
|
| 175 | +$code = ''; |
|
| 176 | +foreach(array_keys($this->aFunctions) as $sFunction) |
|
| 177 | +{ |
|
| 178 | +$xFunction = $this->getCallable($sFunction); |
|
| 179 | +$code .= $this->getCallableScript($xFunction); |
|
| 180 | +} |
|
| 181 | +return $code; |
|
| 182 | +} |
|
| 183 | 183 | |
| 184 | - /** |
|
| 184 | +/** |
|
| 185 | 185 | * @inheritDoc |
| 186 | 186 | */ |
| 187 | - public static function canProcessRequest(ServerRequestInterface $xRequest): bool |
|
| 188 | - { |
|
| 189 | - $aCall = $xRequest->getAttribute('jxncall'); |
|
| 190 | - // throw new \Exception(json_encode(['call' => $aCall])); |
|
| 191 | - return $aCall !== null && ($aCall['type'] ?? '') === 'func' && isset($aCall['name']); |
|
| 192 | - } |
|
| 187 | +public static function canProcessRequest(ServerRequestInterface $xRequest): bool |
|
| 188 | +{ |
|
| 189 | +$aCall = $xRequest->getAttribute('jxncall'); |
|
| 190 | +// throw new \Exception(json_encode(['call' => $aCall])); |
|
| 191 | +return $aCall !== null && ($aCall['type'] ?? '') === 'func' && isset($aCall['name']); |
|
| 192 | +} |
|
| 193 | 193 | |
| 194 | - /** |
|
| 194 | +/** |
|
| 195 | 195 | * @inheritDoc |
| 196 | 196 | */ |
| 197 | - public function setTarget(ServerRequestInterface $xRequest): Target |
|
| 198 | - { |
|
| 199 | - $aCall = $xRequest->getAttribute('jxncall'); |
|
| 200 | - $this->xTarget = Target::makeFunction(trim($aCall['name'])); |
|
| 201 | - return $this->xTarget; |
|
| 202 | - } |
|
| 197 | +public function setTarget(ServerRequestInterface $xRequest): Target |
|
| 198 | +{ |
|
| 199 | +$aCall = $xRequest->getAttribute('jxncall'); |
|
| 200 | +$this->xTarget = Target::makeFunction(trim($aCall['name'])); |
|
| 201 | +return $this->xTarget; |
|
| 202 | +} |
|
| 203 | 203 | |
| 204 | - /** |
|
| 204 | +/** |
|
| 205 | 205 | * @param Exception $xException |
| 206 | 206 | * @param string $sErrorMessage |
| 207 | 207 | * |
| 208 | 208 | * @throws RequestException |
| 209 | 209 | * @return void |
| 210 | 210 | */ |
| 211 | - private function throwException(Exception $xException, string $sErrorMessage): void |
|
| 212 | - { |
|
| 213 | - $this->di->getLogger()->error($xException->getMessage()); |
|
| 214 | - throw new RequestException($sErrorMessage . (!$this->bDebug ? '' : |
|
| 215 | - "\n" . $xException->getMessage())); |
|
| 216 | - } |
|
| 211 | +private function throwException(Exception $xException, string $sErrorMessage): void |
|
| 212 | +{ |
|
| 213 | +$this->di->getLogger()->error($xException->getMessage()); |
|
| 214 | +throw new RequestException($sErrorMessage . (!$this->bDebug ? '' : |
|
| 215 | +"\n" . $xException->getMessage())); |
|
| 216 | +} |
|
| 217 | 217 | |
| 218 | - /** |
|
| 218 | +/** |
|
| 219 | 219 | * @inheritDoc |
| 220 | 220 | * @throws RequestException |
| 221 | 221 | */ |
| 222 | - public function processRequest(): void |
|
| 223 | - { |
|
| 224 | - $sRequestedFunction = $this->xTarget->getFunctionName(); |
|
| 222 | +public function processRequest(): void |
|
| 223 | +{ |
|
| 224 | +$sRequestedFunction = $this->xTarget->getFunctionName(); |
|
| 225 | 225 | |
| 226 | - // Security check: make sure the requested function was registered. |
|
| 227 | - if(!$this->xValidator->validateFunction($sRequestedFunction) || |
|
| 228 | - !isset($this->aFunctions[$sRequestedFunction])) |
|
| 229 | - { |
|
| 230 | - // Unable to find the requested function |
|
| 231 | - throw new RequestException($this->xTranslator->trans('errors.functions.invalid', |
|
| 232 | - ['name' => $sRequestedFunction])); |
|
| 233 | - } |
|
| 226 | +// Security check: make sure the requested function was registered. |
|
| 227 | +if(!$this->xValidator->validateFunction($sRequestedFunction) || |
|
| 228 | +!isset($this->aFunctions[$sRequestedFunction])) |
|
| 229 | +{ |
|
| 230 | +// Unable to find the requested function |
|
| 231 | +throw new RequestException($this->xTranslator->trans('errors.functions.invalid', |
|
| 232 | + ['name' => $sRequestedFunction])); |
|
| 233 | +} |
|
| 234 | 234 | |
| 235 | - try |
|
| 236 | - { |
|
| 237 | - /** @var CallableFunction */ |
|
| 238 | - $xFunction = $this->getCallable($sRequestedFunction); |
|
| 239 | - } |
|
| 240 | - catch(Exception $e) |
|
| 241 | - { |
|
| 242 | - // Unable to find the requested function |
|
| 243 | - $this->throwException($e, $this->xTranslator->trans('errors.functions.invalid', |
|
| 244 | - ['name' => $sRequestedFunction])); |
|
| 245 | - } |
|
| 246 | - try |
|
| 247 | - { |
|
| 248 | - $xFunction->call($this->xTarget->args()); |
|
| 249 | - } |
|
| 250 | - catch(Exception $e) |
|
| 251 | - { |
|
| 252 | - // Unable to execute the requested function |
|
| 253 | - $this->throwException($e, $this->xTranslator->trans('errors.functions.call', |
|
| 254 | - ['name' => $sRequestedFunction])); |
|
| 255 | - } |
|
| 256 | - } |
|
| 235 | +try |
|
| 236 | +{ |
|
| 237 | +/** @var CallableFunction */ |
|
| 238 | +$xFunction = $this->getCallable($sRequestedFunction); |
|
| 239 | +} |
|
| 240 | +catch(Exception $e) |
|
| 241 | +{ |
|
| 242 | +// Unable to find the requested function |
|
| 243 | +$this->throwException($e, $this->xTranslator->trans('errors.functions.invalid', |
|
| 244 | + ['name' => $sRequestedFunction])); |
|
| 245 | +} |
|
| 246 | +try |
|
| 247 | +{ |
|
| 248 | +$xFunction->call($this->xTarget->args()); |
|
| 249 | +} |
|
| 250 | +catch(Exception $e) |
|
| 251 | +{ |
|
| 252 | +// Unable to execute the requested function |
|
| 253 | +$this->throwException($e, $this->xTranslator->trans('errors.functions.call', |
|
| 254 | + ['name' => $sRequestedFunction])); |
|
| 255 | +} |
|
| 256 | +} |
|
| 257 | 257 | } |
@@ -26,7 +26,7 @@ |
||
| 26 | 26 | public function onChange(Config $xConfig, string $sName): void |
| 27 | 27 | { |
| 28 | 28 | // Set the library language any time the config is changed. |
| 29 | - if($sName === '' || $sName === 'core.language') |
|
| 29 | + if ($sName === '' || $sName === 'core.language') |
|
| 30 | 30 | { |
| 31 | 31 | $this->setLocale($xConfig->getOption('core.language')); |
| 32 | 32 | } |
@@ -31,7 +31,7 @@ |
||
| 31 | 31 | public function get(string $key, mixed $default = null): mixed |
| 32 | 32 | { |
| 33 | 33 | $value = $this->values[$key] ?? $default; |
| 34 | - if(is_callable($value)) |
|
| 34 | + if (is_callable($value)) |
|
| 35 | 35 | { |
| 36 | 36 | $value = $value(); |
| 37 | 37 | // Save the value returned by the callback in the stash. |
@@ -91,11 +91,11 @@ discard block |
||
| 91 | 91 | 'export' => $bExport, |
| 92 | 92 | 'minify' => $bMinify, |
| 93 | 93 | ]; |
| 94 | - if($sUri !== '') |
|
| 94 | + if ($sUri !== '') |
|
| 95 | 95 | { |
| 96 | 96 | $aJsOptions['uri'] = $sUri; |
| 97 | 97 | } |
| 98 | - if($sDir !== '') |
|
| 98 | + if ($sDir !== '') |
|
| 99 | 99 | { |
| 100 | 100 | $aJsOptions['dir'] = $sDir; |
| 101 | 101 | } |
@@ -151,7 +151,7 @@ discard block |
||
| 151 | 151 | { |
| 152 | 152 | // Popping the callbacks makes each of them to be called once. |
| 153 | 153 | $aBootCallbacks = $this->xCallbackManager->popBootCallbacks(); |
| 154 | - foreach($aBootCallbacks as $aBootCallback) |
|
| 154 | + foreach ($aBootCallbacks as $aBootCallback) |
|
| 155 | 155 | { |
| 156 | 156 | call_user_func($aBootCallback); |
| 157 | 157 | } |
@@ -29,7 +29,7 @@ discard block |
||
| 29 | 29 | */ |
| 30 | 30 | public function setup(string $sConfigFile = ''): void |
| 31 | 31 | { |
| 32 | - if(!file_exists($sConfigFile)) |
|
| 32 | + if (!file_exists($sConfigFile)) |
|
| 33 | 33 | { |
| 34 | 34 | throw new SetupException($this->translator() |
| 35 | 35 | ->trans('errors.file.access', ['path' => $sConfigFile])); |
@@ -39,14 +39,14 @@ discard block |
||
| 39 | 39 | $aOptions = $this->config()->read($sConfigFile); |
| 40 | 40 | $aLibOptions = $aOptions['lib'] ?? []; |
| 41 | 41 | $aAppOptions = $aOptions['app'] ?? []; |
| 42 | - if(!is_array($aLibOptions) || !is_array($aAppOptions)) |
|
| 42 | + if (!is_array($aLibOptions) || !is_array($aAppOptions)) |
|
| 43 | 43 | { |
| 44 | 44 | throw new SetupException($sMessage = $this->translator() |
| 45 | 45 | ->trans('errors.file.content', ['path' => $sConfigFile])); |
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | // The bootstrap set this to false. It needs to be changed. |
| 49 | - if(!isset($aLibOptions['core']['response']['send'])) |
|
| 49 | + if (!isset($aLibOptions['core']['response']['send'])) |
|
| 50 | 50 | { |
| 51 | 51 | $aLibOptions['core']['response']['send'] = true; |
| 52 | 52 | } |
@@ -59,20 +59,20 @@ discard block |
||
| 59 | 59 | */ |
| 60 | 60 | public function httpResponse(string $sCode = '200'): mixed |
| 61 | 61 | { |
| 62 | - if(!$this->config()->getOption('core.response.send', false)) |
|
| 62 | + if (!$this->config()->getOption('core.response.send', false)) |
|
| 63 | 63 | { |
| 64 | 64 | return null; |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | 67 | // Check to see if headers have already been sent out, in which case we can't do our job |
| 68 | - if(headers_sent($sFilename, $nLineNumber)) |
|
| 68 | + if (headers_sent($sFilename, $nLineNumber)) |
|
| 69 | 69 | { |
| 70 | 70 | throw new RequestException($this->translator() |
| 71 | 71 | ->trans('errors.output.already-sent', [ |
| 72 | 72 | 'location' => "$sFilename:$nLineNumber", |
| 73 | 73 | ]) . "\n" . $this->translator()->trans('errors.output.advice')); |
| 74 | 74 | } |
| 75 | - if(empty($sContent = $this->getResponseManager()->getOutput())) |
|
| 75 | + if (empty($sContent = $this->getResponseManager()->getOutput())) |
|
| 76 | 76 | { |
| 77 | 77 | return null; |
| 78 | 78 | } |
@@ -80,7 +80,7 @@ discard block |
||
| 80 | 80 | // Set the HTTP response code |
| 81 | 81 | http_response_code(intval($sCode)); |
| 82 | 82 | |
| 83 | - if($this->di()->getRequest()->getMethod() === 'GET') |
|
| 83 | + if ($this->di()->getRequest()->getMethod() === 'GET') |
|
| 84 | 84 | { |
| 85 | 85 | header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); |
| 86 | 86 | header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); |
@@ -90,7 +90,7 @@ discard block |
||
| 90 | 90 | header('Content-Type: ' . $this->getResponseManager()->getContentType()); |
| 91 | 91 | |
| 92 | 92 | print $sContent; |
| 93 | - if($this->config()->getOption('core.process.exit', false)) |
|
| 93 | + if ($this->config()->getOption('core.process.exit', false)) |
|
| 94 | 94 | { |
| 95 | 95 | exit(); |
| 96 | 96 | } |