This should be Beta 1!
authorBen Klang <ben@alkaloid.net>
Sun, 29 Jan 2006 07:32:58 +0000 (07:32 +0000)
committerBen Klang <ben@alkaloid.net>
Sun, 29 Jan 2006 07:32:58 +0000 (07:32 +0000)
Most functionality works.  Still need to figure out how to handle a single-user edit.  Needs LOTS of testing
Tested functions: Add user, edit existing user data, some checking of context perms.

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

andrew.session
andrew.webprj
lib/Driver/ldap.php
lib/Shout.php
lib/User.php
lib/api.php
usermgr.php
usermgr/edit.php
usermgr/list.php
usermgr/save.php

index 2f88da2..42c0092 100644 (file)
       </profile>
       <profile remote_host="dev04.alkaloid.net" remote_port="22" remote_path="/srv/vhost/sites/shout.dev04.alkaloid.net/shout" remote_protocol="sftp" user="bklang" name="Shout Dev" >
         <uploadeditem upload_time="0" url="config/" />
-        <uploadeditem upload_time="1138396403" url="config/applist.xml.dist" />
-        <uploadeditem upload_time="1138318792" url="config/conf.xml" />
-        <uploadeditem upload_time="1138318792" url="config/defines.php.dist" />
-        <uploadeditem upload_time="1138465371" url="dialplan.php" />
+        <uploadeditem upload_time="1138465344" url="config/applist.xml.dist" />
+        <uploadeditem upload_time="1138318762" url="config/conf.xml" />
+        <uploadeditem upload_time="1138318762" url="config/defines.php.dist" />
+        <uploadeditem upload_time="1138465344" url="dialplan.php" />
         <uploadeditem upload_time="0" url="dialplan/" />
-        <uploadeditem upload_time="1134075506" url="dialplan/edit.php" />
-        <uploadeditem upload_time="1138483266" url="index.php" />
+        <uploadeditem upload_time="1134254291" url="dialplan/edit.php" />
+        <uploadeditem upload_time="1138512826" url="index.php" />
         <uploadeditem upload_time="0" url="lib/" />
-        <uploadeditem upload_time="1134075506" url="lib/Dialplan.php" />
-        <uploadeditem upload_time="1138318792" url="lib/Driver.php" />
+        <uploadeditem upload_time="1134254292" url="lib/Dialplan.php" />
+        <uploadeditem upload_time="1138318762" url="lib/Driver.php" />
         <uploadeditem upload_time="0" url="lib/Driver/" />
-        <uploadeditem upload_time="1138487546" url="lib/Driver/ldap.php" />
-        <uploadeditem upload_time="1138318792" url="lib/Shout.php" />
+        <uploadeditem upload_time="1138517848" url="lib/Driver/ldap.php" />
+        <uploadeditem upload_time="1138517434" url="lib/Shout.php" />
         <uploadeditem upload_time="1134075507" url="lib/System.php" />
-        <uploadeditem upload_time="1138486360" url="lib/User.php" />
-        <uploadeditem upload_time="1138483266" url="lib/api.php" />
-        <uploadeditem upload_time="1138483266" url="lib/base.php" />
+        <uploadeditem upload_time="1138508928" url="lib/User.php" />
+        <uploadeditem upload_time="1138508108" url="lib/api.php" />
+        <uploadeditem upload_time="1138483338" url="lib/base.php" />
         <uploadeditem upload_time="1134075507" url="lib/defines.php" />
-        <uploadeditem upload_time="1137381911" url="lib/version.php" />
+        <uploadeditem upload_time="1137381879" url="lib/version.php" />
         <uploadeditem upload_time="0" url="main/" />
         <uploadeditem upload_time="1134254292" url="main/dialplan.php" />
         <uploadeditem upload_time="1134254291" url="main/moh.php" />
         <uploadeditem upload_time="1134075507" url="main/system.php" />
         <uploadeditem upload_time="1134254291" url="main/users.php" />
-        <uploadeditem upload_time="1138318792" url="moh.php" />
-        <uploadeditem upload_time="1138318792" url="security.php" />
+        <uploadeditem upload_time="1138318762" url="moh.php" />
+        <uploadeditem upload_time="1138318762" url="security.php" />
         <uploadeditem upload_time="0" url="templates/" />
