ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:24.72 GB of 70.42 GB (35.11%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ yalagina/ libraries/ joomla/ event/ - drwxr-xr-x

Directory:
Viewing file:     dispatcher.php (5.81 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Event
 *
 * @copyright   Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

/**
 * Class to handle dispatching of events.
 *
 * This is the Observable part of the Observer design pattern
 * for the event architecture.
 *
 * @package     Joomla.Platform
 * @subpackage  Event
 * @link        http://docs.joomla.org/Tutorial:Plugins Plugin tutorials
 * @see         JPlugin
 * @since       11.1
 */
class JDispatcher extends JObject
{
    
/**
     * An array of Observer objects to notify
     *
     * @var    array
     * @since  11.3
     */
    
protected $_observers = array();

    
/**
     * The state of the observable object
     *
     * @var    mixed
     * @since  11.3
     */
    
protected $_state null;

    
/**
     * A multi dimensional array of [function][] = key for observers
     *
     * @var    array
     * @since  11.3
     */
    
protected $_methods = array();

    
/**
     * Stores the singleton instance of the dispatcher.
     *
     * @var    JDispatcher
     * @since  11.3
     */
    
protected static $instance null;

    
/**
     * Returns the global Event Dispatcher object, only creating it
     * if it doesn't already exist.
     *
     * @return  JDispatcher  The EventDispatcher object.
     *
     * @since   11.1
     */
    
public static function getInstance()
    {
        if (
self::$instance === null)
        {
            
self::$instance = new JDispatcher;
        }

        return 
self::$instance;
    }

    
/**
     * Get the state of the JDispatcher object
     *
     * @return  mixed    The state of the object.
     *
     * @since   11.3
     */
    
public function getState()
    {
        return 
$this->_state;
    }

    
/**
     * Registers an event handler to the event dispatcher
     *
     * @param   string  $event    Name of the event to register handler for
     * @param   string  $handler  Name of the event handler
     *
     * @return  void
     *
     * @since   11.1
     */
    
public function register($event$handler)
    {
        
// Are we dealing with a class or function type handler?
        
if (function_exists($handler))
        {
            
// Ok, function type event handler... let's attach it.
            
$method = array('event' => $event'handler' => $handler);
            
$this->attach($method);
        }
        elseif (
class_exists($handler))
        {
            
// Ok, class type event handler... let's instantiate and attach it.
            
$this->attach(new $handler($this));
        }
        else
        {
            return 
JError::raiseWarning('SOME_ERROR_CODE'JText::sprintf('JLIB_EVENT_ERROR_DISPATCHER'$handler));
        }
    }

    
/**
     * Triggers an event by dispatching arguments to all observers that handle
     * the event and returning their return values.
     *
     * @param   string  $event  The event to trigger.
     * @param   array   $args   An array of arguments.
     *
     * @return  array  An array of results from each function call.
     *
     * @since   11.1
     */
    
public function trigger($event$args = array())
    {
        
// Initialise variables.
        
$result = array();

        
/*
         * If no arguments were passed, we still need to pass an empty array to
         * the call_user_func_array function.
         */
        
$args = (array) $args;

        
$event strtolower($event);

        
// Check if any plugins are attached to the event.
        
if (!isset($this->_methods[$event]) || empty($this->_methods[$event]))
        {
            
// No Plugins Associated To Event!
            
return $result;
        }
        
// Loop through all plugins having a method matching our event
        
foreach ($this->_methods[$event] as $key)
        {
            
// Check if the plugin is present.
            
if (!isset($this->_observers[$key]))
            {
                continue;
            }

            
// Fire the event for an object based observer.
            
if (is_object($this->_observers[$key]))
            {
                
$args['event'] = $event;
                
$value $this->_observers[$key]->update($args);
            }
            
// Fire the event for a function based observer.
            
elseif (is_array($this->_observers[$key]))
            {
                
$value call_user_func_array($this->_observers[$key]['handler'], $args);
            }
            if (isset(
$value))
            {
                
$result[] = $value;
            }
        }

        return 
$result;
    }

    
/**
     * Attach an observer object
     *
     * @param   object  $observer  An observer object to attach
     *
     * @return  void
     *
     * @since   11.3
     */
    
public function attach($observer)
    {
        if (
is_array($observer))
        {
            if (!isset(
$observer['handler']) || !isset($observer['event']) || !is_callable($observer['handler']))
            {
                return;
            }

            
// Make sure we haven't already attached this array as an observer
            
foreach ($this->_observers as $check)
            {
                if (
is_array($check) && $check['event'] == $observer['event'] && $check['handler'] == $observer['handler'])
                {
                    return;
                }
            }

            
$this->_observers[] = $observer;
            
end($this->_observers);
            
$methods = array($observer['event']);
        }
        else
        {
            if (!(
$observer instanceof JEvent))
            {
                return;
            }

            
// Make sure we haven't already attached this object as an observer
            
$class get_class($observer);

            foreach (
$this->_observers as $check)
            {
                if (
$check instanceof $class)
                {
                    return;
                }
            }

            
$this->_observers[] = $observer;
            
$methods array_diff(get_class_methods($observer), get_class_methods('JPlugin'));
        }

        
$key key($this->_observers);

        foreach (
$methods as $method)
        {
            
$method strtolower($method);

            if (!isset(
$this->_methods[$method]))
            {
                
$this->_methods[$method] = array();
            }

            
$this->_methods[$method][] = $key;
        }
    }

    
/**
     * Detach an observer object
     *
     * @param   object  $observer  An observer object to detach.
     *
     * @return  boolean  True if the observer object was detached.
     *
     * @since   11.3
     */
    
public function detach($observer)
    {
        
// Initialise variables.
        
$retval false;

        
$key array_search($observer$this->_observers);

        if (
$key !== false)
        {
            unset(
$this->_observers[$key]);
            
$retval true;

            foreach (
$this->_methods as &$method)
            {
                
$k array_search($key$method);

                if (
$k !== false)
                {
                    unset(
$method[$k]);
                }
            }
        }

        return 
$retval;
    }
}
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.1747 seconds