diff options
author | Frank Karlitschek <frank@dev.(none)> | 2010-03-10 15:03:40 +0300 |
---|---|---|
committer | Frank Karlitschek <frank@dev.(none)> | 2010-03-10 15:03:40 +0300 |
commit | 16f3bd4e2334491152510598f861a1f6c1ecdae2 (patch) | |
tree | 73370c91c4259f9f20f90137c2e39f366d6d078a /inc/Log/observer.php | |
parent | ef2028148691c01c1841745fde9868ce27d9a3a5 (diff) |
commiting ownCloud 1.0 beta 1v1.0.0beta1
Diffstat (limited to 'inc/Log/observer.php')
-rwxr-xr-x | inc/Log/observer.php | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/inc/Log/observer.php b/inc/Log/observer.php new file mode 100755 index 00000000000..187d5070f74 --- /dev/null +++ b/inc/Log/observer.php @@ -0,0 +1,126 @@ +<?php +/** + * $Header: /repository/pear/Log/Log/observer.php,v 1.12 2004/01/11 20:49:49 jon Exp $ + * $Horde: horde/lib/Log/observer.php,v 1.5 2000/06/28 21:36:13 jon Exp $ + * + * @version $Revision: 1.12 $ + * @package Log + */ + +/** + * The Log_observer:: class implements the Observer end of a Subject-Observer + * pattern for watching log activity and taking actions on exceptional events. + * + * @author Chuck Hagenbuch <chuck@horde.org> + * @since Horde 1.3 + * @since Log 1.0 + * @package Log + * + * @example observer_mail.php An example Log_observer implementation. + */ +class Log_observer +{ + /** + * Instance-specific unique identification number. + * + * @var integer + * @access private + */ + var $_id = 0; + + /** + * The minimum priority level of message that we want to hear about. + * PEAR_LOG_EMERG is the highest priority, so we will only hear messages + * with an integer priority value less than or equal to ours. It defaults + * to PEAR_LOG_INFO, which listens to everything except PEAR_LOG_DEBUG. + * + * @var string + * @access private + */ + var $_priority = PEAR_LOG_INFO; + + /** + * Creates a new basic Log_observer instance. + * + * @param integer $priority The highest priority at which to receive + * log event notifications. + * + * @access public + */ + function Log_observer($priority = PEAR_LOG_INFO) + { + $this->_id = md5(microtime()); + $this->_priority = $priority; + } + + /** + * Attempts to return a new concrete Log_observer instance of the requested + * type. + * + * @param string $type The type of concreate Log_observer subclass + * to return. + * @param integer $priority The highest priority at which to receive + * log event notifications. + * @param array $conf Optional associative array of additional + * configuration values. + * + * @return object The newly created concrete Log_observer + * instance, or an false on an error. + */ + function &factory($type, $priority = PEAR_LOG_INFO, $conf = array()) + { + $type = strtolower($type); + $class = 'Log_observer_' . $type; + + /* Support both the new-style and old-style file naming conventions. */ + if (file_exists(dirname(__FILE__) . '/observer_' . $type . '.php')) { + $classfile = 'Log/observer_' . $type . '.php'; + $newstyle = true; + } else { + $classfile = 'Log/' . $type . '.php'; + $newstyle = false; + } + + /* Issue a warning if the old-style conventions are being used. */ + if (!$newstyle) + { + trigger_error('Using old-style Log_observer conventions', + E_USER_WARNING); + } + + /* + * Attempt to include our version of the named class, but don't treat + * a failure as fatal. The caller may have already included their own + * version of the named class. + */ + @include_once $classfile; + + /* If the class exists, return a new instance of it. */ + if (class_exists($class)) { + /* Support both new-style and old-style construction. */ + if ($newstyle) { + return new $class($priority, $conf); + } else { + return new $class($priority); + } + } + + return false; + } + + /** + * This is a stub method to make sure that Log_Observer classes do + * something when they are notified of a message. The default behavior + * is to just print the message, which is obviously not desireable in + * practically any situation - which is why you need to override this + * method. :) + * + * @param array $event A hash describing the log event. + */ + function notify($event) + { + print_r($event); + } +} + +?> |