</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="1134254292" url="config/conf.xml" />
- <uploadeditem upload_time="1134254292" url="dialplan.php" />
+ <uploadeditem upload_time="1138313705" url="config/conf.xml" />
+ <uploadeditem upload_time="1138316043" url="config/defines.php.dist" />
+ <uploadeditem upload_time="1138315048" url="dialplan.php" />
<uploadeditem upload_time="0" url="dialplan/" />
- <uploadeditem upload_time="1134254291" url="dialplan/edit.php" />
- <uploadeditem upload_time="1134254292" url="index.php" />
+ <uploadeditem upload_time="1134075506" url="dialplan/edit.php" />
+ <uploadeditem upload_time="1138315961" url="index.php" />
<uploadeditem upload_time="0" url="lib/" />
- <uploadeditem upload_time="1134254292" url="lib/Dialplan.php" />
- <uploadeditem upload_time="1134254292" url="lib/Driver.php" />
+ <uploadeditem upload_time="1134075506" url="lib/Dialplan.php" />
+ <uploadeditem upload_time="1138316130" url="lib/Driver.php" />
<uploadeditem upload_time="0" url="lib/Driver/" />
- <uploadeditem upload_time="1134254292" url="lib/Driver/ldap.php" />
- <uploadeditem upload_time="1134254292" url="lib/Shout.php" />
- <uploadeditem upload_time="1134254292" url="lib/System.php" />
- <uploadeditem upload_time="1134326322" url="lib/User.php" />
- <uploadeditem upload_time="1134254292" url="lib/api.php" />
- <uploadeditem upload_time="1134254292" url="lib/base.php" />
- <uploadeditem upload_time="1134254292" url="lib/defines.php" />
+ <uploadeditem upload_time="1138318043" url="lib/Driver/ldap.php" />
+ <uploadeditem upload_time="1138316386" url="lib/Shout.php" />
+ <uploadeditem upload_time="1134075507" url="lib/System.php" />
+ <uploadeditem upload_time="1134350019" url="lib/User.php" />
+ <uploadeditem upload_time="1138317614" url="lib/api.php" />
+ <uploadeditem upload_time="1134367769" url="lib/base.php" />
+ <uploadeditem upload_time="1134075507" url="lib/defines.php" />
+ <uploadeditem upload_time="1137381911" 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="1134254292" url="main/system.php" />
+ <uploadeditem upload_time="1134075507" url="main/system.php" />
<uploadeditem upload_time="1134254291" url="main/users.php" />
- <uploadeditem upload_time="1134254292" url="security.php" />
+ <uploadeditem upload_time="1138315048" url="moh.php" />
+ <uploadeditem upload_time="1138315048" url="security.php" />
<uploadeditem upload_time="0" url="templates/" />
- <uploadeditem upload_time="1134254292" url="templates/common-header.inc" />
- <uploadeditem upload_time="1134254292" url="templates/content_page" />
+ <uploadeditem upload_time="1138311990" url="templates/common-header.inc" />
+ <uploadeditem upload_time="1134075418" url="templates/content_page" />
<uploadeditem upload_time="0" url="templates/context/" />
- <uploadeditem upload_time="1134254292" url="templates/context/contextline.inc" />
+ <uploadeditem upload_time="1134075418" url="templates/context/contextline.inc" />
<uploadeditem upload_time="0" url="templates/dialplan/" />
<uploadeditem upload_time="1131723538" url="templates/dialplan/contexttree.inc" />
- <uploadeditem upload_time="1134254292" url="templates/dialplan/dialplanlist.inc" />
+ <uploadeditem upload_time="1134075418" url="templates/dialplan/dialplanlist.inc" />
<uploadeditem upload_time="1131767776" url="templates/dialplan/extensiondetail.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="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="0" url="templates/javascript/" />
- <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="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="0" url="templates/users/" />
- <uploadeditem upload_time="1134254292" url="templates/users/userlist.inc" />
+ <uploadeditem upload_time="1138316597" url="templates/users/userlist.inc" />
<uploadeditem upload_time="0" url="themes/" />
<uploadeditem upload_time="0" url="themes/graphics/" />
- <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="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="1138318295" url="usermgr.php" />
+ <uploadeditem upload_time="0" url="usermgr/" />
+ <uploadeditem upload_time="1138317269" url="usermgr/delete.php" />
+ <uploadeditem upload_time="1138317269" url="usermgr/edit.php" />
+ <uploadeditem upload_time="1138317269" url="usermgr/list.php" />
+ <uploadeditem upload_time="1138317269" url="usermgr/save.php" />
<uploadeditem upload_time="1134254292" url="users.php" />
<uploadeditem upload_time="0" url="users/" />
- <uploadeditem upload_time="1134254291" url="users/add.php" />
- <uploadeditem upload_time="1134254291" url="users/delete.php" />
- <uploadeditem upload_time="1134324213" url="users/edit.php" />
- <uploadeditem upload_time="1134254291" url="users/save.php" />
+ <uploadeditem upload_time="1138311486" url="users/add.php" />
+ <uploadeditem upload_time="1138311477" url="users/delete.php" />
+ <uploadeditem upload_time="1138311467" url="users/edit.php" />
+ <uploadeditem upload_time="1138314968" url="users/list.php" />
+ <uploadeditem upload_time="1138311454" url="users/save.php" />
</profile>
</uploadprofiles>
<treestatus>
+ <openfolder url="config" />
<openfolder url="lib" />
<openfolder url="lib/Driver" />
<openfolder url="main" />
<openfolder url="templates/javascript" />
<openfolder url="templates/users" />
<openfolder url="themes" />
+ <openfolder url="usermgr" />
<openfolder url="users" />
</treestatus>
</session>
<upload/>
<defaultDTD>-//w3c//dtd xhtml 1.0 strict//en</defaultDTD>
<item url="config/" uploadstatus="1" />
- <item modified_time="1134254292" url="config/conf.xml" uploadstatus="1" />
+ <item modified_time="1138313705" url="config/conf.xml" uploadstatus="1" />
<item url="dialplan/" uploadstatus="1" />
- <item modified_time="1134254291" url="dialplan/edit.php" uploadstatus="1" />
+ <item modified_time="1134075506" url="dialplan/edit.php" uploadstatus="1" />
<item url="lib/" uploadstatus="1" />
<item url="lib/Driver/" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/Driver/ldap.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/base.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/Dialplan.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/Driver.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/Shout.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/System.php" uploadstatus="1" />
- <item modified_time="1134326322" url="lib/User.php" uploadstatus="1" />
+ <item modified_time="1138318043" url="lib/Driver/ldap.php" uploadstatus="1" />
+ <item modified_time="1134367769" url="lib/base.php" uploadstatus="1" />
+ <item modified_time="1134075506" url="lib/Dialplan.php" uploadstatus="1" />
+ <item modified_time="1138316130" url="lib/Driver.php" uploadstatus="1" />
+ <item modified_time="1138316386" url="lib/Shout.php" uploadstatus="1" />
+ <item modified_time="1134075507" url="lib/System.php" uploadstatus="1" />
+ <item modified_time="1134350019" url="lib/User.php" uploadstatus="1" />
<item url="main/" uploadstatus="1" />
- <item modified_time="1134254292" url="main/dialplan.php" uploadstatus="1" />
- <item modified_time="1134254291" url="main/moh.php" uploadstatus="1" />
- <item modified_time="1134254292" url="main/system.php" uploadstatus="1" />
- <item modified_time="1134254291" url="main/users.php" uploadstatus="1" />
+ <item modified_time="1134075507" url="main/system.php" uploadstatus="1" />
<item url="templates/" uploadstatus="1" />
<item url="templates/context/" uploadstatus="1" />
- <item modified_time="1134254292" url="templates/context/contextline.inc" uploadstatus="1" />
+ <item modified_time="1134075418" url="templates/context/contextline.inc" uploadstatus="1" />
<item url="templates/dialplan/" 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 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 url="templates/users/" uploadstatus="1" />
- <item modified_time="1134254292" url="templates/users/userlist.inc" uploadstatus="1" />
- <item modified_time="1134254292" 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 modified_time="1138316597" 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 url="themes/" uploadstatus="1" />
<item url="themes/graphics/" 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 url="users/" uploadstatus="1" />
- <item modified_time="1134254291" url="users/add.php" uploadstatus="1" />
- <item modified_time="1134254291" url="users/delete.php" uploadstatus="1" />
- <item modified_time="1134324213" url="users/edit.php" uploadstatus="1" />
- <item modified_time="1134254291" url="users/save.php" uploadstatus="1" />
- <item modified_time="1134254292" url="dialplan.php" uploadstatus="1" />
- <item modified_time="1134254292" url="index.php" uploadstatus="1" />
- <item modified_time="1134254292" url="users.php" 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="1138315048" url="dialplan.php" uploadstatus="1" />
+ <item modified_time="1138315961" 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="1134254292" url="lib/api.php" uploadstatus="1" />
- <item modified_time="1134254292" url="lib/defines.php" uploadstatus="1" />
- <item modified_time="1134254292" url="security.php" uploadstatus="1" />
+ <item modified_time="1138317614" url="lib/api.php" uploadstatus="1" />
+ <item modified_time="1134075507" url="lib/defines.php" uploadstatus="1" />
+ <item modified_time="1138315048" url="security.php" uploadstatus="1" />
<item url="templates/javascript/" uploadstatus="1" />
- <item modified_time="1134254292" url="templates/javascript/dialplan.js" uploadstatus="1" />
- <item modified_time="1134254292" url="templates/dialplan/manager.inc" uploadstatus="1" />
+ <item modified_time="1134075507" url="templates/javascript/dialplan.js" uploadstatus="1" />
+ <item modified_time="1134075418" url="templates/dialplan/manager.inc" uploadstatus="1" />
<treestatus>
<openfolder url="lib" />
<openfolder url="lib/Driver" />
<mailinglist address="" />
</teamdata>
<events/>
- <item url="lib/version.php" />
+ <item modified_time="1137381911" url="lib/version.php" uploadstatus="1" />
+ <item modified_time="1138315048" url="moh.php" uploadstatus="1" />
+ <item modified_time="1138318295" url="usermgr.php" uploadstatus="1" />
+ <item modified_time="1138316043" url="config/defines.php.dist" />
+ <item url="usermgr/" />
+ <item modified_time="1138317269" url="usermgr/edit.php" />
+ <item modified_time="1138317269" url="usermgr/list.php" />
+ <item modified_time="1138317269" url="usermgr/save.php" />
+ <item modified_time="1138317269" url="usermgr/delete.php" />
</project>
</webproject>
<!-- $Id$ -->
<configuration>
<!-- <configtab name="storage" desc="Storage Backend"> -->
- <configsection name="auth">
+ <configsection name="storage">
<configheader>Shout Storage</configheader>
- <configlist name="admins" desc="Which users should be treated as
- super-administrators (root, super-user) by Shout?"/>
+ <!-- <configlist name="admins" desc="Which users should be treated as
+ super-administrators (root, super-user) by Shout?"/> -->
<configswitch name="driver" desc="What backend should we use for
- authenticating users to Horde?">
-
+ authenticating users to Horde?">ldap
<case name="ldap" desc="LDAP authentication">
<configsection name="params">
<configstring name="hostspec" desc="The hostname of the LDAP
--- /dev/null
+<?php
+/**
+ * Shout external API interface.
+ *
+ * $Id$
+ *
+ * This file defines Shout's constants. Any file needing to use the
+ * driver or external API should require_once() this file.
+ *
+ * @package Shout
+ */
+# Branches
+@define('SHOUT_ASTERISK_BRANCH', "ou=Asterisk");
+@define('SHOUT_USERS_BRANCH', "ou=People");
+
+# Object Classes - Users
+@define('SHOUT_USER_OBJECTCLASS', "asteriskUser");
+
+# Object Classes - Contexts
+@define('SHOUT_CONTEXT_CUSTOMERS_OBJECTCLASS', 'vofficeCustomer');
+@define('SHOUT_CONTEXT_EXTENSIONS_OBJECTCLASS', 'asteriskExtensions');
+@define('SHOUT_CONTEXT_MOH_OBJECTCLASS', 'asteriskMusiconHold');
+@define('SHOUT_CONTEXT_CONFERENCE_OBJECTCLASS', 'asteriskMeetMe');
+@define('SHOUT_CONTEXT_VOICEMAIL_OBJECTCLASS', 'asteriskVoicemail');
+
+# Attributes - Dialplans
+@define('SHOUT_DIALPLAN_EXTENSIONLINE_ATTRIBUTE', 'asteriskExtensionLine');
+@define('SHOUT_DIALPLAN_INCLUDE_ATTRIBUTE', 'asteriskIncludeLine');
+@define('SHOUT_DIALPLAN_IGNOREPAT_ATTRIBUTE', 'asteriskIgnorePat');
+@define('SHOUT_DIALPLAN_BARELINE_ATTRIBUTE', 'asteriskExtensionBareLine');
+
+# Attributes - Accounts
+@define('SHOUT_ACCOUNT_ID_ATTRIBUTE', 'vofficeCustomerNumber');
+
+# Perms Fields
+@define('SHOUT_CONTEXT_ALL', 0xFFF);
+@define('SHOUT_CONTEXT_NONE', 0);
+@define('SHOUT_CONTEXT_CUSTOMERS', 1 << 0);
+@define('SHOUT_CONTEXT_EXTENSIONS', 1 << 1);
+@define('SHOUT_CONTEXT_MOH', 1 << 2);
+@define('SHOUT_CONTEXT_CONFERENCE', 1 << 3);
+@define('SHOUT_CONTEXT_VOICEMAIL', 1 << 4);
\ No newline at end of file
/**
* $Id$
*
- * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ * Copyright 2005-2006 Ben Klang <ben@alkaloid.net>
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @package shout
*/
-@define('SHOUT_BASE', dirname(__FILE__));
-# FIXME Need a cleaner script prologue... probably all we need to do is check
-# for some kind of sane startup vars and otherwise redirect to '/'
-# This standard prologue should be consistent across every file that ends in .php
-$shout_configured = (@is_readable(SHOUT_BASE . '/config/conf.php'));# &&
- #@is_readable(SHOUT_BASE . '/config/prefs.php'));
-if (!$shout_configured) {
- require SHOUT_BASE . '/../lib/Test.php';
- Horde_Test::configFilesMissing('Shout', SHOUT_BASE,
- array('conf.php', 'prefs.php'));
+if (!isset($SHOUT_RUNNING) || !$SHOUT_RUNNING) {
+ header('Location: /');
+ exit();
}
-require_once SHOUT_BASE . '/lib/base.php';
-require_once SHOUT_BASE . '/lib/Shout.php';
+require_once SHOUT_BASE . '/lib/Dialplan.php';
+$dialplan = &$shout->getDialplan($context);
-$context = Util::getFormData("context");
-$section = "dialplan";
-$action = Util::getFormData("action");
-if ($button = Util::getFormData("submitbutton")) {
- $action = $button;
-}
-$extension = Util::getFormData("extension");
+// Set up the tree.
+$dpgui = Shout_Dialplan::singleton('x', $dialplan);
-$contexts = &$shout->getContexts();
-$vars = &Variables::getDefaultVariables();
+$action = Util::getFormData("action");
-if (!isset($context)) {#FIXME || !Shout::checkContext()) {
- $url = Horde::applicationUrl("index.php");
- header("Location: $url");
- exit(0);
+switch($action) {
+case "do":
+ echo "stuff\n";
+ break;
}
-switch ($action) {
- case "add":
- $title = _("Add Extension");
- # Treat adds just like an empty edit
- 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;
- case "delete":
- $title = _("Delete Extension") . "$extension";
- break;
- default:
- $url = Horde::applicationUrl('/');
- header("Location: $url");
- exit();
-}
+$title = _("Dialplan Manager");
require SHOUT_TEMPLATES . '/common-header.inc';
require SHOUT_TEMPLATES . '/menu.inc';
-echo "<br />";
+$notification->notify();
-$tabs = &Shout::getTabs($context, $vars);
-$tabs->preserve('context', $context);
echo $tabs->render($section);
require SHOUT_BASE . "/dialplan/$action.php";
+require SHOUT_TEMPLATES . '/dialplan/manager.inc';
+
+// Horde::addScriptFile('httpclient.js', 'horde', true);
+// Horde::addScriptFile('hideable.js', 'horde', true);
+// require HORDE_TEMPLATES . '/common-header.inc';
+// require HORDE_TEMPLATES . '/portal/sidebar.inc';
+
+
+// require SHOUT_TEMPLATES . "/dialplan/dialplanlist.inc";
+
+
+
+
+
+
+
+
+
+
require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file
/**
* $Id$
*
- * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ * Copyright 2005-2006 Ben Klang <ben@alkaloid.net>
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @package shout
*/
@define('SHOUT_BASE', dirname(__FILE__));
-$shout_configured = (@is_readable(SHOUT_BASE . '/config/conf.php'));# &&
+$shout_configured = (@is_readable(SHOUT_BASE . '/config/conf.php') &&
+ @is_readable(SHOUT_BASE . '/config/defines.php'));# &&
#@is_readable(SHOUT_BASE . '/config/prefs.php'));
if (!$shout_configured) {
require SHOUT_BASE . '/../lib/Test.php';
Horde_Test::configFilesMissing('Shout', SHOUT_BASE,
- array('conf.php', 'prefs.php'));
+ array('conf.php', 'defines.php'));
+ #, 'prefs.php'));
}
require_once SHOUT_BASE . '/lib/base.php';
require_once SHOUT_BASE . '/lib/Shout.php';
+// Variable handling libraries
+require_once 'Horde/Variables.php';
+require_once 'Horde/Text/Filter.php';
+
$context = Util::getFormData("context");
$section = Util::getFormData("section");
$contexts = &$shout->getContexts();
-$vars = &Variables::getDefaultVariables();
-#$ticket->setDetails($vars);
-
-if (count($contexts) == 1) {
+# Check that we are properly initialized
+if (is_a($contexts, 'PEAR_Error')) {
+ $notification->push($contexts, 'horde.error');
+ $contexts = false;
+} elseif (count($contexts) == 1) {
+ # Default to the user's only context
$context = $contexts[0];
} elseif (!$context) {
+ # Attempt to locate the user's "home" context
$context = $shout->getHomeContext();
}
+$vars = &Variables::getDefaultVariables();
$tabs = &Shout::getTabs($context, $vars);
$tabs->preserve('context', $context);
-if (!$section) {
- $section = $tabs->_tabs[0]['tabname'];
-}
-
-#require_once SHOUT_TEMPLATES . '/comment.inc';
-#require_once 'Horde/Variables.php';
-#require_once 'Horde/Text/Filter.php';
-
-
-#$title = '[#' . $ticket->getId() . '] ' . $ticket->get('summary');
-require SHOUT_TEMPLATES . '/common-header.inc';
-require SHOUT_TEMPLATES . '/menu.inc';
-
-// if (!$section) {
-// $section =
-print '<div style="width:95%;left:10px;position:relative">';
-echo $tabs->render($section);
switch ($section) {
case "conference":
- $title = _('Conferences');
- break;
case "dialplan":
- $title = _('Dial Plan');
- break;
case "security":
- $title = _('Security/Access Control');
- break;
- case "system":
- $title = _('System Settings');
- break;
- case "users":
- $title = _('Users');
- break;
+ case "usermgr":
case "moh":
- $title = _('Music on Hold');
break;
-
default:
- require SHOUT_TEMPLATES . '/common-footer.inc';
- require $registry->get('templates', 'horde') . '/common-footer.inc';
- exit();
+ $section = $tabs->_tabs[0]['tabname'];
break;
}
+# We've passed the initialization tests. This flag allows other pages to run.
+$SHOUT_RUNNING = true;
+
+require SHOUT_BASE . "/$section.php";
+
+#print '<div style="width:95%;left:10px;position:relative">';
-require "main/$section.php";
-print '</div>';
-require SHOUT_TEMPLATES . '/common-footer.inc';
+#print '</div>';
require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file
* @since Shout 0.1
* @package Shout
*/
-require_once SHOUT_BASE . "/lib/defines.php";
// {{{ Shout_Driver class
class Shout_Driver {
return $entries[$context];
}
- $registry = &Registry::singleton();
- require_once $registry->applicationFilePath('%application%/lib/defines.php', 'congregation');
- $users = $registry->callByPackage('congregation', 'getUsersByContext',
- array($context, CONGREGATION_USER_PHONE));
+ $basedn = SHOUT_USERS_BRANCH.','.$this->_params['basedn'];
+
+ $filter = '(&';
+ $filter .= '(objectClass='.SHOUT_USER_OBJECTCLASS.')';
+ $filter .= '(context='.$context.')';
+ $filter .= ')';
+
+ $attributes = array(
+ 'voiceMailbox',
+ 'asteriskUserDialOptions',
+ 'asteriskVoiceMailboxOptions',
+ 'voiceMailboxPin',
+ 'cn',
+ 'telephoneNumber',
+ 'asteriskUserDialTimeout',
+ 'mail',
+ 'asteriskPager',
+ );
+
+ $search = @ldap_search($this->_LDAP, $basedn, $filter, $attributes);
- foreach ($users as $user) {
- $extension = $user['extension'];
- $entries[$context][$extension] = $user;
+ if (!$search) {
+ return PEAR::raiseError("Unable to search directory: " .
+ ldap_error($this->_LDAP));
}
+
+ $res = ldap_get_entries($this->_LDAP, $search);
+
+ #
+ # ATTRIBUTES RETURNED FROM ldap_get_entries ARE ALL LOWER CASE!!
+ #
+ $entries[$context] = array();
+ $i = 0;
+ while ($i < $res['count']) {
+ $extension = $res[$i]['voicemailbox'][0];
+ $entries[$context][$extension] = array();
+
+ $j = 0;
+ $entries[$context][$extension]['dialopts'] = array();
+ while ($j < @$res[$i]['asteriskuserdialoptions']['count']) {
+ $entries[$context][$extension]['dialopts'][] =
+ $res[$i]['asteriskuserdialoptions'][$j];
+ $j++;
+ }
+
+ $j = 0;
+ $entries[$context][$extension]['mailboxopts'] = array();
+ while ($j < @$res[$i]['asteriskvoicemailboxoptions']['count']) {
+ $entries[$context][$extension]['mailboxopts'][] =
+ $res[$i]['asteriskvoicemailboxoptions'][$j];
+ $j++;
+ }
+
+ $entries[$context][$extension]['mailboxpin'] =
+ $res[$i]['voicemailboxpin'][0];
+
+ @$entries[$context][$extension]['name'] =
+ $res[$i]['cn'][0];
+
+ $j = 0;
+ $entries[$context][$extension]['phonenumbers'] = array();
+ while ($j < @$res[$i]['telephonenumber']['count']) {
+ $entries[$context][$extension]['phonenumbers'][] =
+ $res[$i]['telephonenumber'][$j];
+ $j++;
+ }
+
+ # FIXME Do some sanity checking here. Also set a default?
+ @$entries[$context][$extension]['dialtimeout'] =
+ $res[$i]['asteriskuserdialtimeout'][0];
+
+ @$entries[$context][$extension]['email'] =
+ $res[$i]['mail'][0];
+
+ @$entries[$context][$extension]['pageremail'] =
+ $res[$i]['asteriskpager'][0];
+
+ $i++;
+
+ }
+
ksort($entries[$context]);
return($entries[$context]);
# FIXME Probably should key this off the domain part of the user's
# FIXME Auth::getAuth() and match context with associatedDomain
# FIXME Also, cache this lookup
- $res = @ldap_search($this->_LDAP,
- SHOUT_USERS_BRANCH.','.$this->_params['basedn'],
- "(&(mail=".Auth::getAuth().")(objectClass=asteriskUser))",
- array('context'));
+
+ $basedn = SHOUT_USERS_BRANCH.','.$this->_params['basedn'];
+ $filter = '(&';
+ $filter .= '(mail='.Auth::getAuth().')';
+ $filter .= '(objectClass='.SHOUT_USER_OBJECTCLASS.')';
+ $filter .= ')';
+ $attributes = array('context');
+
+ $res = @ldap_search($this->_LDAP, $basedn, $filter, $attributes);
if (!$res) {
return PEAR::raiseError("Unable to locate any customers " .
"underneath ".SHOUT_ASTERISK_BRANCH.",".$this->_params['basedn'] .
" matching those search filters");
+ # FIXME Better error string above
}
$res = ldap_get_entries($this->_LDAP, $res);
# Assume the user only has one context. The schema enforces this
# FIXME: Handle cases where the managing user isn't a valid telephone
# system user
+ # FIXME: Handle cases where no attribute is found?
return $res[0]['context'][0];
}
// }}}
* @since Shout 0.1
* @package Shout
*/
-require_once SHOUT_BASE . "/lib/defines.php";
+require_once SHOUT_BASE . "/config/defines.php";
// {{{ Class Shout
class Shout
if (Shout::checkRights("$permprefix:users", null, 1) &&
$shout->checkContextType($context, "users")) {
- $tabs->addTab(_("Users"),
+ $tabs->addTab(_("User Manager"),
Horde::applicationUrl("index.php?context=$context"),
- 'users');
+ 'usermgr');
}
if (Shout::checkRights("$permprefix:dialplan", null, 1) &&
Horde::applicationUrl('index.php'), 'moh');
}
- if (Auth::isAdmin("shout:system", PERMS_SHOW|PERMS_READ)) {
- $tabs->addTab(_("System Settings"),
- Horde::applicationUrl('index.php'), 'system');
- }
-
if (Auth::isAdmin("shout:superadmin", PERMS_SHOW|PERMS_READ)) {
$tabs->addTab(_("Security"),
Horde::applicationUrl('index.php'), 'security');
$vars->set('eca', false);
}
- if (in_array('__CALLPRESENT:${VOFFICENUM}', $userdetails['dialopts'])) {
+ if (in_array('e(${VOFFICENUM})', $userdetails['dialopts'])) {
$vars->set('eca', true);
$vars->set('callappearance', 'v-office');
- } elseif (in_array('__CALLPRESENT:${CALLER}', $userdetails['dialopts'])) {
+ } elseif (in_array('e(${CALLER})', $userdetails['dialopts'])) {
$vars->set('eca', true);
$vars->set('callappearance', 'caller');
- } elseif (in_array('__CALLPRESENT:${SELF}', $userdetails['dialopts'])) {
+ } elseif (in_array('e(${SELF})', $userdetails['dialopts'])) {
$vars->set('eca', true);
$vars->set('callappearance', 'self');
}
* @package Shout
*/
@define('SHOUT_BASE', dirname(__FILE__) . "/..");
-require_once SHOUT_BASE . "/lib/defines.php";
$_services['perms'] = array(
'args' => array(),
+++ /dev/null
-<?php
-/**
- * Shout external API interface.
- *
- * $Id$
- *
- * This file defines Shout's constants. Any file needing to use the
- * driver or external API should require_once() this file.
- *
- * @package Shout
- */
-# Branches
-@define('SHOUT_ASTERISK_BRANCH', "ou=Asterisk");
-@define('SHOUT_USERS_BRANCH', "ou=People");
-
-# Object Classes - Users
-@define('SHOUT_USER_OBJECTCLASS', "asteriskUser");
-
-# Object Classes - Contexts
-@define('SHOUT_CONTEXT_CUSTOMERS_OBJECTCLASS', 'vofficeCustomer');
-@define('SHOUT_CONTEXT_EXTENSIONS_OBJECTCLASS', 'asteriskExtensions');
-@define('SHOUT_CONTEXT_MOH_OBJECTCLASS', 'asteriskMusiconHold');
-@define('SHOUT_CONTEXT_CONFERENCE_OBJECTCLASS', 'asteriskMeetMe');
-@define('SHOUT_CONTEXT_VOICEMAIL_OBJECTCLASS', 'asteriskVoicemail');
-
-# Attributes - Dialplans
-@define('SHOUT_DIALPLAN_EXTENSIONLINE_ATTRIBUTE', 'asteriskExtensionLine');
-@define('SHOUT_DIALPLAN_INCLUDE_ATTRIBUTE', 'asteriskIncludeLine');
-@define('SHOUT_DIALPLAN_IGNOREPAT_ATTRIBUTE', 'asteriskIgnorePat');
-@define('SHOUT_DIALPLAN_BARELINE_ATTRIBUTE', 'asteriskExtensionBareLine');
-
-# Attributes - Accounts
-@define('SHOUT_ACCOUNT_ID_ATTRIBUTE', 'vofficeCustomerNumber');
-
-# Perms Fields
-@define('SHOUT_CONTEXT_ALL', 0xFFF);
-@define('SHOUT_CONTEXT_NONE', 0);
-@define('SHOUT_CONTEXT_CUSTOMERS', 1 << 0);
-@define('SHOUT_CONTEXT_EXTENSIONS', 1 << 1);
-@define('SHOUT_CONTEXT_MOH', 1 << 2);
-@define('SHOUT_CONTEXT_CONFERENCE', 1 << 3);
-@define('SHOUT_CONTEXT_VOICEMAIL', 1 << 4);
\ No newline at end of file
+++ /dev/null
-<?php
-/**
- * $Shout: shout/main/dialplan.php,v 1.0.0.1 2005/11/03 00:05:08 ben Exp $
- *
- * Copyright 2005 Ben Klang <ben@alkaloid.net>
- *
- * See the enclosed file COPYING for license information (GPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
- */
-
-if (!defined(SHOUT_BASE)) {
- define(SHOUT_BASE, dirname(__FILE__));
-}
-
-require_once SHOUT_BASE . '/lib/Dialplan.php';
-
-$dialplan = &$shout->getDialplan($context);
-
-// Set up the tree.
-$dpgui = Shout_Dialplan::singleton('x', $dialplan);
-require SHOUT_TEMPLATES . '/dialplan/manager.inc';
-
-// Horde::addScriptFile('httpclient.js', 'horde', true);
-// Horde::addScriptFile('hideable.js', 'horde', true);
-// require HORDE_TEMPLATES . '/common-header.inc';
-// require HORDE_TEMPLATES . '/portal/sidebar.inc';
-
-
-// require SHOUT_TEMPLATES . "/dialplan/dialplanlist.inc";
\ No newline at end of file
+++ /dev/null
-<?php
-if (!defined(SHOUT_BASE)) {
- define(SHOUT_BASE, dirname(__FILE__));
-}
-
-# Check that we are properly initialized
-if (is_a($contexts, 'PEAR_Error')) {
- # FIXME change this to a Horde::fatal
- $notification->push(_("Internal error viewing requested page"),
- 'horde.error');
- $notification->notify();
- require $registry->get('templates', 'horde') . '/common-footer.inc';
- exit();
-}
-
+++ /dev/null
-<?php
-if (!defined(SHOUT_BASE)) {
- define(SHOUT_BASE, dirname(__FILE__));
-}
-$users = &$shout->getUsers($context);
-ksort($users);
-require SHOUT_TEMPLATES . "/users/userlist.inc";
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * $Id$
+ *
+ * Copyright 2005-2006 Ben Klang <ben@alkaloid.net>
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @package shout
+ */
+if (!isset($SHOUT_RUNNING) || !$SHOUT_RUNNING) {
+ header('Location: /');
+ exit();
+}
+
+$title = _('Music on Hold');
+
+require SHOUT_TEMPLATES . '/common-header.inc';
+require SHOUT_TEMPLATES . '/menu.inc';
+
+$notification->notify();
+
+$tabs->render($section);
+
+require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file
/**
* $Id$
*
- * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ * Copyright 2005-2006 Ben Klang <ben@alkaloid.net>
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @package shout
*/
-@define('SHOUT_BASE', dirname(__FILE__));
-$shout_configured = (@is_readable(SHOUT_BASE . '/config/conf.php'));# &&
- #@is_readable(SHOUT_BASE . '/config/prefs.php'));
-if (!$shout_configured) {
- require SHOUT_BASE . '/../lib/Test.php';
- Horde_Test::configFilesMissing('Shout', SHOUT_BASE,
- array('conf.php', 'prefs.php'));
+if (!isset($SHOUT_RUNNING) || !$SHOUT_RUNNING) {
+ header('Location: /');
+ exit();
}
-require_once SHOUT_BASE . '/lib/base.php';
-require_once SHOUT_BASE . '/lib/Shout.php';
+$title = _('Security');
+
+require SHOUT_TEMPLATES . '/common-header.inc';
+require SHOUT_TEMPLATES . '/menu.inc';
+
+$notification->notify();
+
+$tabs->render($section);
+
+Shout::getApplist();
-Shout::getApplist();
\ No newline at end of file
+require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
-<!-- Shout: Copyright 2005, Ben Klang. -->
+<!-- Shout: Copyright 2005-2006, Ben Klang. -->
<!-- Horde Project: http://horde.org/ | Shout: http://projects.alkaloid.net/ -->
<!-- Horde Licenses: http://www.horde.org/licenses/ -->
<?php echo !empty($language) ? '<html lang="' . strtr($language, '_', '-') .
foreach ($users as $extension => $user) {
$rowcolor = $line % 2;
$line++;
- $url = Horde::applicationUrl("users.php");
- $url = Util::addParameter($url, array('context' => $context,
- 'extension' => $extension));
+ $url = Horde::applicationUrl("index.php");
+ $url = Util::addParameter($url,
+ array(
+ 'context' => $context,
+ 'extension' => $extension,
+ 'section' => 'users',
+ )
+ );
$editurl = Util::addParameter($url, "action=edit");
$deleteurl = Util::addParameter($url, "action=delete");
?>
/**
* $Id$
*
- * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ * Copyright 2005-2006 Ben Klang <ben@alkaloid.net>
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*/
-@define('SHOUT_BASE', dirname(__FILE__));
-require_once SHOUT_BASE . '/lib/base.php';
-require_once SHOUT_BASE . '/lib/Shout.php';
+if (!isset($SHOUT_RUNNING) || !$SHOUT_RUNNING) {
+ header('Location: /');
+ exit();
+}
// Form libraries.
require_once 'Horde/Form.php';
require_once 'Horde/Form/Renderer.php';
-// Variable handling libraries
-require_once 'Horde/Variables.php';
-require_once 'Horde/Text/Filter.php';
-
-
-$context = Util::getFormData("context");
-$section = "users";
$action = Util::getFormData("action");
$extension = Util::getFormData("extension");
-$contexts = &$shout->getContexts();
-$vars = &Variables::getDefaultVariables();
-
-if (!isset($context)) {#FIXME || !Shout::checkContext()) {
- $url = Horde::applicationUrl("index.php");
- header("Location: $url");
- exit(0);
-}
-
-
+$title = _("User Manager: ");
switch ($action) {
case "add":
- $title = _("Add User");
+ $title .= _("Add User");
# Treat adds just like an empty edit
unset($extension);
break;
case "edit":
- $title = _("Edit User (Extension") . "$extension)";
+ $title .= _("Edit User (Extension") . "$extension)";
break;
case "save":
- $title = _("Save User (Extension") . "$extension)";
+ $title .= _("Save User (Extension") . "$extension)";
break;
case "delete":
- $title = _("Delete User (Extension") . "$extension)";
+ $title .= _("Delete User (Extension") . "$extension)";
break;
+ case "list":
default:
- $url = Horde::applicationUrl('/');
- header("Location: $url");
- exit();
+ $title .= _("List Users");
+ $action = "list";
+ break;
}
+
+
require SHOUT_TEMPLATES . '/common-header.inc';
require SHOUT_TEMPLATES . '/menu.inc';
$notification->notify();
-$tabs = &Shout::getTabs($context, $vars);
-$tabs->preserve('context', $context);
echo $tabs->render($section);
-require SHOUT_BASE . "/users/$action.php";
+require SHOUT_BASE . "/usermgr/$action.php";
require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file