Meta.php

00001 <?php
00009 class Dsao_Log_Writer_Meta extends Zend_Log_Writer_Abstract
00010 {
00014   const NAMESPACE = '::errors';
00015 
00019   protected $_events = array();
00020 
00021   public function __construct()
00022   {
00023     // Filter für Meldungen, die keine Fehler sind
00024     parent::addFilter(3);
00025   }
00026 
00033   protected function _write($event)
00034   {
00035     // Falls noch keine Fehler vorhanden waren
00036     if (!isset($this->_events[self::NAMESPACE]))
00037     {
00038       $this->_events[self::NAMESPACE] = 0;
00039     }
00040 
00041     $this->_events[self::NAMESPACE]++;
00042 
00043     // Falls kein Namensbereich übergeben wurde
00044     if (!isset($event['namespace'])
00045         || null === $event['namespace'])
00046     {
00047       return;
00048     }
00049 
00050     // 'namespace::subspace' -> array('namespace', 'subspace')
00051     $namespace = explode('::', $event['namespace'], 2);
00052 
00053     // Falls in dem Namensbereich noch kein Fehler aufgetreten ist
00054     if (!isset($this->_events[$namespace[0]]))
00055     {
00056       $this->_events[$namespace[0]] = array();
00057       $this->_events[$namespace[0]][self::NAMESPACE] = 0;
00058     }
00059 
00060     $this->_events[$namespace[0]][self::NAMESPACE]++;
00061 
00062     // Falls Unterbereich angegeben wurde und gültig ist
00063     if (isset($namespace[1]) && $namespace[1])
00064     {
00065       // Falls im Unterbereich noch kein Fehler aufgetreten ist
00066       if (!isset($this->_events[$namespace[0]][$namespace[1]]))
00067       {
00068         $this->_events[$namespace[0]][$namespace[1]] = 0;
00069       }
00070 
00071       $this->_events[$namespace[0]][$namespace[1]]++;
00072     }
00073   }
00074 
00082   public function addFilter($filter)
00083   {
00084     return;
00085   }
00086 
00094   public function hasError($namespace = null)
00095   {
00096     // Falls kein Namensbereich übergeben wurde, insgesamt aufgetretene Fehler
00097     // zurückgeben
00098     if (null === $namespace)
00099     {
00100       return (isset($this->_events[self::NAMESPACE]) ?
00101         $this->_events[self::NAMESPACE] : 0);
00102     }
00103 
00104     $namespace = explode('::', $namespace, 2);
00105 
00106     // Prüfen, ob Unterbereich übergeben wurde
00107     $subspace = (isset($namespace[1]) ? $namespace[1] : self::NAMESPACE);
00108 
00109     return (isset($this->_events[$namespace[0]][$subspace]) ?
00110         $this->_events[$namespace[0]][$subspace] : 0);
00111   }
00112 }

Erzeugt am Fri Sep 18 19:04:11 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1