\rex_api_function

This is a base class for all functions which a component may provide for public use.

Those function will be called automatically by the core. Inside an api function you might check the preconditions which have to be met (permissions, etc.) and forward the call to an underlying service which does the actual job.

There can only be one rex_api_function called per request, but not every request must have an api function.

The classname of a possible implementation must start with "rex_api".

A api function may also be called by an ajax-request. In fact there might be ajax-requests which do nothing more than triggering an api function.

The api functions return meaningfull error messages which the caller may display to the end-user.

Calling a api function with the backend-frontcontroller (index.php) requires a valid page parameter and the current user needs permissions to access the given page.

Summary

Methods
Properties
Constants
setFactoryClass()
getFactoryClass()
hasFactoryClass()
execute()
factory()
getUrlParams()
getHiddenFields()
handleCall()
hasMessage()
getMessage()
getResult()
No public properties found
REQ_CALL_PARAM
REQ_RESULT_PARAM
callFactoryClass()
__construct()
requiresCsrfProtection()
$published
$result
N/A
No private methods found
No private properties found
N/A

Constants

REQ_CALL_PARAM

REQ_CALL_PARAM = 'rex-api-call'

REQ_RESULT_PARAM

REQ_RESULT_PARAM = 'rex-api-result'

Properties

$published

$published : bool

Flag, indicating if this api function may be called from the frontend. False by default.

Type

bool

$result

$result : \rex_api_result

The result of the function call.

Type

rex_api_result

Methods

setFactoryClass()

setFactoryClass(string  $subclass) : mixed

Sets the class for the factory.

Parameters

string $subclass

Classname

Throws

\InvalidArgumentException

Returns

mixed —

getFactoryClass()

getFactoryClass() : string

Returns the class for the factory.

Returns

string —

hasFactoryClass()

hasFactoryClass() : bool

Returns if the class has a custom factory class.

Returns

bool —

execute()

execute() : \rex_api_result

This method have to be overriden by a subclass and does all logic which the api function represents.

In the first place this method may retrieve and validate parameters from the request. Afterwards the actual logic should be executed.

This function may also throw exceptions e.g. in case when permissions are missing or the provided parameters are invalid.

Returns

\rex_api_result —

The result of the api-function

factory()

factory() : self|null

Returns the api function instance which is bound to the current request, or null if no api function was bound.

Throws

\rex_exception

Returns

self|null —

getUrlParams()

getUrlParams() : array

Returns an array containing the `rex-api-call` and `_csrf_token` params.

The method must be called on sub classes.

Returns

array —

getHiddenFields()

getHiddenFields() : string

Returns the hidden fields for `rex-api-call` and `_csrf_token`.

The method must be called on sub classes.

Returns

string —

handleCall()

handleCall() : mixed

checks whether an api function is bound to the current requests. If so, so the api function will be executed.

Returns

mixed —

hasMessage()

hasMessage() : bool

Returns

bool —

getMessage()

getMessage(mixed  $formatted = true) : string

Parameters

mixed $formatted

Returns

string —

getResult()

getResult() : \rex_api_result

Returns

\rex_api_result —

callFactoryClass()

callFactoryClass(string  $method, array  $arguments) : mixed

Calls the factory class with the given method and arguments.

Parameters

string $method

Method name

array $arguments

Array of arguments

Returns

mixed —

Result of the callback

__construct()

__construct() : mixed

Returns

mixed —

requiresCsrfProtection()

requiresCsrfProtection() : bool

Csrf validation is disabled by default for backwards compatiblity reasons. This default will change in a future version.

Prepare all your api functions to work with csrf token by using your-api-class::getUrlParams()/getHiddenFields(), otherwise they will stop work.

Returns

bool —