2021-04-26 22:57:04 +01:00
< ? php
/**
2021-05-01 21:34:46 +01:00
* File providing the `Loader` class .
2021-04-26 22:57:04 +01:00
*
2021-04-30 18:03:15 +01:00
* @ package footnotes
2021-04-26 22:57:04 +01:00
*
2021-04-29 20:57:30 +01:00
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
2021-05-01 21:34:46 +01:00
namespace footnotes\includes ;
2021-04-26 22:57:04 +01:00
/**
2021-04-29 20:57:30 +01:00
* Class defining action / filter registration for the plugin .
2021-04-26 22:57:04 +01:00
*
2021-05-01 19:22:41 +01:00
* Maintain a list of all hooks that are registered throughout the plugin , and
* register them with the WordPress API . Call the run function to execute the
2021-04-29 20:57:30 +01:00
* list of actions and filters .
2021-04-26 22:57:04 +01:00
*
2021-04-29 20:57:30 +01:00
* @ package footnotes
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
2021-05-01 21:34:46 +01:00
class Loader {
2021-04-26 22:57:04 +01:00
/**
* The array of actions registered with WordPress .
*
2021-04-29 20:57:30 +01:00
* @ access protected
* @ var array $actions The actions registered with WordPress to fire when the plugin loads .
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
protected $actions ;
/**
* The array of filters registered with WordPress .
*
2021-04-29 20:57:30 +01:00
* @ access protected
* @ var array $filters The filters registered with WordPress to fire when the plugin loads .
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
protected $filters ;
/**
* Initialize the collections used to maintain the actions and filters .
*
2021-04-29 20:57:30 +01:00
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
public function __construct () {
$this -> actions = array ();
$this -> filters = array ();
}
/**
* Add a new action to the collection to be registered with WordPress .
*
2021-05-01 19:22:41 +01:00
* @ param string $hook The name of the WordPress action that is being registered .
* @ param object $component A reference to the instance of the object on which the action is defined .
* @ param string $callback The name of the function definition on the `$component` .
* @ param int $priority ( optional ) The priority at which the function should be fired . Default is 10.
* @ param int $accepted_args ( optional ) The number of arguments that should be passed to the $callback . Default is 1.
2021-04-29 20:57:30 +01:00
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
public function add_action ( $hook , $component , $callback , $priority = 10 , $accepted_args = 1 ) {
$this -> actions = $this -> add ( $this -> actions , $hook , $component , $callback , $priority , $accepted_args );
}
/**
* Add a new filter to the collection to be registered with WordPress .
*
2021-05-01 19:22:41 +01:00
* @ param string $hook The name of the WordPress filter that is being registered .
* @ param object $component A reference to the instance of the object on which the filter is defined .
* @ param string $callback The name of the function definition on the `$component` .
* @ param int $priority ( optional ) The priority at which the function should be fired . Default is 10.
* @ param int $accepted_args ( optional ) The number of arguments that should be passed to the $callback . Default is 1.
2021-04-29 20:57:30 +01:00
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
public function add_filter ( $hook , $component , $callback , $priority = 10 , $accepted_args = 1 ) {
$this -> filters = $this -> add ( $this -> filters , $hook , $component , $callback , $priority , $accepted_args );
}
/**
* A utility function that is used to register the actions and hooks into a single
* collection .
*
2021-04-29 20:57:30 +01:00
* @ access private
* @ param array $hooks The collection of hooks that is being registered ( that is , actions or filters ) .
2021-05-01 19:22:41 +01:00
* @ param string $hook The name of the WordPress filter that is being registered .
* @ param object $component A reference to the instance of the object on which the filter is defined .
* @ param string $callback The name of the function definition on the `$component` .
* @ param int $priority The priority at which the function should be fired .
* @ param int $accepted_args The number of arguments that should be passed to the `$callback` .
2021-04-29 20:57:30 +01:00
* @ return array The collection of actions and filters registered with WordPress .
*
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
private function add ( $hooks , $hook , $component , $callback , $priority , $accepted_args ) {
$hooks [] = array (
'hook' => $hook ,
'component' => $component ,
'callback' => $callback ,
'priority' => $priority ,
'accepted_args' => $accepted_args ,
);
return $hooks ;
}
/**
2021-04-29 20:57:30 +01:00
* Registers the filters and actions with WordPress .
2021-04-26 22:57:04 +01:00
*
2021-04-29 20:57:30 +01:00
* @ since 2.8 . 0
2021-04-26 22:57:04 +01:00
*/
public function run () {
foreach ( $this -> filters as $hook ) {
add_filter ( $hook [ 'hook' ], array ( $hook [ 'component' ], $hook [ 'callback' ] ), $hook [ 'priority' ], $hook [ 'accepted_args' ] );
}
foreach ( $this -> actions as $hook ) {
add_action ( $hook [ 'hook' ], array ( $hook [ 'component' ], $hook [ 'callback' ] ), $hook [ 'priority' ], $hook [ 'accepted_args' ] );
}
}
}