-        <uploadeditem upload_time="1138311990" url="templates/common-header.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/content_page" />
+        <uploadeditem upload_time="1138318762" url="templates/common-header.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/content_page" />
         <uploadeditem upload_time="0" url="templates/context/" />
-        <uploadeditem upload_time="1134075418" url="templates/context/contextline.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/context/contextline.inc" />
         <uploadeditem upload_time="0" url="templates/dialplan/" />
         <uploadeditem upload_time="1131723538" url="templates/dialplan/contexttree.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/dialplan/dialplanlist.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/dialplan/dialplanlist.inc" />
         <uploadeditem upload_time="1131767776" url="templates/dialplan/extensiondetail.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/dialplan/manager.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/dialplan/priority-form-begin.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/dialplan/priority-form-end.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/dialplan/priority-form-line.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/dialplan/manager.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/dialplan/priority-form-begin.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/dialplan/priority-form-end.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/dialplan/priority-form-line.inc" />
         <uploadeditem upload_time="0" url="templates/javascript/" />
-        <uploadeditem upload_time="1134075507" url="templates/javascript/dialplan.js" />
-        <uploadeditem upload_time="1134075418" url="templates/menu.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/table-limiter-begin.inc" />
-        <uploadeditem upload_time="1134075418" url="templates/table-limiter-end.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/javascript/dialplan.js" />
+        <uploadeditem upload_time="1134254292" url="templates/menu.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/table-limiter-begin.inc" />
+        <uploadeditem upload_time="1134254292" url="templates/table-limiter-end.inc" />
         <uploadeditem upload_time="0" url="templates/users/" />
-        <uploadeditem upload_time="1138483266" url="templates/users/userlist.inc" />
+        <uploadeditem upload_time="1138479954" url="templates/users/userlist.inc" />
         <uploadeditem upload_time="0" url="themes/" />
         <uploadeditem upload_time="0" url="themes/graphics/" />
-        <uploadeditem upload_time="1134075418" url="themes/graphics/add-extension.gif" />
-        <uploadeditem upload_time="1134075418" url="themes/graphics/add-user.gif" />
-        <uploadeditem upload_time="1134075418" url="themes/screen.css" />
-        <uploadeditem upload_time="1138342874" url="usermgr.php" />
+        <uploadeditem upload_time="1134254292" url="themes/graphics/add-extension.gif" />
+        <uploadeditem upload_time="1134254292" url="themes/graphics/add-user.gif" />
+        <uploadeditem upload_time="1134254292" url="themes/screen.css" />
+        <uploadeditem upload_time="1138517509" url="usermgr.php" />
         <uploadeditem upload_time="0" url="usermgr/" />
-        <uploadeditem upload_time="1138317269" url="usermgr/delete.php" />
-        <uploadeditem upload_time="1138483266" url="usermgr/edit.php" />
-        <uploadeditem upload_time="1138317269" url="usermgr/list.php" />
-        <uploadeditem upload_time="1138486399" url="usermgr/save.php" />
+        <uploadeditem upload_time="1138317244" url="usermgr/delete.php" />
+        <uploadeditem upload_time="1138508586" url="usermgr/edit.php" />
+        <uploadeditem upload_time="1138504709" url="usermgr/list.php" />
+        <uploadeditem upload_time="1138511029" url="usermgr/save.php" />
         <uploadeditem upload_time="1134254292" url="users.php" />
         <uploadeditem upload_time="0" url="users/" />
         <uploadeditem upload_time="1138311486" url="users/add.php" />
index 84c0984..4680d6f 100644 (file)
@@ -1,42 +1,42 @@
 <!DOCTYPE webproject>
 <webproject>
-  <project usePreviewPrefix="0" type="Local" previewPrefix="" usePersistentBookmarks="0" name="Shout" encoding="iso 8859-1" enableEvents="true" >
+  <project usePreviewPrefix="0" previewPrefix="" type="Local" usePersistentBookmarks="0" name="Shout" encoding="iso 8859-1" enableEvents="true" >
     <upload/>
     <defaultDTD>-//w3c//dtd xhtml 1.0 strict//en</defaultDTD>
     <item url="config/" uploadstatus="1" />
