PHP Class FOF30\Controller\Controller

A generic MVC controller implementation
Show file Open project: akeeba/fof Class Usage Examples

Protected Properties

Property Type Description
$autoRouting integer 0 = never 1 = frontend only 2 = backend only 3 = always
$cacheableTasks array The tasks for which caching should be enabled by default
$config array A cached copy of the class configuration parameter passed during initialisation
$container FOF30\Container\Container The container attached to this Controller
$csrfProtection integer 0 Disabled; no token checks are performed 1 Enabled; token checks are always performed 2 Only on HTML requests and backend; token checks are always performed in the back-end and in the front-end only when format is 'html' 3 Only on back-end; token checks are performed only in the back-end
$doTask string The mapped task that was performed.
$instance Controller Instance container.
$layout string The current layout; you can override it in the configuration
$message string Redirect message.
$messageType string Redirect message type.
$methods array Array of class methods
$modelInstances array[Model] An array of Model instances known to this Controller
$modelName string Overrides the name of the view's default model
$name array The name of the controller
$paths array The set of search directories for resources (views).
$redirect string URL for redirection.
$task string Current or most recently performed task.
$taskMap array Array of class methods to call for a given task.
$taskPrivileges array You can use the notation '@task' which means 'apply the same privileges as "task"'. If you create a reference back to yourself (e.g. 'mytask' => array('@mytask')) it will return TRUE.
$view string The current view name; you can override it in the configuration
$viewInstances array[View] An array of View instances known to this Controller
$viewName string Overrides the name of the view's default view

Public Methods

Method Description
__construct ( Container $container, array $config = [] ) : Controller Public constructor of the Controller class. You can pass the following variables in the $config array: name string The name of the Controller. Default: auto detect from the class name default_task string The task to use when none is specified. Default: main autoRouting int See the autoRouting property csrfProtection int See the csrfProtection property viewName string The view name. Default: the same as the controller name modelName string The model name. Default: the same as the controller name viewConfig array The configuration overrides for the View.
__get ( string $name ) : mixed | null Magic get method. Handles magic properties: $this->input mapped to $this->container->input
display ( boolean $cachable = false, boolean $urlparams = false, string $tpl = null ) : void Default task. Assigns a model to the view and asks the view to render itself.
execute ( string $task ) : null | boolean Executes a given controller task. The onBefore and onAfter methods are called automatically if they exist.
getModel ( string $name = null, array $config = [] ) : Model Returns a named Model object
getName ( ) : string Method to get the controller name
getTask ( ) : string Get the last task that is being performed or was most recently performed.
getTasks ( ) : array Gets the available tasks in the controller.
getView ( string $name = null, array $config = [] ) : View Returns a named View object
hasRedirect ( ) : boolean Returns true if there is a redirect set in the controller
main ( ) Alias to the display() task
redirect ( ) : boolean Redirects the browser or returns false if no redirect is set.
registerDefaultTask ( string $method ) : Controller Register the default task to perform if a mapping is not found.
registerTask ( string $task, string $method ) : Controller Register (map) a task to a method in the class.
setMessage ( string $text, string $type = 'message' ) : string Sets the internal message that is passed with a redirect
setModel ( string $modelName, Model &$model ) : void Pushes a named model to the Controller
setModelName ( string $modelName ) : void Set the name of the model to be used by this Controller
setRedirect ( string $url, string $msg = null, string $type = null ) : Controller Set a URL for browser redirection.
setView ( string $viewName, View &$view ) : void Pushes a named view to the Controller
setViewName ( string $viewName ) : void Set the name of the view to be used by this Controller
unregisterTask ( string $task ) : Controller Unregister (unmap) a task in the class.

Protected Methods

Method Description
checkACL ( string $area ) : boolean Checks if the current user has enough privileges for the requested ACL area.
csrfProtection ( ) : boolean Provides CSRF protection through the forced use of a secure token. If the token doesn't match the one in the session we return false.
getACLRuleFor ( string $area, array $oldAreas = [] ) : mixed Resolves @task and &callback notations for ACL privileges
triggerEvent ( string $event, array $arguments = [] ) : boolean Triggers an object-specific event. The event runs both locally –if a suitable method exists– and through the Joomla! plugin system. A true/false return value is expected. The first false return cancels the event.

