Skip to content

Commit b8d71e5

Browse files
author
Florian Schaal
committed
new class to check client-servers - Fixes: #4093
1 parent 68c4830 commit b8d71e5

File tree

2 files changed

+62
-3
lines changed

2 files changed

+62
-3
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
/*
4+
Copyright (c) 2016, Florian Schaal, schaal @it
5+
All rights reserved.
6+
7+
Redistribution and use in source and binary forms, with or without modification,
8+
are permitted provided that the following conditions are met:
9+
10+
* Redistributions of source code must retain the above copyright notice,
11+
this list of conditions and the following disclaimer.
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
* Neither the name of ISPConfig nor the names of its contributors
16+
may be used to endorse or promote products derived from this software without
17+
specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22+
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23+
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26+
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
31+
class system {
32+
33+
var $client_service = null;
34+
35+
public function has_service($userid, $service) {
36+
global $app;
37+
38+
if(!preg_match('/^[a-z]+$/', $service)) $app->error('Invalid service '.$service);
39+
40+
if($userid == 1) return true; //* We do not check admin-users
41+
42+
// simple query cache
43+
if($this->client_service===null)
44+
$this->client_service = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = ? AND sys_user.client_id = client.client_id", $userid);
45+
46+
// isn't service
47+
if(!$this->client_service) return false;
48+
49+
if($this->client_service['default_'.$service.'server'] > 0 || $this->client_service[$service.'_servers'] != '') {
50+
return true;
51+
} else {
52+
return false;
53+
}
54+
}
55+
} //* End Class
56+
57+
?>
58+
59+

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
'html_id' => 'mail_transport_list');
7070
}
7171

72-
if(count($items))
72+
if(count($items) && $app->system->has_service($userid, 'mail'))
7373
{
7474
$module['nav'][] = array( 'title' => 'Email Accounts',
7575
'open' => 1,
@@ -87,7 +87,7 @@
8787
'html_id' => 'mail_mailinglist_list');
8888
}
8989

90-
if(count($items))
90+
if(count($items) && $app->system->has_service($userid, 'mail'))
9191
{
9292
$module['nav'][] = array( 'title' => 'Mailing List',
9393
'open' => 1,
@@ -168,7 +168,7 @@
168168
'html_id' => 'xmpp_user_list');
169169
}
170170

171-
if(count($items))
171+
if(count($items) && $app->system->has_service($userid, 'xmpp'))
172172
$module['nav'][] = array( 'title' => 'Jabber / XMPP',
173173
'open' => 1,
174174
'items' => $items);

0 commit comments

Comments
 (0)