-    <item modified_time="1138318792" url="config/conf.xml" uploadstatus="1" />
+    <item modified_time="1138318762" url="config/conf.xml" uploadstatus="1" />
     <item url="dialplan/" uploadstatus="1" />
-    <item modified_time="1134075506" url="dialplan/edit.php" uploadstatus="1" />
+    <item modified_time="1134254291" url="dialplan/edit.php" uploadstatus="1" />
     <item url="lib/" uploadstatus="1" />
     <item url="lib/Driver/" uploadstatus="1" />
-    <item modified_time="1138487546" url="lib/Driver/ldap.php" uploadstatus="1" />
-    <item modified_time="1138483266" url="lib/base.php" uploadstatus="1" />
-    <item modified_time="1134075506" url="lib/Dialplan.php" uploadstatus="1" />
-    <item modified_time="1138318792" url="lib/Driver.php" uploadstatus="1" />
-    <item modified_time="1138318792" url="lib/Shout.php" uploadstatus="1" />
-    <item modified_time="1138486360" url="lib/User.php" uploadstatus="1" />
+    <item modified_time="1138517848" url="lib/Driver/ldap.php" uploadstatus="1" />
+    <item modified_time="1138483338" url="lib/base.php" uploadstatus="1" />
+    <item modified_time="1134254292" url="lib/Dialplan.php" uploadstatus="1" />
+    <item modified_time="1138318762" url="lib/Driver.php" uploadstatus="1" />
+    <item modified_time="1138517434" url="lib/Shout.php" uploadstatus="1" />
+    <item modified_time="1138508928" url="lib/User.php" uploadstatus="1" />
     <item url="templates/" uploadstatus="1" />
     <item url="templates/context/" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/context/contextline.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/context/contextline.inc" uploadstatus="1" />
     <item url="templates/dialplan/" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/dialplan/dialplanlist.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/dialplan/priority-form-begin.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/dialplan/priority-form-end.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/dialplan/priority-form-line.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/dialplan/dialplanlist.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/dialplan/priority-form-begin.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/dialplan/priority-form-end.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/dialplan/priority-form-line.inc" uploadstatus="1" />
     <item url="templates/users/" uploadstatus="1" />
-    <item modified_time="1138483266" url="templates/users/userlist.inc" uploadstatus="1" />
-    <item modified_time="1138311990" url="templates/common-header.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/content_page" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/menu.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/table-limiter-begin.inc" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/table-limiter-end.inc" uploadstatus="1" />
+    <item modified_time="1138479954" url="templates/users/userlist.inc" uploadstatus="1" />
+    <item modified_time="1138318762" url="templates/common-header.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/content_page" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/menu.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/table-limiter-begin.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/table-limiter-end.inc" uploadstatus="1" />
     <item url="themes/" uploadstatus="1" />
     <item url="themes/graphics/" uploadstatus="1" />
-    <item modified_time="1134075418" url="themes/graphics/add-extension.gif" uploadstatus="1" />
-    <item modified_time="1134075418" url="themes/graphics/add-user.gif" uploadstatus="1" />
-    <item modified_time="1134075418" url="themes/screen.css" uploadstatus="1" />
-    <item modified_time="1138465371" url="dialplan.php" uploadstatus="1" />
-    <item modified_time="1138483266" url="index.php" uploadstatus="1" />
+    <item modified_time="1134254292" url="themes/graphics/add-extension.gif" uploadstatus="1" />
+    <item modified_time="1134254292" url="themes/graphics/add-user.gif" uploadstatus="1" />
+    <item modified_time="1134254292" url="themes/screen.css" uploadstatus="1" />
+    <item modified_time="1138465344" url="dialplan.php" uploadstatus="1" />
+    <item modified_time="1138512826" url="index.php" uploadstatus="1" />
     <item url="" uploadstatus="1" />
     <uploadprofiles showtreeviews="true" defaultProfile="Shout" >
       <profile remote_host="" remote_port="" remote_path="" remote_protocol="ftp" user="" name="@" />
     </uploadprofiles>
     <templates>templates/</templates>
     <toolbars>toolbars/</toolbars>