Method Details

__construct() public method

modelConfig array The configuration overrides for the Model.
public __construct ( Container $container, array $config = [] ) : Controller
$container FOF30\Container\Container The application container
$config array The configuration array
return Controller

__get() public method

Magic get method. Handles magic properties: $this->input mapped to $this->container->input
public __get ( string $name ) : mixed | null
$name string The property to fetch
return mixed | null

checkACL() protected method

Checks if the current user has enough privileges for the requested ACL area.
protected checkACL ( string $area ) : boolean
$area string The ACL area, e.g. core.manage.
return boolean True if the user has the ACL privilege specified

csrfProtection() protected method

Provides CSRF protection through the forced use of a secure token. If the token doesn't match the one in the session we return false.
protected csrfProtection ( ) : boolean
return boolean

display() public method

YOU MUST NOT USE THIS TASK DIRECTLY IN A URL. It is supposed to be used ONLY inside your code. In the URL, use task=browse instead.
public display ( boolean $cachable = false, boolean $urlparams = false, string $tpl = null ) : void
$cachable boolean Is this view cacheable?
$urlparams boolean Add your safe URL parameters (see further down in the code)
$tpl string The name of the template file to parse
return void

execute() public method

Executes a given controller task. The onBefore and onAfter methods are called automatically if they exist.
public execute ( string $task ) : null | boolean
$task string The task to execute, e.g. "browse"
return null | boolean False on execution failure

getACLRuleFor() protected method

Resolves @task and &callback notations for ACL privileges
protected getACLRuleFor ( string $area, array $oldAreas = [] ) : mixed
$area string The task notation to resolve
$oldAreas array Areas we've already been redirected from, used to detect circular references
return mixed The resolved ACL privilege

getModel() public method

Returns a named Model object
public getModel ( string $name = null, array $config = [] ) : Model
$name string The Model name. If null we'll use the modelName variable or, if it's empty, the same name as the Controller
$config array Configuration parameters to the Model. If skipped we will use $this->config
return FOF30\Model\Model The instance of the Model known to this Controller

getName() public method

The controller name is set by default parsed using the classname, or it can be set by passing a $config['name'] in the class constructor
public getName ( ) : string
return string The name of the controller

getTask() public method

Get the last task that is being performed or was most recently performed.
public getTask ( ) : string
return string The task that is being performed or was most recently performed.

getTasks() public method

Gets the available tasks in the controller.
public getTasks ( ) : array
return array Array[i] of task names.

getView() public method

Returns a named View object
public getView ( string $name = null, array $config = [] ) : View
$name string The Model name. If null we'll use the modelName variable or, if it's empty, the same name as the Controller
$config array Configuration parameters to the Model. If skipped we will use $this->config
return FOF30\View\View The instance of the Model known to this Controller

hasRedirect() public method

Returns true if there is a redirect set in the controller
public hasRedirect ( ) : boolean
return boolean

main() public method

Alias to the display() task
public main ( )

redirect() public method

Redirects the browser or returns false if no redirect is set.
public redirect ( ) : boolean
return boolean False if no redirect exists.

registerDefaultTask() public method

Register the default task to perform if a mapping is not found.
public registerDefaultTask ( string $method ) : Controller
$method string The name of the method in the derived class to perform if a named task is not found.
return Controller This object to support chaining.

registerTask() public method

Register (map) a task to a method in the class.
public registerTask ( string $task, string $method ) : Controller
$task string The task.
$method string The name of the method in the derived class to perform for this task.
return Controller This object to support chaining.

setMessage() public method

Sets the internal message that is passed with a redirect
public setMessage ( string $text, string $type = 'message' ) : string
$text string Message to display on redirect.
$type string Message type. Optional, defaults to 'message'.
return string Previous message

