all loggers support call type and MSN filtering now
[auerswald-callnotifier.git] / src / callnotifier / Logger / CallBase.php
index 96fe76f550ba446e8a586079ebb513cf0df4eee4..31ad0bc7ce8408af85115d75081e0b24939d82f0 100644 (file)
@@ -3,6 +3,65 @@ namespace callnotifier;
 
 abstract class Logger_CallBase implements Logger
 {
+    protected $callTypes;
+    protected $msns;
+
+
+    /**
+     * Create a new call logger.
+     *
+     * @param string $callTypes Which types of call to log:
+     *                          - "i" - incoming calls only
+     *                          - "o" - outgoing calls only
+     *                          - "io" - both incoming and outgoing calls
+     * @param array  $msns      Array of MSN (Multi Subscriber Number) that
+     *                          calls to shall get logged.
+     *                          If the array is empty, calls to all MSNs get
+     *                          logged.
+     */
+    public function __construct($callTypes = 'io', $msns = array())
+    {
+        $this->callTypes = $callTypes;
+        $this->msns      = (array)$msns;
+    }
+
+    /**
+     * Check if the call type (incoming or outgoing) shall be logged.
+     *
+     * @return boolean True if it should be logged, false if not
+     */
+    protected function hasValidType($call)
+    {
+        if ($call->type == CallMonitor_Call::INCOMING && $this->callTypes == 'o') {
+            return false;
+        }
+        if ($call->type == CallMonitor_Call::OUTGOING && $this->callTypes == 'i') {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Check if the MSN shall be logged
+     *
+     * @return boolean True if it should be logged, false if not
+     */
+    protected function hasValidMsn($call)
+    {
+        if ($call->type == CallMonitor_Call::INCOMING) {
+            $msn = $call->to;
+        } else {
+            $msn = $call->from;
+        }
+        if (count($this->msns) > 0 && !in_array($msn, $this->msns)) {
+            //msn shall not be logged
+            return false;
+        }
+
+        return true;
+    }
+
     protected function addUnsetVars($call)
     {
         static $expectedVars = array(