-    <item modified_time="1138483266" url="lib/api.php" uploadstatus="1" />
-    <item modified_time="1138318792" url="security.php" uploadstatus="1" />
+    <item modified_time="1138508108" url="lib/api.php" uploadstatus="1" />
+    <item modified_time="1138318762" url="security.php" uploadstatus="1" />
     <item url="templates/javascript/" uploadstatus="1" />
-    <item modified_time="1134075507" url="templates/javascript/dialplan.js" uploadstatus="1" />
-    <item modified_time="1134075418" url="templates/dialplan/manager.inc" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/javascript/dialplan.js" uploadstatus="1" />
+    <item modified_time="1134254292" url="templates/dialplan/manager.inc" uploadstatus="1" />
     <treestatus>
       <openfolder url="lib" />
       <openfolder url="lib/Driver" />
       <mailinglist address="" />
     </teamdata>
     <events/>
-    <item modified_time="1137381911" url="lib/version.php" uploadstatus="1" />
-    <item modified_time="1138318792" url="moh.php" uploadstatus="1" />
-    <item modified_time="1138342874" url="usermgr.php" uploadstatus="1" />
-    <item modified_time="1138318792" url="config/defines.php.dist" uploadstatus="1" />
+    <item modified_time="1137381879" url="lib/version.php" uploadstatus="1" />
+    <item modified_time="1138318762" url="moh.php" uploadstatus="1" />
+    <item modified_time="1138517509" url="usermgr.php" uploadstatus="1" />
+    <item modified_time="1138318762" url="config/defines.php.dist" uploadstatus="1" />
     <item url="usermgr/" uploadstatus="1" />
-    <item modified_time="1138483266" url="usermgr/edit.php" uploadstatus="1" />
-    <item modified_time="1138317269" url="usermgr/list.php" uploadstatus="1" />
-    <item modified_time="1138486399" url="usermgr/save.php" uploadstatus="1" />
-    <item modified_time="1138317269" url="usermgr/delete.php" uploadstatus="1" />
-    <item modified_time="1138396403" url="config/applist.xml.dist" uploadstatus="1" />
+    <item modified_time="1138508586" url="usermgr/edit.php" uploadstatus="1" />
+    <item modified_time="1138504709" url="usermgr/list.php" uploadstatus="1" />
+    <item modified_time="1138511029" url="usermgr/save.php" uploadstatus="1" />
+    <item modified_time="1138317244" url="usermgr/delete.php" uploadstatus="1" />
+    <item modified_time="1138465344" url="config/applist.xml.dist" uploadstatus="1" />
   </project>
 </webproject>
index 98afe2c..486b14c 100644 (file)
@@ -93,7 +93,7 @@ class Shout_Driver_ldap extends Shout_Driver
             return $entries[$searchfilters];
         }
 
