notify user with notify-send
[auerswald-callnotifier.git] / src / callnotifier / Logger / CallNotifySend.php
diff --git a/src/callnotifier/Logger/CallNotifySend.php b/src/callnotifier/Logger/CallNotifySend.php
new file mode 100644 (file)
index 0000000..d5cb9dd
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+namespace callnotifier;
+
+class Logger_CallNotifySend extends Logger_CallBase
+{
+    public function log($type, $arData)
+    {
+        switch ($type) {
+        case 'startingCall':
+            $this->displayStart($arData['call']);
+            break;
+        case 'finishedCall':
+            $this->displayFinished($arData['call']);
+            break;
+        }
+    }
+
+
+    protected function displayStart(CallMonitor_Call $call)
+    {
+        $this->addUnsetVars($call);
+        if ($call->type == CallMonitor_Call::INCOMING) {
+            $this->notify(
+                trim($this->getNumberString($call, 'from')),
+                'Incoming call'
+            );
+        } else {
+            $this->notify(
+                trim($this->getNumberString($call, 'to')),
+                'Outgoing call'
+            );
+        }
+    }
+
+    protected function displayFinished(CallMonitor_Call $call)
+    {
+        $this->addUnsetVars($call);
+        if ($call->type == CallMonitor_Call::INCOMING) {
+            $title = trim($this->getNumberString($call, 'from'));
+            $msg   = 'End of incoming call';
+        } else {
+            $title = trim($this->getNumberString($call, 'to'));
+            $msg   = 'End of outgoing call';
+        }
+        $this->notify(
+            $title,
+            $msg
+            . ', length ' . date('H:i:s', $call->end - $call->start - 3600)
+        );
+    }
+
+    protected function notify($title, $msg)
+    {
+        exec(
+            'notify-send'
+            . ' -u low'
+            . ' --expire-time=1000'
+            . ' -i phone'
+            . ' -c callmonitor'
+            . ' ' . escapeshellarg($title)
+            . ' ' . escapeshellarg($msg)
+        );
+    }
+}
+?>