Shout: Allow selecting numbers by account
authorBen Klang <ben@alkaloid.net>
Sat, 3 Apr 2010 01:50:49 +0000 (21:50 -0400)
committerBen Klang <ben@alkaloid.net>
Sat, 3 Apr 2010 01:52:20 +0000 (21:52 -0400)
shout/lib/Driver/Sql.php

index 6bf50e9..dc6d3e7 100644 (file)
@@ -120,6 +120,7 @@ class Shout_Driver_Sql extends Shout_Driver
             throw new Shout_Exception($row);
         }
 
+        $menus = array();
         while ($row && !($row instanceof PEAR_Error)) {
             $menu = $row['name'];
             $menus[$menu] = array(
@@ -590,17 +591,29 @@ class Shout_Driver_Sql extends Shout_Driver
         return true;
     }
 
-    public function getNumbers()
+    public function getNumbers($account = null)
     {
-        $sql = 'SELECT numbers.id AS id, numbers.did AS number, ' .
-               'accounts.code AS accountcode, menus.name AS menuName ' .
-               'FROM numbers ' .
-               'INNER JOIN accounts ON numbers.account_id = accounts.id ' .
-               'INNER JOIN menus ON numbers.menu_id = menus.id';
+        if (!empty($account)) {
+            $sql = 'SELECT numbers.id AS id, numbers.did AS number, ' .
+                   'accounts.code AS accountcode, menus.name AS menuName ' .
+                   'FROM numbers ' .
+                   'INNER JOIN accounts ON numbers.account_id = accounts.id ' .
+                   'INNER JOIN menus ON numbers.menu_id = menus.id ' .
+                   'WHERE accounts.code = ?';
+            $values = array($account);
+
+        } else {
+            $sql = 'SELECT numbers.id AS id, numbers.did AS number, ' .
+                   'accounts.code AS accountcode, menus.name AS menuName ' .
+                   'FROM numbers ' .
+                   'INNER JOIN accounts ON numbers.account_id = accounts.id ' .
+                   'INNER JOIN menus ON numbers.menu_id = menus.id';
+            $values = array();
+        }
         
         $msg = 'SQL query in Shout_Driver_Sql#getNumbers(): ' . $sql;
         Horde::logMessage($msg, 'DEBUG');
-        $result = $this->_db->query($sql, $args);
+        $result = $this->_db->query($sql, $values);
         if ($result instanceof PEAR_Error) {
             throw new Shout_Exception($result);
         }