-        if ($filterperms == null) {
+        if ($filterperms === null) {
             $filterperms = PERMS_SHOW|PERMS_READ;
         }
 
@@ -282,8 +282,7 @@ type");
         $i = 0;
         while ($i < $res['count']) {
             $extension = $res[$i]['voicemailbox'][0];
-            $uid = md5($res['dn']);
-            $entries[$context][$uid] = $extension;
+            $uid = md5($res[$i]['dn']);
             $entries[$context][$extension] = array();
             $entries[$context][$extension]['uid'] = $uid;
 
@@ -577,7 +576,7 @@ for $context"));
 
         $limits = array('telephonenumbersmax',
                         'voicemailboxesmax',
-                        'asteriskusers');
+                        'asteriskusersmax');
 
         if(!is_null($extension) && is_null($context)) {
             return PEAR::raiseError("Extension specified but no context " .
@@ -704,14 +703,17 @@ for $context"));
      */
     function saveUser($context, $extension, $userdetails)
     {
+        $ldapKey = &$this->_ldapKey;
+        $appKey = &$this->_appKey;
         # FIXME Access Control/Authorization
-        if (!Shout::checkRights("shout:contexts:$context:users",
-            PERMS_DELETE, 1)) {
+        if (
+            !(Shout::checkRights("shout:contexts:$context:users", PERMS_EDIT, 1))
+            &&
+            !($userdetails[$appKey] == Auth::getAuth())
+            ) {
             return PEAR::raiseError("No permission to modify users in this " .
                 "context.");
         }
-        $ldapKey = &$this->_ldapKey;
-        $appKey = &$this->_appKey;
 
         $contexts = &$this->getContexts();
 //         $domain = $contexts[$context]['domain'];
@@ -734,9 +736,11 @@ for $context"));
 
         $entry = array(
             'cn' => $userdetails['name'],
+            'sn' => $userdetails['name'],
             'mail' => $userdetails['email'],
+            'uid' => $userdetails['email'],
             'voiceMailbox' => $userdetails['newextension'],
-            'voiceMailboxPin' => $userdetails['pin'],
+            'voiceMailboxPin' => $userdetails['mailboxpin'],
             'context' => $context,
             'asteriskUserDialOptions' => $userdetails['dialopts'],
         );
@@ -746,7 +750,7 @@ for $context"));
         }
 
         $validusers = &$this->getUsers($context);
-        if (!isset($validusers[$userdetails['uid']])) {
+        if (!isset($validusers[$extension])) {
             # Test to see if we're modifying an existing user that has
             # no telephone system objectClasses and update that object/user
             $rdn = $ldapKey.'='.$userdetails[$appKey].',';
@@ -779,7 +783,7 @@ for $context"));
                 );
                 $tmp['voiceMailbox'] = $extension;
                 $tmp['context'] = $context;
-                $res = @ldap_mod_add($this->_LDAP, $rdn.$branch, $tmp);
+                $res = @ldap_mod_replace($this->_LDAP, $rdn.$branch, $tmp);
                 if (!$res) {
                     return PEAR::raiseError("Unable to modify the user: " .
                         ldap_error($this->_LDAP));
@@ -811,7 +815,7 @@ for $context"));
                 if (is_a($limits, "PEAR_Error")) {
                     return $limits;
                 }
-                if (count($validusers) >= $limits['asteriskmaxusers']) {
+                if (count($validusers) >= $limits['asteriskusersmax']) {
                     return PEAR::raiseError('Maximum number of users reached.');
                 }
 
index eac1793..f25fe0a 100644 (file)
@@ -36,30 +36,31 @@ class Shout
         require_once 'Horde/Menu.php';
 
         $menu = &new Menu(HORDE_MENU_MASK_ALL);
+        $permprefix = "shout:contexts:$context";
 
-        if (isset($context) && $section == "users" &&
-            Shout::checkRights("shout:contexts:$context:users",
+        if (isset($context) && $section == "usermgr" &&
+            Shout::checkRights("$permprefix:users",
                 PERMS_EDIT, 1)) {
-            $url = Horde::applicationUrl("users.php");
+            $url = Horde::applicationUrl("index.php");
             $url = Util::addParameter($url, array('context' => $context,
                                                   'section' => $section,
                                                   'action' => 'add'));
 
             # Goofy hack to make the icon make a little more sense
             # when editing/deleting users
-            if (!isset($action)) {
+//             if (!isset($action)) {
                 $icontitle = "Add";
-            } else {
-                $icontitle = $action;
-                $icontitle[0] = strtoupper($action[0]);
-            }
+//             } else {
+//                 $icontitle = $action;
+//                 $icontitle[0] = strtoupper($action[0]);
+//             }
             # End goofy hack
 
             $menu->add($url, _("$icontitle User"), "add-user.gif");
         }
 
         if (isset($context) && isset($section) && $section == "dialplan" &&
-            Shout::checkRights("shout:contexts:$context:dialplan",
+            Shout::checkRights("$permprefix:dialplan",
                 PERMS_EDIT, 1)) {
             $url = Horde::applicationUrl("dialplan.php");
             $url = Util::addParameter($url, array('context' => $context,
@@ -157,6 +158,7 @@ class Shout
      */
     function checkRights($permname, $permmask = null, $numparents = 0)
     {
+        $perms = Perms::singleton();
         if ($permmask === null) {
             $permmask = PERMS_SHOW|PERMS_READ;
         }
@@ -165,10 +167,13 @@ class Shout
         $user = 0;
         $superadmin = 0;
 
-        $superadmin = Auth::isAdmin("shout:superadmin", $permmask);
+        $superadmin = $perms->hasPermission("shout:superadmin",
+            Auth::getAuth(), $permmask);
 
         while ($numparents >= 0) {
-            $tmpuser = Auth::isAdmin($permname, $permmask);
+            $tmpuser = $perms->hasPermission($permname,
+                Auth::getAuth(), $permmask);
+
             $user = $user | $tmpuser;
             if ($numparents > 0) {
                 $pos = strrpos($permname, ':');
@@ -180,7 +185,7 @@ class Shout
         }
 
         $test = $superadmin | $user;
-        return $test;
+        return ($test & $permmask) == $permmask;
     }
     // }}}
 
index 91c7f67..ad61cdb 100644 (file)
@@ -13,6 +13,8 @@
 // {{{
 class UserDetailsForm extends Horde_Form {
 
+    var $_userdetails = false; // Store the user's details for fillUserForm
+
     function UserDetailsForm(&$vars)
     {
         global $shout, $notification;
@@ -25,13 +27,14 @@ class UserDetailsForm extends Horde_Form {
         }
         if (array_key_exists($extension, $users)) {
             # We must be editing an existing user
-            $this->fillUserForm(&$vars, $users[$extension]);
+//             $this->fillUserForm(&$vars, $users[$extension]);
+            $this->_userdetails = $users[$extension];
             $limits = &$shout->getLimits($context, $extension);
             if (is_a($limits, 'PEAR_Error')) {
                 $notification->push($limits);
             }
             $formtitle = "Edit User";
-            $this->addHidden('', 'uid', 'text,' true);
+            $this->addHidden('', 'uid', 'text', true);
         } else {
             $limits = &$shout->getLimits($context);
             if (is_a($limits, 'PEAR_Error')) {
@@ -50,7 +53,7 @@ class UserDetailsForm extends Horde_Form {
         $this->addVariable(_("Pager E-Mail Address"), 'pageremail', 'email', false);
         # TODO: Integrate with To-Be-Written user manager and possibly make this
         # TODO: new user also an email account.
-        $this->addVariable(_("PIN"), 'pin', 'int', true);
+        $this->addVariable(_("PIN"), 'mailboxpin', 'int', true);
 
         # FIXME: Make this work if limits don't exist.
         $t = 1;
@@ -88,19 +91,28 @@ class UserDetailsForm extends Horde_Form {
      *
      * @return boolean True if successful, Pear::raiseError object on failure
      */
-    function fillUserForm(&$vars, $userdetails)
+    function fillUserForm(&$vars)
     {
     #Array ( [dialopts] => Array ( [0] => m [1] => t ) [mailboxopts] => Array (
     #) [mailboxpin] => 1234 [name] => Ricardo Paul [phonenumbers] => Array ( )
     #[dialtimeout] => 30 [email] => ricardo.paul@v-office.biz [pageremail] => )
-        $vars->set('name', $userdetails['name']);
-        $vars->set('email', $userdetails['email']);
-        $vars->set('pin', $userdetails['mailboxpin']);
-        $vars->set('uid', $userdetails['uid']);
+        if (!$this->_userdetails) {
+            return true;
+        }
+        foreach(array('name', 'email', 'pageremail', 'mailboxpin', 'uid')
+            as $var) {
+            # FIXME This will be done the Right Way in Shout 0.7
+            $vars->set($var, $this->_userdetails[$var]);
+        }
+//         $vars->set('name', $this->_userdetails['name']);
+//         $vars->set('email', $this->_userdetails['email']);
+//         $vars->set('pager', $this->_userdetails['pager']);
+//         $vars->set('mailboxpin', $this->_userdetails['mailboxpin']);
+//         $vars->set('uid', $this->_userdetails['uid']);
         $vars->set('newextension', $vars->get('extension'));
 
         $i = 1;
-        foreach($userdetails['phonenumbers'] as $number) {
+        foreach($this->_userdetails['phonenumbers'] as $number) {
             $vars->set("telephone$i", $number);
             $i++;
         }
@@ -111,7 +123,7 @@ class UserDetailsForm extends Horde_Form {
 //         $vars->set('callappearance', 'caller');
 
 
-        foreach ($userdetails['dialopts'] as $opt) {
+        foreach ($this->_userdetails['dialopts'] as $opt) {
             if ($opt == 'm') {
                 $vars->set('moh', true);
             }
index 7df8fe2..906cc74 100644 (file)
@@ -43,6 +43,18 @@ function _shout_perms()
     foreach ($contexts as $context => $contextInfo) {
         $perms['tree']['shout']['contexts'][$context] = false;
         $perms['title']['shout:contexts:' . $context] = $context;
+
+        foreach(
+            array(
+                'users' => 'Users',
+                'dialplan' => 'Dialplan',
+                'moh' => 'Music on Hold',
+                'conferences' => 'Conferencing',
+            )
+            as $module => $modname) {
+            $perms['tree']['shout']['contexts'][$context][$module] = false;
+            $perms['title']["shout:contexts:$context:$module"] = $modname;
+        }
     }
 
 
index f4029dd..6bb1729 100644 (file)
@@ -24,8 +24,10 @@ $title = _("User Manager: ");
 switch ($action) {
     case "add":
         $title .= _("Add User");
+
         # Treat adds just like an empty edit
-        unset($extension);
+        $action = "edit";
+        $extension = 0;
         break;
     case "edit":
         $title .= _("Edit User (Extension ") . "$extension)";
index 7f56f95..3c3fe1e 100644 (file)
@@ -33,15 +33,20 @@ if (is_a($Form, 'PEAR_Error')) {
     $FormValid = $Form->validate($vars, true);
     if (is_a($FormValid, 'PEAR_Error')) {
         $notification->push($FormValid);
+    } else {
+        $Form->fillUserForm(&$vars, $extension);
     }
 }
 
+
 $notification->notify();
 
 if (!$FormValid || !$Form->isSubmitted()) {
     # Display the form for editing
     $Form->open($RENDERER, $vars, 'index.php', 'post');
-    $Form->preserve($vars);
+    $Form->preserveVarByPost(&$vars, 'extension');
+    $Form->preserveVarByPost(&$vars, 'context');
+    $Form->preserveVarByPost(&$vars, 'section');
     $RENDERER->beginActive($Form->getTitle());
     $RENDERER->renderFormActive($Form, $vars);
     $RENDERER->submit();
index 4dbd7cc..c0d2efc 100644 (file)
@@ -17,4 +17,5 @@ if (!isset($SHOUT_RUNNING) || !$SHOUT_RUNNING) {
 
 $users = &$shout->getUsers($context);
 ksort($users);
+$notification->notify();
 require SHOUT_TEMPLATES . "/users/userlist.inc";
\ No newline at end of file
index d91101b..8a4768a 100644 (file)
@@ -38,7 +38,7 @@ if (!$FormValid || !$Form->isSubmitted()) {
     $userdetails = array(
         "newextension" => $vars->get('newextension'),
         "name" => $vars->get('name'),
-        "pin" => $vars->get('pin'),
+        "mailboxpin" => $vars->get('mailboxpin'),
         "email" => $vars->get('email'),
         "uid" => $vars->get('uid'),
     );
@@ -54,6 +54,7 @@ if (!$FormValid || !$Form->isSubmitted()) {
     }
 
     $userdetails['dialopts'] = array();
+
     if ($vars->get('moh')) {
         $userdetails['dialopts'][] = 'm';
     }
@@ -67,9 +68,10 @@ if (!$FormValid || !$Form->isSubmitted()) {
     if (is_a($res, 'PEAR_Error')) {
         $notification->push($res);
     } else {
-        $notification->push('User information updated.', 'horde.success');
+        $notification->push('User information updated.  '.
+            'Changes will take effect within 10 minutes',
+            'horde.success');
     }
-    $notification->notify();
 
-    require SHOUT_BASE . '/usermgr/edit.php';
+    $notification->notify();
 }