From: Ben Klang Date: Mon, 5 Apr 2010 20:12:41 +0000 (-0400) Subject: Shout: Improve adding numbers without menus X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=221a6048197774701d290c35c08c2f58c6683d68;p=horde.git Shout: Improve adding numbers without menus --- 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']; }