switch ($action) {
case 'add':
case 'edit':
- $vars = Horde_Variables::getDefaultVariables();
+ $number = Horde_Util::getFormData('number');
+ if ($action == 'edit' && !empty($number)) {
+ $numbers = $shout->storage->getNumbers();
+ $vars = Horde_Variables::getDefaultVariables($numbers['number']);
+ } else {
+ $vars = Horde_Variables::getDefaultVariables();
+ }
$Form = new NumberDetailsForm($vars);
if ($Form->isSubmitted() && $Form->validate($vars, true)) {
$notification->push(_("Account information saved."),
'horde.success');
$action = 'list';
+ break;
} catch (Exception $e) {
$notification->push($e);
}
- break;
} elseif ($Form->isSubmitted()) {
$notification->push(_("Problem processing the form. Please check below and try again."), 'horde.warning');
}
}
try {
+ $accounts = $shout->storage->getAccounts();
$numbers = $shout->storage->getNumbers();
} catch (Exception $e) {
$notification->push($e);
}
-
Horde::addScriptFile('stripe.js', 'horde');
Horde::addScriptFile('prototype.js', 'horde');
'(SELECT id FROM actions WHERE name = ?), ?)';
$yamlargs = Horde_Yaml::dump($args);
$values = array($account, $menu, $digit, $action, $yamlargs);
- Horde::logMessage("Data: ".print_r($values, true), 'ERR');
$msg = 'SQL query in Shout_Driver_Sql#saveMenuAction(): ' . $sql;
Horde::logMessage($msg, 'DEBUG');
$result = $this->_write_db->query($sql, $values);
public function getNumbers()
{
- $sql = 'SELECT numbers.id AS id, numbers.did AS did, ' .
+ $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 ' .
$numbers = array();
while ($row && !($row instanceof PEAR_Error)) {
- $id = $numbers['did'];
+ $id = $row['number'];
$numbers[$id] = $row;
/* Advance to the new row in the result set. */
return $numbers;
}
+ public function deleteNumber($number)
+ {
+ // Remove any existing action
+ $sql = 'DELETE FROM numbers WHERE did = ?';
+ $values = array($number);
+ $msg = 'SQL query in Shout_Driver_Sql#deleteNumber(): ' . $sql;
+ Horde::logMessage($msg, 'DEBUG');
+ $result = $this->_write_db->query($sql, $values);
+ if ($result instanceof PEAR_Error) {
+ throw new Shout_Exception($result);
+ }
+ return true;
+ }
+
+ public function saveNumber($number, $account, $menu)
+ {
+ $numbers = $this->getNumbers();
+ if (isset($numbers[$number])) {
+ $sql = 'UPDATE numbers SET ' .
+ 'account_id = (SELECT id FROM accounts WHERE code = ?), ' .
+ 'menu_id = (SELECT id FROM menus WHERE name = ?) ' .
+ 'WHERE did = ?';
+ } else {
+ $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);
+ $msg = 'SQL query in Shout_Driver_Sql#saveNumber(): ' . $sql;
+ Horde::logMessage($msg, 'DEBUG');
+ $result = $this->_write_db->query($sql, $values);
+ if ($result instanceof PEAR_Error) {
+ throw new Shout_Exception($result);
+ }
+
+ return true;
+ }
+
/**
* Attempts to open a persistent connection to the SQL server.
*
$shout = $GLOBALS['registry']->getApiInstance('shout', 'application');
$accounts = $shout->storage->getAccounts();
+ $list = array();
foreach ($accounts as $id => $info) {
$list[$id] = $info['name'];
}
$select->setOption('trackchange', true);
$accountcode = $vars->get('accountcode');
- $menus = $shout->storage->getMenus($accountcode);
- $list = array('' => _("-- none --"));
- foreach ($menus as $id => $info) {
- $list[$id] = $info['name'];
+ if (!empty($accountcode)) {
+ $menus = $shout->storage->getMenus($accountcode);
+ $list = array();
+ foreach ($menus as $id => $info) {
+ $list[$id] = $info['name'];
+ }
+ $this->addVariable(_("Menu"), 'menuName', 'enum', false,
+ false, null, array($list));
}
- $this->addVariable(_("Menu"), 'menuName', 'enum', false,
- false, null, array($list));
return true;
}
*/
function execute()
{
- die("FIXME");
$shout = $GLOBALS['registry']->getApiInstance('shout', 'application');
- $code = $this->_vars->get('code');
- $name = $this->_vars->get('name');
- $adminpin = $this->_vars->get('adminpin');
- if (empty($adminpin)) {
- $adminpin = rand(1000, 9999);
- }
+ $number = $this->_vars->get('number');
+ $accountcode = $this->_vars->get('accountcode');
+ $menuName = $this->_vars->get('menuName');
- $shout->storage->saveAccount($code, $name, $adminpin);
+ return $shout->storage->saveNumber($number, $accountcode, $menuName);
}
-
}
class NumberDeleteForm extends Horde_Form
$editurl = Horde_Util::addParameter($url, 'action', 'edit');
$deleteurl = Horde_Util::addParameter($url, 'action', 'delete');
foreach ($numbers as $numberinfo) {
- $code = $acctinfo['code'];
+ $accountcode = $numberinfo['accountcode'];
?>
- <tr class="item" style="vertical-align: top">
+ <tr class="item">
<td>
<?php echo Horde::link(Horde_Util::addParameter($editurl,
- array('account' => $code))); echo $code; echo '</a>'; ?>
+ array('number' => $numberinfo['number'])));
+ echo $numberinfo['number']; echo '</a>'; ?>
</td>
<td>
- <?php echo $acctinfo['name']; ?>
+ <?php echo $accounts[$accountcode]['name']; ?>
</td>
<td>
- <?php echo $acctinfo['adminpin']; ?>
+ <?php echo $numberinfo['menuName']; ?>
</td>
</tr>
<?php