tbrehm
2010-09-03 acdd2013a7c660340fabb5fb55be1e78103388c6
FS#1262 - client menu depending on limits
3 files modified
360 ■■■■■ changed files
interface/lib/classes/auth.inc.php 30 ●●●●● patch | view | raw | blame | history
interface/web/mail/lib/module.conf.php 143 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/module.conf.php 187 ●●●● patch | view | raw | blame | history
interface/lib/classes/auth.inc.php
@@ -29,6 +29,12 @@
*/
class auth {
    var $client_limits = null;
    public function get_user_id()
    {
        return $_SESSION['s']['user']['userid'];
    }
    
    public function is_admin() {
        if($_SESSION['s']['user']['typ'] == 'admin') {
@@ -36,7 +42,7 @@
        } else {
            return false;
        }
    }
    }
    
    public function has_clients($userid) {
        global $app, $conf;
@@ -69,6 +75,25 @@
            return false;
        }
    }
    //** This function returns given client limit as integer, -1 means no limit
    public function get_client_limit($userid, $limitname)
    {
        global $app;
        // simple query cache
        if($this->client_limits===null)
            $this->client_limits = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
        // isn't client -> no limit
        if(!$this->client_limits)
            return -1;
        if(isset($this->client_limits['limit_'.$limitname]))
            return $this->client_limits['limit_'.$limitname];
        else
            trigger_error('Wrong limit identifier');
    }
    
    //** This function removes a given group id from a given user.
    public function remove_group_from_user($userid,$groupid) {
@@ -99,8 +124,7 @@
            exit;
        }
    }
}
?>
interface/web/mail/lib/module.conf.php
@@ -1,5 +1,7 @@
<?php
$userid=$app->auth->get_user_id();
$module['name']         = 'mail';
$module['title']         = 'top_menu_email';
$module['template']     = 'module.tpl.htm';
@@ -10,60 +12,86 @@
//**** Email accounts menu
$items = array();
$items[] = array( 'title'     => 'Domain',
                  'target'     => 'content',
                  'link'    => 'mail/mail_domain_list.php',
                  'html_id' => 'mail_domain_list');
if($app->auth->get_client_limit($userid,'maildomain') != 0)
{
    $items[] = array( 'title'     => 'Domain',
                      'target'     => 'content',
                      'link'    => 'mail/mail_domain_list.php',
                      'html_id' => 'mail_domain_list');
}
if($app->auth->get_client_limit($userid,'mailaliasdomain') != 0)
{
    $items[] = array( 'title'     => 'Domain Alias',
                      'target'     => 'content',
                      'link'    => 'mail/mail_aliasdomain_list.php',
                      'html_id' => 'mail_aliasdomain_list');
}
$items[] = array( 'title'     => 'Domain Alias',
                  'target'     => 'content',
                  'link'    => 'mail/mail_aliasdomain_list.php',
                  'html_id' => 'mail_aliasdomain_list');
if($app->auth->get_client_limit($userid,'mailbox') != 0)
{
    $items[] = array( 'title'     => 'Email Mailbox',
                      'target'     => 'content',
                      'link'    => 'mail/mail_user_list.php',
                      'html_id' => 'mail_user_list');
}
$items[] = array( 'title'     => 'Email Mailbox',
                  'target'     => 'content',
                  'link'    => 'mail/mail_user_list.php',
                  'html_id' => 'mail_user_list');
if($app->auth->get_client_limit($userid,'mailalias') != 0)
{
    $items[] = array( 'title'     => 'Email Alias',
                      'target'     => 'content',
                      'link'    => 'mail/mail_alias_list.php',
                      'html_id' => 'mail_alias_list');
}
$items[] = array( 'title'     => 'Email Alias',
                  'target'     => 'content',
                  'link'    => 'mail/mail_alias_list.php',
                  'html_id' => 'mail_alias_list');
if($app->auth->get_client_limit($userid,'mailforward') != 0)
{
    $items[] = array( 'title'     => 'Email Forward',
                      'target'     => 'content',
                      'link'    => 'mail/mail_forward_list.php',
                      'html_id' => 'mail_forward_list');
}
$items[] = array( 'title'     => 'Email Forward',
                  'target'     => 'content',
                  'link'    => 'mail/mail_forward_list.php',
                  'html_id' => 'mail_forward_list');
if($app->auth->get_client_limit($userid,'mailcatchall') != 0)
{
    $items[] = array( 'title'     => 'Email Catchall',
                      'target'     => 'content',
                      'link'    => 'mail/mail_domain_catchall_list.php',
                      'html_id' => 'mail_domain_catchall_list');
}
$items[] = array( 'title'     => 'Email Catchall',
                  'target'     => 'content',
                  'link'    => 'mail/mail_domain_catchall_list.php',
                  'html_id' => 'mail_domain_catchall_list');
