69 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Handles adding and dispatching events
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package Requests
							 | 
						||
| 
								 | 
							
								 * @subpackage Utilities
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Handles adding and dispatching events
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package Requests
							 | 
						||
| 
								 | 
							
								 * @subpackage Utilities
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class Requests_Hooks implements Requests_Hooker {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Registered callbacks for each hook
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @var array
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									protected $hooks = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Constructor
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function __construct() {
							 | 
						||
| 
								 | 
							
										// pass
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Register a callback for a hook
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param string $hook Hook name
							 | 
						||
| 
								 | 
							
									 * @param callback $callback Function/method to call on event
							 | 
						||
| 
								 | 
							
									 * @param int $priority Priority number. <0 is executed earlier, >0 is executed later
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function register($hook, $callback, $priority = 0) {
							 | 
						||
| 
								 | 
							
										if (!isset($this->hooks[$hook])) {
							 | 
						||
| 
								 | 
							
											$this->hooks[$hook] = array();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (!isset($this->hooks[$hook][$priority])) {
							 | 
						||
| 
								 | 
							
											$this->hooks[$hook][$priority] = array();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$this->hooks[$hook][$priority][] = $callback;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Dispatch a message
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param string $hook Hook name
							 | 
						||
| 
								 | 
							
									 * @param array $parameters Parameters to pass to callbacks
							 | 
						||
| 
								 | 
							
									 * @return boolean Successfulness
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public function dispatch($hook, $parameters = array()) {
							 | 
						||
| 
								 | 
							
										if (empty($this->hooks[$hook])) {
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										foreach ($this->hooks[$hook] as $priority => $hooked) {
							 | 
						||
| 
								 | 
							
											foreach ($hooked as $callback) {
							 | 
						||
| 
								 | 
							
												call_user_func_array($callback, $parameters);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |