Exemple #1
0
 protected function initStruct()
 {
     # NOTE: There are dependencies between domains and domain_count
     # NOTE: If you disable "display in list" for domain_count, the SQL query for domains might break.
     # NOTE: (Disabling both shouldn't be a problem.)
     # TODO: move to a db_group_concat() function?
     if (db_pgsql()) {
         $domains_grouped = "array_to_string(array_agg(domain), ',')";
     } else {
         # mysql
         $domains_grouped = 'group_concat(domain)';
     }
     $this->struct = array('username' => pacol($this->new, 1, 1, 'text', 'admin', 'email_address', '', '', array('linkto' => 'list.php?table=domain&username=%s')), 'password' => pacol(1, 1, 0, 'pass', 'password', ''), 'password2' => pacol(1, 1, 0, 'pass', 'password_again', '', '', '', 0, 1, 'password as password2'), 'superadmin' => pacol(1, 1, 0, 'bool', 'super_admin', 'super_admin_desc', 0), 'domains' => pacol(1, 1, 0, 'list', 'domain', '', array(), list_domains(), 0, 1, "coalesce(domains,'') as domains"), 'domain_count' => pacol(0, 0, 1, 'vnum', 'pAdminList_admin_count', '', '', '', 0, 1, 'coalesce(__domain_count,0) as domain_count', 'LEFT JOIN ( ' . ' SELECT count(*) AS __domain_count, ' . $domains_grouped . ' AS domains, username AS __domain_username ' . ' FROM ' . table_by_key('domain_admins') . " WHERE domain != 'ALL' GROUP BY username " . ' ) AS __domain on username = __domain_username'), 'active' => pacol(1, 1, 1, 'bool', 'active', '', 1), 'created' => pacol(0, 0, 0, 'ts', 'created', ''), 'modified' => pacol(0, 0, 1, 'ts', 'last_modified', ''));
 }
if (isset($_GET["verbose"])) {
    $GLOBALS["VERBOSE"] = true;
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);
    ini_set('error_prepend_string', null);
    ini_set('error_append_string', null);
}
$users = new usersMenus();
if (!$users->AsMailBoxAdministrator) {
    $tpl = new templates();
    $error = $tpl->javascript_parse_text("{ERROR_NO_PRIVS}");
    echo "alert('{$error}')";
    die;
}
if (isset($_GET["list-domains"])) {
    list_domains();
    exit;
}
if (isset($_GET["items-list"])) {
    items();
    exit;
}
if (isset($_POST["DeleteRealMailBox"])) {
    DeleteRealMailBox();
    exit;
}
page();
function page()
{
    $tpl = new templates();
    $sock = new sockets();
 /**
  * Constructor: fill $struct etc.
  * @param integer - 0 is edit mode, set to 1 to switch to create mode
  * @param string - if an admin_username is specified, permissions will be restricted to the domains this admin may manage
  * @param integer - 0 if logged in as user, 1 if logged in as admin or superadmin
  */
 public function __construct($new = 0, $username = "", $is_admin = 1)
 {
     # set label_field if not explicitely set
     if (empty($this->label_field)) {
         $this->label_field = $this->id_field;
     }
     # set order_by if not explicitely set
     if (empty($this->order_by)) {
         $this->order_by = $this->id_field;
     }
     if ($new) {
         $this->new = 1;
     }
     if ($is_admin) {
         $this->admin_username = $username;
     } else {
         $this->username = $username;
         $this->is_admin = 0;
         $this->is_superadmin = 0;
     }
     if ($username != "" && !authentication_has_role('global-admin')) {
         $this->is_superadmin = 0;
     }
     if ($this->domain_field == "") {
         $this->no_domain_field();
     } else {
         if ($this->admin_username != "") {
             $this->allowed_domains = list_domains_for_admin($username);
         } else {
             $this->allowed_domains = list_domains();
         }
     }
     if ($this->user_field == '') {
         $this->no_user_field();
     }
     $this->initStruct();
     if (!isset($this->struct['_can_edit'])) {
         $this->struct['_can_edit'] = pacol(0, 0, 1, 'vnum', '', '', '', '', 0, 1, '1 as _can_edit');
     }
     if (!isset($this->struct['_can_delete'])) {
         $this->struct['_can_delete'] = pacol(0, 0, 1, 'vnum', '', '', '', '', 0, 1, '1 as _can_delete');
     }
     $struct_hook = Config::read($this->db_table . '_struct_hook');
     if ($struct_hook != 'NO' && function_exists($struct_hook)) {
         $this->struct = $struct_hook($this->struct);
     }
     $this->initMsg();
     $this->msg['id_field'] = $this->id_field;
     $this->msg['show_simple_search'] = count($this->searchfields) > 0;
 }
 * Form POST \ GET Variables:
 *
 * fUsername
 * fPassword
 * fPassword2
 * fName
 * fQuota
 * fDomain
 * fActive
 * fMail
 */
require_once 'common.php';
authentication_require_role('admin');
$SESSID_USERNAME = authentication_get_username();
if (authentication_has_role('global-admin')) {
    $list_domains = list_domains();
} else {
    $list_domains = list_domains_for_admin($SESSID_USERNAME);
}
$pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text'];
$pCreate_mailbox_name_text = $PALANG['pCreate_mailbox_name_text'];
$pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text'];
if ($_SERVER['REQUEST_METHOD'] == "GET") {
    $fDomain = $list_domains[0];
    if (isset($_GET['domain'])) {
        $fDomain = escape_string($_GET['domain']);
    }
    if (!in_array($fDomain, $list_domains)) {
        die("Invalid domain name selected, or you tried to select a domain you are not an admin for");
    }
    $tDomain = $fDomain;
            $fDomains = array('ALL');
        }
        foreach ($fDomains as $domain) {
            $result = db_query("INSERT INTO {$table_domain_admins} (username,domain,created) VALUES ('{$username}','{$domain}',NOW())");
        }
        flash_info($PALANG['pAdminEdit_admin_result_success']);
        header("Location: list-admin.php");
        exit(0);
    } else {
        flash_error($PALANG['pAdminEdit_admin_result_error']);
    }
}
if (isset($_GET['username'])) {
    $username = escape_string($_GET['username']);
}
$tAllDomains = list_domains();
$tDomains = list_domains_for_admin($username);
$tActive = '';
$tPassword = $admin_details['password'];
if ($admin_details['active'] == 't' || $admin_details['active'] == 1) {
    $tActive = $admin_details['active'];
}
$tSadmin = '0';
$result = db_query("SELECT * FROM {$table_domain_admins} WHERE username='******'");
// could/should be multiple matches to query;
if ($result['rows'] >= 1) {
    $result = $result['result'];
    while ($row = db_array($result)) {
        if ($row['domain'] == 'ALL') {
            $tSadmin = '1';
            $tDomains = array();