Skip to content

Commit 36c8a26

Browse files
committed
Clients limit update
1 parent fbe2d6b commit 36c8a26

File tree

9 files changed

+231
-198
lines changed

9 files changed

+231
-198
lines changed

interface/lib/classes/validate_client.inc.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ function check_used_servers($field_name, $field_value, $validator)
122122
case 'mail_servers':
123123
$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM mail_domain INNER JOIN sys_user ON mail_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
124124
break;
125+
126+
case 'xmpp_servers':
127+
$used_servers = $app->db->queryAllRecords('SELECT domain_id FROM xmpp_domain INNER JOIN sys_user ON xmpp_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
128+
break;
125129
}
126130

127131
if ($used_servers === null || count($used_servers))

interface/web/client/form/client.tform.php

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -782,9 +782,8 @@
782782
'class'=> 'custom_datasource',
783783
'function'=> 'client_servers'
784784
),
785-
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
786-
'errmsg'=> 'no_xmpp_server_error'),
787-
1 => array ( 'type' => 'CUSTOM',
785+
'validators' => array (
786+
0 => array ( 'type' => 'CUSTOM',
788787
'class' => 'validate_client',
789788
'function' => 'check_used_servers',
790789
'errmsg'=> 'xmpp_servers_used'),
@@ -832,17 +831,6 @@
832831
'default' => 'n',
833832
'value' => array(0 => 'n', 1 => 'y')
834833
),
835-
'limit_xmpp_auth_options' => array(
836-
'datatype' => 'VARCHAR',
837-
'formtype' => 'CHECKBOXARRAY',
838-
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
839-
'errmsg'=> 'xmpp_auth_options_notempty'),
840-
),
841-
'default' => '',
842-
'separator' => ',',
843-
'valuelimit' => 'client:xmpp_auth_options',
844-
'value' => array('plain' => 'Plain', 'hashed' => 'Hashed', 'isp' => 'By Mail Account')
845-
),
846834
'limit_xmpp_vjud' => array(
847835
'datatype' => 'VARCHAR',
848836
'formtype' => 'CHECKBOX',

interface/web/client/lib/lang/en_client.lng

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,8 @@ $wb['no_xmpp_server_error'] = 'At least one XMPP Server must be selected.';
178178
$wb['xmpp_servers_used'] = 'The server you are trying to remove from this client is used as a XMPP Server. Be sure that this server is not used by this client before you remove it.';
179179
$wb['limit_xmpp_domain_error_notint'] = 'The XMPP domain limit must be a number.';
180180
$wb['limit_xmpp_user_error_notint'] = 'The XMPP user limit must be a number.';
181-
$wb['xmpp_auth_options_notempty'] = 'At least one XMPP auth method must be selected.';
182181
$wb['limit_xmpp_domain_txt'] = 'Max. number of XMPP domains';
183182
$wb['limit_xmpp_user_txt'] = 'Max. number of XMPP accounts';
184-
$wb['xmpp_auth_options_txt'] = 'Available Auth options';
185183
$wb['limit_xmpp_muc_txt'] = 'Multiuser chat available';
186184
$wb['limit_xmpp_pastebin_txt'] = 'Pastebin for MUC available';
187185
$wb['limit_xmpp_httparchive_txt'] = 'HTTP archive for MUC available';

interface/web/mail/form/xmpp_domain.tform.php

Lines changed: 134 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,20 @@
5555
$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
5656
$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
5757

58+
$muc_available = $muc_pastebin_available = $muc_httparchive_available = $anon_available = $vjud_available = $proxy_available = $status_available = true;
59+
if(!$app->auth->is_admin()) {
60+
$client_group_id = $_SESSION["s"]["user"]["default_group"];
61+
$client = $app->db->queryOneRecord("SELECT limit_xmpp_muc, limit_xmpp_anon, limit_xmpp_vjud, limit_xmpp_proxy, limit_xmpp_status, limit_xmpp_pastebin, limit_xmpp_httparchive FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
62+
63+
if($client['limit_xmpp_muc'] != 'y') $muc_available = false;
64+
if($client['limit_xmpp_pastebin'] != 'y' || $client['limit_xmpp_muc'] != 'y') $muc_pastebin_available = false;
65+
if($client['limit_xmpp_httparchive'] != 'y' || $client['limit_xmpp_muc'] != 'y') $muc_httparchive_available = false;
66+
if($client['limit_xmpp_anon'] != 'y') $anon_available = false;
67+
if($client['limit_xmpp_vjud'] != 'y') $vjud_available = false;
68+
if($client['limit_xmpp_proxy'] != 'y') $proxy_available= false;
69+
if($client['limit_xmpp_status'] != 'y') $status_available = false;
70+
}
71+
5872
$form["tabs"]['domain'] = array (
5973
'title' => "Domain",
6074
'width' => 100,
@@ -149,7 +163,6 @@
149163
)
150164
);
151165

152-
153166
$form["tabs"]['features'] = array (
154167
'title' => "Modules",
155168
'width' => 100,
@@ -158,127 +171,139 @@
158171
//#################################
159172
// Begin Datatable fields
160173
//#################################
161-
'use_anon_host' => array (
162-
'datatype' => 'VARCHAR',
163-
'formtype' => 'CHECKBOX',
164-
'default' => 'y',
165-
'value' => array(0 => 'n', 1 => 'y')
166-
),
167174
'use_pubsub' => array (
168175
'datatype' => 'VARCHAR',
169176
'formtype' => 'CHECKBOX',
170177
'default' => 'y',
171178
'value' => array(0 => 'n', 1 => 'y')
172-
),
173-
'use_vjud' => array (
174-
'datatype' => 'VARCHAR',
175-
'formtype' => 'CHECKBOX',
176-
'default' => 'y',
177-
'value' => array(0 => 'n', 1 => 'y')
178-
),
179-
'vjud_opt_mode' => array (
180-
'datatype' => 'VARCHAR',
181-
'formtype' => 'SELECT',
182-
'default' => '0',
183-
'value' => array(0 => 'Opt-In', 1 => 'Opt-Out')
184-
),
185-
'use_proxy' => array (
186-
'datatype' => 'VARCHAR',
187-
'formtype' => 'CHECKBOX',
188-
'default' => 'y',
189-
'value' => array(0 => 'n', 1 => 'y')
190-
),
191-
'use_status_host' => array (
192-
'datatype' => 'VARCHAR',
193-
'formtype' => 'CHECKBOX',
194-
'default' => 'y',
195-
'value' => array(0 => 'n', 1 => 'y')
196-
),
179+
)
197180
//#################################
198181
// ENDE Datatable fields
199182
//#################################
200183
)
201184
);
185+
if($anon_available)
186+
$form['tabs']['features']['fields']['use_anon_host'] = array (
187+
'datatype' => 'VARCHAR',
188+
'formtype' => 'CHECKBOX',
189+
'default' => 'y',
190+
'value' => array(0 => 'n', 1 => 'y')
191+
);
192+
if($vjud_available){
193+
$form['tabs']['features']['fields']['use_vjud'] = array (
194+
'datatype' => 'VARCHAR',
195+
'formtype' => 'CHECKBOX',
196+
'default' => 'y',
197+
'value' => array(0 => 'n', 1 => 'y')
198+
);
199+
$form['tabs']['features']['fields']['vjud_opt_mode'] = array (
200+
'datatype' => 'VARCHAR',
201+
'formtype' => 'SELECT',
202+
'default' => '0',
203+
'value' => array(0 => 'Opt-In', 1 => 'Opt-Out')
204+
);
205+
}
202206

