aboutsummaryrefslogtreecommitdiff
path: root/src/callnotifier/Log.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/callnotifier/Log.php')
-rw-r--r--src/callnotifier/Log.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/callnotifier/Log.php b/src/callnotifier/Log.php
new file mode 100644
index 0000000..9f7a654
--- /dev/null
+++ b/src/callnotifier/Log.php
@@ -0,0 +1,57 @@
+<?php
+namespace callnotifier;
+
+class Log
+{
+ /**
+ * Array of logger object arrays.
+ * Key is the notification type, value is an array of logger objects
+ * that want to get notified about the type.
+ *
+ * @var array
+ */
+ protected $logger = array(
+ 'msgData' => array(),
+ 'edss1msg' => array(),
+ );
+
+ /**
+ * Add a logger
+ *
+ * @param Logger $logger Logger object to register
+ * @param array|string $types Single notification type or array of such
+ * types. "*" means "register for all types".
+ *
+ * @return self
+ */
+ public function addLogger(Logger $logger, $types)
+ {
+ if ($types == '*') {
+ $types = array_keys($this->logger);
+ }
+ $types = (array)$types;
+
+ foreach ($types as $type) {
+ if (!isset($this->logger[$type])) {
+ throw new \Exception('Unknown log type: ' . $type);
+ }
+ $this->logger[$type][] = $logger;
+ }
+ }
+
+ public function log($type, $arData)
+ {
+ if (!isset($this->logger[$type])) {
+ throw new \Exception('Unknown log type: ' . $type);
+ }
+
+ if (count($this->logger[$type])) {
+ foreach ($this->logger[$type] as $logger) {
+ $logger->log($type, $arData);
+ }
+ }
+ }
+
+}
+
+?>