if($app->auth->get_client_limit($userid,'mailrouting') != 0)
{
    $items[] = array( 'title'     => 'Email Routing',
                      'target'     => 'content',
                      'link'    => 'mail/mail_transport_list.php',
                      'html_id' => 'mail_transport_list');
}
$items[] = array( 'title'     => 'Email Routing',
                  'target'     => 'content',
                  'link'    => 'mail/mail_transport_list.php',
                  'html_id' => 'mail_transport_list');
$module['nav'][] = array(    'title'    => 'Email Accounts',
                            'open'     => 1,
                            'items'    => $items);
if(count($items))
{
    $module['nav'][] = array(    'title'    => 'Email Accounts',
                                'open'     => 1,
                                'items'    => $items);
}
//**** Spamfilter menu
$items = array();
$items[] = array( 'title'     => 'Whitelist',
                  'target'     => 'content',
                  'link'    => 'mail/spamfilter_whitelist_list.php',
                  'html_id' => 'spamfilter_whitelist_list');
if($app->auth->get_client_limit($userid,'spamfilter_wblist') != 0)
{
    $items[] = array( 'title'     => 'Whitelist',
                      'target'     => 'content',
                      'link'    => 'mail/spamfilter_whitelist_list.php',
                      'html_id' => 'spamfilter_whitelist_list');
    $items[] = array( 'title'     => 'Blacklist',
                      'target'     => 'content',
                      'link'    => 'mail/spamfilter_blacklist_list.php',
                      'html_id' => 'spamfilter_blacklist_list');
}
$items[] = array( 'title'     => 'Blacklist',
                  'target'     => 'content',
                  'link'    => 'mail/spamfilter_blacklist_list.php',
                  'html_id' => 'spamfilter_blacklist_list');