setModel() public method

Pushes a named model to the Controller
public setModel ( string $modelName, Model &$model ) : void
$modelName string The name of the Model
$model FOF30\Model\Model The actual Model object to push
return void

setModelName() public method

Set the name of the model to be used by this Controller
public setModelName ( string $modelName ) : void
$modelName string The name of the model
return void

setRedirect() public method

Set a URL for browser redirection.
public setRedirect ( string $url, string $msg = null, string $type = null ) : Controller
$url string URL to redirect to.
$msg string Message to display on redirect. Optional, defaults to value set internally by controller, if any.
$type string Message type. Optional, defaults to 'message' or the type set by a previous call to setMessage.
return Controller This object to support chaining.

setView() public method

Pushes a named view to the Controller
public setView ( string $viewName, View &$view ) : void
$viewName string The name of the View
$view FOF30\View\View The actual View object to push
return void

setViewName() public method

Set the name of the view to be used by this Controller
public setViewName ( string $viewName ) : void
$viewName string The name of the view
return void

triggerEvent() protected method

EXAMPLE Component: com_foobar, Object name: item, Event: onBeforeSomething, Arguments: array(123, 456) The event calls: 1. $this->onBeforeSomething(123, 456) 2. $this->checkACL('@something') if there is no onBeforeSomething and the event starts with onBefore 3. Joomla! plugin event onComFoobarControllerItemBeforeSomething($this, 123, 456)
protected triggerEvent ( string $event, array $arguments = [] ) : boolean
$event string The name of the event, typically named onPredicateVerb e.g. onBeforeKick
$arguments array The arguments to pass to the event handlers
return boolean

unregisterTask() public method

Unregister (unmap) a task in the class.
public unregisterTask ( string $task ) : Controller
$task string The task.
return Controller This object to support chaining.

Property Details

$autoRouting protected property

0 = never 1 = frontend only 2 = backend only 3 = always
protected int $autoRouting
return integer

$cacheableTasks protected property

The tasks for which caching should be enabled by default
protected array $cacheableTasks
return array

$config protected property

A cached copy of the class configuration parameter passed during initialisation
protected array $config
return array

$container protected property

The container attached to this Controller
protected Container,FOF30\Container $container
return FOF30\Container\Container

$csrfProtection protected property

0 Disabled; no token checks are performed 1 Enabled; token checks are always performed 2 Only on HTML requests and backend; token checks are always performed in the back-end and in the front-end only when format is 'html' 3 Only on back-end; token checks are performed only in the back-end
protected int $csrfProtection
return integer

$doTask protected property

The mapped task that was performed.
protected string $doTask
return string

$instance protected static property

Instance container.
protected static Controller,FOF30\Controller $instance
return Controller

$layout protected property

The current layout; you can override it in the configuration
protected string $layout
return string

$message protected property

Redirect message.
protected string $message
return string

$messageType protected property

Redirect message type.
protected string $messageType
return string

$methods protected property

Array of class methods
protected array $methods
return array

$modelInstances protected property

An array of Model instances known to this Controller
protected array[Model] $modelInstances
return array[Model]

$modelName protected property

Overrides the name of the view's default model
protected string $modelName
return string

$name protected property

The name of the controller
protected array $name
return array

$paths protected property

The set of search directories for resources (views).
protected array $paths
return array

$redirect protected property

URL for redirection.
protected string $redirect
return string

$task protected property

Current or most recently performed task.
protected string $task
return string

$taskMap protected property

Array of class methods to call for a given task.
protected array $taskMap
return array

$taskPrivileges protected property

You can use the notation '@task' which means 'apply the same privileges as "task"'. If you create a reference back to yourself (e.g. 'mytask' => array('@mytask')) it will return TRUE.
protected array $taskPrivileges
return array

$view protected property

The current view name; you can override it in the configuration
protected string $view
return string

$viewInstances protected property

An array of View instances known to this Controller
protected array[View] $viewInstances
return array[View]

$viewName protected property

Overrides the name of the view's default view
protected string $viewName
return string