53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace Nextend\Framework;
 | 
						|
 | 
						|
class Plugin {
 | 
						|
 | 
						|
    private static $classes = array();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param          $eventName
 | 
						|
     * @param callable $callable
 | 
						|
     */
 | 
						|
    public static function addAction($eventName, $callable) {
 | 
						|
        if (!isset(self::$classes[$eventName])) self::$classes[$eventName] = array();
 | 
						|
        self::$classes[$eventName][] = $callable;
 | 
						|
    }
 | 
						|
 | 
						|
    static function addFilter($eventName, $callable) {
 | 
						|
        if (!isset(self::$classes[$eventName])) self::$classes[$eventName] = array();
 | 
						|
        self::$classes[$eventName][] = $callable;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function applyFilters($eventName, $value, $args = array()) {
 | 
						|
        if (self::hasAction($eventName)) {
 | 
						|
            foreach (self::$classes[$eventName] as $callable) {
 | 
						|
                if (is_callable($callable)) {
 | 
						|
                    $value = call_user_func_array($callable, array_merge(array($value), $args));
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return $value;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function doAction($eventName, $args = array()) {
 | 
						|
        if (self::hasAction($eventName)) {
 | 
						|
            foreach (self::$classes[$eventName] as $callable) {
 | 
						|
                if (is_callable($callable)) {
 | 
						|
                    call_user_func_array($callable, $args);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public static function hasAction($eventName) {
 | 
						|
        if (isset(self::$classes[$eventName])) {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
} |