if($_SESSION['s']['user']['typ'] == 'admin') {
if($app->auth->is_admin()) {
    $items[] = array(     'title'     => 'User / Domain',
                          'target'     => 'content',
@@ -79,23 +107,30 @@
//                          'target'     => 'content',
//                          'link'        => 'mail/spamfilter_config_list.php');
}
$module['nav'][] = array(    'title'    => 'Spamfilter',
                            'open'     => 1,
                            'items'    => $items);
if(count($items))
{
    $module['nav'][] = array(    'title'    => 'Spamfilter',
                                'open'     => 1,
                                'items'    => $items);
}
//**** Fetchmail menu
$items = array();
$items[] = array( 'title'     => 'Fetchmail',
                  'target'     => 'content',
                  'link'    => 'mail/mail_get_list.php',
                  'html_id' => 'mail_get_list');
if($app->auth->get_client_limit($userid,'fetchmail') != 0)
{
    $items[] = array( 'title'     => 'Fetchmail',
                      'target'     => 'content',
                      'link'    => 'mail/mail_get_list.php',
                      'html_id' => 'mail_get_list');
    $module['nav'][] = array(    'title'    => 'Fetchmail',
                                'open'     => 1,
                                'items'    => $items);
}
$module['nav'][] = array(    'title'    => 'Fetchmail',
                            'open'     => 1,
                            'items'    => $items);
//**** Statistics menu
$items = array();
interface/web/sites/lib/module.conf.php
@@ -1,5 +1,7 @@
<?php
$userid=$app->auth->get_user_id();
$module["name"]         = "sites";
$module["title"]         = "top_menu_sites";
$module["template"]     = "module.tpl.htm";
@@ -9,112 +11,127 @@
/*
    Websites menu
*/
$items=array();
$items[] = array( 'title'     => "Website",
        'target'     => 'content',
        'link'    => 'sites/web_domain_list.php',
        'html_id' => 'domain_list');
if($app->auth->get_client_limit($userid,'web_domain') != 0)
{
    $items[] = array( 'title'     => "Website",
            'target'     => 'content',
            'link'    => 'sites/web_domain_list.php',
            'html_id' => 'domain_list');
}
if($app->auth->get_client_limit($userid,'web_subdomain') != 0)
{
    $items[] = array( 'title'     => "Subdomain",
            'target'     => 'content',
            'link'    => 'sites/web_subdomain_list.php',
            'html_id' => 'subdomain_list');
}
$items[] = array( 'title'     => "Subdomain",
        'target'     => 'content',
        'link'    => 'sites/web_subdomain_list.php',
        'html_id' => 'subdomain_list');
if($app->auth->get_client_limit($userid,'web_aliasdomain') != 0)
{
    $items[] = array( 'title'   => "Aliasdomain",
            'target'  => 'content',
            'link'    => 'sites/web_aliasdomain_list.php',
            'html_id' => 'aliasdomain_list');
}
if(count($items))
{
    $module["nav"][] = array(    'title'    => 'Websites',
                                'open'     => 1,
                                'items'    => $items);
}
$items[] = array( 'title'   => "Aliasdomain",
        'target'  => 'content',
        'link'    => 'sites/web_aliasdomain_list.php',
        'html_id' => 'aliasdomain_list');
$module["nav"][] = array(    'title'    => 'Websites',
        'open'     => 1,
        'items'    => $items);
// clean up
unset($items);
/*
    FTP User menu
*/
$items[] = array( 'title'     => "FTP-User",
        'target'     => 'content',
        'link'    => 'sites/ftp_user_list.php',
        'html_id' => 'ftp_user_list');
$module["nav"][] = array(    'title'    => 'FTP',
        'open'     => 1,
        'items'    => $items);
// clean up
unset($items);
if($app->auth->get_client_limit($userid,'ftp_user') != 0)
{
    $items=array();
    $items[] = array( 'title'     => "FTP-User",
                      'target'     => 'content',
                      'link'    => 'sites/ftp_user_list.php',
                      'html_id' => 'ftp_user_list');
    $module["nav"][] = array(    'title'    => 'FTP',
                                'open'     => 1,
                                'items'    => $items);
}
/*
    Shell User menu
    FTP User menu
*/
$items[] = array( 'title'     => "Shell-User",
        'target'     => 'content',
        'link'    => 'sites/shell_user_list.php',
        'html_id' => 'shell_user_list');
$module["nav"][] = array(    'title'    => 'Shell',
        'open'     => 1,
        'items'    => $items);
// clean up
unset($items);
/*
 *    Webdav User menu
 */
$items[] = array( 'title'     => "Webdav-User",
        'target'     => 'content',
        'link'    => 'sites/webdav_user_list.php',
        'html_id' => 'webdav_user_list');
$module["nav"][] = array(    'title'    => 'Webdav',
        'open'     => 1,
        'items'    => $items);
// clean up
unset($items);
if($app->auth->get_client_limit($userid,'shell_user') != 0)
{
    $items=array();
    $items[] = array( 'title'     => "Shell-User",
                      'target'     => 'content',
                      'link'    => 'sites/shell_user_list.php',
                      'html_id' => 'shell_user_list');
    $module["nav"][] = array(    'title'    => 'Shell',
                                'open'     => 1,
                                'items'    => $items);
}
/*
    Databases menu
*/
if($app->auth->get_client_limit($userid,'database') != 0)
{
    $items=array();
    $items[] = array( 'title'     => "Database",
                      'target'     => 'content',
                      'link'    => 'sites/database_list.php',
                      'html_id' => 'database_list'
                      );
    $module["nav"][] = array(    'title'    => 'Database',
                                'open'     => 1,
                                'items'    => $items);
}
$items[] = array( 'title'     => "Database",
        'target'     => 'content',
        'link'    => 'sites/database_list.php',
        'html_id' => 'database_list');
$module["nav"][] = array(    'title'    => 'Database',
        'open'     => 1,
        'items'    => $items);
/*
 *    Webdav User menu
 */
if($app->auth->get_client_limit($userid,'webdav_user') != 0)
{
    $items=array();
    $items[] = array( 'title'     => "Webdav-User",
            'target'     => 'content',
            'link'    => 'sites/webdav_user_list.php',
            'html_id' => 'webdav_user_list');
    $module["nav"][] = array(    'title'    => 'Webdav',
            'open'     => 1,
            'items'    => $items);
}
/*
    Cron menu
*/
$items = array();
$items[] = array( 'title'   => "Cron Jobs",
        'target'  => 'content',
        'link'    => 'sites/cron_list.php',
        'html_id' => 'cron_list');
$module["nav"][] = array(   'title' => 'Cron',
        'open'  => 1,
        'items' => $items);
if($app->auth->get_client_limit($userid,'cron') != 0)
{
    $items = array();
    $items[] = array( 'title'   => "Cron Jobs",
                      'target'  => 'content',
                      'link'    => 'sites/cron_list.php',
                      'html_id' => 'cron_list');
    $module["nav"][] = array(   'title' => 'Cron',
                                'open'  => 1,
                                'items' => $items);
}
//**** Statistics menu
$items = array();