Performance tweak: most shout methods can return references now and the driver
authorBen Klang <ben@alkaloid.net>
Mon, 18 Jul 2005 12:16:43 +0000 (12:16 +0000)
committerBen Klang <ben@alkaloid.net>
Mon, 18 Jul 2005 12:16:43 +0000 (12:16 +0000)
backend caches much more data.
More UI tweaks, experimenting with dialplan UI options.
**** NOTE ****
This version now relies on an edited HORDE_BASE./lib/Horde/VarRenderer/html.php
to render the new form type 'priority'. This is a test, we'll see how it works
out

git-svn-id: https://svn.alkaloid.net/gpl/shout/trunk@67 06cd67b6-e706-0410-b29e-9de616bca6e9

12 files changed:
dialplan.php
dialplan/edit.php
index.php
lib/Dialplan.php
lib/Driver/ldap.php
lib/System.php
lib/User.php
main/dialplan.php
main/users.php
shout.webprj
templates/menu.inc
users.php

index efce48e..c729ee8 100644 (file)
@@ -23,9 +23,12 @@ require_once SHOUT_BASE . '/lib/Shout.php';
 $context = Util::getFormData("context");
 $section = "dialplan";
 $action = Util::getFormData("action");
+if ($button = Util::getFormData("submitbutton")) {
+    $action = $button;
+}
 $extension = Util::getFormData("extension");
 
