/** * Returns domain data * * @param int $domainId Domain unique identifier * @param bool $forUpdate Tell whether or not data are fetched for update * @return array Reference to array of data */ function &reseller_getData($domainId, $forUpdate = false) { static $data = null; $cfg = iMSCP_Registry::get('config'); if (null !== $data) { return $data; } $statusOk = "ok|disabled|ordered"; // Checks for domain existence and status $stmt = exec_query(' SELECT t1.domain_status, COUNT(t3.subdomain_status) + COUNT(t4.alias_status) + COUNT(t5.subdomain_alias_status) AS status_not_ok FROM domain AS t1 INNER JOIN admin AS t2 ON(admin_id = domain_admin_id) LEFT JOIN subdomain AS t3 ON (t1.domain_id = t3.domain_id AND t3.subdomain_status NOT RLIKE ?) LEFT JOIN domain_aliasses AS t4 ON (t1.domain_id = t4.domain_id AND t4.alias_status NOT RLIKE ?) LEFT JOIN subdomain_alias AS t5 ON (t5.alias_id = t4.alias_id AND t5.subdomain_alias_status NOT RLIKE ?) WHERE t1.domain_id = ? AND t2.created_by = ? ', array($statusOk, $statusOk, $statusOk, $domainId, $_SESSION['user_id'])); $row = $stmt->fetchRow(PDO::FETCH_ASSOC); if ($row['domain_status'] == '') { set_page_message(tr("The domain you are trying to edit doesn't exist."), 'error'); redirectTo('users.php'); } if ($row['domain_status'] != 'ok' && $row['domain_status'] != 'disabled' || $row['status_not_ok'] > 0) { set_page_message(tr("The domain or at least one of its entities has a different status than 'ok'."), 'warning'); redirectTo('users.php'); } if ($row['domain_status'] == 'disabled') { set_page_message(tr('The domain is currently deactivated. The modification of some of its properties will result by a complete or partial reactivation of it.'), 'warning'); } $domainProps = reseller_getDomainProps($domainId); $resellerProps = reseller_getResellerProps($_SESSION['user_id']); list($subCount, $alsCount, $mailCount, $ftpCount, $sqlDbCount, $sqlUsersCount) = get_domain_running_props_cnt($domainId); $data['nbSubdomains'] = $subCount; $data['nbAliasses'] = $alsCount; $data['nbMailAccounts'] = $mailCount; $data['nbFtpAccounts'] = $ftpCount; $data['nbSqlDatabases'] = $sqlDbCount; $data['nbSqlUsers'] = $sqlUsersCount; $data = array_merge($data, $domainProps, $resellerProps); // Fallback values $data['fallback_domain_expires'] = $data['domain_expires']; $data['fallback_domain_ip_id'] = $data['domain_ip_id']; $data['fallback_domain_subd_limit'] = $data['domain_subd_limit']; $data['fallback_domain_alias_limit'] = $data['domain_alias_limit']; $data['fallback_domain_mailacc_limit'] = $data['domain_mailacc_limit']; $data['fallback_domain_ftpacc_limit'] = $data['domain_ftpacc_limit']; $data['fallback_domain_sqld_limit'] = $data['domain_sqld_limit']; $data['fallback_domain_sqlu_limit'] = $data['domain_sqlu_limit']; $data['fallback_domain_traffic_limit'] = $data['domain_traffic_limit']; $data['fallback_domain_disk_limit'] = $data['domain_disk_limit']; $data['fallback_domain_php'] = $data['domain_php']; $data['fallback_domain_cgi'] = $data['domain_cgi']; $data['fallback_domain_dns'] = $data['domain_dns']; $data['fallback_domain_software_allowed'] = $data['domain_software_allowed']; $data['fallback_allowbackup'] = $data['allowbackup'] = explode('|', $data['allowbackup']); $data['fallback_domain_external_mail'] = $data['domain_external_mail']; $data['fallback_web_folder_protection'] = $data['web_folder_protection']; $data['fallback_mail_quota'] = $data['mail_quota']; $data['domain_expires_ok'] = true; $data['domain_never_expires'] = $data['domain_expires'] == 0 ? 'on' : 'off'; $phpini = iMSCP_PHPini::getInstance(); $phpini->loadResellerPermissions($_SESSION['user_id']); // Load reseller PHP permissions $phpini->loadClientPermissions($data['admin_id']); // Load client PHP permissions $phpini->loadDomainIni($data['admin_id'], $data['domain_id'], 'dmn'); // Load domain PHP configuration options if ($forUpdate) { // Post request foreach (array('domain_subd_limit' => 'max_sub_cnt', 'domain_alias_limit' => 'max_als_cnt', 'domain_mailacc_limit' => 'max_mail_cnt', 'mail_quota' => 'max_mail_cnt', 'domain_ftpacc_limit' => 'max_ftp_cnt', 'domain_sqld_limit' => 'max_sql_db_cnt', 'domain_sqlu_limit' => 'max_sql_user_cnt', 'domain_traffic_limit' => 'max_traff_amnt', 'domain_disk_limit' => 'max_disk_amnt') as $customerLimit => $resellerMaxLimit) { if (array_key_exists($customerLimit, $_POST) && $data[$resellerMaxLimit] != -1) { $data[$customerLimit] = clean_input($_POST[$customerLimit]); } } $data['domain_ip_id'] = isset($_POST['domain_ip_id']) ? clean_input($_POST['domain_ip_id']) : $data['domain_ip_id']; $data['domain_expires'] = isset($_POST['domain_expires']) ? clean_input($_POST['domain_expires']) : $data['domain_expires']; $data['domain_never_expires'] = isset($_POST['domain_never_expires']) ? clean_input($_POST['domain_never_expires']) : 'off'; $data['domain_php'] = isset($_POST['domain_php']) ? clean_input($_POST['domain_php']) : $data['domain_php']; $data['domain_cgi'] = isset($_POST['domain_cgi']) ? clean_input($_POST['domain_cgi']) : $data['domain_cgi']; $data['domain_dns'] = isset($_POST['domain_dns']) ? clean_input($_POST['domain_dns']) : $data['domain_dns']; if ($data['software_allowed'] === 'yes') { $data['domain_software_allowed'] = isset($_POST['domain_software_allowed']) ? clean_input($_POST['domain_software_allowed']) : $data['domain_software_allowed']; } else { $data['domain_software_allowed'] = 'no'; } if ($cfg['BACKUP_DOMAINS'] === 'yes') { $data['allowbackup'] = isset($_POST['allowbackup']) && is_array($_POST['allowbackup']) ? array_intersect($_POST['allowbackup'], array('dmn', 'sql', 'mail')) : array(); } else { $data['allowbackup'] = array(); } $data['domain_external_mail'] = isset($_POST['domain_external_mail']) ? clean_input($_POST['domain_external_mail']) : $data['domain_external_mail']; $data['web_folder_protection'] = isset($_POST['web_folder_protection']) ? clean_input($_POST['web_folder_protection']) : $data['web_folder_protection']; } return $data; }
$user_id = $_SESSION['user_id']; $user_layout = $_POST['def_layout']; $query = <<<SQL_QUERY update user_gui_props set layout = ? where user_id = ? SQL_QUERY; $rs = exec_query($sql, $query, array($user_layout, $user_id)); $theme_color = $user_layout; } list($dmn_id, $dmn_name, $dmn_gid, $dmn_uid, $dmn_created_id, $dmn_created, $dmn_last_modified, $dmn_mailacc_limit, $dmn_ftpacc_limit, $dmn_traff_limit, $dmn_sqld_limit, $dmn_sqlu_limit, $dmn_status, $dmn_als_limit, $dmn_subd_limit, $dmn_ip_id, $dmn_disk_limit, $dmn_disk_usage, $dmn_php, $dmn_cgi) = get_domain_default_props($sql, $_SESSION['user_id']); list($sub_cnt, $als_cnt, $mail_acc_cnt, $ftp_acc_cnt, $sqld_acc_cnt, $sqlu_acc_cnt) = get_domain_running_props_cnt($sql, $dmn_id); // ko ima jump from other user interface neka esik i optica da ostanat tezi na // ska4ashtijat user if (!isset($_SESSION['logged_from']) && !isset($_SESSION['logged_from_id'])) { list($user_def_lang, $user_def_layout) = get_user_gui_props($sql, $_SESSION['user_id']); } else { $user_def_layout = $_SESSION['user_theme_color']; $user_def_lang = $_SESSION['user_def_lang']; } gen_def_language($tpl, $sql, $user_def_lang); gen_def_layout($tpl, $sql, $user_def_layout); $dtraff_pr = 0; $dmn_traff_usege = 0; $dmn_traff_limit = $dmn_traff_limit * 1024 * 1024; list($dtraff_pr, $dmn_traff_usege) = make_traff_usege($_SESSION['user_id']); $dmn_disk_limit = $dmn_disk_limit * 1024 * 1024;
/************************************************************************************ * Main script */ // Include core libraries require_once 'imscp-lib.php'; iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onClientScriptStart); /** @var $cfg iMSCP_Config_Handler_File */ $cfg = iMSCP_Registry::get('config'); check_login('user', $cfg->PREVENT_EXTERNAL_LOGIN_CLIENT); $tpl = new iMSCP_pTemplate(); $tpl->define_dynamic(array('layout' => 'shared/layouts/ui.tpl', 'page' => 'client/index.tpl', 'page_message' => 'layout', 'alternative_domain_url' => 'page', 'backup_domain_feature' => 'page', 'traffic_warning' => 'page', 'disk_warning' => 'page')); $tpl->assign('TR_PAGE_TITLE', tr('Client / General / Overview')); generateNavigation($tpl); client_generateSupportSystemNotices(); client_generateDomainExpiresInformation($tpl); client_generateFeatureStatus($tpl); $domainProperties = get_domain_default_props($_SESSION['user_id']); list($domainTrafficPercent, $domainTrafficUsage) = client_makeTrafficUsage($domainProperties['domain_id']); client_generateTrafficUsageBar($tpl, $domainTrafficUsage * 1024 * 1024, $domainProperties['domain_traffic_limit'] * 1024 * 1024, 400); client_generateDiskUsageBar($tpl, $domainProperties['domain_disk_usage'], $domainProperties['domain_disk_limit'] * 1024 * 1024, 400); if ($domainProperties['domain_status'] == 'ok') { $tpl->assign('HREF_DOMAIN_ALTERNATIVE_URL', "http://{$cfg->SYSTEM_USER_PREFIX}" . ($cfg->SYSTEM_USER_MIN_UID + $_SESSION['user_id']) . ".{$cfg->BASE_SERVER_VHOST}"); } else { $tpl->assign('DOMAIN_ALTERNATIVE_URL', ''); } list($subdomainCount, $domainAliasCount, $mailAccountsCount, $ftpAccountsCount, $sqlDatabasesCount, $sqlUsersCount) = get_domain_running_props_cnt($domainProperties['domain_id']); $tpl->assign(array('TR_DOMAIN_ACCOUNT' => tr('Domain account'), 'TR_ACCOUNT_NAME' => tr('Account name'), 'TR_DOMAIN_NAME' => tr('Domain name'), 'DOMAIN_NAME' => tohtml(decode_idna($domainProperties['domain_name'])), 'TR_DOMAIN_ALTERNATIVE_URL' => tr('Alternative URL to reach your website'), 'TR_DOMAIN_EXPIRES_DATE' => tr('Domain expiration date'), 'TR_FEATURE' => tr('Feature'), 'TR_FEATURE_STATUS' => tr('Status'), 'TR_DOMAIN_FEATURE' => tr('Domain'), 'TR_DOMAIN_ALIASES_FEATURE' => tr('Domain aliases'), 'DOMAIN_ALIASES_FEATURE_STATUS' => gen_num_limit_msg($domainAliasCount, $domainProperties['domain_alias_limit']), 'SUBDOMAINS_FEATURE_STATUS' => gen_num_limit_msg($subdomainCount, $domainProperties['domain_subd_limit']), 'TR_SUBDOMAINS_FEATURE' => tr('Subdomains'), 'TR_FTP_ACCOUNTS_FEATURE' => tr('FTP accounts'), 'FTP_ACCOUNTS_FEATURE_STATUS' => gen_num_limit_msg($ftpAccountsCount, $domainProperties['domain_ftpacc_limit']), 'TR_MAIL_ACCOUNTS_FEATURE' => tr('Email accounts'), 'MAIL_ACCOUNTS_FEATURE_STATUS' => gen_num_limit_msg($mailAccountsCount, $domainProperties['domain_mailacc_limit']), 'TR_MAIL_QUOTA' => tr('Email quota'), 'EMAIL_QUOTA_STATUS' => gen_mail_quota_limit_mgs(), 'TR_SQL_DATABASES_FEATURE' => tr('SQL databases'), 'SQL_DATABASE_FEATURE_STATUS' => gen_num_limit_msg($sqlDatabasesCount, $domainProperties['domain_sqld_limit']), 'TR_SQL_USERS_FEATURE' => tr('SQL users'), 'SQL_USERS_FEATURE_STATUS' => gen_num_limit_msg($sqlUsersCount, $domainProperties['domain_sqlu_limit']), 'TR_PHP_SUPPORT_FEATURE' => tr('PHP'), 'TR_PHP_DIRECTIVES_EDITOR_SUPPORT_FEATURE' => tr('PHP Editor'), 'TR_CGI_SUPPORT_FEATURE' => tr('CGI'), 'TR_CUSTOM_DNS_RECORDS_FEATURE' => tr('Custom DNS records'), 'TR_EXTERNAL_MAIL_SERVER_FEATURE' => tr('External mail servers'), 'TR_APP_INSTALLER_FEATURE' => tr('Software installer'), 'TR_BACKUP_FEATURE' => tr('Backup'), 'TR_WEBSTATS_FEATURE' => tr('Web statistics'), 'TR_TRAFFIC_USAGE' => tr('Traffic usage'), 'TR_DISK_USAGE' => tr('Disk usage'), 'TR_DISK_USAGE_DETAIL' => tr('Disk usage detail'), 'TR_DISK_FILE_USAGE' => tr('File usage'), 'DISK_FILESIZE' => bytesHuman($domainProperties['domain_disk_file']), 'TR_DISK_DATABASE_USAGE' => tr('Database usage'), 'DISK_SQLSIZE' => bytesHuman($domainProperties['domain_disk_sql']), 'TR_DISK_MAIL_USAGE' => tr('Mail usage'), 'DISK_MAILSIZE' => bytesHuman($domainProperties['domain_disk_mail']))); generatePageMessage($tpl); $tpl->parse('LAYOUT_CONTENT', 'page'); iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onClientScriptEnd, array('templateEngine' => $tpl)); $tpl->prnt();