From 221a6048197774701d290c35c08c2f58c6683d68 Mon Sep 17 00:00:00 2001 From: Ben Klang Date: Mon, 5 Apr 2010 16:12:41 -0400 Subject: [PATCH] Shout: Improve adding numbers without menus --- shout/lib/Driver/Sql.php | 37 ++++++++++++++++++++++++++++--------- shout/lib/Forms/NumberForm.php | 2 +- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/shout/lib/Driver/Sql.php b/shout/lib/Driver/Sql.php index 36080dc2b..5448b6d81 100644 --- a/shout/lib/Driver/Sql.php +++ b/shout/lib/Driver/Sql.php @@ -668,18 +668,37 @@ class Shout_Driver_Sql extends Shout_Driver { $numbers = $this->getNumbers(); if (isset($numbers[$number])) { + // This is an edit $sql = 'UPDATE numbers SET ' . - 'account_id = (SELECT id FROM accounts WHERE code = ?), ' . - 'menu_id = (SELECT id FROM menus WHERE name = ? AND ' . - 'account_id = (SELECT id FROM accounts WHERE code = ?)) ' . - 'WHERE did = ?'; - $values = array($account, $menu, $account, $number); + 'account_id = (SELECT id FROM accounts WHERE code = ?), '; + $values = array($account); + if ($menu == 'INACTIVE') { + // Special handling for the 'NONE' menu + $sql .= 'menu_id = 1 '; + } else { + $sql .= 'menu_id = (SELECT id FROM menus WHERE name = ? AND ' . + 'account_id = (SELECT id FROM accounts WHERE code = ?)) '; + $values[] = $menu; + $values[] = $account; + } + $sql .= 'WHERE did = ?'; + $values[] = $number; } else { + // This is an add $sql = 'INSERT INTO numbers (account_id, menu_id, did) VALUES (' . - '(SELECT id FROM accounts WHERE code = ?), ' . - '(SELECT id FROM menus WHERE name = ?), ' . - '?)'; - $values = array($account, $menu, $number); + '(SELECT id FROM accounts WHERE code = ?), '; + $values = array($account); + if ($menu == 'INACTIVE') { + // Special handling for the 'NONE' menu + $sql .= 'menu_id = 1, '; + } else { + $sql .= 'menu_id = (SELECT id FROM menus WHERE name = ? AND ' . + 'account_id = (SELECT id FROM accounts WHERE code = ?)), '; + $values[] = $menu; + $values[] = $account; + } + $sql .= '?)'; + $values[] = $number; } $msg = 'SQL query in Shout_Driver_Sql#saveNumber(): ' . $sql; diff --git a/shout/lib/Forms/NumberForm.php b/shout/lib/Forms/NumberForm.php index fbd3198be..d1a25e87c 100644 --- a/shout/lib/Forms/NumberForm.php +++ b/shout/lib/Forms/NumberForm.php @@ -50,7 +50,7 @@ class NumberDetailsForm extends Horde_Form { $accountcode = $vars->get('accountcode'); if (!empty($accountcode)) { $menus = $shout->storage->getMenus($accountcode); - $list = array('' => '-- None --'); + $list = array('INACTIVE' => '-- None --'); foreach ($menus as $id => $info) { $list[$id] = $info['name']; } -- 2.11.0