mirror of
				https://github.com/avecms/AVE.cms.git
				synced 2025-10-30 13:26:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			175 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| 	// Проверка
 | |
| 	if (! defined('BASE_DIR'))
 | |
| 		exit('Access denied');
 | |
| 
 | |
| 	/**
 | |
| 	 * This source file is part of the AVE.cms. More information,
 | |
| 	 * documentation and tutorials can be found at http://www.ave-cms.ru
 | |
| 	 *
 | |
| 	 * @package      AVE.cms
 | |
| 	 * @file         system/helpers/hooks.php
 | |
| 	 * @author       @
 | |
| 	 * @copyright    2007-2016 (c) AVE.cms
 | |
| 	 * @link         http://www.ave-cms.ru
 | |
| 	 * @version      4.0
 | |
| 	 * @since        $date$
 | |
| 	 * @license      license GPL v.2 http://www.ave-cms.ru/license.txt
 | |
| 	*/
 | |
| 
 | |
| 	class Hooks
 | |
| 	{
 | |
| 		public static $instance;
 | |
| 
 | |
| 		public static $hooks;
 | |
| 
 | |
| 		public static $current_hook;
 | |
| 
 | |
| 		public static $run_hooks;
 | |
| 
 | |
| 
 | |
| 		public static function init ()
 | |
| 		{
 | |
| 			if (!self::$instance) {
 | |
| 				self::$instance = new Hooks();
 | |
| 			}
 | |
| 			return self::$instance;
 | |
| 		}
 | |
| 
 | |
| 		/**
 | |
| 		 * Add Hook
 | |
| 		 */
 | |
| 		public static function register ($name, $function, $priority = 10)
 | |
| 		{
 | |
| 			// If we have already registered this action return true
 | |
| 			if (isset(self::$hooks[$name][$priority][$function]))
 | |
| 			{
 | |
| 				return true;
 | |
| 			}
 | |
| 			/**
 | |
| 			 * Allows us to iterate through multiple action hooks.
 | |
| 			 */
 | |
| 			if (is_array($name))
 | |
| 			{
 | |
| 				foreach ($name AS $item)
 | |
| 				{
 | |
| 					// Store the action hook in the $hooks array
 | |
| 					self::$hooks[$item][$priority][$function] = array(
 | |
| 						"function" => $function
 | |
| 					);
 | |
| 				}
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				// Store the action hook in the $hooks array
 | |
| 				self::$hooks[$name][$priority][$function] = array(
 | |
| 					"function" => $function
 | |
| 				);
 | |
| 			}
 | |
| 
 | |
| 			return true;
 | |
| 		}
 | |
| 
 | |
| 		/**
 | |
| 		 * Do Hook
 | |
| 		 */
 | |
| 		public static function trigger ($name, $arguments = "")
 | |
| 		{
 | |
| 			// Oh, no you didn't. Are you trying to run an action hook that doesn't exist?
 | |
| 			if (! isset(self::$hooks[$name]))
 | |
| 			{
 | |
| 				return $arguments;
 | |
| 			}
 | |
| 
 | |
| 			// Set the current running hook to this
 | |
| 			self::$current_hook = $name;
 | |
| 
 | |
| 			// Key sort our action hooks
 | |
| 			ksort(self::$hooks[$name]);
 | |
| 			foreach (self::$hooks[$name] AS $priority => $names)
 | |
| 			{
 | |
| 				if (is_array($names))
 | |
| 				{
 | |
| 					foreach ($names AS $name)
 | |
| 					{
 | |
| 						$return = call_user_func_array($name['function'], array(
 | |
| 							&$arguments
 | |
| 						));
 | |
| 
 | |
| 						if ($return)
 | |
| 						{
 | |
| 							$arguments = $return;
 | |
| 						}
 | |
| 
 | |
| 						self::$run_hooks[$name][$priority];
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			self::$current_hook = '';
 | |
| 
 | |
| 			return $arguments;
 | |
| 		}
 | |
| 
 | |
| 		/**
 | |
| 		 * Remove Hook
 | |
| 		 */
 | |
| 		public static function unregister ($name, $function, $priority = 10)
 | |
| 		{
 | |
| 			// If the action hook doesn't, just return true
 | |
| 			if (!isset(self::$hooks[$name][$priority][$function]))
 | |
| 			{
 | |
| 				return true;
 | |
| 			}
 | |
| 			// Remove the action hook from our hooks array
 | |
| 			unset(self::$hooks[$name][$priority][$function]);
 | |
| 
 | |
| 			return '';
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		/**
 | |
| 		 * Current Hook
 | |
| 		 *
 | |
| 		 * Get the currently running action hook
 | |
| 		 *
 | |
| 		 */
 | |
| 		public static function current ()
 | |
| 		{
 | |
| 			return self::$current_hook;
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		/**
 | |
| 		 * Has Run
 | |
| 		 */
 | |
| 		public static function has ($hook, $priority = 10)
 | |
| 		{
 | |
| 			if (isset(self::$hooks[$hook][$priority]))
 | |
| 			{
 | |
| 				return true;
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				return false;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		/**
 | |
| 		 * Hook Exists
 | |
| 		 */
 | |
| 		public static function exists ($name)
 | |
| 		{
 | |
| 			if (isset(self::$hooks[$name]))
 | |
| 			{
 | |
| 				return true;
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				return false;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| ?>
 |