Server IP : 195.201.23.43 / Your IP : 3.140.184.203 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/kdecoratie/public_html/libraries/joomla/observer/ |
Upload File : |
<?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Observer updater pattern implementation for Joomla * * @since 3.1.2 */ class JObserverUpdater implements JObserverUpdaterInterface { /** * Holds the key aliases for observers. * * @var array * @since 3.9.0 */ protected $aliases = array(); /** * Generic JObserverInterface observers for this JObservableInterface * * @var JObserverInterface * @since 3.1.2 */ protected $observers = array(); /** * Process observers (useful when a class extends significantly an observed method, and calls observers itself * * @var boolean * @since 3.1.2 */ protected $doCallObservers = true; /** * Constructor * * @param JObservableInterface $observable The observable subject object * * @since 3.1.2 */ public function __construct(JObservableInterface $observable) { // Not yet needed, but possible: $this->observable = $observable; } /** * Adds an observer to the JObservableInterface instance updated by this * This method can be called from JObservableInterface::attachObserver * * @param JObserverInterface $observer The observer object * * @return void * * @since 3.1.2 */ public function attachObserver(JObserverInterface $observer) { $class = get_class($observer); // Also register the alias if exists foreach (JLoader::getDeprecatedAliases() as $alias) { $realClass = trim($alias['new'], '\\'); // Check if we have an alias for the observer class if ($realClass === $class) { $aliasClass = trim($alias['old'], '\\'); // Add an alias to known aliases $this->aliases[$aliasClass] = $class; } } // Register the real class $this->observers[$class] = $observer; } /** * Removes an observer from the JObservableInterface instance updated by this * This method can be called from JObservableInterface::attachObserver * * @param String $observer The observer class name * * @return void * * @since 3.6.0 */ public function detachObserver($observer) { $observer = trim($observer, '\\'); if (isset($this->aliases[$observer])) { $observer = $this->aliases[$observer]; } if (isset($this->observers[$observer])) { unset($this->observers[$observer]); } } /** * Gets the instance of the observer of class $observerClass * * @param string $observerClass The class name of the observer * * @return JTableObserver|null The observer object of this class if any * * @since 3.1.2 */ public function getObserverOfClass($observerClass) { $observerClass = trim($observerClass, '\\'); if (isset($this->aliases[$observerClass])) { $observerClass = $this->aliases[$observerClass]; } if (isset($this->observers[$observerClass])) { return $this->observers[$observerClass]; } return null; } /** * Call all observers for $event with $params * * @param string $event Name of the event * @param array $params Params of the event * * @return void * * @since 3.1.2 */ public function update($event, $params) { if ($this->doCallObservers) { foreach ($this->observers as $observer) { $eventListener = array($observer, $event); if (is_callable($eventListener)) { call_user_func_array($eventListener, $params); } } } } /** * Enable/Disable calling of observers (this is useful when calling parent:: function * * @param boolean $enabled Enable (true) or Disable (false) the observer events * * @return boolean Returns old state * * @since 3.1.2 */ public function doCallObservers($enabled) { $oldState = $this->doCallObservers; $this->doCallObservers = $enabled; return $oldState; } }Private