203-
$form["tabs"]['muc'] = array (
204-
'title' => "MUC",
205-
'width' => 100,
206-
'template' => "templates/xmpp_domain_edit_muc.htm",
207-
'fields' => array (
208-
//#################################
209-
// Begin Datatable fields
210-
//#################################
211-
'use_muc_host' => array (
212-
'datatype' => 'VARCHAR',
213-
'formtype' => 'CHECKBOX',
214-
'default' => 'y',
215-
'value' => array(0 => 'n', 1 => 'y')
216-
),
217-
'muc_name' => array(
218-
'datatype' => 'VARCHAR',
219-
'formtype' => 'TEXT',
220-
'default' => ''
221-
),
222-
'muc_restrict_room_creation' => array (
223-
'datatype' => 'VARCHAR',
224-
'formtype' => 'SELECT',
225-
'default' => '1',
226-
'value' => array(0 => 'Everyone', 1 => 'Members', 2 => 'Admins')
227-
),
228-
'muc_admins' => array(
229-
'datatype' => 'VARCHAR',
230-
'formtype' => 'TEXT',
231-
'default' => 'admin@service.com, superuser@service.com',
232-
'value' => '',
233-
'width' => '15',
234-
'maxlength' => '3'
235-
),
236-
'use_pastebin' => array (
237-
'datatype' => 'VARCHAR',
238-
'formtype' => 'CHECKBOX',
239-
'default' => 'y',
240-
'value' => array(0 => 'n', 1 => 'y')
241-
),
242-
'pastebin_expire_after' => array(
243-
'datatype' => 'VARCHAR',
244-
'formtype' => 'TEXT',
245-
'default' => '48',
246-
'validators' => array(0 => array('type' => 'ISINT'),
247-
array('type'=>'RANGE', 'range'=>'1:168')
207+
if($proxy_available)
208+
$form['tabs']['features']['fields']['use_proxy'] = array (
209+
'datatype' => 'VARCHAR',
210+
'formtype' => 'CHECKBOX',
211+
'default' => 'y',
212+
'value' => array(0 => 'n', 1 => 'y')
213+
);
214+
if($status_available)
215+
$form['tabs']['features']['fields']['use_status_host'] = array (
216+
'datatype' => 'VARCHAR',
217+
'formtype' => 'CHECKBOX',
218+
'default' => 'y',
219+
'value' => array(0 => 'n', 1 => 'y')
220+
);
221+
222+
223+
if($muc_available)
224+
$form["tabs"]['muc'] = array (
225+
'title' => "MUC",
226+
'width' => 100,
227+
'template' => "templates/xmpp_domain_edit_muc.htm",
228+
'fields' => array (
229+
//#################################
230+
// Begin Datatable fields
231+
//#################################
232+
'use_muc_host' => array (
233+
'datatype' => 'VARCHAR',
234+
'formtype' => 'CHECKBOX',
235+
'default' => 'y',
236+
'value' => array(0 => 'n', 1 => 'y')
248237
),
249-
'value' => '',
250-
'width' => '15'
251-
),
252-
'pastebin_trigger' => array(
253-
'datatype' => 'VARCHAR',
254-
'formtype' => 'TEXT',
255-
'default' => '!paste',
256-
'value' => '',
257-
'width' => '15'
258-
),
259-
'use_http_archive' => array (
260-
'datatype' => 'VARCHAR',
261-
'formtype' => 'CHECKBOX',
262-
'default' => 'y',
263-
'value' => array(0 => 'n', 1 => 'y')
264-
),
265-
'http_archive_show_join' => array (
266-
'datatype' => 'VARCHAR',
267-
'formtype' => 'CHECKBOX',
268-
'default' => 'y',
269-
'value' => array(0 => 'n', 1 => 'y')
270-
),
271-
'http_archive_show_status' => array (
272-
'datatype' => 'VARCHAR',
273-
'formtype' => 'CHECKBOX',
274-
'default' => 'y',
275-
'value' => array(0 => 'n', 1 => 'y')
238+
'muc_name' => array(
239+
'datatype' => 'VARCHAR',
240+
'formtype' => 'TEXT',
241+
'default' => ''
242+
),
243+
'muc_restrict_room_creation' => array (
244+
'datatype' => 'VARCHAR',
245+
'formtype' => 'SELECT',
246+
'default' => '1',
247+
'value' => array(0 => 'Everyone', 1 => 'Members', 2 => 'Admins')
248+
),
249+
'muc_admins' => array(
250+
'datatype' => 'VARCHAR',
251+
'formtype' => 'TEXT',
252+
'default' => 'admin@service.com, superuser@service.com',
253+
'value' => '',
254+
'width' => '15',
255+
'maxlength' => '3'
256+
),
257+
//#################################
258+
// ENDE Datatable fields
259+
//#################################
260+
)
261+
);
262+
if($muc_available && $muc_pastebin_available){
263+
$form['tabs']['muc']['fields']['use_pastebin'] = array (
264+
'datatype' => 'VARCHAR',
265+
'formtype' => 'CHECKBOX',
266+
'default' => 'y',
267+
'value' => array(0 => 'n', 1 => 'y')
268+
);
269+
$form['tabs']['muc']['fields']['pastebin_expire_after'] = array(
270+
'datatype' => 'VARCHAR',
271+
'formtype' => 'TEXT',
272+
'default' => '48',
273+
'validators' => array(0 => array('type' => 'ISINT'),
274+
array('type'=>'RANGE', 'range'=>'1:168')
276275
),
277-
//#################################
278-
// ENDE Datatable fields
279-
//#################################
280-
)
281-
);
276+
'value' => '',
277+
'width' => '15'
278+
);
279+
$form['tabs']['muc']['fields']['pastebin_trigger'] = array(
280+
'datatype' => 'VARCHAR',
281+
'formtype' => 'TEXT',
282+
'default' => '!paste',
283+
'value' => '',
284+
'width' => '15'
285+
);
286+
}
287+
if($muc_available && $muc_httparchive_available){
288+
$form['tabs']['muc']['fields']['use_http_archive'] = array (
289+
'datatype' => 'VARCHAR',
290+
'formtype' => 'CHECKBOX',
291+
'default' => 'y',
292+
'value' => array(0 => 'n', 1 => 'y')
293+
);
294+
$form['tabs']['muc']['fields']['http_archive_show_join'] = array (
295+
'datatype' => 'VARCHAR',
296+
'formtype' => 'CHECKBOX',
297+
'default' => 'y',
298+
'value' => array(0 => 'n', 1 => 'y')
299+
);
300+
$form['tabs']['muc']['fields']['http_archive_show_status'] = array (
301+
'datatype' => 'VARCHAR',
302+
'formtype' => 'CHECKBOX',
303+
'default' => 'y',
304+
'value' => array(0 => 'n', 1 => 'y')
305+
);
306+
}
282307

283308
$form["tabs"]['ssl'] = array (
284309
'title' => "SSL",

interface/web/mail/lib/lang/en_xmpp_domain.lng

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,5 @@ $wb['save_certificate_txt'] = 'Save certificate';
5858
$wb['create_certificate_txt'] = 'Create certificate';
5959
$wb['delete_certificate_txt'] = 'Delete certificate';
6060
$wb['ssl_error_isemail'] = 'Please enter a valid email adress for generation of the SSL certificate';
61+
$wb["limit_xmppdomain_txt"] = 'The max. number of XMPP domains for your account is reached.';
6162
?>

interface/web/mail/lib/module.conf.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,15 @@
151151
//**** XMPP Menu
152152
$items = array();
153153

154-
if($app->auth->get_client_limit($userid, 'xmppdomain') != 0)
154+
if($app->auth->get_client_limit($userid, 'xmpp_domain') != 0)
155155
{
156156
$items[] = array( 'title' => 'XMPP Domain',
157157
'target' => 'content',
158158
'link' => 'mail/xmpp_domain_list.php',
159159
'html_id' => 'xmpp_domain_list');
160160
}
161161

162-
if($app->auth->get_client_limit($userid, 'xmppaccount') != 0)
162+
if($app->auth->get_client_limit($userid, 'xmpp_user') != 0)
163163
{
164164
$items[] = array( 'title' => 'XMPP Account',
165165
'target' => 'content',

0 commit comments

Comments
 (0)