First commit
This commit is contained in:
commit
c6e2478c40
13918 changed files with 2303184 additions and 0 deletions
231
sites/all/modules/civicrm/packages/Log/composite.php
Normal file
231
sites/all/modules/civicrm/packages/Log/composite.php
Normal file
|
@ -0,0 +1,231 @@
|
|||
<?php
|
||||
/**
|
||||
* $Header$
|
||||
* $Horde: horde/lib/Log/composite.php,v 1.2 2000/06/28 21:36:13 jon Exp $
|
||||
*
|
||||
* @version $Revision: 215528 $
|
||||
* @package Log
|
||||
*/
|
||||
|
||||
/**
|
||||
* The Log_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 Log_composite extends Log
|
||||
{
|
||||
/**
|
||||
* 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 __construct($name, $ident = '', $conf = array(),
|
||||
$level = PEAR_LOG_DEBUG)
|
||||
{
|
||||
$this->_ident = $ident;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens all of the child instances.
|
||||
*
|
||||
* @return True if all of the child instances were successfully opened.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function open()
|
||||
{
|
||||
/* Attempt to open each of our children. */
|
||||
$this->_opened = true;
|
||||
foreach ($this->_children as $id => $child) {
|
||||
$this->_opened &= $this->_children[$id]->open();
|
||||
}
|
||||
|
||||
/* If all children were opened, return success. */
|
||||
return $this->_opened;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes all of the child instances.
|
||||
*
|
||||
* @return True if all of the child instances were successfully closed.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function close()
|
||||
{
|
||||
/* Attempt to close each of our children. */
|
||||
$closed = true;
|
||||
foreach ($this->_children as $id => $child) {
|
||||
$closed &= $this->_children[$id]->close();
|
||||
}
|
||||
|
||||
/* Track the _opened state for consistency. */
|
||||
$this->_opened = false;
|
||||
|
||||
/* If all children were closed, return success. */
|
||||
return $closed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flushes all child instances. It is assumed that all of the children
|
||||
* have been successfully opened.
|
||||
*
|
||||
* @return True if all of the child instances were successfully flushed.
|
||||
*
|
||||
* @access public
|
||||
* @since Log 1.8.2
|
||||
*/
|
||||
function flush()
|
||||
{
|
||||
/* Attempt to flush each of our children. */
|
||||
$flushed = true;
|
||||
foreach ($this->_children as $id => $child) {
|
||||
$flushed &= $this->_children[$id]->flush();
|
||||
}
|
||||
|
||||
/* If all children were flushed, return success. */
|
||||
return $flushed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends $message and $priority to each child of this composite. If the
|
||||
* children aren't already open, they will be opened here.
|
||||
*
|
||||
* @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;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the handlers haven't been opened, attempt to open them now.
|
||||
* However, we don't treat failure to open all of the handlers as a
|
||||
* fatal error. We defer that consideration to the success of calling
|
||||
* each handler's log() method below.
|
||||
*/
|
||||
if (!$this->_opened) {
|
||||
$this->open();
|
||||
}
|
||||
|
||||
/* Attempt to log the event using each of the children. */
|
||||
$success = true;
|
||||
foreach ($this->_children as $id => $child) {
|
||||
$success &= $this->_children[$id]->log($message, $priority);
|
||||
}
|
||||
|
||||
$this->_announce(array('priority' => $priority, 'message' => $message));
|
||||
|
||||
/* Return success if all of the children logged the event. */
|
||||
return $success;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, 'Log')) {
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue