/administrator/components/com_virtuemart/classes/Log/composite.php
PHP | 217 lines | 75 code | 21 blank | 121 comment | 9 complexity | 158becd32ae2d23fbcaef7eabfb4433b MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
- <?php
- if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
- /**
- *
- * @version $Id: composite.php 1336 2008-03-31 17:06:23Z soeren_nb $
- * @package VirtueMart
- * @subpackage Log
- * @copyright Copyright (C) 2004-2008 soeren - All rights reserved.
- * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
- * VirtueMart is free software. This version may have been modified pursuant
- * to the GNU General Public License, and as distributed it includes or
- * is derivative of works licensed under the GNU General Public License or
- * other free or open source software licenses.
- * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
- *
- * http://virtuemart.net
- */
- /**
- * $Header$
- * $Horde: horde/lib/Log/composite.php,v 1.2 2000/06/28 21:36:13 jon Exp $
- *
- * @version $ Revision: 1.26 $
- * @package Log
- */
- /**
- * The vmLog_composite:: class implements a Composite pattern which
- * allows multiple Log implementations to receive the same events.
- *
- * @author Chuck Hagenbuch <chuck@horde.org>
- * @author Jon Parise <jon@php.net>
- *
- * @since Horde 1.3
- * @since Log 1.0
- * @package Log
- *
- * @example composite.php Using the composite handler.
- */
- class vmLog_composite extends vmLog
- {
- /**
- * Array holding all of the Log instances to which log events should be
- * sent.
- *
- * @var array
- * @access private
- */
- var $_children = array();
- /**
- * Constructs a new composite Log object.
- *
- * @param boolean $name This parameter is ignored.
- * @param boolean $ident This parameter is ignored.
- * @param boolean $conf This parameter is ignored.
- * @param boolean $level This parameter is ignored.
- *
- * @access public
- */
- function vmLog_composite($name, $ident = '', $conf = array(),
- $level = PEAR_LOG_DEBUG)
- {
- $this->_ident = $ident;
- }
- /**
- * Opens the child connections.
- *
- * @access public
- */
- function open()
- {
- if (!$this->_opened) {
- foreach ($this->_children as $id => $child) {
- $this->_children[$id]->open();
- }
- $this->_opened = true;
- }
- }
- /**
- * Closes any child instances.
- *
- * @access public
- */
- function close()
- {
- if ($this->_opened) {
- foreach ($this->_children as $id => $child) {
- $this->_children[$id]->close();
- }
- $this->_opened = false;
- }
- }
- /**
- * Flushes all open child instances.
- *
- * @access public
- * @since Log 1.8.2
- */
- function flush()
- {
- if ($this->_opened) {
- foreach ($this->_children as $id => $child) {
- $this->_children[$id]->flush();
- }
- }
- }
- /**
- * Sends $message and $priority to each child of this composite.
- *
- * @param mixed $message String or object containing the message
- * to log.
- * @param string $priority (optional) The priority of the message.
- * Valid values are: PEAR_LOG_EMERG,
- * PEAR_LOG_ALERT, PEAR_LOG_CRIT,
- * PEAR_LOG_ERR, PEAR_LOG_WARNING,
- * PEAR_LOG_NOTICE, PEAR_LOG_INFO, and
- * PEAR_LOG_DEBUG.
- *
- * @return boolean True if the entry is successfully logged.
- *
- * @access public
- */
- function log($message, $priority = null)
- {
- /* If a priority hasn't been specified, use the default value. */
- if ($priority === null) {
- $priority = $this->_priority;
- }
- foreach ($this->_children as $id => $child) {
- $this->_children[$id]->log($message, $priority);
- }
- $this->_announce(array('priority' => $priority, 'message' => $message));
- return true;
- }
- /**
- * Returns true if this is a composite.
- *
- * @return boolean True if this is a composite class.
- *
- * @access public
- */
- function isComposite()
- {
- return true;
- }
- /**
- * Sets this identification string for all of this composite's children.
- *
- * @param string $ident The new identification string.
- *
- * @access public
- * @since Log 1.6.7
- */
- function setIdent($ident)
- {
- /* Call our base class's setIdent() method. */
- parent::setIdent($ident);
- /* ... and then call setIdent() on all of our children. */
- foreach ($this->_children as $id => $child) {
- $this->_children[$id]->setIdent($ident);
- }
- }
- /**
- * Adds a Log instance to the list of children.
- *
- * @param object $child The Log instance to add.
- *
- * @return boolean True if the Log instance was successfully added.
- *
- * @access public
- */
- function addChild(&$child)
- {
- /* Make sure this is a Log instance. */
- if (!is_a($child, 'vmLog')) { /*@MWM1: Bugfix, was 'Log', changed to 'vmLog' */
- return false;
- }
- $this->_children[$child->_id] = &$child;
- return true;
- }
- /**
- * Removes a Log instance from the list of children.
- *
- * @param object $child The Log instance to remove.
- *
- * @return boolean True if the Log instance was successfully removed.
- *
- * @access public
- */
- function removeChild($child)
- {
- if (!is_a($child, 'Log') || !isset($this->_children[$child->_id])) {
- return false;
- }
- unset($this->_children[$child->_id]);
- return true;
- }
- }