summaryrefslogtreecommitdiff
path: root/framework/Log/EventLog/context.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Log/EventLog/context.php')
-rw-r--r--framework/Log/EventLog/context.php167
1 files changed, 167 insertions, 0 deletions
diff --git a/framework/Log/EventLog/context.php b/framework/Log/EventLog/context.php
new file mode 100644
index 00000000..518d411e
--- /dev/null
+++ b/framework/Log/EventLog/context.php
@@ -0,0 +1,167 @@
+<?php
+/**
+ * File containing the ezcLogContext class.
+ *
+ * @package EventLog
+ * @version //autogentag//
+ * @copyright Copyright (C) 2005, 2006 eZ systems as. All rights reserved.
+ * @license http://ez.no/licenses/new_bsd New BSD License
+ * @access private
+ */
+
+/**
+ * Stores the contexts for the severities and sources.
+ *
+ * @package EventLog
+ * @version //autogentag//
+ * @access private
+ */
+class ezcLogContext
+{
+
+ /**
+ * Stores the contexts for the severities.
+ *
+ * @var array(integer=>array)
+ */
+ protected $severityMap;
+
+ /**
+ * Stores the contexts for the sources.
+ *
+ * @var array(string=>array)
+ */
+ protected $sourceMap;
+
+
+ /**
+ * Resets this object to its initial state by removing all context mappings.
+ *
+ * @return void
+ */
+ public function reset()
+ {
+ unset( $this->severityMap );
+ unset( $this->sourceMap );
+ }
+
+ /**
+ * Set the context $context for the sevirities specified by $severityMask.
+ *
+ * If the severity already exist, the value will update the old value with
+ * the new one.
+ *
+ * $context is of the format array('key'=>'value').
+ *
+ * @param int $severityMask
+ * Bitmask that specifies all the event types that share the given
+ * context.
+ * @param array(string=>string) $context
+ * @return void
+ */
+ public function setSeverityContext( $severityMask, $context )
+ {
+ // For all the matching bits, add the context to the array.
+ $input = 1;
+ while ( $input <= $severityMask )
+ {
+ if ( $severityMask & $input )
+ {
+ if ( !isset( $this->severityMap[$input] ) )
+ {
+ $this->severityMap[$input] = array();
+ }
+
+ $this->severityMap[$input] = array_merge( (array) $this->severityMap[$input], (array) $context );
+ }
+
+ $input <<= 1;
+ }
+ }
+
+ /**
+ * Remove the contexts for the severities given by $severityMask.
+ *
+ * $severityMask is a bitmask that specifies all the event types that should remove
+ * their context.
+ *
+ * @param int $severityMask
+ * @return void
+ */
+ public function unsetSeverityContext( $severityMask )
+ {
+ // For all the matching bits, remove the context.
+ $input = 1;
+ while ( $input <= $severityMask )
+ {
+ if ( $severityMask & $input )
+ {
+ unset( $this->severityMap[$input] );
+ }
+
+ $input <<= 1;
+ }
+ }
+
+ /**
+ * Set the context $context for each eventSource specified by $eventSources.
+ *
+ * If a certain key from the given context does already exist, the
+ * new value will replace the value stored in the context itself. (Value is
+ * updated).
+ *
+ * @param array(string) $eventSources
+ * @param array(string=>string) $context
+ * Specifies the keys and values that should be stored into this
+ * context object.
+ * @return void
+ */
+ public function setSourceContext($eventSources, $context )
+ {
+ foreach ( $eventSources as $eventSource )
+ {
+ if ( !isset( $this->sourceMap[$eventSource] ) )
+ {
+ $this->sourceMap[$eventSource] = array();
+ }
+
+ $this->sourceMap[$eventSource] = array_merge( (array) $this->sourceMap[$eventSource], (array) $context );
+ }
+ }
+
+ /**
+ * Remove the contexts for the given $eventSources.
+ *
+ * @param array(string) $eventSources
+ * @return void
+ */
+ public function unsetSourceContext($eventSources )
+ {
+ foreach ( $eventSources as $eventSource )
+ {
+ unset( $this->sourceMap[$eventSource] );
+ }
+ }
+
+ /**
+ * Returns the complete context for the event type $eventType and event source $eventSource.
+ *
+ * If there is no context available this method will return an empty array.
+ *
+ *
+ * @param int $eventType The integer that specifies the event type.
+ * The range of this integer is 2^(N+):
+ * ( 1, 2, 4, 8, ... )
+ * @param string $eventSource
+ * @return array
+ */
+ public function getContext( $eventType, $eventSource )
+ {
+ $a = isset( $this->severityMap[$eventType] ) ? $this->severityMap[$eventType] : array();
+ $b = isset( $this->sourceMap[$eventSource] ) ? $this->sourceMap[$eventSource] : array();
+ return array_merge( $a, $b );
+ //return array_merge( (array) $this->severityMap[$eventType], (array) $this->sourceMap[$eventSource] );
+ }
+
+}
+?>