-$contexts = $shout->getContexts();
+$contexts = &$shout->getContexts();
 $vars = &Variables::getDefaultVariables();
 
 if (!isset($context)) {#FIXME || !Shout::checkContext()) {
@@ -34,7 +37,6 @@ if (!isset($context)) {#FIXME || !Shout::checkContext()) {
     exit(0);
 }
 
-
 switch ($action) {
     case "add":
         $title = _("Add Extension");
@@ -42,9 +44,25 @@ switch ($action) {
         unset($extension);
         $action = 'edit';
         break;
+    case "Add Priority":
+        $dialplan = &$shout->getDialplan($context);
+        #FIXME Handle added-but-not-yet-saved priorities
+        $dialplan['extensions'][$extension][] = '';
+        $action = 'edit';
+        break;
+    case "Add 5 Priorities":
+        $dialplan = &$shout->getDialplan($context);
+        $dialplan['extensions'][$extension][] = '';
+        $dialplan['extensions'][$extension][] = '';
+        $dialplan['extensions'][$extension][] = '';
+        $dialplan['extensions'][$extension][] = '';
+        $dialplan['extensions'][$extension][] = '';
+        $action = 'edit';
+        break;
     case "edit":
         $title = _("Edit Extension") . "$extension";
         break;
+    case "Save":
     case "save":
         $title = _("Save Extension") . "$extension";
         break;
index 662657e..c0a4dd2 100644 (file)
@@ -18,17 +18,31 @@ $wereerrors = 0;
 
 $vars = &Variables::getDefaultVariables($empty);
 $formname = $vars->get('formname');
+$context = $vars->get('context');
+$extension = $vars->get('extension');
+$dialplan = &$shout->getDialplan($context);
 
-$UserDetailsForm = &Horde_Form::singleton('UserDetailsForm', $vars);
-$UserDetailsFormValid = $UserDetailsForm->validate($vars, true);
+$ExtensionDetailsForm = &Horde_Form::singleton('ExtensionDetailsForm', $vars);
+$ExtensionDetailsFormValid = $ExtensionDetailsForm->validate($vars, true);
 
-$UserDetailsForm->open($RENDERER, $vars, 'dialplan.php', 'post');
-$UserDetailsForm->preserveVarByPost($vars, "section");
-$UserDetailsForm->preserve($vars);
+$ExtensionDetailsForm->open($RENDERER, $vars, 'dialplan.php', 'post');
+$ExtensionDetailsForm->preserveVarByPost($vars, "section");
+$ExtensionDetailsForm->preserve($vars);
 require SHOUT_TEMPLATES . '/table-limiter-begin.inc';
-$RENDERER->beginActive($UserDetailsForm->getTitle());
-$RENDERER->renderFormActive($UserDetailsForm, $vars);
-$RENDERER->submit();
+$RENDERER->beginActive($ExtensionDetailsForm->getTitle());
+$RENDERER->renderFormActive($ExtensionDetailsForm, $vars);
+# FIXME Maybe this should be a subclass inheriting from the From/Renderer object
+# instead of a simple include?
+$i = 0;
+require SHOUT_TEMPLATES . '/dialplan/priority-form-begin.inc';
+foreach ($dialplan['extensions'][$extension] as $priority => $application) {
+    require SHOUT_TEMPLATES . '/dialplan/priority-form-line.inc';
+    $i++;
+}
+require SHOUT_TEMPLATES . '/dialplan/priority-form-end.inc';
+$RENDERER->submit('Add Priority');
+$RENDERER->submit('Add 5 Priorities');
+$RENDERER->submit('Save');
 $RENDERER->end();
-$UserDetailsForm->close($RENDERER);
+$ExtensionDetailsForm->close($RENDERER);
 require SHOUT_TEMPLATES . '/table-limiter-end.inc';
\ No newline at end of file
index 77088ce..896c7c4 100644 (file)
--- a/index.php
+++ b/index.php
@@ -23,7 +23,7 @@ require_once SHOUT_BASE . '/lib/Shout.php';
 $context = Util::getFormData("context");
 $section = Util::getFormData("section");
 
-$contexts = $shout->getContexts();
+$contexts = &$shout->getContexts();
 $vars = &Variables::getDefaultVariables();
 #$ticket->setDetails($vars);
 
index c61ad71..4bee05e 100644 (file)
@@ -18,7 +18,8 @@ class ExtensionDetailsForm extends Horde_Form {
         $context = $vars->get("context");
         $extension = $vars->get("extension");
         
-        $dialplan = $shout->getDialplan($context);
+        $dialplan = &$shout->getDialplan($context);
+        $extendata = $dialplan['extensions'][$extension];
         if (array_key_exists($extension, $dialplan['extensions'])) {
             $formtitle = "Edit Extension";
         } else {
@@ -31,8 +32,14 @@ class ExtensionDetailsForm extends Horde_Form {
         $this->addHidden('', 'oldextension', 'text', true);
         $vars->set('oldextension', $extension);
         $this->addHidden('', 'action', 'text', true);
-        $vars->set('action', 'save');
+//         $vars->set('action', 'save');
         $this->addVariable(_("Extension"), 'extension', 'text', true);
+        $this->addVariable(_("Priority"), 'priority', 'priority', true);
+//         foreach ($extendata as $priority => $application) {
+//             $vars->set("priority$priority", $application);
+//             $this->addVariable("Priority $priority", "priority$priority",
+//                 'text', false);
+//         }
     }
     
     // {{{ fillUserForm method
@@ -78,29 +85,111 @@ class ExtensionDetailsForm extends Horde_Form {
 }
 // }}}
 
-class ExtensionPriorityForm extends ExtensionDetailsForm {
+class Horde_Form_Type_priority extends Horde_Form_Type {
 
-    function ExtensionPriorityForm(&$vars)
+//     var $_regex;
+//     var $_size;
+//     var $_maxlength;
+
+    /**
+     * The initialisation function for the text variable type.
+     *
+     * @access private
+     *
+     * @param string $regex       Any valid PHP PCRE pattern syntax that
+     *                            needs to be matched for the field to be
+     *                            considered valid. If left empty validity
+     *                            will be checked only for required fields
+     *                            whether they are empty or not.
+     *                            If using this regex test it is advisable
+     *                            to enter a description for this field to
+     *                            warn the user what is expected, as the
+     *                            generated error message is quite generic
+     *                            and will not give any indication where
+     *                            the regex failed.
+     * @param integer $size       The size of the input field.
+     * @param integer $maxlength  The max number of characters.
+     */
+     function init()
+     {
+     }
+//     function init($regex = '', $size = 40, $maxlength = null)
+//     {
+//         $this->_regex     = $regex;
+//         $this->_size      = $size;
+//         $this->_maxlength = $maxlength;
+//     }
+
+    function isValid(&$var, &$vars, $value, &$message)
     {
-        global $shout;
-        $context = $vars->get("context");
-        $extension = $vars->get("extension");
-        
-        $dialplan = $shout->getDialplan($context);
-        if (array_key_exists($extension, $dialplan['extensions'])) {
-            $formtitle = "Edit Extension";
-        } else {
-            $formtitle = "Add Extension";
-        }
-        
-        parent::Horde_Form($vars, _("$formtitle - Context: $context"));
-        
-        $this->addHidden('', 'context', 'text', true);
-        $this->addHidden('', 'oldextension', 'text', true);
-        $vars->set('oldextension', $extension);
-        $this->addHidden('', 'action', 'text', true);
-        $vars->set('action', 'save');
-        $this->addVariable(_("Extension"), 'extension', 'text', true);
+        $valid = true;
+
+//         if ($var->isRequired() && empty($this->_regex)) {
+//             $valid = strlen(trim($value)) > 0;
+// 
+//             if (!$valid) {
+//                 $message = _("This field is required.");
+//             }
+//         } elseif (!empty($this->_regex)) {
+//             $valid = preg_match($this->_regex, $value);
+// 
+//             if (!$valid) {
+//                 $message = _("You have to enter a valid value.");
+//             }
+//         }
+
+        return $valid;
     }
+
+    function getSize()
+    {
+        return $this->_size;
+    }
+
+    function getMaxLength()
+    {
+        return $this->_maxlength;
+    }
+
+    /**
+     * Return info about field type.
+     */
+    function about()
+    {
+        $about = array();
+        $about['name'] = _("Extension Priority");
+        $about['params'] = array(
+            'priority'  => array('label' => _("Priority"),
+                                 'type'  => 'int'),
+            'application'      => array('label' => _("Application"),
+                                 'type'  => 'stringlist'),
+            'args' => array('label' => _("Arguments"),
+                                 'type'  => 'text'),
+        );
+        return $about;
+    }
+
 }
-// }}}
\ No newline at end of file
+
+// require_once HORDE_BASE . '/lib/Horde/UI/VarRenderer.php';
+// require_once HORDE_BASE . '/lib/Horde/UI/VarRenderer/html.php';
+// class Horde_UI_VarRenderer_html_priority extends Horde_UI_VarRenderer_html
+// {
+//     function _renderVarInput_priority(&$form, &$var, &$vars)
+//     {
+//         echo '<input type="text" name="priority[0]" value="88" size="3" ';
+//         echo 'id="priority[0]" />';
+//         echo '<select><option>GotoSelf</option></select>\n';
+//         echo '<input type="text" name="application[0]" ';
+//         echo 'size="40" value="101" id="application[0]" />';
+//     }
+//     
+//     function _renderVarDisplay_priority(&$form, &$var, &$vars)
+//     {
+//         echo '<input type="text" name="priority[0]" value="88" size="3" ';
+//         echo 'id="priority[0]" />';
+//         echo '<select><option>GotoSelf</option></select>\n';
+//         echo '<input type="text" name="application[0]" ';
+//         echo 'size="40" value="101" id="application[0]" />';
+//     }
+// }
\ No newline at end of file
index 842eef6..b9b3b1b 100644 (file)
@@ -42,7 +42,7 @@ class Shout_Driver_ldap extends Shout_Driver
     *
     * @access private
     */
-    function getContexts($searchfilters = SHOUT_CONTEXT_ALL,
+    function &getContexts($searchfilters = SHOUT_CONTEXT_ALL,
                          $filterperms = null)
     {
         static $entries = array();
@@ -179,7 +179,7 @@ type");
      *
      * @return array User information indexed by voice mailbox number
      */
-    function getUsers($context)
+    function &getUsers($context)
     {
     
         static $entries = array();
@@ -335,8 +335,13 @@ for $context"));
      * @return array Multi-dimensional associative array of extensions data
      *
      */
-    function getDialplan($context)
+    function &getDialplan($context)
     {
+        static $dialplans = array();
+        if (array_key_exists($context, $dialplans)) {
+            return $dialplans[$context];
+        }
+        
         $res = ldap_search($this->_LDAP,
             SHOUT_ASTERISK_BRANCH.','.$this->_params['basedn'],
             "(&(objectClass=asteriskExtensions)(context=$context))",
@@ -350,7 +355,7 @@ for $context"));
         }
 
         $res = ldap_get_entries($this->_LDAP, $res);
-        $retdialplan = array();
+        $dialplans[$context] = array();
         $i = 0;
         while ($i < $res['count']) {
             # Handle extension lines
@@ -371,36 +376,37 @@ for $context"));
                     $token2 = strpos($line, ',', $token1 + 1);
 
                     $extension = substr($line, 0, $token1);
-                    if (!isset($retdialplan[$extension])) {
-                        $retdialplan[$extension] = array();
+                    if (!isset($dialplans[$context][$extension])) {
+                        $dialplan[$context][$extension] = array();
                     }
                     $token1++;
                     # Get the priority
                     $priority = substr($line, $token1, $token2 - $token1);
-                    $retdialplan[$extension][$priority] = array();
+                    $dialplans[$context][$extension][$priority] = array();
                     $token2++;
 
                     # Get Application and args
                     $application = substr($line, $token2);
 
                     # Merge all that data into the returning array
-                    $retdialplan['extensions'][$extension][$priority] =
+                    $dialplans[$context]['extensions'][$extension][$priority] =
                         $application;
                     $j++;
                 }
 
                 # Sort the extensions data
-                foreach ($retdialplan['extensions'] as $extension) {
-                    ksort($extension);
+                foreach ($dialplans[$context]['extensions'] as
+                    $extension => $data) {
+                    ksort($dialplans[$context]['extensions'][$extension]);
                 }
-                ksort($retdialplan['extensions']);
+                ksort($dialplans[$context]['extensions']);
             }
             # Handle include lines
             if (isset($res[$i]['asteriskincludeline'])) {
                 $j = 0;
                 while ($j < $res[$i]['asteriskincludeline']['count']) {
                     @$line = $res[$i]['asteriskincludeline'][$j];
-                    $retdialplan['include'][$j] = $line;
+                    $dialplans[$context]['include'][$j] = $line;
                     $j++;
                 }
             }
@@ -410,7 +416,7 @@ for $context"));
                 $j = 0;
                 while ($j < $res[$i]['asteriskignorepat']['count']) {
                     @$line = $res[$i]['asteriskignorepat'][$j];
-                    $retdialplan['include'][$j] = $line;
+                    $dialplans[$context]['ignorepat'][$j] = $line;
                     $j++;
                 }
             }
@@ -419,7 +425,7 @@ for $context"));
                 $j = 0;
                 while ($j < $res[$i]['asteriskextensionbareline']['count']) {
                     @$line = $res[$i]['asteriskextensionbareline'][$j];
-                    $retdialplan['bareline'][$j] = $line;
+                    $dialplans[$context]['bareline'][$j] = $line;
                     $j++;
                 }
             }
@@ -427,7 +433,7 @@ for $context"));
             # Increment object
             $i++;
         }
-        return $retdialplan;
+        return $dialplans[$context];
     }
     // }}}
 
index d6622c3..e7f4dcf 100644 (file)
@@ -24,7 +24,7 @@ class ContextForm extends Horde_Form {
 
         $contextfilter = SHOUT_CONTEXT_CUSTOMERS | SHOUT_CONTEXT_EXTENSIONS|
                          SHOUT_CONTEXT_MOH | SHOUT_CONTEXT_CONFERENCE;
-        $contexts = $shout->getContexts($contextfilter);
+        $contexts = &$shout->getContexts($contextfilter);
         foreach ($contexts as $context) {
             $tmpcontexts[$context] = $context;
         }
index 4160beb..b0f979e 100644 (file)
@@ -18,7 +18,7 @@ class UserDetailsForm extends Horde_Form {
         $context = $vars->get("context");
         $extension = $vars->get("extension");
         
-        $users = $shout->getUsers($context);
+        $users = &$shout->getUsers($context);
         if (array_key_exists($extension, $users)) {
             # We must be editing an existing user
             $this->fillUserForm(&$vars, $users[$extension]);
index 51d9332..14aedf7 100644 (file)
@@ -2,5 +2,5 @@
 if (!defined(SHOUT_BASE)) {
     define(SHOUT_BASE, dirname(__FILE__));
 }
-$dialplan = $shout->getDialplan($context);
+$dialplan = &$shout->getDialplan($context);
 require SHOUT_TEMPLATES . "/dialplan/dialplanlist.inc";
\ No newline at end of file
index 4530444..266edc8 100644 (file)
@@ -2,6 +2,6 @@
 if (!defined(SHOUT_BASE)) {
     define(SHOUT_BASE, dirname(__FILE__));
 }
-$users = $shout->getUsers($context);
+$users = &$shout->getUsers($context);
 ksort($users);
 require SHOUT_TEMPLATES . "/users/userlist.inc";
\ No newline at end of file
index 7db6eeb..738ac88 100644 (file)
@@ -9,36 +9,39 @@
     <item url="templates/" uploadstatus="2" />
     <item url="lib/" uploadstatus="2" />
     <item url="lib/Driver/" uploadstatus="2" />
-    <item modified_time="1121576093" url="lib/Driver/ldap.php" uploadstatus="2" />
+    <item modified_time="1121623158" url="lib/Driver/ldap.php" uploadstatus="2" />
     <item modified_time="1120589135" url="lib/base.php" uploadstatus="2" />
     <item modified_time="1121306551" url="lib/Driver.php" uploadstatus="2" />
-    <item modified_time="1121579328" url="index.php" uploadstatus="2" />
+    <item modified_time="1121623574" url="index.php" uploadstatus="2" />
     <uploadprofiles showtreeviews="true" defaultProfile="Shout" >
       <profile remote_host="picasso.v-office.biz" remote_port="" remote_path="/srv/vhost/users/aklang/sites/intranet.v-office.biz/shout" remote_protocol="sftp" user="aklang" name="Shout" >
         <uploadeditem upload_time="0" url="config/" />
         <uploadeditem upload_time="1120073766" url="config/conf.xml" />
         <uploadeditem upload_time="1120183942" url="contexts.php" />
-        <uploadeditem upload_time="1121579932" url="dialplan.php" />
-        <uploadeditem upload_time="1121579328" url="index.php" />
+        <uploadeditem upload_time="1121631735" url="dialplan.php" />
+        <uploadeditem upload_time="0" url="dialplan/" />
+        <uploadeditem upload_time="1121632074" url="dialplan/edit.php" />
+        <uploadeditem upload_time="1121623574" url="index.php" />
         <uploadeditem upload_time="1120021874" url="index.php~" />
         <uploadeditem upload_time="0" url="lib/" />
+        <uploadeditem upload_time="1121632956" url="lib/Dialplan.php" />
         <uploadeditem upload_time="1121306551" url="lib/Driver.php" />
         <uploadeditem upload_time="1120022560" url="lib/Driver.php~" />
         <uploadeditem upload_time="0" url="lib/Driver/" />
-        <uploadeditem upload_time="1121576093" url="lib/Driver/ldap.php" />
+        <uploadeditem upload_time="1121623158" url="lib/Driver/ldap.php" />
         <uploadeditem upload_time="1120026921" url="lib/Driver/ldap.php~" />
         <uploadeditem upload_time="1120288491" url="lib/SelectContext.php" />
         <uploadeditem upload_time="1121580048" url="lib/Shout.php" />
-        <uploadeditem upload_time="1120815615" url="lib/System.php" />
-        <uploadeditem upload_time="1121578306" url="lib/User.php" />
+        <uploadeditem upload_time="1121623619" url="lib/System.php" />
+        <uploadeditem upload_time="1121623659" url="lib/User.php" />
         <uploadeditem upload_time="1120279975" url="lib/Users.php" />
         <uploadeditem upload_time="1120589135" url="lib/base.php" />
         <uploadeditem upload_time="1120073766" url="lib/defines.php" />
         <uploadeditem upload_time="0" url="main/" />
-        <uploadeditem upload_time="1120355053" url="main/dialplan.php" />
+        <uploadeditem upload_time="1121623690" url="main/dialplan.php" />
         <uploadeditem upload_time="1120287842" url="main/moh.php" />
         <uploadeditem upload_time="1120815615" url="main/system.php" />
-        <uploadeditem upload_time="1121306550" url="main/users.php" />
+        <uploadeditem upload_time="1121623695" url="main/users.php" />
         <uploadeditem upload_time="1120287842" url="moh.php" />
         <uploadeditem upload_time="1120027019" url="shout.webprj" />
         <uploadeditem upload_time="1120815615" url="system.php" />
         <uploadeditem upload_time="0" url="templates/context/" />
         <uploadeditem upload_time="1120175005" url="templates/context/contextline.inc" />
         <uploadeditem upload_time="0" url="templates/dialplan/" />
-        <uploadeditem upload_time="1121579774" url="templates/dialplan/dialplanlist.inc" />
-        <uploadeditem upload_time="1121486161" url="templates/menu.inc" />
+        <uploadeditem upload_time="1121580987" url="templates/dialplan/dialplanlist.inc" />
+        <uploadeditem upload_time="1121621204" url="templates/dialplan/priority-form-begin.inc" />
+        <uploadeditem upload_time="1121621077" url="templates/dialplan/priority-form-end.inc" />
+        <uploadeditem upload_time="1121621149" url="templates/dialplan/priority-form-line.inc" />
+        <uploadeditem upload_time="1121620916" url="templates/dialplan/priority-form.inc" />
+        <uploadeditem upload_time="1121620517" url="templates/dialplan/prority-form.inc" />
+        <uploadeditem upload_time="1121623829" url="templates/menu.inc" />
         <uploadeditem upload_time="1121578573" url="templates/table-limiter-begin.inc" />
         <uploadeditem upload_time="1121578576" url="templates/table-limiter-end.inc" />
         <uploadeditem upload_time="0" url="templates/users/" />
-        <uploadeditem upload_time="1121576381" url="templates/users/userlist.inc" />
+        <uploadeditem upload_time="1121581535" url="templates/users/userlist.inc" />
         <uploadeditem upload_time="0" url="themes/" />
         <uploadeditem upload_time="0" url="themes/graphics/" />
         <uploadeditem upload_time="1121580098" url="themes/graphics/add-dialplan.gif" />
         <uploadeditem upload_time="1121580098" url="themes/graphics/add-extension.gif" />
         <uploadeditem upload_time="1121300828" url="themes/graphics/add-user.gif" />
         <uploadeditem upload_time="1121574328" url="themes/screen.css" />
-        <uploadeditem upload_time="1121579644" url="users.php" />
+        <uploadeditem upload_time="1121623747" url="users.php" />
         <uploadeditem upload_time="0" url="users/" />
         <uploadeditem upload_time="1121404120" url="users/add.php" />
-        <uploadeditem upload_time="1121575287" url="users/edit.php" />
+        <uploadeditem upload_time="1121580517" url="users/edit.php" />
         <uploadeditem upload_time="1121396278" url="users/index.php" />
         <uploadeditem upload_time="1121579127" url="users/save.php" />
       </profile>
     <item url="config/" uploadstatus="1" />
     <item modified_time="1121580048" url="lib/Shout.php" uploadstatus="1" />
     <item modified_time="1120174958" url="templates/common-header.inc" uploadstatus="1" />
-    <item modified_time="1121486161" url="templates/menu.inc" uploadstatus="1" />
+    <item modified_time="1121623829" url="templates/menu.inc" uploadstatus="1" />
     <item url="templates/context/" uploadstatus="1" />
     <item modified_time="1120175005" url="templates/context/contextline.inc" uploadstatus="1" />
     <item url="templates/users/" uploadstatus="1" />
-    <item modified_time="1121576381" url="templates/users/userlist.inc" uploadstatus="1" />
-    <item modified_time="1121579774" url="templates/dialplan/dialplanlist.inc" uploadstatus="1" />
+    <item modified_time="1121581535" url="templates/users/userlist.inc" uploadstatus="1" />
+    <item modified_time="1121580987" url="templates/dialplan/dialplanlist.inc" uploadstatus="1" />
     <item url="templates/dialplan/" uploadstatus="1" />
-    <item modified_time="1120815615" url="lib/System.php" uploadstatus="1" />
+    <item modified_time="1121623619" url="lib/System.php" uploadstatus="1" />
     <author>Ben Klang</author>
     <email>ben@alkaloid.net</email>
     <debuggerclient>Gubed</debuggerclient>
     <item url="themes/graphics/" uploadstatus="1" />
     <item modified_time="1121300828" url="themes/graphics/add-user.gif" uploadstatus="1" />
     <item url="users/" uploadstatus="1" />
-    <item modified_time="1121578306" url="lib/User.php" uploadstatus="1" />
+    <item modified_time="1121623659" url="lib/User.php" uploadstatus="1" />
     <item url="main/" uploadstatus="1" />
-    <item modified_time="1120355053" url="main/dialplan.php" uploadstatus="1" />
+    <item modified_time="1121623690" url="main/dialplan.php" uploadstatus="1" />
     <item modified_time="1120287842" url="main/moh.php" uploadstatus="1" />
     <item modified_time="1120815615" url="main/system.php" uploadstatus="1" />
-    <item modified_time="1121306550" url="main/users.php" uploadstatus="1" />
-    <item modified_time="1121579644" url="users.php" uploadstatus="1" />
+    <item modified_time="1121623695" url="main/users.php" uploadstatus="1" />
+    <item modified_time="1121623747" url="users.php" uploadstatus="1" />
     <item modified_time="1121579127" url="users/save.php" uploadstatus="1" />
-    <item modified_time="1121574328" url="themes/screen.css" />
-    <item modified_time="1121575287" url="users/edit.php" />
-    <item modified_time="1121578573" url="templates/table-limiter-begin.inc" />
-    <item modified_time="1121578576" url="templates/table-limiter-end.inc" />
-    <item modified_time="1121579932" url="dialplan.php" />
-    <item modified_time="1121580098" url="themes/graphics/add-dialplan.gif" />
-    <item modified_time="1121580098" url="themes/graphics/add-extension.gif" />
-    <item url="dialplan/edit.php" />
-    <item url="dialplan/" />
-    <item url="lib/Dialplan.php" />
+    <item modified_time="1121574328" url="themes/screen.css" uploadstatus="1" />
+    <item modified_time="1121580517" url="users/edit.php" uploadstatus="1" />
+    <item modified_time="1121578573" url="templates/table-limiter-begin.inc" uploadstatus="1" />
+    <item modified_time="1121578576" url="templates/table-limiter-end.inc" uploadstatus="1" />
+    <item modified_time="1121631735" url="dialplan.php" uploadstatus="1" />
+    <item modified_time="1121580098" url="themes/graphics/add-extension.gif" uploadstatus="1" />
+    <item modified_time="1121632074" url="dialplan/edit.php" uploadstatus="1" />
+    <item url="dialplan/" uploadstatus="1" />
+    <item modified_time="1121632956" url="lib/Dialplan.php" uploadstatus="1" />
+    <item modified_time="1121621204" url="templates/dialplan/priority-form-begin.inc" />
+    <item modified_time="1121621077" url="templates/dialplan/priority-form-end.inc" />
+    <item modified_time="1121621149" url="templates/dialplan/priority-form-line.inc" />
     <treestatus>
       <openfolder url="config" />
+      <openfolder url="dialplan" />
       <openfolder url="lib" />
       <openfolder url="lib/Driver" />
       <openfolder url="main" />
index 66e7a35..2a2a44c 100644 (file)
@@ -12,7 +12,8 @@ $menu_view = $prefs->getValue('menu_view');
    <label for="context" accesskey="<?php echo $accesskey ?>">
     <select id="context" name="context" onchange="contextSubmit()">
      <?php
-        foreach ($shout->getContexts() as $item) {
+        $contexts = &$shout->getContexts();
+        foreach ($contexts as $item) {
             print "<option name=\"$item\"";
             if ($item == $context) {
                 print " selected";
index 0c6cbbf..9c798c3 100644 (file)
--- a/users.php
+++ b/users.php
@@ -25,7 +25,7 @@ $section = "users";
 $action = Util::getFormData("action");
 $extension = Util::getFormData("extension");
 
-$contexts = $shout->getContexts();
+$contexts = &$shout->getContexts();
 $vars = &Variables::getDefaultVariables();
 
 if (!isset($context)) {#FIXME || !Shout::checkContext()) {