From d2ba64924092d7695b4e126e2e8248926ee8700b Mon Sep 17 00:00:00 2001
From: Michael Fürmann <michael@spicyweb.de>
Date: Tue, 17 Feb 2015 16:02:32 -0500
Subject: [PATCH] Added XMPP Users List and DB Table

---
 interface/web/mail/templates/xmpp_user_list.htm   |   74 ++++++++++++++
 install/sql/ispconfig3.sql                        |   29 +++++
 interface/web/mail/lib/module.conf.php            |    4 
 interface/web/mail/xmpp_user_list.php             |   39 +++++++
 interface/web/mail/lib/lang/en_xmpp_user_list.lng |    8 +
 interface/web/mail/list/xmpp_user.list.php        |   81 ++++++++++++++++
 install/sql/incremental/upd_0081.sql              |   28 +++++
 7 files changed, 259 insertions(+), 4 deletions(-)

diff --git a/install/sql/incremental/upd_0081.sql b/install/sql/incremental/upd_0081.sql
index f525e72..5acfc73 100644
--- a/install/sql/incremental/upd_0081.sql
+++ b/install/sql/incremental/upd_0081.sql
@@ -52,4 +52,30 @@
   PRIMARY KEY  (`domain_id`),
   KEY `server_id` (`server_id`,`domain`),
   KEY `domain_active` (`domain`,`active`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
\ No newline at end of file
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+--
+-- Table structure for table  `xmpp_user`
+--
+
+CREATE TABLE `xmpp_user` (
+  `xmppuser_id` int(11) unsigned NOT NULL auto_increment,
+  `sys_userid` int(11) unsigned NOT NULL default '0',
+  `sys_groupid` int(11) unsigned NOT NULL default '0',
+  `sys_perm_user` varchar(5) NOT NULL default '',
+  `sys_perm_group` varchar(5) NOT NULL default '',
+  `sys_perm_other` varchar(5) NOT NULL default '',
+  `server_id` int(11) unsigned NOT NULL default '0',
+  `xmpp_domain_id` int(11) unsigned NOT NULL default '0',
+  `login` varchar(255) NOT NULL default '',
+  `jid` varchar(255) NOT NULL default '',
+  `password` varchar(255) NOT NULL default '',
+  `is_domain_admin` enum('n','y') NOT NULL default 'n',
+  `is_muc_admin` enum('n','y') NOT NULL default 'n',
+  `active` enum('n','y') NOT NULL DEFAULT 'n',
+  PRIMARY KEY  (`xmppuser_id`),
+  KEY `server_id` (`server_id`,`jid`),
+  KEY `jid_active` (`jid`,`active`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 1f5b418..0b5ce40 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1964,7 +1964,7 @@
 -- --------------------------------------------------------
 
 --
--- Table structure for table  `xmpp_domain`
+-- Table structure for table `xmpp_domain`
 --
 
 CREATE TABLE `xmpp_domain` (
@@ -2008,6 +2008,33 @@
   KEY `domain_active` (`domain`,`active`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
+-- --------------------------------------------------------
+
+--
+-- Table structure for table  `xmpp_user`
+--
+
+CREATE TABLE `xmpp_user` (
+  `xmppuser_id` int(11) unsigned NOT NULL auto_increment,
+  `sys_userid` int(11) unsigned NOT NULL default '0',
+  `sys_groupid` int(11) unsigned NOT NULL default '0',
+  `sys_perm_user` varchar(5) NOT NULL default '',
+  `sys_perm_group` varchar(5) NOT NULL default '',
+  `sys_perm_other` varchar(5) NOT NULL default '',
+  `server_id` int(11) unsigned NOT NULL default '0',
+  `xmpp_domain_id` int(11) unsigned NOT NULL default '0',
+  `login` varchar(255) NOT NULL default '',
+  `jid` varchar(255) NOT NULL default '',
+  `password` varchar(255) NOT NULL default '',
+  `is_domain_admin` enum('n','y') NOT NULL default 'n',
+  `is_muc_admin` enum('n','y') NOT NULL default 'n',
+  `active` enum('n','y') NOT NULL DEFAULT 'n',
+  PRIMARY KEY  (`xmppuser_id`),
+  KEY `server_id` (`server_id`,`jid`),
+  KEY `jid_active` (`jid`,`active`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
 
 -- --------------------------------------------------------
 -- --------------------------------------------------------
diff --git a/interface/web/mail/lib/lang/en_xmpp_user_list.lng b/interface/web/mail/lib/lang/en_xmpp_user_list.lng
new file mode 100644
index 0000000..db88b0d
--- /dev/null
+++ b/interface/web/mail/lib/lang/en_xmpp_user_list.lng
@@ -0,0 +1,8 @@
+<?php
+$wb["list_head_txt"] = 'XMPP User Accounts';
+$wb["jid_txt"] = 'Jabber ID';
+$wb["is_domain_admin_txt"] = 'Domain admin';
+$wb["is_muc_admin_txt"] = 'MUC admin';
+$wb["add_new_record_txt"] = 'Add new user';
+$wb["active_txt"] = 'Active';
+?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php
index 7f828d1..24e45d0 100644
--- a/interface/web/mail/lib/module.conf.php
+++ b/interface/web/mail/lib/module.conf.php
@@ -163,8 +163,8 @@
 {
     $items[] = array( 'title'  => 'XMPP Account',
         'target'  => 'content',
-        'link' => 'mail/xmpp_account_list.php',
-        'html_id' => 'xmpp_account_list');
+        'link' => 'mail/xmpp_user_list.php',
+        'html_id' => 'xmpp_user_list');
 }
 
 if(count($items))
diff --git a/interface/web/mail/list/xmpp_user.list.php b/interface/web/mail/list/xmpp_user.list.php
new file mode 100644
index 0000000..f9a2415
--- /dev/null
+++ b/interface/web/mail/list/xmpp_user.list.php
@@ -0,0 +1,81 @@
+<?php
+
+/*
+	Datatypes:
+	- INTEGER
+	- DOUBLE
+	- CURRENCY
+	- VARCHAR
+	- TEXT
+	- DATE
+*/
+
+
+
+// Name of the list
+$liste["name"]    = "xmpp_user";
+
+// Database table
+$liste["table"]   = "xmpp_user";
+
+// Index index field of the database table
+$liste["table_idx"]  = "xmppuser_id";
+
+// Search Field Prefix
+$liste["search_prefix"]  = "search_";
+
+// Records per page
+$liste["records_per_page"]  = "15";
+
+// Script File of the list
+$liste["file"]   = "xmpp_user_list.php";
+
+// Script file of the edit form
+$liste["edit_file"]  = "xmpp_user_edit.php";
+
+// Script File of the delete script
+$liste["delete_file"]  = "xmpp_user_del.php";
+
+// Paging Template
+$liste["paging_tpl"]  = "templates/paging.tpl.htm";
+
+// Enable auth
+$liste["auth"]   = "yes";
+
+
+/*****************************************************
+* Suchfelder
+*****************************************************/
+
+$liste["item"][] = array(   'field'     => "JID",
+	'datatype'  => "VARCHAR",
+	'filters'   => array( 0 => array( 'event' => 'SHOW',
+			'type' => 'IDNTOUTF8')
+	),
+	'formtype'  => "TEXT",
+	'op'        => "like",
+	'prefix'    => "%",
+	'suffix'    => "%",
+	'width'     => "",
+	'value'     => "");
+
+$liste["item"][] = array( 'field'  => "is_domain_admin",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('n' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'y' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+$liste["item"][] = array( 'field'  => "is_muc_admin",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('n' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'y' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+
+?>
diff --git a/interface/web/mail/templates/xmpp_user_list.htm b/interface/web/mail/templates/xmpp_user_list.htm
new file mode 100644
index 0000000..68668b4
--- /dev/null
+++ b/interface/web/mail/templates/xmpp_user_list.htm
@@ -0,0 +1,74 @@
+<div class='page-header'>
+	<h1><tmpl_var name="list_head_txt"></h1>
+</div>
+<p><tmpl_var name="list_desc_txt"></p>
+
+
+        <tmpl_if name='datalog_changes_count' op='>' value='0'>
+        <div>
+            <div class="systemmonitor-state state-info">
+                <div class="status"></div>
+                <div class="statusMsg">
+                    {tmpl_var name="datalog_changes_txt"}
+                    <ul>
+                    <tmpl_loop name="datalog_changes">
+                        <li><strong>{tmpl_var name="text"}:</strong> {tmpl_var name="count"}</li>
+                    </tmpl_loop>
+                    </ul>
+                    {tmpl_var name="datalog_changes_end_txt"}
+                </div>
+            </div><br />
+        </div>
+        </tmpl_if>
+        <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p>
+            
+                <button class="btn btn-default formbutton-success" type="button" data-load-content="mail/xmpp_user_edit.php">{tmpl_var name="add_new_record_txt"}</button>
+            
+        
+
+    
+        <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
+            <div class="table-wrapper marginTop15">
+<table class="table">
+                <thead class="dark form-group-sm">
+                    <tr>
+                        <th data-column="jid"><tmpl_var name="jid_txt"></th>
+                        <th class="small-col" data-column="is_domain_admin"><tmpl_var name="is_domain_admin_txt"></th>
+                        <th class="small-col" data-column="is_muc_admin"><tmpl_var name="is_muc_admin_txt"></th>
+                        <th class="small-col text-right">{tmpl_var name='search_limit'}</th>
+                    </tr>
+                    <tr>
+                        <td><input class="form-control" type="text" name="search_jid" value="{tmpl_var name='search_jid'}" /></td>
+                        <td><select class="form-control" name="search_is_domain_admin">{tmpl_var name='search_is_domain_admin'}</select></td>
+                        <td><select class="form-control" name="search_is_muc_admin">{tmpl_var name='search_is_muc_admin'}</select></td>
+                        <td class="text-right">
+                            <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="mail/xmpp_user_list.php"><span class="icon icon-filter"></span></button>
+                        </td>
+                    </tr>
+                </thead>
+                <tbody>
+                <tmpl_loop name="records">
+                    <tr>
+                        <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="jid"}</a></td>
+                        <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_domain_admin"}</a></td>
+                        <td><a href="#" data-load-content="mail/xmpp_user_edit.php?id={tmpl_var name='id'}">{tmpl_var name="is_muc_admin"}</a></td>
+                        <td class="text-right">
+                            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('mail/xmpp_user_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></button>
+                        </td>
+                    </tr>
+                </tmpl_loop>
+                <tmpl_unless name="records">
+                    <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                        <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                    </tr>
+                </tmpl_unless>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td colspan="4"><tmpl_var name="paging"></td>
+                    </tr>
+                </tfoot>
+            </table>
+</div>
+        
+    
\ No newline at end of file
diff --git a/interface/web/mail/xmpp_user_list.php b/interface/web/mail/xmpp_user_list.php
new file mode 100644
index 0000000..ea44e4d
--- /dev/null
+++ b/interface/web/mail/xmpp_user_list.php
@@ -0,0 +1,39 @@
+<?php
+require_once '../../lib/config.inc.php';
+require_once '../../lib/app.inc.php';
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/xmpp_user.list.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+$app->load('listform_actions');
+
+
+class list_action extends listform_actions {
+
+	function onShow() {
+		global $app, $conf;
+
+		$app->uses('getconf');
+		$global_config = $app->getconf->get_global_config('xmpp');
+
+		parent::onShow();
+	}
+
+}
+
+$list = new list_action;
+$list->SQLOrderBy = 'ORDER BY xmpp_user.jid';
+$list->onLoad();
+
+
+?>

--
Gitblit v1.9.1