even more function to class conversion

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2018-12-21 17:41:22 +01:00
parent b0e11f5708
commit 1b090377ee
61 changed files with 941 additions and 1389 deletions

View File

@@ -31,7 +31,7 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => 'English', 'default' => 'English',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getLanguages', 'option_options_method' => array('\\Froxlor\\User', 'getLanguages'),
'save_method' => 'storeSettingField' 'save_method' => 'storeSettingField'
), ),
'panel_default_theme' => array( 'panel_default_theme' => array(

View File

@@ -348,7 +348,7 @@ return array(
'type' => 'option', 'type' => 'option',
'default' => '1', 'default' => '1',
'option_mode' => 'one', 'option_mode' => 'one',
'option_options_method' => 'getRedirectCodes', 'option_options_method' => array('\\Froxlor\\Domain\\Domain', 'getRedirectCodes'),
'save_method' => 'storeSettingField' 'save_method' => 'storeSettingField'
) )
) )

View File

@@ -92,8 +92,8 @@ if ($page == 'admins' && $userinfo['change_serversettings'] == '1') {
$traffic_percent = 100; $traffic_percent = 100;
} }
$row = str_replace_array('-1', 'UL', $row, 'customers domains diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains'); $row = \Froxlor\PhpHelper::str_replace_array('-1', 'UL', $row, 'customers domains diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains');
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$row['custom_notes'] = ($row['custom_notes'] != '') ? nl2br($row['custom_notes']) : ''; $row['custom_notes'] = ($row['custom_notes'] != '') ? nl2br($row['custom_notes']) : '';
@@ -327,7 +327,7 @@ if ($page == 'admins' && $userinfo['change_serversettings'] == '1') {
$ipaddress .= makeoption($row['ip'], $row['id'], $result['ip']); $ipaddress .= makeoption($row['ip'], $row['id'], $result['ip']);
} }
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$admin_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/admin/formfield.admin_edit.php'; $admin_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/admin/formfield.admin_edit.php';
$admin_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($admin_edit_data); $admin_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($admin_edit_data);

View File

@@ -58,7 +58,7 @@ if ($page == 'cronjobs' || $page == 'overview') {
$cmod = $row['module']; $cmod = $row['module'];
} }
if ($paging->checkDisplay($i)) { if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$row['lastrun'] = date('d.m.Y H:i', $row['lastrun']); $row['lastrun'] = date('d.m.Y H:i', $row['lastrun']);
$row['isactive'] = ((int) $row['isactive'] == 1) ? $lng['panel']['yes'] : $lng['panel']['no']; $row['isactive'] = ((int) $row['isactive'] == 1) ? $lng['panel']['yes'] : $lng['panel']['no'];

View File

@@ -126,8 +126,8 @@ if ($page == 'customers' && $userinfo['customers'] != '0') {
$islocked = 1; $islocked = 1;
} }
$row = str_replace_array('-1', 'UL', $row, 'diskspace traffic mysqls emails email_accounts email_forwarders ftps subdomains'); $row = \Froxlor\PhpHelper::str_replace_array('-1', 'UL', $row, 'diskspace traffic mysqls emails email_accounts email_forwarders ftps subdomains');
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
// fix progress-bars if value is >100% // fix progress-bars if value is >100%
if ($disk_percent > 100) { if ($disk_percent > 100) {
@@ -438,7 +438,7 @@ if ($page == 'customers' && $userinfo['customers'] != '0') {
$result['mysqls'] = ''; $result['mysqls'] = '';
} }
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$gender_options = makeoption($lng['gender']['undef'], 0, ($result['gender'] == '0' ? true : false), true, true); $gender_options = makeoption($lng['gender']['undef'], 0, ($result['gender'] == '0' ? true : false), true, true);
$gender_options .= makeoption($lng['gender']['male'], 1, ($result['gender'] == '1' ? true : false), true, true); $gender_options .= makeoption($lng['gender']['male'], 1, ($result['gender'] == '1' ? true : false), true, true);

View File

@@ -106,7 +106,7 @@ if ($page == 'domains' || $page == 'overview') {
if (isset($row['domain']) && $row['domain'] != '' && $paging->checkDisplay($i)) { if (isset($row['domain']) && $row['domain'] != '' && $paging->checkDisplay($i)) {
$row['customername'] = getCorrectFullUserDetails($row); $row['customername'] = getCorrectFullUserDetails($row);
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
// display a nice list of IP's // display a nice list of IP's
$row['ipandport'] = str_replace("\n", "<br />", $row['ipandport']); $row['ipandport'] = str_replace("\n", "<br />", $row['ipandport']);
eval("\$domains.=\"" . \Froxlor\UI\Template::getTemplate("domains/domains_domain") . "\";"); eval("\$domains.=\"" . \Froxlor\UI\Template::getTemplate("domains/domains_domain") . "\";");
@@ -624,7 +624,7 @@ if ($page == 'domains' || $page == 'overview') {
} }
} }
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$domain_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/domains/formfield.domains_edit.php'; $domain_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/domains/formfield.domains_edit.php';
$domain_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($domain_edit_data); $domain_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($domain_edit_data);
@@ -667,7 +667,7 @@ if ($page == 'domains' || $page == 'overview') {
} }
// update customer/admin counters // update customer/admin counters
updateCounters(false); \Froxlor\User::updateCounters(false);
\Froxlor\System\Cronjob::inserttask('1'); \Froxlor\System\Cronjob::inserttask('1');
\Froxlor\System\Cronjob::inserttask('4'); \Froxlor\System\Cronjob::inserttask('4');

View File

@@ -115,7 +115,7 @@ if ($page == 'overview') {
$userinfo['diskspace_used'] = round($userinfo['diskspace_used'] / 1024, $dec_places); $userinfo['diskspace_used'] = round($userinfo['diskspace_used'] / 1024, $dec_places);
$userinfo['traffic'] = round($userinfo['traffic'] / (1024 * 1024), $dec_places); $userinfo['traffic'] = round($userinfo['traffic'] / (1024 * 1024), $dec_places);
$userinfo['traffic_used'] = round($userinfo['traffic_used'] / (1024 * 1024), $dec_places); $userinfo['traffic_used'] = round($userinfo['traffic_used'] / (1024 * 1024), $dec_places);
$userinfo = str_replace_array('-1', $lng['customer']['unlimited'], $userinfo, 'customers domains diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains'); $userinfo = \Froxlor\PhpHelper::str_replace_array('-1', $lng['customer']['unlimited'], $userinfo, 'customers domains diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains');
$userinfo['custom_notes'] = ($userinfo['custom_notes'] != '') ? nl2br($userinfo['custom_notes']) : ''; $userinfo['custom_notes'] = ($userinfo['custom_notes'] != '') ? nl2br($userinfo['custom_notes']) : '';

View File

@@ -58,7 +58,7 @@ if ($page == 'ipsandports' || $page == 'overview') {
while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) { while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
if ($paging->checkDisplay($i)) { if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
if (filter_var($row['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { if (filter_var($row['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$row['ip'] = '[' . $row['ip'] . ']'; $row['ip'] = '[' . $row['ip'] . ']';
} }
@@ -146,7 +146,7 @@ if ($page == 'ipsandports' || $page == 'overview') {
)); ));
} else { } else {
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$ipsandports_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/ipsandports/formfield.ipsandports_edit.php'; $ipsandports_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/ipsandports/formfield.ipsandports_edit.php';
$ipsandports_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($ipsandports_edit_data); $ipsandports_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($ipsandports_edit_data);

View File

@@ -63,7 +63,7 @@ if ($page == 'log' && $userinfo['change_serversettings'] == '1') {
$_action = 0; $_action = 0;
foreach ($logrows as $row) { foreach ($logrows as $row) {
// if ($paging->checkDisplay($i)) { // if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$row['date'] = date("d.m.y H:i:s", $row['date']); $row['date'] = date("d.m.y H:i:s", $row['date']);
if ($_action != $action) { if ($_action != $action) {

View File

@@ -64,7 +64,7 @@ if ($page == 'message') {
$row['firstname'] = isset($row['firstname']) ? $row['firstname'] : ''; $row['firstname'] = isset($row['firstname']) ? $row['firstname'] : '';
$row['company'] = isset($row['company']) ? $row['company'] : ''; $row['company'] = isset($row['company']) ? $row['company'] : '';
$mail->AddAddress($row['email'], getCorrectUserSalutation(array( $mail->AddAddress($row['email'], \Froxlor\User::getCorrectUserSalutation(array(
'firstname' => $row['firstname'], 'firstname' => $row['firstname'],
'name' => $row['name'], 'name' => $row['name'],
'company' => $row['company'] 'company' => $row['company']

View File

@@ -58,7 +58,7 @@ if ($page == '' || $page == 'overview') {
while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) { while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
if ($paging->checkDisplay($i)) { if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$row['ts_format'] = date("d.m.Y H:i", $row['ts']); $row['ts_format'] = date("d.m.Y H:i", $row['ts']);
eval("\$plans.=\"" . \Froxlor\UI\Template::getTemplate("plans/plans_plan") . "\";"); eval("\$plans.=\"" . \Froxlor\UI\Template::getTemplate("plans/plans_plan") . "\";");
$count ++; $count ++;
@@ -112,7 +112,7 @@ if ($page == '' || $page == 'overview') {
$value_arr['diskspace'] = - 1; $value_arr['diskspace'] = - 1;
} }
$value_arr['traffic'] = doubleval_ressource($_POST['traffic']); $value_arr['traffic'] = $_POST['traffic'];
if (isset($_POST['traffic_ul'])) { if (isset($_POST['traffic_ul'])) {
$value_arr['traffic'] = - 1; $value_arr['traffic'] = - 1;
} }
@@ -271,7 +271,7 @@ if ($page == '' || $page == 'overview') {
if ($result['name'] != '') { if ($result['name'] != '') {
$result['value'] = json_decode($result['value'], true); $result['value'] = json_decode($result['value'], true);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
foreach ($result['value'] as $index => $value) { foreach ($result['value'] as $index => $value) {
$result[$index] = $value; $result[$index] = $value;
@@ -290,7 +290,7 @@ if ($page == '' || $page == 'overview') {
$value_arr['diskspace'] = - 1; $value_arr['diskspace'] = - 1;
} }
$value_arr['traffic'] = doubleval_ressource($_POST['traffic']); $value_arr['traffic'] = $_POST['traffic'];
if (isset($_POST['traffic_ul'])) { if (isset($_POST['traffic_ul'])) {
$value_arr['traffic'] = - 1; $value_arr['traffic'] = - 1;
} }

View File

@@ -163,7 +163,7 @@ if ($page == 'overview' && $userinfo['change_serversettings'] == '1') {
if (isset($_POST['send']) && $_POST['send'] == 'send') { if (isset($_POST['send']) && $_POST['send'] == 'send') {
$log->logAction(ADM_ACTION, LOG_INFO, "updated resource-counters"); $log->logAction(ADM_ACTION, LOG_INFO, "updated resource-counters");
$updatecounters = updateCounters(true); $updatecounters = \Froxlor\User::updateCounters(true);
$customers = ''; $customers = '';
foreach ($updatecounters['customers'] as $customerid => $customer) { foreach ($updatecounters['customers'] as $customerid => $customer) {
eval("\$customers.=\"" . \Froxlor\UI\Template::getTemplate("settings/updatecounters_row_customer") . "\";"); eval("\$customers.=\"" . \Froxlor\UI\Template::getTemplate("settings/updatecounters_row_customer") . "\";");

View File

@@ -426,7 +426,7 @@ if ($action == '') {
)); ));
} else { } else {
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$template = $lng['admin']['templates'][str_replace('_subject', '', $result['varname'])]; $template = $lng['admin']['templates'][str_replace('_subject', '', $result['varname'])];
$subject = $result['value']; $subject = $result['value'];
$result_stmt = Database::prepare(" $result_stmt = Database::prepare("
@@ -442,7 +442,7 @@ if ($action == '') {
// don't escape the already escaped language-string so save up before htmlentities() // don't escape the already escaped language-string so save up before htmlentities()
$language = $result['language']; $language = $result['language'];
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$mailbody = $result['value']; $mailbody = $result['value'];
$template_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/templates/formfield.template_edit.php'; $template_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/templates/formfield.template_edit.php';
@@ -487,7 +487,7 @@ if ($action == '') {
's' => $s 's' => $s
)); ));
} else { } else {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$filetemplate_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/templates/formfield.filetemplate_edit.php'; $filetemplate_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/templates/formfield.filetemplate_edit.php';
$filetemplate_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($filetemplate_edit_data); $filetemplate_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($filetemplate_edit_data);

View File

@@ -64,7 +64,7 @@ if ($page == 'overview') {
$redirect_url = 'admin_index.php?s=' . $s; $redirect_url = 'admin_index.php?s=' . $s;
eval("echo \"" . \Froxlor\UI\Template::getTemplate('update/update_end') . "\";"); eval("echo \"" . \Froxlor\UI\Template::getTemplate('update/update_end') . "\";");
updateCounters(); \Froxlor\User::updateCounters();
\Froxlor\System\Cronjob::inserttask('1'); \Froxlor\System\Cronjob::inserttask('1');
@chmod('./lib/userdata.inc.php', 0440); @chmod('./lib/userdata.inc.php', 0440);

View File

@@ -206,7 +206,7 @@ if (count($all_keys) == 0) {
} }
// escape stuff // escape stuff
$row = htmlentities_array($key); $row = \Froxlor\PhpHelper::htmlentities_array($key);
// shorten keys // shorten keys
$row['_apikey'] = substr($row['apikey'], 0, 20) . '...'; $row['_apikey'] = substr($row['apikey'], 0, 20) . '...';

View File

@@ -151,7 +151,7 @@ if ($page == 'overview') {
if ($paging->checkDisplay($i)) { if ($paging->checkDisplay($i)) {
if (isset($domain_array[$sortkey])) { if (isset($domain_array[$sortkey])) {
$row = htmlentities_array($domain_array[$sortkey]); $row = \Froxlor\PhpHelper::htmlentities_array($domain_array[$sortkey]);
if (Settings::Get('system.awstats_enabled') == '1') { if (Settings::Get('system.awstats_enabled') == '1') {
$statsapp = 'awstats'; $statsapp = 'awstats';
} else { } else {
@@ -176,7 +176,7 @@ if ($page == 'overview') {
if (Settings::Get('system.use_ssl') == '1' && \Froxlor\Domain\Domain::domainHasSslIpPort($row['id']) && $row['caneditdomain'] == '1' && $row['letsencrypt'] == 0) { if (Settings::Get('system.use_ssl') == '1' && \Froxlor\Domain\Domain::domainHasSslIpPort($row['id']) && $row['caneditdomain'] == '1' && $row['letsencrypt'] == 0) {
$show_ssledit = true; $show_ssledit = true;
} }
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
eval("\$domains.=\"" . \Froxlor\UI\Template::getTemplate("domains/domains_domain") . "\";"); eval("\$domains.=\"" . \Froxlor\UI\Template::getTemplate("domains/domains_domain") . "\";");
} }
} }
@@ -263,12 +263,12 @@ if ($page == 'overview') {
)); ));
while ($row_domain = $domains_stmt->fetch(PDO::FETCH_ASSOC)) { while ($row_domain = $domains_stmt->fetch(PDO::FETCH_ASSOC)) {
$aliasdomains .= makeoption($idna_convert->decode($row_domain['domain']), $row_domain['id']); $aliasdomains .= \Froxlor\UI\HTML::makeoption($idna_convert->decode($row_domain['domain']), $row_domain['id']);
} }
$redirectcode = ''; $redirectcode = '';
if (Settings::Get('customredirect.enabled') == '1') { if (Settings::Get('customredirect.enabled') == '1') {
$codes = getRedirectCodesArray(); $codes = \Froxlor\Domain\Domain::getRedirectCodesArray();
foreach ($codes as $rc) { foreach ($codes as $rc) {
$redirectcode .= makeoption($rc['code'] . ' (' . $lng['redirect_desc'][$rc['desc']] . ')', $rc['id']); $redirectcode .= makeoption($rc['code'] . ' (' . $lng['redirect_desc'][$rc['desc']] . ')', $rc['id']);
} }
@@ -369,7 +369,7 @@ if ($page == 'overview') {
$domains .= makeoption($idna_convert->decode($row_domain['domain']), $row_domain['id'], $result['aliasdomain']); $domains .= makeoption($idna_convert->decode($row_domain['domain']), $row_domain['id'], $result['aliasdomain']);
} }
if (preg_match('/^https?\:\/\//', $result['documentroot']) && validateUrl($result['documentroot'])) { if (preg_match('/^https?\:\/\//', $result['documentroot']) && \Froxlor\Validate\Form\Strings::validateUrl($result['documentroot'])) {
if (Settings::Get('panel.pathedit') == 'Dropdown') { if (Settings::Get('panel.pathedit') == 'Dropdown') {
$urlvalue = $result['documentroot']; $urlvalue = $result['documentroot'];
$pathSelect = \Froxlor\FileDir::makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid']); $pathSelect = \Froxlor\FileDir::makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid']);
@@ -384,8 +384,8 @@ if ($page == 'overview') {
$redirectcode = ''; $redirectcode = '';
if (Settings::Get('customredirect.enabled') == '1') { if (Settings::Get('customredirect.enabled') == '1') {
$def_code = getDomainRedirectId($id); $def_code = \Froxlor\Domain\Domain::getDomainRedirectId($id);
$codes = getRedirectCodesArray(); $codes = \Froxlor\Domain\Domain::getRedirectCodesArray();
foreach ($codes as $rc) { foreach ($codes as $rc) {
$redirectcode .= makeoption($rc['code'] . ' (' . $lng['redirect_desc'][$rc['desc']] . ')', $rc['id'], $def_code); $redirectcode .= makeoption($rc['code'] . ' (' . $lng['redirect_desc'][$rc['desc']] . ')', $rc['id'], $def_code);
} }
@@ -411,7 +411,7 @@ if ($page == 'overview') {
$result['temporary_ssl_redirect'] = $result['ssl_redirect']; $result['temporary_ssl_redirect'] = $result['ssl_redirect'];
$result['ssl_redirect'] = ($result['ssl_redirect'] == 0 ? 0 : 1); $result['ssl_redirect'] = ($result['ssl_redirect'] == 0 ? 0 : 1);
$openbasedir = makeoption($lng['domain']['docroot'], 0, $result['openbasedir_path'], true) . makeoption($lng['domain']['homedir'], 1, $result['openbasedir_path'], true); $openbasedir = \Froxlor\UI\HTML::makeoption($lng['domain']['docroot'], 0, $result['openbasedir_path'], true) . makeoption($lng['domain']['homedir'], 1, $result['openbasedir_path'], true);
// create serveralias options // create serveralias options
$serveraliasoptions = ""; $serveraliasoptions = "";
@@ -459,7 +459,7 @@ if ($page == 'overview') {
} }
$domainip = $result_ipandport['ip']; $domainip = $result_ipandport['ip'];
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$subdomain_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/domains/formfield.domains_edit.php'; $subdomain_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/domains/formfield.domains_edit.php';
$subdomain_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($subdomain_edit_data); $subdomain_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($subdomain_edit_data);
@@ -512,7 +512,7 @@ if ($page == 'overview') {
$do_insert = true; $do_insert = true;
} }
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$ssleditor_data = include_once dirname(__FILE__) . '/lib/formfields/customer/domains/formfield.domain_ssleditor.php'; $ssleditor_data = include_once dirname(__FILE__) . '/lib/formfields/customer/domains/formfield.domain_ssleditor.php';
$ssleditor_form = \Froxlor\UI\HtmlForm::genHTMLForm($ssleditor_data); $ssleditor_form = \Froxlor\UI\HtmlForm::genHTMLForm($ssleditor_data);

View File

@@ -120,7 +120,7 @@ if ($page == 'overview') {
$row['mboxsize'] = \Froxlor\PhpHelper::size_readable($row['mboxsize'], 'GiB', 'bi', '%01.' . (int) Settings::Get('panel.decimal_places') . 'f %s'); $row['mboxsize'] = \Froxlor\PhpHelper::size_readable($row['mboxsize'], 'GiB', 'bi', '%01.' . (int) Settings::Get('panel.decimal_places') . 'f %s');
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
eval("\$accounts.=\"" . \Froxlor\UI\Template::getTemplate("email/emails_email") . "\";"); eval("\$accounts.=\"" . \Froxlor\UI\Template::getTemplate("email/emails_email") . "\";");
$count ++; $count ++;
} }
@@ -252,7 +252,7 @@ if ($page == 'overview') {
} }
$destinations_count = count($result['destination']); $destinations_count = count($result['destination']);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$email_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_edit.php'; $email_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_edit.php';
@@ -325,7 +325,7 @@ if ($page == 'overview') {
} }
$result['email_full'] = $idna_convert->decode($result['email_full']); $result['email_full'] = $idna_convert->decode($result['email_full']);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$quota = Settings::Get('system.mail_quota'); $quota = Settings::Get('system.mail_quota');
$account_add_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_addaccount.php'; $account_add_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_addaccount.php';
@@ -367,7 +367,7 @@ if ($page == 'overview') {
)); ));
} else { } else {
$result['email_full'] = $idna_convert->decode($result['email_full']); $result['email_full'] = $idna_convert->decode($result['email_full']);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$account_changepw_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_accountchangepasswd.php'; $account_changepw_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_accountchangepasswd.php';
$account_changepw_form = \Froxlor\UI\HtmlForm::genHTMLForm($account_changepw_data); $account_changepw_form = \Froxlor\UI\HtmlForm::genHTMLForm($account_changepw_data);
@@ -403,7 +403,7 @@ if ($page == 'overview') {
)); ));
} else { } else {
$result['email_full'] = $idna_convert->decode($result['email_full']); $result['email_full'] = $idna_convert->decode($result['email_full']);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$quota_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_accountchangequota.php'; $quota_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_accountchangequota.php';
$quota_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($quota_edit_data); $quota_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($quota_edit_data);
@@ -473,7 +473,7 @@ if ($page == 'overview') {
)); ));
} else { } else {
$result['email_full'] = $idna_convert->decode($result['email_full']); $result['email_full'] = $idna_convert->decode($result['email_full']);
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$forwarder_add_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_addforwarder.php'; $forwarder_add_data = include_once dirname(__FILE__) . '/lib/formfields/customer/email/formfield.emails_addforwarder.php';
$forwarder_add_form = \Froxlor\UI\HtmlForm::genHTMLForm($forwarder_add_data); $forwarder_add_form = \Froxlor\UI\HtmlForm::genHTMLForm($forwarder_add_data);

View File

@@ -73,7 +73,7 @@ if ($page == 'overview') {
$row['path'] = str_replace($userinfo['documentroot'], "/", $row['path']); $row['path'] = str_replace($userinfo['documentroot'], "/", $row['path']);
} }
$row['path'] = \Froxlor\FileDir::makeCorrectDir($row['path']); $row['path'] = \Froxlor\FileDir::makeCorrectDir($row['path']);
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
eval("\$htpasswds.=\"" . \Froxlor\UI\Template::getTemplate("extras/htpasswds_htpasswd") . "\";"); eval("\$htpasswds.=\"" . \Froxlor\UI\Template::getTemplate("extras/htpasswds_htpasswd") . "\";");
$count ++; $count ++;
} }
@@ -163,7 +163,7 @@ if ($page == 'overview') {
$result['path'] = str_replace($userinfo['documentroot'], "/", $result['path']); $result['path'] = str_replace($userinfo['documentroot'], "/", $result['path']);
} }
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$htpasswd_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/extras/formfield.htpasswd_edit.php'; $htpasswd_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/extras/formfield.htpasswd_edit.php';
$htpasswd_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($htpasswd_edit_data); $htpasswd_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($htpasswd_edit_data);
@@ -219,7 +219,7 @@ if ($page == 'overview') {
$row['options_indexes'] = str_replace('0', $lng['panel']['no'], $row['options_indexes']); $row['options_indexes'] = str_replace('0', $lng['panel']['no'], $row['options_indexes']);
$row['options_cgi'] = str_replace('1', $lng['panel']['yes'], $row['options_cgi']); $row['options_cgi'] = str_replace('1', $lng['panel']['yes'], $row['options_cgi']);
$row['options_cgi'] = str_replace('0', $lng['panel']['no'], $row['options_cgi']); $row['options_cgi'] = str_replace('0', $lng['panel']['no'], $row['options_cgi']);
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
eval("\$htaccess.=\"" . \Froxlor\UI\Template::getTemplate("extras/htaccess_htaccess") . "\";"); eval("\$htaccess.=\"" . \Froxlor\UI\Template::getTemplate("extras/htaccess_htaccess") . "\";");
$count ++; $count ++;
} }
@@ -314,7 +314,7 @@ if ($page == 'overview') {
* $options_indexes = makeyesno('options_indexes', '1', '0', $result['options_indexes']); * $options_indexes = makeyesno('options_indexes', '1', '0', $result['options_indexes']);
* $options_cgi = makeyesno('options_cgi', '1', '0', $result['options_cgi']); * $options_cgi = makeyesno('options_cgi', '1', '0', $result['options_cgi']);
*/ */
$result = htmlentities_array($result); $result = \Froxlor\PhpHelper::htmlentities_array($result);
$htaccess_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/extras/formfield.htaccess_edit.php'; $htaccess_edit_data = include_once dirname(__FILE__) . '/lib/formfields/customer/extras/formfield.htaccess_edit.php';
$htaccess_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($htaccess_edit_data); $htaccess_edit_form = \Froxlor\UI\HtmlForm::genHTMLForm($htaccess_edit_data);

View File

@@ -73,7 +73,7 @@ if ($page == 'overview') {
$row['documentroot'] = \Froxlor\FileDir::makeCorrectDir($row['documentroot']); $row['documentroot'] = \Froxlor\FileDir::makeCorrectDir($row['documentroot']);
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
eval("\$accounts.=\"" . \Froxlor\UI\Template::getTemplate('ftp/accounts_account') . "\";"); eval("\$accounts.=\"" . \Froxlor\UI\Template::getTemplate('ftp/accounts_account') . "\";");
$count ++; $count ++;
} }

View File

@@ -100,7 +100,7 @@ if ($page == 'overview') {
$userinfo['traffic'] = round($userinfo['traffic'] / (1024 * 1024), Settings::Get('panel.decimal_places')); $userinfo['traffic'] = round($userinfo['traffic'] / (1024 * 1024), Settings::Get('panel.decimal_places'));
$userinfo['traffic_used'] = round($userinfo['traffic_used'] / (1024 * 1024), Settings::Get('panel.decimal_places')); $userinfo['traffic_used'] = round($userinfo['traffic_used'] / (1024 * 1024), Settings::Get('panel.decimal_places'));
$userinfo = str_replace_array('-1', $lng['customer']['unlimited'], $userinfo, 'diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains'); $userinfo = \Froxlor\PhpHelper::str_replace_array('-1', $lng['customer']['unlimited'], $userinfo, 'diskspace traffic mysqls emails email_accounts email_forwarders email_quota ftps subdomains');
$userinfo['custom_notes'] = ($userinfo['custom_notes'] != '') ? nl2br($userinfo['custom_notes']) : ''; $userinfo['custom_notes'] = ($userinfo['custom_notes'] != '') ? nl2br($userinfo['custom_notes']) : '';

View File

@@ -76,7 +76,7 @@ if ($page == 'log') {
$_action = 0; $_action = 0;
foreach ($logrows as $row) { foreach ($logrows as $row) {
// if ($paging->checkDisplay($i)) { // if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$row['date'] = date("d.m.y H:i:s", $row['date']); $row['date'] = date("d.m.y H:i:s", $row['date']);
if ($_action != $action) { if ($_action != $action) {

View File

@@ -78,7 +78,7 @@ if ($page == 'overview') {
Database::needRoot(true); Database::needRoot(true);
while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) { while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
if ($paging->checkDisplay($i)) { if ($paging->checkDisplay($i)) {
$row = htmlentities_array($row); $row = \Froxlor\PhpHelper::htmlentities_array($row);
$mbdata_stmt = Database::prepare("SELECT SUM(data_length + index_length) as MB FROM information_schema.TABLES $mbdata_stmt = Database::prepare("SELECT SUM(data_length + index_length) as MB FROM information_schema.TABLES
WHERE table_schema = :table_schema WHERE table_schema = :table_schema
GROUP BY table_schema"); GROUP BY table_schema");

View File

@@ -287,7 +287,7 @@ if ($action == '2fa_entercode') {
$mail->Subject = $lng['mails']['2fa']['subject']; $mail->Subject = $lng['mails']['2fa']['subject'];
$mail->AltBody = $mail_body; $mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body)); $mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($userinfo['email'], getCorrectUserSalutation($userinfo)); $mail->AddAddress($userinfo['email'], \Froxlor\User::getCorrectUserSalutation($userinfo));
$mail->Send(); $mail->Send();
} catch (\PHPMailer\PHPMailer\Exception $e) { } catch (\PHPMailer\PHPMailer\Exception $e) {
$mailerr_msg = $e->errorMessage(); $mailerr_msg = $e->errorMessage();
@@ -480,7 +480,7 @@ if ($action == 'forgotpwd') {
$activationlink = $protocol . '://' . $host . $port . $script . '?action=resetpwd&resetcode=' . $activationcode; $activationlink = $protocol . '://' . $host . $port . $script . '?action=resetpwd&resetcode=' . $activationcode;
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($user), 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation($user),
'USERNAME' => $loginname, 'USERNAME' => $loginname,
'LINK' => $activationlink 'LINK' => $activationlink
); );
@@ -516,7 +516,7 @@ if ($action == 'forgotpwd') {
$mail->Subject = $mail_subject; $mail->Subject = $mail_subject;
$mail->AltBody = $mail_body; $mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body)); $mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($user['email'], getCorrectUserSalutation($user)); $mail->AddAddress($user['email'], \Froxlor\User::getCorrectUserSalutation($user));
$mail->Send(); $mail->Send();
} catch (\PHPMailer\PHPMailer\Exception $e) { } catch (\PHPMailer\PHPMailer\Exception $e) {
$mailerr_msg = $e->errorMessage(); $mailerr_msg = $e->errorMessage();

View File

@@ -18,6 +18,8 @@
*/ */
use Froxlor\FroxlorLogger; use Froxlor\FroxlorLogger;
require_once __DIR__ . '/lib/updateFunctions.php';
if (! defined('_CRON_UPDATE')) { if (! defined('_CRON_UPDATE')) {
if (! defined('AREA') || (defined('AREA') && AREA != 'admin') || ! isset($userinfo['loginname']) || (isset($userinfo['loginname']) && $userinfo['loginname'] == '')) { if (! defined('AREA') || (defined('AREA') && AREA != 'admin') || ! isset($userinfo['loginname']) || (isset($userinfo['loginname']) && $userinfo['loginname'] == '')) {
header('Location: ../index.php'); header('Location: ../index.php');

View File

@@ -737,7 +737,7 @@ class Admins extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
), true, true); ), true, true);
$this->logger()->logAction(ADM_ACTION, LOG_WARNING, "[API] deleted admin '" . $result['loginname'] . "'"); $this->logger()->logAction(ADM_ACTION, LOG_WARNING, "[API] deleted admin '" . $result['loginname'] . "'");
updateCounters(); \Froxlor\User::updateCounters();
return $this->response(200, "successfull", $result); return $this->response(200, "successfull", $result);
} }
throw new \Exception("Not allowed to execute given command.", 403); throw new \Exception("Not allowed to execute given command.", 403);

View File

@@ -666,7 +666,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource
'FIRSTNAME' => $firstname, 'FIRSTNAME' => $firstname,
'NAME' => $name, 'NAME' => $name,
'COMPANY' => $company, 'COMPANY' => $company,
'SALUTATION' => getCorrectUserSalutation(array( 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation(array(
'firstname' => $firstname, 'firstname' => $firstname,
'name' => $name, 'name' => $name,
'company' => $company 'company' => $company
@@ -696,7 +696,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource
$this->mailer()->Subject = $mail_subject; $this->mailer()->Subject = $mail_subject;
$this->mailer()->AltBody = $mail_body; $this->mailer()->AltBody = $mail_body;
$this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body)); $this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body));
$this->mailer()->addAddress($email, getCorrectUserSalutation(array( $this->mailer()->addAddress($email, \Froxlor\User::getCorrectUserSalutation(array(
'firstname' => $firstname, 'firstname' => $firstname,
'name' => $name, 'name' => $name,
'company' => $company 'company' => $company
@@ -1662,7 +1662,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource
), true, true); ), true, true);
// now, recalculate the resource-usage for the old and the new admin // now, recalculate the resource-usage for the old and the new admin
updateCounters(false); \Froxlor\User::updateCounters(false);
$this->logger()->logAction(ADM_ACTION, LOG_INFO, "[API] moved user '" . $c_result['loginname'] . "' from admin/reseller '" . $c_result['adminname'] . " to admin/reseller '" . $a_result['loginname'] . "'"); $this->logger()->logAction(ADM_ACTION, LOG_INFO, "[API] moved user '" . $c_result['loginname'] . "' from admin/reseller '" . $c_result['adminname'] . " to admin/reseller '" . $a_result['loginname'] . "'");

View File

@@ -74,15 +74,15 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
$path = \Froxlor\FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path); $path = \Froxlor\FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path);
if (! empty($error404path)) { if (! empty($error404path)) {
$error404path = correctErrorDocument($error404path, true); $error404path = $this->correctErrorDocument($error404path, true);
} }
if (! empty($error403path)) { if (! empty($error403path)) {
$error403path = correctErrorDocument($error403path, true); $error403path = $this->correctErrorDocument($error403path, true);
} }
if (! empty($error500path)) { if (! empty($error500path)) {
$error500path = correctErrorDocument($error500path, true); $error500path = $this->correctErrorDocument($error500path, true);
} }
// check for duplicate path // check for duplicate path
@@ -236,15 +236,15 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
$error500path = $this->getParam('error500path', true, $result['error500path']); $error500path = $this->getParam('error500path', true, $result['error500path']);
if (! empty($error404path)) { if (! empty($error404path)) {
$error404path = correctErrorDocument($error404path, true); $error404path = $this->correctErrorDocument($error404path, true);
} }
if (! empty($error403path)) { if (! empty($error403path)) {
$error403path = correctErrorDocument($error403path, true); $error403path = $this->correctErrorDocument($error403path, true);
} }
if (! empty($error500path)) { if (! empty($error500path)) {
$error500path = correctErrorDocument($error500path, true); $error500path = $this->correctErrorDocument($error500path, true);
} }
if (($options_indexes != $result['options_indexes']) || ($error404path != $result['error404path']) || ($error403path != $result['error403path']) || ($error500path != $result['error500path']) || ($options_cgi != $result['options_cgi'])) { if (($options_indexes != $result['options_indexes']) || ($error404path != $result['error404path']) || ($error403path != $result['error403path']) || ($error500path != $result['error500path']) || ($options_cgi != $result['options_cgi'])) {
@@ -378,4 +378,46 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
\Froxlor\System\Cronjob::inserttask('1'); \Froxlor\System\Cronjob::inserttask('1');
return $this->response(200, "successfull", $result); return $this->response(200, "successfull", $result);
} }
/**
* this functions validates a given value as ErrorDocument
* refs #267
*
* @param
* string error-document-string
* @param bool $throw_exception
*
* @return string error-document-string
*
*/
private function correctErrorDocument($errdoc = null, $throw_exception = false)
{
if ($errdoc !== null && $errdoc != '') {
// not a URL
if ((strtoupper(substr($errdoc, 0, 5)) != 'HTTP:' && strtoupper(substr($errdoc, 0, 6)) != 'HTTPS:') || ! \Froxlor\Validate\Form\Strings::validateUrl($errdoc)) {
// a file
if (substr($errdoc, 0, 1) != '"') {
$errdoc = \Froxlor\FileDir::makeCorrectFile($errdoc);
// apache needs a starting-slash (starting at the domains-docroot)
if (! substr($errdoc, 0, 1) == '/') {
$errdoc = '/' . $errdoc;
}
} // a string (check for ending ")
else {
// string won't work for lighty
if (Settings::Get('system.webserver') == 'lighttpd') {
\Froxlor\UI\Response::standard_error('stringerrordocumentnotvalidforlighty', '', $throw_exception);
} elseif (substr($errdoc, - 1) != '"') {
$errdoc .= '"';
}
}
} else {
if (Settings::Get('system.webserver') == 'lighttpd') {
\Froxlor\UI\Response::standard_error('urlerrordocumentnotvalidforlighty', '', $throw_exception);
}
}
}
return $errdoc;
}
} }

View File

@@ -1617,7 +1617,7 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
\Froxlor\System\Cronjob::inserttask('11', $result['domain']); \Froxlor\System\Cronjob::inserttask('11', $result['domain']);
$this->logger()->logAction(ADM_ACTION, LOG_INFO, "[API] deleted domain/subdomains (#" . $result['id'] . ")"); $this->logger()->logAction(ADM_ACTION, LOG_INFO, "[API] deleted domain/subdomains (#" . $result['id'] . ")");
updateCounters(); \Froxlor\User::updateCounters();
\Froxlor\System\Cronjob::inserttask('1'); \Froxlor\System\Cronjob::inserttask('1');
// Using nameserver, insert a task which rebuilds the server config // Using nameserver, insert a task which rebuilds the server config
\Froxlor\System\Cronjob::inserttask('4'); \Froxlor\System\Cronjob::inserttask('4');

View File

@@ -213,7 +213,7 @@ class EmailAccounts extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Reso
$_mailerror = false; $_mailerror = false;
$mailerr_msg = ""; $mailerr_msg = "";
try { try {
$this->mailer()->setFrom($admin['email'], getCorrectUserSalutation($admin)); $this->mailer()->setFrom($admin['email'], \Froxlor\User::getCorrectUserSalutation($admin));
$this->mailer()->Subject = $mail_subject; $this->mailer()->Subject = $mail_subject;
$this->mailer()->AltBody = $mail_body; $this->mailer()->AltBody = $mail_body;
$this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body)); $this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body));
@@ -243,11 +243,11 @@ class EmailAccounts extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Reso
$_mailerror = false; $_mailerror = false;
try { try {
$this->mailer()->setFrom($admin['email'], getCorrectUserSalutation($admin)); $this->mailer()->setFrom($admin['email'], \Froxlor\User::getCorrectUserSalutation($admin));
$this->mailer()->Subject = $mail_subject; $this->mailer()->Subject = $mail_subject;
$this->mailer()->AltBody = $mail_body; $this->mailer()->AltBody = $mail_body;
$this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body)); $this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body));
$this->mailer()->addAddress($idna_convert->encode($alternative_email), getCorrectUserSalutation($customer)); $this->mailer()->addAddress($idna_convert->encode($alternative_email), \Froxlor\User::getCorrectUserSalutation($customer));
$this->mailer()->send(); $this->mailer()->send();
} catch (\PHPMailer\PHPMailer\Exception $e) { } catch (\PHPMailer\PHPMailer\Exception $e) {
$mailerr_msg = $e->errorMessage(); $mailerr_msg = $e->errorMessage();

View File

@@ -187,8 +187,8 @@ class Ftps extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntit
if ($sendinfomail == 1) { if ($sendinfomail == 1) {
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($customer), 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation($customer),
'CUST_NAME' => getCorrectUserSalutation($customer), // < keep this for compatibility 'CUST_NAME' => \Froxlor\User::getCorrectUserSalutation($customer), // < keep this for compatibility
'USR_NAME' => $username, 'USR_NAME' => $username,
'USR_PASS' => $password, 'USR_PASS' => $password,
'USR_PATH' => \Froxlor\FileDir::makeCorrectDir(str_replace($customer['documentroot'], "/", $path)) 'USR_PATH' => \Froxlor\FileDir::makeCorrectDir(str_replace($customer['documentroot'], "/", $path))
@@ -204,7 +204,7 @@ class Ftps extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntit
$this->mailer()->Subject = $mail_subject; $this->mailer()->Subject = $mail_subject;
$this->mailer()->AltBody = $mail_body; $this->mailer()->AltBody = $mail_body;
$this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body)); $this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body));
$this->mailer()->addAddress($customer['email'], getCorrectUserSalutation($customer)); $this->mailer()->addAddress($customer['email'], \Froxlor\User::getCorrectUserSalutation($customer));
$this->mailer()->send(); $this->mailer()->send();
} catch (\PHPMailer\PHPMailer\Exception $e) { } catch (\PHPMailer\PHPMailer\Exception $e) {
$mailerr_msg = $e->errorMessage(); $mailerr_msg = $e->errorMessage();

View File

@@ -127,8 +127,8 @@ class Mysqls extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
$userinfo = $customer; $userinfo = $customer;
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($userinfo), 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation($userinfo),
'CUST_NAME' => getCorrectUserSalutation($userinfo), // < keep this for compatibility 'CUST_NAME' => \Froxlor\User::getCorrectUserSalutation($userinfo), // < keep this for compatibility
'DB_NAME' => $username, 'DB_NAME' => $username,
'DB_PASS' => $password, 'DB_PASS' => $password,
'DB_DESC' => $databasedescription, 'DB_DESC' => $databasedescription,
@@ -147,7 +147,7 @@ class Mysqls extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
$this->mailer()->Subject = $mail_subject; $this->mailer()->Subject = $mail_subject;
$this->mailer()->AltBody = $mail_body; $this->mailer()->AltBody = $mail_body;
$this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body)); $this->mailer()->msgHTML(str_replace("\n", "<br />", $mail_body));
$this->mailer()->addAddress($userinfo['email'], getCorrectUserSalutation($userinfo)); $this->mailer()->addAddress($userinfo['email'], \Froxlor\User::getCorrectUserSalutation($userinfo));
$this->mailer()->send(); $this->mailer()->send();
} catch (\PHPMailer\PHPMailer\Exception $e) { } catch (\PHPMailer\PHPMailer\Exception $e) {
$mailerr_msg = $e->errorMessage(); $mailerr_msg = $e->errorMessage();

View File

@@ -302,7 +302,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
)); ));
if ($_doredirect) { if ($_doredirect) {
addRedirectToDomain($subdomain_id, $redirectcode); \Froxlor\Domain\Domain::addRedirectToDomain($subdomain_id, $redirectcode);
} }
\Froxlor\System\Cronjob::inserttask('1'); \Froxlor\System\Cronjob::inserttask('1');
@@ -470,7 +470,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
$isemaildomain = $this->getBoolParam('isemaildomain', true, $result['isemaildomain']); $isemaildomain = $this->getBoolParam('isemaildomain', true, $result['isemaildomain']);
$openbasedir_path = $this->getParam('openbasedir_path', true, $result['openbasedir_path']); $openbasedir_path = $this->getParam('openbasedir_path', true, $result['openbasedir_path']);
$phpsettingid = $this->getParam('phpsettingid', true, $result['phpsettingid']); $phpsettingid = $this->getParam('phpsettingid', true, $result['phpsettingid']);
$redirectcode = $this->getParam('redirectcode', true, getDomainRedirectId($id)); $redirectcode = $this->getParam('redirectcode', true, \Froxlor\Domain\Domain::getDomainRedirectId($id));
if (Settings::Get('system.use_ssl')) { if (Settings::Get('system.use_ssl')) {
$ssl_redirect = $this->getBoolParam('ssl_redirect', true, $result['ssl_redirect']); $ssl_redirect = $this->getBoolParam('ssl_redirect', true, $result['ssl_redirect']);
$letsencrypt = $this->getBoolParam('letsencrypt', true, $result['letsencrypt']); $letsencrypt = $this->getBoolParam('letsencrypt', true, $result['letsencrypt']);
@@ -586,7 +586,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
// handle redirect // handle redirect
if ($_doredirect) { if ($_doredirect) {
updateRedirectOfDomain($id, $redirectcode); \Froxlor\Domain\Domain::updateRedirectOfDomain($id, $redirectcode);
} }
if ($path != $result['documentroot'] || $isemaildomain != $result['isemaildomain'] || $wwwserveralias != $result['wwwserveralias'] || $iswildcarddomain != $result['iswildcarddomain'] || $aliasdomain != $result['aliasdomain'] || $openbasedir_path != $result['openbasedir_path'] || $ssl_redirect != $result['ssl_redirect'] || $letsencrypt != $result['letsencrypt'] || $hsts_maxage != $result['hsts'] || $hsts_sub != $result['hsts_sub'] || $hsts_preload != $result['hsts_preload'] || $phpsettingid != $result['phpsettingid']) { if ($path != $result['documentroot'] || $isemaildomain != $result['isemaildomain'] || $wwwserveralias != $result['wwwserveralias'] || $iswildcarddomain != $result['iswildcarddomain'] || $aliasdomain != $result['aliasdomain'] || $openbasedir_path != $result['openbasedir_path'] || $ssl_redirect != $result['ssl_redirect'] || $letsencrypt != $result['letsencrypt'] || $hsts_maxage != $result['hsts'] || $hsts_sub != $result['hsts_sub'] || $hsts_preload != $result['hsts_preload'] || $phpsettingid != $result['phpsettingid']) {
@@ -855,7 +855,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
{ {
// check whether an URL was specified // check whether an URL was specified
$_doredirect = false; $_doredirect = false;
if (! empty($url) && validateUrl($url)) { if (! empty($url) && \Froxlor\Validate\Form\Strings::validateUrl($url)) {
$path = $url; $path = $url;
$_doredirect = true; $_doredirect = true;
} else { } else {
@@ -863,7 +863,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
} }
// check whether path is a real path // check whether path is a real path
if (! preg_match('/^https?\:\/\//', $path) || ! validateUrl($path)) { if (! preg_match('/^https?\:\/\//', $path) || ! \Froxlor\Validate\Form\Strings::validateUrl($path)) {
if (strstr($path, ":") !== false) { if (strstr($path, ":") !== false) {
\Froxlor\UI\Response::standard_error('pathmaynotcontaincolon', '', true); \Froxlor\UI\Response::standard_error('pathmaynotcontaincolon', '', true);
} }

View File

@@ -144,7 +144,7 @@ class Apache extends HttpConfigBase
foreach ($statusCodes as $statusCode) { foreach ($statusCodes as $statusCode) {
if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') { if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') {
$defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode); $defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode);
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') { if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') {
$defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"'; $defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"';
} }
@@ -1025,7 +1025,7 @@ class Apache extends HttpConfigBase
$corrected_docroot = $domain['documentroot']; $corrected_docroot = $domain['documentroot'];
// Get domain's redirect code // Get domain's redirect code
$code = getDomainRedirectCode($domain['id']); $code = \Froxlor\Domain\Domain::getDomainRedirectCode($domain['id']);
$modrew_red = ''; $modrew_red = '';
if ($code != '') { if ($code != '') {
$modrew_red = ' [R=' . $code . ';L,NE]'; $modrew_red = ' [R=' . $code . ';L,NE]';
@@ -1190,7 +1190,7 @@ class Apache extends HttpConfigBase
foreach ($statusCodes as $statusCode) { foreach ($statusCodes as $statusCode) {
if (isset($row_diroptions['error' . $statusCode . 'path']) && $row_diroptions['error' . $statusCode . 'path'] != '') { if (isset($row_diroptions['error' . $statusCode . 'path']) && $row_diroptions['error' . $statusCode . 'path'] != '') {
$defhandler = $row_diroptions['error' . $statusCode . 'path']; $defhandler = $row_diroptions['error' . $statusCode . 'path'];
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') { if (substr($defhandler, 0, 1) != '"' && substr($defhandler, - 1, 1) != '"') {
$defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"'; $defhandler = '"' . \Froxlor\FileDir::makeCorrectFile($defhandler) . '"';
} }

View File

@@ -316,7 +316,7 @@ class Lighttpd extends HttpConfigBase
} }
$defhandler = Settings::Get('defaultwebsrverrhandler.err404'); $defhandler = Settings::Get('defaultwebsrverrhandler.err404');
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
} }
$this->lighttpd_data[$vhost_filename] = 'server.error-handler-404 = "' . $defhandler . '"'; $this->lighttpd_data[$vhost_filename] = 'server.error-handler-404 = "' . $defhandler . '"';
@@ -483,7 +483,7 @@ class Lighttpd extends HttpConfigBase
$uri = $domain['documentroot']; $uri = $domain['documentroot'];
// Get domain's redirect code // Get domain's redirect code
$code = getDomainRedirectCode($domain['id']); $code = \Froxlor\Domain\Domain::getDomainRedirectCode($domain['id']);
$vhost_content .= ' url.redirect-code = ' . $code . "\n"; $vhost_content .= ' url.redirect-code = ' . $code . "\n";
$vhost_content .= ' url.redirect = (' . "\n"; $vhost_content .= ' url.redirect = (' . "\n";
@@ -701,7 +701,7 @@ class Lighttpd extends HttpConfigBase
if (! empty($row['error404path'])) { if (! empty($row['error404path'])) {
$defhandler = $row['error404path']; $defhandler = $row['error404path'];
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($domain['documentroot'] . '/' . $defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($domain['documentroot'] . '/' . $defhandler);
} }
$error_string .= ' server.error-handler-404 = "' . $defhandler . '"' . "\n\n"; $error_string .= ' server.error-handler-404 = "' . $defhandler . '"' . "\n\n";

View File

@@ -116,7 +116,7 @@ class Nginx extends HttpConfigBase
foreach ($statusCodes as $statusCode) { foreach ($statusCodes as $statusCode) {
if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') { if (Settings::Get('defaultwebsrverrhandler.err' . $statusCode) != '') {
$defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode); $defhandler = Settings::Get('defaultwebsrverrhandler.err' . $statusCode);
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
} }
$this->nginx_data[$vhosts_filename] .= 'error_page ' . $statusCode . ' ' . $defhandler . ';' . "\n"; $this->nginx_data[$vhosts_filename] .= 'error_page ' . $statusCode . ' ' . $defhandler . ';' . "\n";
@@ -499,7 +499,7 @@ class Nginx extends HttpConfigBase
} }
// Get domain's redirect code // Get domain's redirect code
$code = getDomainRedirectCode($domain['id']); $code = \Froxlor\Domain\Domain::getDomainRedirectCode($domain['id']);
$vhost_content .= "\t" . 'if ($request_uri !~ ^/.well-known/acme-challenge/[-\w]+$) {' . "\n"; $vhost_content .= "\t" . 'if ($request_uri !~ ^/.well-known/acme-challenge/[-\w]+$) {' . "\n";
$vhost_content .= "\t\t" . 'return ' . $code . ' ' . $uri . '$request_uri;' . "\n"; $vhost_content .= "\t\t" . 'return ' . $code . ' ' . $uri . '$request_uri;' . "\n";
@@ -703,7 +703,7 @@ class Nginx extends HttpConfigBase
while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) { while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
if (! empty($row['error404path'])) { if (! empty($row['error404path'])) {
$defhandler = $row['error404path']; $defhandler = $row['error404path'];
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
} }
$path_options .= "\t" . 'error_page 404 ' . $defhandler . ';' . "\n"; $path_options .= "\t" . 'error_page 404 ' . $defhandler . ';' . "\n";
@@ -711,7 +711,7 @@ class Nginx extends HttpConfigBase
if (! empty($row['error403path'])) { if (! empty($row['error403path'])) {
$defhandler = $row['error403path']; $defhandler = $row['error403path'];
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
} }
$path_options .= "\t" . 'error_page 403 ' . $defhandler . ';' . "\n"; $path_options .= "\t" . 'error_page 403 ' . $defhandler . ';' . "\n";
@@ -719,7 +719,7 @@ class Nginx extends HttpConfigBase
if (! empty($row['error500path'])) { if (! empty($row['error500path'])) {
$defhandler = $row['error500path']; $defhandler = $row['error500path'];
if (! validateUrl($defhandler)) { if (! \Froxlor\Validate\Form\Strings::validateUrl($defhandler)) {
$defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler); $defhandler = \Froxlor\FileDir::makeCorrectFile($defhandler);
} }
$path_options .= "\t" . 'error_page 500 502 503 504 ' . $defhandler . ';' . "\n"; $path_options .= "\t" . 'error_page 500 502 503 504 ' . $defhandler . ';' . "\n";

View File

@@ -63,7 +63,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron
'company' => $row['company'] 'company' => $row['company']
); );
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($rep_userinfo), 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation($rep_userinfo),
'NAME' => $row['name'], // < keep this for compatibility 'NAME' => $row['name'], // < keep this for compatibility
'TRAFFIC' => round(($row['traffic'] / 1024), 2), /* traffic is stored in KB, template uses MB */ 'TRAFFIC' => round(($row['traffic'] / 1024), 2), /* traffic is stored in KB, template uses MB */
'TRAFFICUSED' => round(($row['traffic_used'] / 1024), 2), /* traffic is stored in KB, template uses MB */ 'TRAFFICUSED' => round(($row['traffic_used'] / 1024), 2), /* traffic is stored in KB, template uses MB */
@@ -362,7 +362,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron
'company' => $row['company'] 'company' => $row['company']
); );
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($rep_userinfo), 'SALUTATION' => \Froxlor\User::getCorrectUserSalutation($rep_userinfo),
'NAME' => $row['name'], // < keep this for compatibility 'NAME' => $row['name'], // < keep this for compatibility
'DISKAVAILABLE' => round(($row['diskspace'] / 1024), 2), /* traffic is stored in KB, template uses MB */ 'DISKAVAILABLE' => round(($row['diskspace'] / 1024), 2), /* traffic is stored in KB, template uses MB */
'DISKUSED' => round($row['diskspace_used'] / 1024, 2), /* traffic is stored in KB, template uses MB */ 'DISKUSED' => round($row['diskspace_used'] / 1024, 2), /* traffic is stored in KB, template uses MB */

View File

@@ -6,6 +6,176 @@ use Froxlor\Database\Database;
class Domain class Domain
{ {
/**
* return an array of all enabled redirect-codes
*
* @return array array of enabled redirect-codes
*/
public static function getRedirectCodesArray()
{
$sql = "SELECT * FROM `" . TABLE_PANEL_REDIRECTCODES . "` WHERE `enabled` = '1' ORDER BY `id` ASC";
$result_stmt = Database::query($sql);
$codes = array();
while ($rc = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
$codes[] = $rc;
}
return $codes;
}
/**
* return an array of all enabled redirect-codes
* for the settings form
*
* @param bool $add_desc
* optional, default true, add the code-description
*
* @return array array of enabled redirect-codes
*/
public static function getRedirectCodes($add_desc = true)
{
global $lng;
$sql = "SELECT * FROM `" . TABLE_PANEL_REDIRECTCODES . "` WHERE `enabled` = '1' ORDER BY `id` ASC";
$result_stmt = Database::query($sql);
$codes = array();
while ($rc = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
$codes[$rc['id']] = $rc['code'];
if ($add_desc) {
$codes[$rc['id']] .= ' (' . $lng['redirect_desc'][$rc['desc']] . ')';
}
}
return $codes;
}
/**
* returns the redirect-code for a given
* domain-id
*
* @param integer $domainid
* id of the domain
*
* @return string redirect-code
*/
public static function getDomainRedirectCode($domainid = 0)
{
// get system default
$default = '301';
if (\Froxlor\Settings::Get('customredirect.enabled') == '1') {
$all_codes = self::getRedirectCodes(false);
$_default = $all_codes[\Froxlor\Settings::Get('customredirect.default')];
$default = ($_default == '---') ? $default : $_default;
}
$code = $default;
if ($domainid > 0) {
$result_stmt = Database::prepare("
SELECT `r`.`code` as `redirect`
FROM `" . TABLE_PANEL_REDIRECTCODES . "` `r`, `" . TABLE_PANEL_DOMAINREDIRECTS . "` `rc`
WHERE `r`.`id` = `rc`.`rid` and `rc`.`did` = :domainid
");
$result = Database::pexecute_first($result_stmt, array(
'domainid' => $domainid
));
if (is_array($result) && isset($result['redirect'])) {
$code = ($result['redirect'] == '---') ? $default : $result['redirect'];
}
}
return $code;
}
/**
* returns the redirect-id for a given
* domain-id
*
* @param integer $domainid
* id of the domain
*
* @return integer redirect-code-id
*/
public static function getDomainRedirectId($domainid = 0)
{
$code = 1;
if ($domainid > 0) {
$result_stmt = Database::prepare("
SELECT `r`.`id` as `redirect`
FROM `" . TABLE_PANEL_REDIRECTCODES . "` `r`, `" . TABLE_PANEL_DOMAINREDIRECTS . "` `rc`
WHERE `r`.`id` = `rc`.`rid` and `rc`.`did` = :domainid
");
$result = Database::pexecute_first($result_stmt, array(
'domainid' => $domainid
));
if (is_array($result) && isset($result['redirect'])) {
$code = (int) $result['redirect'];
}
}
return $code;
}
/**
* adds a redirectcode for a domain
*
* @param integer $domainid
* id of the domain to add the code for
* @param integer $redirect
* selected redirect-id
*
* @return null
*/
public static function addRedirectToDomain($domainid = 0, $redirect = 1)
{
if ($domainid > 0) {
$ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_PANEL_DOMAINREDIRECTS . "` SET `rid` = :rid, `did` = :did
");
Database::pexecute($ins_stmt, array(
'rid' => $redirect,
'did' => $domainid
));
}
}
/**
* updates the redirectcode of a domain
* if redirect-code is false, nothing happens
*
* @param integer $domainid
* id of the domain to update
* @param integer $redirect
* selected redirect-id or false
*
* @return null
*/
public static function updateRedirectOfDomain($domainid = 0, $redirect = false)
{
if ($redirect == false) {
return;
}
if ($domainid > 0) {
$del_stmt = Database::prepare("
DELETE FROM `" . TABLE_PANEL_DOMAINREDIRECTS . "` WHERE `did` = :domainid
");
Database::pexecute($del_stmt, array(
'domainid' => $domainid
));
$ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_PANEL_DOMAINREDIRECTS . "` SET `rid` = :rid, `did` = :did
");
Database::pexecute($ins_stmt, array(
'rid' => $redirect,
'did' => $domainid
));
}
}
/** /**
* check whether a domain has subdomains added as full-domains * check whether a domain has subdomains added as full-domains
* #329 * #329

View File

@@ -4,6 +4,185 @@ namespace Froxlor;
class PhpHelper class PhpHelper
{ {
/**
* Wrapper around htmlentities to handle arrays, with the advantage that you
* can select which fields should be handled by htmlentities
*
* @param array $subject
* The subject array
* @param string $fields
* The fields which should be checked for, separated by spaces
* @param int $quote_style
* See php documentation about this
* @param string $charset
* See php documentation about this
*
* @return array The array with htmlentitie'd strings
* @author Florian Lippert <flo@syscp.org>
*/
public static function htmlentities_array($subject, $fields = '', $quote_style = ENT_QUOTES, $charset = 'UTF-8')
{
if (is_array($subject)) {
if (! is_array($fields)) {
$fields = array_trim(explode(' ', $fields));
}
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
// Just call ourselve to manage multi-dimensional arrays
$subject[$field] = self::htmlentities_array($subject[$field], $fields, $quote_style, $charset);
}
}
} else {
$subject = htmlentities($subject, $quote_style, $charset);
}
return $subject;
}
/**
* Replaces Strings in an array, with the advantage that you
* can select which fields should be str_replace'd
*
* @param
* mixed String or array of strings to search for
* @param
* mixed String or array to replace with
* @param
* array The subject array
* @param
* string The fields which should be checked for, separated by spaces
* @return array The str_replace'd array
* @author Florian Lippert <flo@syscp.org>
*/
public static function str_replace_array($search, $replace, $subject, $fields = '')
{
if (is_array($subject)) {
$fields = array_trim(explode(' ', $fields));
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
$subject[$field] = str_replace($search, $replace, $subject[$field]);
}
}
} else {
$subject = str_replace($search, $replace, $subject);
}
return $subject;
}
/**
* froxlor php error handler
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @param array $errcontext
*
* @return void|boolean
*/
public static function phpErrHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
if (! (error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
if (! isset($_SERVER['SHELL']) || (isset($_SERVER['SHELL']) && $_SERVER['SHELL'] == '')) {
global $theme;
// fallback
if (empty($theme)) {
$theme = "Sparkle";
}
// prevent possible file-path-disclosure
$errfile = str_replace(\Froxlor\Froxlor::getInstallDir(), "", $errfile);
// if we're not on the shell, output a nicer error-message
$err_hint = file_get_contents(\Froxlor\Froxlor::getInstallDir() . '/templates/' . $theme . '/misc/phperrornice.tpl');
// replace values
$err_hint = str_replace("<TEXT>", '#' . $errno . ' ' . $errstr, $err_hint);
$err_hint = str_replace("<DEBUG>", $errfile . ':' . $errline, $err_hint);
// show
echo $err_hint;
// return true to ignore php standard error-handler
return true;
}
// of on shell, use the php standard error-handler
return false;
}
public static function loadConfigArrayDir()
{
// Workaround until we use gettext
global $lng, $theme;
// we now use dynamic function parameters
// so we can read from more than one directory
// and still be valid for old calls
$numargs = func_num_args();
if ($numargs <= 0) {
return null;
}
// variable that holds all dirs that will
// be parsed for inclusion
$configdirs = array();
// if one of the parameters is an array
// we assume that this is a list of
// setting-groups to be selected
$selection = null;
for ($x = 0; $x < $numargs; $x ++) {
$arg = func_get_arg($x);
if (is_array($arg) && isset($arg[0])) {
$selection = $arg;
} else {
$configdirs[] = $arg;
}
}
$data = array();
$data_files = array();
$has_data = false;
foreach ($configdirs as $data_dirname) {
if (is_dir($data_dirname)) {
$data_dirhandle = opendir($data_dirname);
while (false !== ($data_filename = readdir($data_dirhandle))) {
if ($data_filename != '.' && $data_filename != '..' && $data_filename != '' && substr($data_filename, - 4) == '.php') {
$data_files[] = $data_dirname . $data_filename;
}
}
$has_data = true;
}
}
if ($has_data) {
sort($data_files);
foreach ($data_files as $data_filename) {
$data = array_merge_recursive($data, include ($data_filename));
}
}
// if we have specific setting-groups
// to select, we'll handle this here
// (this is for multiserver-client settings)
$_data = array();
if ($selection != null && is_array($selection) && isset($selection[0])) {
$_data['groups'] = array();
foreach ($data['groups'] as $group => $data) {
if (in_array($group, $selection)) {
$_data['groups'][$group] = $data;
}
}
$data = $_data;
}
return $data;
}
/** /**
* ipv6 aware gethostbynamel function * ipv6 aware gethostbynamel function
* *

View File

@@ -4,6 +4,106 @@ namespace Froxlor\UI;
class HTML class HTML
{ {
/**
* Build Navigation Sidebar
*
* @param
* array navigation data
* @param
* array userinfo the userinfo of the user
* @return string the content of the navigation bar
*
* @author Florian Lippert <flo@syscp.org>
*/
public static function buildNavigation($navigation, $userinfo)
{
global $theme;
$returnvalue = '';
// sanitize user-given input (url-manipulation)
if (isset($_GET['page']) && is_array($_GET['page'])) {
$_GET['page'] = (string) $_GET['page'][0];
}
if (isset($_GET['action']) && is_array($_GET['action'])) {
$_GET['action'] = (string) $_GET['action'][0];
}
foreach ($navigation as $box) {
if ((! isset($box['show_element']) || $box['show_element'] === true) && (! isset($box['required_resources']) || $box['required_resources'] == '' || (isset($userinfo[$box['required_resources']]) && ((int) $userinfo[$box['required_resources']] > 0 || $userinfo[$box['required_resources']] == '-1')))) {
$navigation_links = '';
foreach ($box['elements'] as $element_id => $element) {
if ((! isset($element['show_element']) || $element['show_element'] === true) && (! isset($element['required_resources']) || $element['required_resources'] == '' || (isset($userinfo[$element['required_resources']]) && ((int) $userinfo[$element['required_resources']] > 0 || $userinfo[$element['required_resources']] == '-1')))) {
$target = '';
$active = '';
$navurl = '#';
if (isset($element['url']) && trim($element['url']) != '') {
// append sid only to local
if (! preg_match('/^https?\:\/\//', $element['url']) && (isset($userinfo['hash']) && $userinfo['hash'] != '')) {
// generate sid with ? oder &
if (strpos($element['url'], '?') !== false) {
$element['url'] .= '&s=' . $userinfo['hash'];
} else {
$element['url'] .= '?s=' . $userinfo['hash'];
}
}
if (isset($element['new_window']) && $element['new_window'] == true) {
$target = ' target="_blank"';
}
if (isset($_GET['page']) && substr_count($element['url'], "page=" . $_GET['page']) > 0 && substr_count($element['url'], basename($_SERVER["SCRIPT_FILENAME"])) > 0 && isset($_GET['action']) && substr_count($element['url'], "action=" . $_GET['action']) > 0) {
$active = ' active';
} elseif (isset($_GET['page']) && substr_count($element['url'], "page=" . $_GET['page']) > 0 && substr_count($element['url'], basename($_SERVER["SCRIPT_FILENAME"])) > 0 && substr_count($element['url'], "action=") == 0 && ! isset($_GET['action'])) {
$active = ' active';
}
$navurl = htmlspecialchars($element['url']);
$navlabel = $element['label'];
} else {
$navlabel = $element['label'];
}
eval("\$navigation_links .= \"" . \Froxlor\UI\Template::getTemplate("navigation_link", 1) . "\";");
}
}
if ($navigation_links != '') {
$target = '';
if (isset($box['url']) && trim($box['url']) != '') {
// append sid only to local
if (! preg_match('/^https?\:\/\//', $box['url']) && (isset($userinfo['hash']) && $userinfo['hash'] != '')) {
// generate sid with ? oder &
if (strpos($box['url'], '?') !== false) {
$box['url'] .= '&s=' . $userinfo['hash'];
} else {
$box['url'] .= '?s=' . $userinfo['hash'];
}
}
if (isset($box['new_window']) && $box['new_window'] == true) {
$target = ' target="_blank"';
}
$navurl = htmlspecialchars($box['url']);
$navlabel = $box['label'];
} else {
$navurl = "#";
$navlabel = $box['label'];
}
eval("\$returnvalue .= \"" . \Froxlor\UI\Template::getTemplate("navigation_element", 1) . "\";");
}
}
}
return $returnvalue;
}
/** /**
* Return HTML Code for a checkbox * Return HTML Code for a checkbox
* *

346
lib/Froxlor/User.php Normal file
View File

@@ -0,0 +1,346 @@
<?php
namespace Froxlor;
use Froxlor\Database\Database;
class User
{
/**
* Returns full style user details "Name, Firstname | Company"
*
* @param
* array An array with keys firstname, name and company
* @return string The full details
*
* @author Florian Lippert <flo@syscp.org>
*/
public static function getCorrectFullUserDetails($userinfo)
{
$returnval = '';
if (isset($userinfo['firstname']) && isset($userinfo['name']) && isset($userinfo['company'])) {
if ($userinfo['company'] == '') {
$returnval = $userinfo['name'] . ', ' . $userinfo['firstname'];
} else {
if ($userinfo['name'] != '' && $userinfo['firstname'] != '') {
$returnval = $userinfo['name'] . ', ' . $userinfo['firstname'] . ' | ' . $userinfo['company'];
} else {
$returnval = $userinfo['company'];
}
}
} elseif (isset($userinfo['name'])) {
$returnval = $userinfo['name'];
}
return $returnval;
}
/**
* Returns correct user salutation, either "Firstname Name" or "Company"
*
* @param
* array An array with keys firstname, name and company
* @return string The correct salutation
*
* @author Florian Lippert <flo@syscp.org>
*/
public static function getCorrectUserSalutation($userinfo)
{
$returnval = '';
if (isset($userinfo['firstname']) && isset($userinfo['name']) && isset($userinfo['company'])) {
// Always prefer firstname name
if ($userinfo['company'] != '' && $userinfo['name'] == '' && $userinfo['firstname'] == '') {
$returnval = $userinfo['company'];
} else {
$returnval = $userinfo['firstname'] . ' ' . $userinfo['name'];
}
}
return $returnval;
}
public static function getLanguages()
{
$result_stmt = \Froxlor\Database\Database::query("SELECT * FROM `" . TABLE_PANEL_LANGUAGE . "` ");
$languages_array = array();
while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
if (! isset($languages_array[$row['language']]) && ! in_array($row['language'], $languages_array)) {
$languages_array[$row['language']] = html_entity_decode($row['language']);
}
}
return $languages_array;
}
/**
* Function which updates all counters of used ressources in panel_admins and panel_customers
*
* @param
* bool Set to true to get an array with debug information
* @return array Contains debug information if parameter 'returndebuginfo' is set to true
*
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
*/
public static function updateCounters($returndebuginfo = false)
{
$returnval = array();
if ($returndebuginfo === true) {
$returnval = array(
'admins' => array(),
'customers' => array()
);
}
// Customers
$customers_stmt = Database::prepare('SELECT * FROM `' . TABLE_PANEL_CUSTOMERS . '` ORDER BY `customerid`');
Database::pexecute($customers_stmt);
$admin_resources = array();
while ($customer = $customers_stmt->fetch(\PDO::FETCH_ASSOC)) {
$cur_adm = $customer['adminid'];
// initialize admin-resources array for admin $customer['adminid']
if (! isset($admin_resources[$cur_adm])) {
$admin_resources[$cur_adm] = array();
}
self::_addResourceCountEx($admin_resources[$cur_adm], $customer, 'diskspace_used', 'diskspace');
self::_addResourceCountEx($admin_resources[$cur_adm], $customer, 'traffic_used', 'traffic_used'); // !!! yes, USED and USED
foreach (array(
'mysqls',
'ftps',
'emails',
'email_accounts',
'email_forwarders',
'email_quota',
'subdomains'
) as $field) {
_addResourceCount($admin_resources[$cur_adm], $customer, $field . '_used', $field);
}
$customer_mysqls_stmt = Database::prepare('SELECT COUNT(*) AS `number_mysqls` FROM `' . TABLE_PANEL_DATABASES . '`
WHERE `customerid` = :cid');
$customer_mysqls = Database::pexecute_first($customer_mysqls_stmt, array(
"cid" => $customer['customerid']
));
$customer['mysqls_used_new'] = (int) $customer_mysqls['number_mysqls'];
$customer_emails_stmt = Database::prepare('SELECT COUNT(*) AS `number_emails` FROM `' . TABLE_MAIL_VIRTUAL . '`
WHERE `customerid` = :cid');
$customer_emails = Database::pexecute_first($customer_emails_stmt, array(
"cid" => $customer['customerid']
));
$customer['emails_used_new'] = (int) $customer_emails['number_emails'];
$customer_emails_result_stmt = Database::prepare('SELECT `email`, `email_full`, `destination`, `popaccountid` AS `number_email_forwarders` FROM `' . TABLE_MAIL_VIRTUAL . '`
WHERE `customerid` = :cid');
Database::pexecute($customer_emails_result_stmt, array(
"cid" => $customer['customerid']
));
$customer_email_forwarders = 0;
$customer_email_accounts = 0;
while ($customer_emails_row = $customer_emails_result_stmt->fetch(\PDO::FETCH_ASSOC)) {
if ($customer_emails_row['destination'] != '') {
$customer_emails_row['destination'] = explode(' ', \Froxlor\FileDir::makeCorrectDestination($customer_emails_row['destination']));
$customer_email_forwarders += count($customer_emails_row['destination']);
if (in_array($customer_emails_row['email_full'], $customer_emails_row['destination'])) {
$customer_email_forwarders -= 1;
$customer_email_accounts ++;
}
}
}
$customer['email_accounts_used_new'] = $customer_email_accounts;
$customer['email_forwarders_used_new'] = $customer_email_forwarders;
$customer_ftps_stmt = Database::prepare('SELECT COUNT(*) AS `number_ftps` FROM `' . TABLE_FTP_USERS . '` WHERE `customerid` = :cid');
$customer_ftps = Database::pexecute_first($customer_ftps_stmt, array(
"cid" => $customer['customerid']
));
$customer['ftps_used_new'] = ((int) $customer_ftps['number_ftps'] - 1);
$customer_subdomains_stmt = Database::prepare('SELECT COUNT(*) AS `number_subdomains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `customerid` = :cid AND `parentdomainid` <> "0"');
$customer_subdomains = Database::pexecute_first($customer_subdomains_stmt, array(
"cid" => $customer['customerid']
));
$customer['subdomains_used_new'] = (int) $customer_subdomains['number_subdomains'];
$customer_email_quota_stmt = Database::prepare('SELECT SUM(`quota`) AS `email_quota` FROM `' . TABLE_MAIL_USERS . '` WHERE `customerid` = :cid');
$customer_email_quota = Database::pexecute_first($customer_email_quota_stmt, array(
"cid" => $customer['customerid']
));
$customer['email_quota_used_new'] = (int) $customer_email_quota['email_quota'];
$stmt = Database::prepare('UPDATE `' . TABLE_PANEL_CUSTOMERS . '`
SET `mysqls_used` = :mysqls_used,
`emails_used` = :emails_used,
`email_accounts_used` = :email_accounts_used,
`email_forwarders_used` = :email_forwarders_used,
`email_quota_used` = :email_quota_used,
`ftps_used` = :ftps_used,
`subdomains_used` = :subdomains_used
WHERE `customerid` = :cid');
$params = array(
"mysqls_used" => $customer['mysqls_used_new'],
"emails_used" => $customer['emails_used_new'],
"email_accounts_used" => $customer['email_accounts_used_new'],
"email_forwarders_used" => $customer['email_forwarders_used_new'],
"email_quota_used" => $customer['email_quota_used_new'],
"ftps_used" => $customer['ftps_used_new'],
"subdomains_used" => $customer['subdomains_used_new'],
"cid" => $customer['customerid']
);
Database::pexecute($stmt, $params);
if ($returndebuginfo === true) {
$returnval['customers'][$customer['customerid']] = $customer;
}
}
// Admins
$admins_stmt = Database::prepare('SELECT * FROM `' . TABLE_PANEL_ADMINS . '` ORDER BY `adminid`');
Database::pexecute($admins_stmt, array());
while ($admin = $admins_stmt->fetch(\PDO::FETCH_ASSOC)) {
$admin_customers_stmt = Database::prepare('SELECT COUNT(*) AS `number_customers` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `adminid` = :aid');
$admin_customers = Database::pexecute_first($admin_customers_stmt, array(
"aid" => $admin['adminid']
));
$admin['customers_used_new'] = $admin_customers['number_customers'];
$admin_domains_stmt = Database::prepare('SELECT COUNT(*) AS `number_domains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `adminid` = :aid AND `isemaildomain` = "1"');
$admin_domains = Database::pexecute_first($admin_domains_stmt, array(
"aid" => $admin['adminid']
));
$admin['domains_used_new'] = $admin_domains['number_domains'];
$cur_adm = $admin['adminid'];
if (! isset($admin_resources[$cur_adm])) {
$admin_resources[$cur_adm] = array();
}
foreach (array(
'diskspace_used',
'traffic_used',
'mysqls_used',
'ftps_used',
'emails_used',
'email_accounts_used',
'email_forwarders_used',
'email_quota_used',
'subdomains_used'
) as $field) {
self::_initArrField($field, $admin_resources[$cur_adm], 0);
$admin[$field . '_new'] = $admin_resources[$cur_adm][$field];
}
$stmt = Database::prepare('UPDATE `' . TABLE_PANEL_ADMINS . '`
SET `customers_used` = :customers_used,
`domains_used` = :domains_used,
`diskspace_used` = :diskspace_used,
`mysqls_used` = :mysqls_used,
`emails_used` = :emails_used,
`email_accounts_used` = :email_accounts_used,
`email_forwarders_used` = :email_forwarders_used,
`email_quota_used` = :email_quota_used,
`ftps_used` = :ftps_used,
`subdomains_used` = :subdomains_used,
`traffic_used` = :traffic_used
WHERE `adminid` = :aid');
$params = array(
"customers_used" => $admin['customers_used_new'],
"domains_used" => $admin['domains_used_new'],
"diskspace_used" => $admin['diskspace_used_new'],
"mysqls_used" => $admin['mysqls_used_new'],
"emails_used" => $admin['emails_used_new'],
"email_accounts_used" => $admin['email_accounts_used_new'],
"email_forwarders_used" => $admin['email_forwarders_used_new'],
"email_quota_used" => $admin['email_quota_used_new'],
"ftps_used" => $admin['ftps_used_new'],
"subdomains_used" => $admin['subdomains_used_new'],
"traffic_used" => $admin['traffic_used_new'],
"aid" => $admin['adminid']
);
Database::pexecute($stmt, $params);
if ($returndebuginfo === true) {
$returnval['admins'][$admin['adminid']] = $admin;
}
}
return $returnval;
}
/**
* if the customer does not have unlimited resources, add the used resources
* to the admin-resource-counter
*
* @param array $arr
* reference
* @param array $customer_arr
* @param string $used_field
* @param string $field
*
* @return void
*/
private static function _addResourceCount(&$arr, $customer_arr, $used_field = null, $field = null)
{
self::_initArrField($used_field, $arr, 0);
if ($customer_arr[$field] != '-1') {
$arr[$used_field] += intval($customer_arr[$used_field]);
}
}
/**
* if the customer does not have unlimited resources, add the used resources
* to the admin-resource-counter
* Special function wrapper for diskspace and traffic as they need to
* be calculated otherwise to get the -1 for unlimited
*
* @param array $arr
* reference
* @param array $customer_arr
* @param string $used_field
* @param string $field
*
* @return void
*/
private static function _addResourceCountEx(&$arr, $customer_arr, $used_field = null, $field = null)
{
self::_initArrField($used_field, $arr, 0);
if ($field == 'diskspace' && ($customer_arr[$field] / 1024) != '-1') {
$arr[$used_field] += intval($customer_arr[$used_field]);
} elseif ($field == 'traffic_used') {
$arr[$used_field] += intval($customer_arr[$used_field]);
}
}
/**
* initialize a field-value of an array if not yet initialized
*
* @param string $field
* @param array $arr
* reference
* @param int $init_value
*
* @return void
*/
private static function _initArrField($field = null, &$arr, $init_value = 0)
{
if (! isset($arr[$field])) {
$arr[$field] = $init_value;
}
}
}

View File

@@ -45,7 +45,7 @@ function validateFormFieldHiddenString($fieldname, $fielddata, $newfieldvalue)
if (isset($fielddata['string_type']) && $fielddata['string_type'] == 'mail') { if (isset($fielddata['string_type']) && $fielddata['string_type'] == 'mail') {
$returnvalue = (filter_var($newfieldvalue, FILTER_VALIDATE_EMAIL) == $newfieldvalue); $returnvalue = (filter_var($newfieldvalue, FILTER_VALIDATE_EMAIL) == $newfieldvalue);
} elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'url') { } elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'url') {
$returnvalue = validateUrl($newfieldvalue); $returnvalue = \Froxlor\Validate\Form\Strings::validateUrl($newfieldvalue);
} elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'dir') { } elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'dir') {
// add trailing slash to validate path if needed // add trailing slash to validate path if needed
// refs #331 // refs #331
@@ -83,4 +83,4 @@ function validateFormFieldHiddenString($fieldname, $fielddata, $newfieldvalue)
} else { } else {
return $returnvalue; return $returnvalue;
} }
} }

View File

@@ -1,59 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* this functions validates a given value as ErrorDocument
* refs #267
*
* @param
* string error-document-string
* @param bool $throw_exception
*
* @return string error-document-string
*
*/
function correctErrorDocument($errdoc = null, $throw_exception = false)
{
$idna_convert = new idna_convert_wrapper();
if ($errdoc !== null && $errdoc != '') {
// not a URL
if ((strtoupper(substr($errdoc, 0, 5)) != 'HTTP:' && strtoupper(substr($errdoc, 0, 6)) != 'HTTPS:') || ! validateUrl($errdoc)) {
// a file
if (substr($errdoc, 0, 1) != '"') {
$errdoc = \Froxlor\FileDir::makeCorrectFile($errdoc);
// apache needs a starting-slash (starting at the domains-docroot)
if (! substr($errdoc, 0, 1) == '/') {
$errdoc = '/' . $errdoc;
}
} // a string (check for ending ")
else {
// string won't work for lighty
if (Settings::Get('system.webserver') == 'lighttpd') {
\Froxlor\UI\Response::standard_error('stringerrordocumentnotvalidforlighty', '', $throw_exception);
} elseif (substr($errdoc, - 1) != '"') {
$errdoc .= '"';
}
}
} else {
if (Settings::Get('system.webserver') == 'lighttpd') {
\Froxlor\UI\Response::standard_error('urlerrordocumentnotvalidforlighty', '', $throw_exception);
}
}
}
return $errdoc;
}

View File

@@ -1,31 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function getLanguages()
{
$result_stmt = Database::query("SELECT * FROM `" . TABLE_PANEL_LANGUAGE . "` ");
$languages_array = array();
while ($row = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
if (! isset($languages_array[$row['language']]) && ! in_array($row['language'], $languages_array)) {
$languages_array[$row['language']] = html_entity_decode($row['language']);
}
}
return $languages_array;
}

View File

@@ -1,87 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
function loadConfigArrayDir()
{
// Workaround until we use gettext
global $lng, $theme;
// we now use dynamic function parameters
// so we can read from more than one directory
// and still be valid for old calls
$numargs = func_num_args();
if ($numargs <= 0) {
return null;
}
// variable that holds all dirs that will
// be parsed for inclusion
$configdirs = array();
// if one of the parameters is an array
// we assume that this is a list of
// setting-groups to be selected
$selection = null;
for ($x = 0; $x < $numargs; $x ++) {
$arg = func_get_arg($x);
if (is_array($arg) && isset($arg[0])) {
$selection = $arg;
} else {
$configdirs[] = $arg;
}
}
$data = array();
$data_files = array();
$has_data = false;
foreach ($configdirs as $data_dirname) {
if (is_dir($data_dirname)) {
$data_dirhandle = opendir($data_dirname);
while (false !== ($data_filename = readdir($data_dirhandle))) {
if ($data_filename != '.' && $data_filename != '..' && $data_filename != '' && substr($data_filename, - 4) == '.php') {
$data_files[] = $data_dirname . $data_filename;
}
}
$has_data = true;
}
}
if ($has_data) {
sort($data_files);
foreach ($data_files as $data_filename) {
$data = array_merge_recursive($data, include ($data_filename));
}
}
// if we have specific setting-groups
// to select, we'll handle this here
// (this is for multiserver-client settings)
$_data = array();
if ($selection != null && is_array($selection) && isset($selection[0])) {
$_data['groups'] = array();
foreach ($data['groups'] as $group => $data) {
if (in_array($group, $selection)) {
$_data['groups'][$group] = $data;
}
}
$data = $_data;
}
return $data;
}

View File

@@ -1,44 +0,0 @@
<?php
/**
* froxlor php error handler
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
* @param array $errcontext
*
* @return void|boolean
*/
function phpErrHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
if (! (error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
if (! isset($_SERVER['SHELL']) || (isset($_SERVER['SHELL']) && $_SERVER['SHELL'] == '')) {
global $theme;
// fallback
if (empty($theme)) {
$theme = "Sparkle";
}
// prevent possible file-path-disclosure
$errfile = str_replace(\Froxlor\Froxlor::getInstallDir(), "", $errfile);
// if we're not on the shell, output a nicer error-message
$err_hint = file_get_contents(\Froxlor\Froxlor::getInstallDir() . '/templates/' . $theme . '/misc/phperrornice.tpl');
// replace values
$err_hint = str_replace("<TEXT>", '#' . $errno . ' ' . $errstr, $err_hint);
$err_hint = str_replace("<DEBUG>", $errfile . ':' . $errline, $err_hint);
// show
echo $err_hint;
// return true to ignore php standard error-handler
return true;
}
// of on shell, use the php standard error-handler
return false;
}

View File

@@ -1,287 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
use Froxlor\Database\Database;
/**
* Function which updates all counters of used ressources in panel_admins and panel_customers
*
* @param
* bool Set to true to get an array with debug information
* @return array Contains debug information if parameter 'returndebuginfo' is set to true
*
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
*/
function updateCounters($returndebuginfo = false)
{
$returnval = array();
if ($returndebuginfo === true) {
$returnval = array(
'admins' => array(),
'customers' => array()
);
}
// Customers
$customers_stmt = Database::prepare('SELECT * FROM `' . TABLE_PANEL_CUSTOMERS . '` ORDER BY `customerid`');
Database::pexecute($customers_stmt);
$admin_resources = array();
while ($customer = $customers_stmt->fetch(PDO::FETCH_ASSOC)) {
$cur_adm = $customer['adminid'];
// initialize admin-resources array for admin $customer['adminid']
if (! isset($admin_resources[$cur_adm])) {
$admin_resources[$cur_adm] = array();
}
_addResourceCountEx($admin_resources[$cur_adm], $customer, 'diskspace_used', 'diskspace');
_addResourceCountEx($admin_resources[$cur_adm], $customer, 'traffic_used', 'traffic_used'); // !!! yes, USED and USED
foreach (array(
'mysqls',
'ftps',
'emails',
'email_accounts',
'email_forwarders',
'email_quota',
'subdomains'
) as $field) {
_addResourceCount($admin_resources[$cur_adm], $customer, $field . '_used', $field);
}
$customer_mysqls_stmt = Database::prepare('SELECT COUNT(*) AS `number_mysqls` FROM `' . TABLE_PANEL_DATABASES . '`
WHERE `customerid` = :cid');
$customer_mysqls = Database::pexecute_first($customer_mysqls_stmt, array(
"cid" => $customer['customerid']
));
$customer['mysqls_used_new'] = (int) $customer_mysqls['number_mysqls'];
$customer_emails_stmt = Database::prepare('SELECT COUNT(*) AS `number_emails` FROM `' . TABLE_MAIL_VIRTUAL . '`
WHERE `customerid` = :cid');
$customer_emails = Database::pexecute_first($customer_emails_stmt, array(
"cid" => $customer['customerid']
));
$customer['emails_used_new'] = (int) $customer_emails['number_emails'];
$customer_emails_result_stmt = Database::prepare('SELECT `email`, `email_full`, `destination`, `popaccountid` AS `number_email_forwarders` FROM `' . TABLE_MAIL_VIRTUAL . '`
WHERE `customerid` = :cid');
Database::pexecute($customer_emails_result_stmt, array(
"cid" => $customer['customerid']
));
$customer_email_forwarders = 0;
$customer_email_accounts = 0;
while ($customer_emails_row = $customer_emails_result_stmt->fetch(PDO::FETCH_ASSOC)) {
if ($customer_emails_row['destination'] != '') {
$customer_emails_row['destination'] = explode(' ', \Froxlor\FileDir::makeCorrectDestination($customer_emails_row['destination']));
$customer_email_forwarders += count($customer_emails_row['destination']);
if (in_array($customer_emails_row['email_full'], $customer_emails_row['destination'])) {
$customer_email_forwarders -= 1;
$customer_email_accounts ++;
}
}
}
$customer['email_accounts_used_new'] = $customer_email_accounts;
$customer['email_forwarders_used_new'] = $customer_email_forwarders;
$customer_ftps_stmt = Database::prepare('SELECT COUNT(*) AS `number_ftps` FROM `' . TABLE_FTP_USERS . '` WHERE `customerid` = :cid');
$customer_ftps = Database::pexecute_first($customer_ftps_stmt, array(
"cid" => $customer['customerid']
));
$customer['ftps_used_new'] = ((int) $customer_ftps['number_ftps'] - 1);
$customer_subdomains_stmt = Database::prepare('SELECT COUNT(*) AS `number_subdomains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `customerid` = :cid AND `parentdomainid` <> "0"');
$customer_subdomains = Database::pexecute_first($customer_subdomains_stmt, array(
"cid" => $customer['customerid']
));
$customer['subdomains_used_new'] = (int) $customer_subdomains['number_subdomains'];
$customer_email_quota_stmt = Database::prepare('SELECT SUM(`quota`) AS `email_quota` FROM `' . TABLE_MAIL_USERS . '` WHERE `customerid` = :cid');
$customer_email_quota = Database::pexecute_first($customer_email_quota_stmt, array(
"cid" => $customer['customerid']
));
$customer['email_quota_used_new'] = (int) $customer_email_quota['email_quota'];
$stmt = Database::prepare('UPDATE `' . TABLE_PANEL_CUSTOMERS . '`
SET `mysqls_used` = :mysqls_used,
`emails_used` = :emails_used,
`email_accounts_used` = :email_accounts_used,
`email_forwarders_used` = :email_forwarders_used,
`email_quota_used` = :email_quota_used,
`ftps_used` = :ftps_used,
`subdomains_used` = :subdomains_used
WHERE `customerid` = :cid');
$params = array(
"mysqls_used" => $customer['mysqls_used_new'],
"emails_used" => $customer['emails_used_new'],
"email_accounts_used" => $customer['email_accounts_used_new'],
"email_forwarders_used" => $customer['email_forwarders_used_new'],
"email_quota_used" => $customer['email_quota_used_new'],
"ftps_used" => $customer['ftps_used_new'],
"subdomains_used" => $customer['subdomains_used_new'],
"cid" => $customer['customerid']
);
Database::pexecute($stmt, $params);
if ($returndebuginfo === true) {
$returnval['customers'][$customer['customerid']] = $customer;
}
}
// Admins
$admins_stmt = Database::prepare('SELECT * FROM `' . TABLE_PANEL_ADMINS . '` ORDER BY `adminid`');
Database::pexecute($admins_stmt, array());
while ($admin = $admins_stmt->fetch(PDO::FETCH_ASSOC)) {
$admin_customers_stmt = Database::prepare('SELECT COUNT(*) AS `number_customers` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `adminid` = :aid');
$admin_customers = Database::pexecute_first($admin_customers_stmt, array(
"aid" => $admin['adminid']
));
$admin['customers_used_new'] = $admin_customers['number_customers'];
$admin_domains_stmt = Database::prepare('SELECT COUNT(*) AS `number_domains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `adminid` = :aid AND `isemaildomain` = "1"');
$admin_domains = Database::pexecute_first($admin_domains_stmt, array(
"aid" => $admin['adminid']
));
$admin['domains_used_new'] = $admin_domains['number_domains'];
$cur_adm = $admin['adminid'];
if (! isset($admin_resources[$cur_adm])) {
$admin_resources[$cur_adm] = array();
}
foreach (array(
'diskspace_used',
'traffic_used',
'mysqls_used',
'ftps_used',
'emails_used',
'email_accounts_used',
'email_forwarders_used',
'email_quota_used',
'subdomains_used'
) as $field) {
_initArrField($field, $admin_resources[$cur_adm], 0);
$admin[$field . '_new'] = $admin_resources[$cur_adm][$field];
}
$stmt = Database::prepare('UPDATE `' . TABLE_PANEL_ADMINS . '`
SET `customers_used` = :customers_used,
`domains_used` = :domains_used,
`diskspace_used` = :diskspace_used,
`mysqls_used` = :mysqls_used,
`emails_used` = :emails_used,
`email_accounts_used` = :email_accounts_used,
`email_forwarders_used` = :email_forwarders_used,
`email_quota_used` = :email_quota_used,
`ftps_used` = :ftps_used,
`subdomains_used` = :subdomains_used,
`traffic_used` = :traffic_used
WHERE `adminid` = :aid');
$params = array(
"customers_used" => $admin['customers_used_new'],
"domains_used" => $admin['domains_used_new'],
"diskspace_used" => $admin['diskspace_used_new'],
"mysqls_used" => $admin['mysqls_used_new'],
"emails_used" => $admin['emails_used_new'],
"email_accounts_used" => $admin['email_accounts_used_new'],
"email_forwarders_used" => $admin['email_forwarders_used_new'],
"email_quota_used" => $admin['email_quota_used_new'],
"ftps_used" => $admin['ftps_used_new'],
"subdomains_used" => $admin['subdomains_used_new'],
"traffic_used" => $admin['traffic_used_new'],
"aid" => $admin['adminid']
);
Database::pexecute($stmt, $params);
if ($returndebuginfo === true) {
$returnval['admins'][$admin['adminid']] = $admin;
}
}
return $returnval;
}
/**
* initialize a field-value of an array if not yet initialized
*
* @param string $field
* @param array $arr
* reference
* @param int $init_value
*
* @return void
*/
function _initArrField($field = null, &$arr, $init_value = 0)
{
if (! isset($arr[$field])) {
$arr[$field] = $init_value;
}
}
/**
* if the customer does not have unlimited resources, add the used resources
* to the admin-resource-counter
*
* @param array $arr
* reference
* @param array $customer_arr
* @param string $used_field
* @param string $field
*
* @return void
*/
function _addResourceCount(&$arr, $customer_arr, $used_field = null, $field = null)
{
_initArrField($used_field, $arr, 0);
if ($customer_arr[$field] != '-1') {
$arr[$used_field] += intval($customer_arr[$used_field]);
}
}
/**
* if the customer does not have unlimited resources, add the used resources
* to the admin-resource-counter
* Special function wrapper for diskspace and traffic as they need to
* be calculated otherwise to get the -1 for unlimited
*
* @param array $arr
* reference
* @param array $customer_arr
* @param string $used_field
* @param string $field
*
* @return void
*/
function _addResourceCountEx(&$arr, $customer_arr, $used_field = null, $field = null)
{
_initArrField($used_field, $arr, 0);
if ($field == 'diskspace' && ($customer_arr[$field] / 1024) != '-1') {
$arr[$used_field] += intval($customer_arr[$used_field]);
} elseif ($field == 'traffic_used') {
$arr[$used_field] += intval($customer_arr[$used_field]);
}
}

View File

@@ -1,185 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*/
/**
* return an array of all enabled redirect-codes
*
* @return array array of enabled redirect-codes
*/
function getRedirectCodesArray()
{
$sql = "SELECT * FROM `" . TABLE_PANEL_REDIRECTCODES . "` WHERE `enabled` = '1' ORDER BY `id` ASC";
$result_stmt = Database::query($sql);
$codes = array();
while ($rc = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
$codes[] = $rc;
}
return $codes;
}
/**
* return an array of all enabled redirect-codes
* for the settings form
*
* @param bool $add_desc
* optional, default true, add the code-description
*
* @return array array of enabled redirect-codes
*/
function getRedirectCodes($add_desc = true)
{
global $lng;
$sql = "SELECT * FROM `" . TABLE_PANEL_REDIRECTCODES . "` WHERE `enabled` = '1' ORDER BY `id` ASC";
$result_stmt = Database::query($sql);
$codes = array();
while ($rc = $result_stmt->fetch(PDO::FETCH_ASSOC)) {
$codes[$rc['id']] = $rc['code'];
if ($add_desc) {
$codes[$rc['id']] .= ' (' . $lng['redirect_desc'][$rc['desc']] . ')';
}
}
return $codes;
}
/**
* returns the redirect-code for a given
* domain-id
*
* @param integer $domainid
* id of the domain
*
* @return string redirect-code
*/
function getDomainRedirectCode($domainid = 0)
{
// get system default
$default = '301';
if (Settings::Get('customredirect.enabled') == '1') {
$all_codes = getRedirectCodes(false);
$_default = $all_codes[Settings::Get('customredirect.default')];
$default = ($_default == '---') ? $default : $_default;
}
$code = $default;
if ($domainid > 0) {
$result_stmt = Database::prepare("
SELECT `r`.`code` as `redirect`
FROM `" . TABLE_PANEL_REDIRECTCODES . "` `r`, `" . TABLE_PANEL_DOMAINREDIRECTS . "` `rc`
WHERE `r`.`id` = `rc`.`rid` and `rc`.`did` = :domainid
");
$result = Database::pexecute_first($result_stmt, array(
'domainid' => $domainid
));
if (is_array($result) && isset($result['redirect'])) {
$code = ($result['redirect'] == '---') ? $default : $result['redirect'];
}
}
return $code;
}
/**
* returns the redirect-id for a given
* domain-id
*
* @param integer $domainid
* id of the domain
*
* @return integer redirect-code-id
*/
function getDomainRedirectId($domainid = 0)
{
$code = 1;
if ($domainid > 0) {
$result_stmt = Database::prepare("
SELECT `r`.`id` as `redirect`
FROM `" . TABLE_PANEL_REDIRECTCODES . "` `r`, `" . TABLE_PANEL_DOMAINREDIRECTS . "` `rc`
WHERE `r`.`id` = `rc`.`rid` and `rc`.`did` = :domainid
");
$result = Database::pexecute_first($result_stmt, array(
'domainid' => $domainid
));
if (is_array($result) && isset($result['redirect'])) {
$code = (int) $result['redirect'];
}
}
return $code;
}
/**
* adds a redirectcode for a domain
*
* @param integer $domainid
* id of the domain to add the code for
* @param integer $redirect
* selected redirect-id
*
* @return null
*/
function addRedirectToDomain($domainid = 0, $redirect = 1)
{
if ($domainid > 0) {
$ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_PANEL_DOMAINREDIRECTS . "` SET `rid` = :rid, `did` = :did
");
Database::pexecute($ins_stmt, array(
'rid' => $redirect,
'did' => $domainid
));
}
}
/**
* updates the redirectcode of a domain
* if redirect-code is false, nothing happens
*
* @param integer $domainid
* id of the domain to update
* @param integer $redirect
* selected redirect-id or false
*
* @return null
*/
function updateRedirectOfDomain($domainid = 0, $redirect = false)
{
if ($redirect == false) {
return;
}
if ($domainid > 0) {
$del_stmt = Database::prepare("
DELETE FROM `" . TABLE_PANEL_DOMAINREDIRECTS . "` WHERE `did` = :domainid
");
Database::pexecute($del_stmt, array(
'domainid' => $domainid
));
$ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_PANEL_DOMAINREDIRECTS . "` SET `rid` = :rid, `did` = :did
");
Database::pexecute($ins_stmt, array(
'rid' => $redirect,
'did' => $domainid
));
}
}

View File

@@ -1,118 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Build Navigation Sidebar
*
* @param
* array navigation data
* @param
* array userinfo the userinfo of the user
* @return string the content of the navigation bar
*
* @author Florian Lippert <flo@syscp.org>
*/
function buildNavigation($navigation, $userinfo)
{
global $theme;
$returnvalue = '';
// sanitize user-given input (url-manipulation)
if (isset($_GET['page']) && is_array($_GET['page'])) {
$_GET['page'] = (string) $_GET['page'][0];
}
if (isset($_GET['action']) && is_array($_GET['action'])) {
$_GET['action'] = (string) $_GET['action'][0];
}
foreach ($navigation as $box) {
if ((! isset($box['show_element']) || $box['show_element'] === true) && (! isset($box['required_resources']) || $box['required_resources'] == '' || (isset($userinfo[$box['required_resources']]) && ((int) $userinfo[$box['required_resources']] > 0 || $userinfo[$box['required_resources']] == '-1')))) {
$navigation_links = '';
foreach ($box['elements'] as $element_id => $element) {
if ((! isset($element['show_element']) || $element['show_element'] === true) && (! isset($element['required_resources']) || $element['required_resources'] == '' || (isset($userinfo[$element['required_resources']]) && ((int) $userinfo[$element['required_resources']] > 0 || $userinfo[$element['required_resources']] == '-1')))) {
$target = '';
$active = '';
$navurl = '#';
if (isset($element['url']) && trim($element['url']) != '') {
// append sid only to local
if (! preg_match('/^https?\:\/\//', $element['url']) && (isset($userinfo['hash']) && $userinfo['hash'] != '')) {
// generate sid with ? oder &
if (strpos($element['url'], '?') !== false) {
$element['url'] .= '&s=' . $userinfo['hash'];
} else {
$element['url'] .= '?s=' . $userinfo['hash'];
}
}
if (isset($element['new_window']) && $element['new_window'] == true) {
$target = ' target="_blank"';
}
if (isset($_GET['page']) && substr_count($element['url'], "page=" . $_GET['page']) > 0 && substr_count($element['url'], basename($_SERVER["SCRIPT_FILENAME"])) > 0 && isset($_GET['action']) && substr_count($element['url'], "action=" . $_GET['action']) > 0) {
$active = ' active';
} elseif (isset($_GET['page']) && substr_count($element['url'], "page=" . $_GET['page']) > 0 && substr_count($element['url'], basename($_SERVER["SCRIPT_FILENAME"])) > 0 && substr_count($element['url'], "action=") == 0 && ! isset($_GET['action'])) {
$active = ' active';
}
$navurl = htmlspecialchars($element['url']);
$navlabel = $element['label'];
} else {
$navlabel = $element['label'];
}
eval("\$navigation_links .= \"" . \Froxlor\UI\Template::getTemplate("navigation_link", 1) . "\";");
}
}
if ($navigation_links != '') {
$target = '';
if (isset($box['url']) && trim($box['url']) != '') {
// append sid only to local
if (! preg_match('/^https?\:\/\//', $box['url']) && (isset($userinfo['hash']) && $userinfo['hash'] != '')) {
// generate sid with ? oder &
if (strpos($box['url'], '?') !== false) {
$box['url'] .= '&s=' . $userinfo['hash'];
} else {
$box['url'] .= '?s=' . $userinfo['hash'];
}
}
if (isset($box['new_window']) && $box['new_window'] == true) {
$target = ' target="_blank"';
}
$navurl = htmlspecialchars($box['url']);
$navlabel = $box['label'];
} else {
$navurl = "#";
$navlabel = $box['label'];
}
eval("\$returnvalue .= \"" . \Froxlor\UI\Template::getTemplate("navigation_element", 1) . "\";");
}
}
}
return $returnvalue;
}

View File

@@ -1,48 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Returns full style user details "Name, Firstname | Company"
*
* @param
* array An array with keys firstname, name and company
* @return string The full details
*
* @author Florian Lippert <flo@syscp.org>
*/
function getCorrectFullUserDetails($userinfo)
{
$returnval = '';
if (isset($userinfo['firstname']) && isset($userinfo['name']) && isset($userinfo['company'])) {
if ($userinfo['company'] == '') {
$returnval = $userinfo['name'] . ', ' . $userinfo['firstname'];
} else {
if ($userinfo['name'] != '' && $userinfo['firstname'] != '') {
$returnval = $userinfo['name'] . ', ' . $userinfo['firstname'] . ' | ' . $userinfo['company'];
} else {
$returnval = $userinfo['company'];
}
}
} elseif (isset($userinfo['name'])) {
$returnval = $userinfo['name'];
}
return $returnval;
}

View File

@@ -1,44 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Returns correct user salutation, either "Firstname Name" or "Company"
*
* @param
* array An array with keys firstname, name and company
* @return string The correct salutation
*
* @author Florian Lippert <flo@syscp.org>
*/
function getCorrectUserSalutation($userinfo)
{
$returnval = '';
if (isset($userinfo['firstname']) && isset($userinfo['name']) && isset($userinfo['company'])) {
// Always prefer firstname name
if ($userinfo['company'] != '' && $userinfo['name'] == '' && $userinfo['firstname'] == '') {
$returnval = $userinfo['company'];
} else {
$returnval = $userinfo['firstname'] . ' ' . $userinfo['name'];
}
}
return $returnval;
}

View File

@@ -1,38 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Returns a double of the given value which isn't negative.
* Returns -1 if the given value was -1.
*
* @param
* any The value
* @return double The positive value
* @author Florian Lippert <flo@syscp.org>
*/
function doubleval_ressource($the_value)
{
$the_value = doubleval($the_value);
if ($the_value < 0 && $the_value != '-1') {
$the_value *= - 1;
}
return $the_value;
}

View File

@@ -1,63 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Wrapper around html_entity_decode to handle arrays, with the advantage that you
* can select which fields should be handled by htmlentities and with advantage,
* that you can eliminate all html entities by setting complete=true
*
* @param
* array The subject array
* @param
* string The fields which should be checked for, separated by spaces
* @param
* bool Select true to use html_entity_decode_complete instead of html_entity_decode
* @param
* int See php documentation about this
* @param
* string See php documentation about this
* @return array The array with html_entity_decode'd strings
* @author Florian Lippert <flo@syscp.org>
*/
function html_entity_decode_array($subject, $fields = '', $complete = false, $quote_style = ENT_COMPAT, $charset = 'UTF-8')
{
if (is_array($subject)) {
if (! is_array($fields)) {
$fields = array_trim(explode(' ', $fields));
}
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
/**
* Just call ourselve to manage multi-dimensional arrays
*/
$subject[$field] = html_entity_decode_array($subject[$field], $fields, $complete, $quote_style, $charset);
}
}
} else {
if ($complete == true) {
$subject = html_entity_decode_complete($subject, $quote_style, $charset);
} else {
$subject = html_entity_decode($subject, $quote_style, $charset);
}
}
return $subject;
}

View File

@@ -1,43 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Calls html_entity_decode in a loop until the result doesn't differ from original anymore
*
* @param
* string The string in which the html entities should be eliminated.
* @return string The cleaned string
* @author Florian Lippert <flo@syscp.org>
*/
function html_entity_decode_complete($string)
{
global $theme;
if ($theme == 'Classic') {
while ($string != html_entity_decode($string)) {
$string = html_entity_decode($string);
}
} else {
while ($string != html_entity_decode($string, ENT_COMPAT | ENT_HTML5, 'UTF-8')) {
$string = html_entity_decode($string, ENT_COMPAT | ENT_HTML5, 'UTF-8');
}
}
return $string;
}

View File

@@ -1,56 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Wrapper around htmlentities to handle arrays, with the advantage that you
* can select which fields should be handled by htmlentities
*
* @param
* array The subject array
* @param
* string The fields which should be checked for, separated by spaces
* @param
* int See php documentation about this
* @param
* string See php documentation about this
* @return array The array with htmlentitie'd strings
* @author Florian Lippert <flo@syscp.org>
*/
function htmlentities_array($subject, $fields = '', $quote_style = ENT_QUOTES, $charset = 'UTF-8')
{
if (is_array($subject)) {
if (! is_array($fields)) {
$fields = array_trim(explode(' ', $fields));
}
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
/**
* Just call ourselve to manage multi-dimensional arrays
*/
$subject[$field] = htmlentities_array($subject[$field], $fields, $quote_style, $charset);
}
}
} else {
$subject = htmlentities($subject, $quote_style, $charset);
}
return $subject;
}

View File

@@ -1,49 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Replaces Strings in an array, with the advantage that you
* can select which fields should be str_replace'd
*
* @param
* mixed String or array of strings to search for
* @param
* mixed String or array to replace with
* @param
* array The subject array
* @param
* string The fields which should be checked for, separated by spaces
* @return array The str_replace'd array
* @author Florian Lippert <flo@syscp.org>
*/
function str_replace_array($search, $replace, $subject, $fields = '')
{
if (is_array($subject)) {
$fields = array_trim(explode(' ', $fields));
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
$subject[$field] = str_replace($search, $replace, $subject[$field]);
}
}
} else {
$subject = str_replace($search, $replace, $subject);
}
return $subject;
}

View File

@@ -1,63 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Wrapper around stripslashes to handle arrays, with the advantage that you
* can select which fields should be handled by htmlentities and with advantage,
* that you can eliminate all slashes by setting complete=true
*
* @param
* array The subject array
* @param
* int See php documentation about this
* @param
* string See php documentation about this
* @param
* string The fields which should be checked for, separated by spaces
* @param
* bool Select true to use stripslashes_complete instead of stripslashes
* @return array The array with stripslashe'd strings
* @author Florian Lippert <flo@syscp.org>
*/
function stripslashes_array($subject, $fields = '', $complete = false)
{
if (is_array($subject)) {
if (! is_array($fields)) {
$fields = array_trim(explode(' ', $fields));
}
foreach ($subject as $field => $value) {
if ((! is_array($fields) || empty($fields)) || (is_array($fields) && ! empty($fields) && in_array($field, $fields))) {
/**
* Just call ourselve to manage multi-dimensional arrays
*/
$subject[$field] = stripslashes_array($subject[$field], $fields, $complete);
}
}
} else {
if ($complete == true) {
$subject = stripslashes_complete($subject);
} else {
$subject = stripslashes($subject);
}
}
return $subject;
}

View File

@@ -1,35 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Calls stripslashes in a loop until the result doesn't differ from original anymore
*
* @param
* string The string in which the slashes should be eliminated.
* @return string The cleaned string
* @author Florian Lippert <flo@syscp.org>
*/
function stripslashes_complete($string)
{
while ($string != stripslashes($string)) {
$string = stripslashes($string);
}
return $string;
}

View File

@@ -1,40 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
*
*/
/**
* Create a valid from/to - mailheader (remove carriage-returns)
*
* @param
* string The name of the recipient
* @param
* string The mailaddress
* @return string A valid header-entry
* @author Florian Aders <eleras@syscp.org>
*/
function buildValidMailFrom($name, $mailaddress)
{
$mailfrom = str_replace(array(
"\r",
"\n"
), '', $name) . ' <' . str_replace(array(
"\r",
"\n"
), '', $mailaddress) . '>';
return $mailfrom;
}

View File

@@ -110,7 +110,10 @@ if (! isset($sql) || ! is_array($sql)) {
* Includes the Functions * Includes the Functions
*/ */
require \Froxlor\Froxlor::getInstallDir() . '/lib/functions.php'; require \Froxlor\Froxlor::getInstallDir() . '/lib/functions.php';
@set_error_handler('phpErrHandler'); @set_error_handler(array(
'\\Froxlor\\PhpHelper',
'phpErrHandler'
));
/** /**
* Includes the MySQL-Tabledefinitions etc. * Includes the MySQL-Tabledefinitions etc.
@@ -416,10 +419,10 @@ if (AREA == 'admin' || AREA == 'customer') {
) )
) )
); );
$navigation = buildNavigation($navigation_data['admin'], $userinfo); $navigation = \Froxlor\UI\HTML::buildNavigation($navigation_data['admin'], $userinfo);
} else { } else {
$navigation_data = loadConfigArrayDir('lib/navigation/'); $navigation_data = \Froxlor\PhpHelper::loadConfigArrayDir('lib/navigation/');
$navigation = buildNavigation($navigation_data[AREA], $userinfo); $navigation = \Froxlor\UI\HTML::buildNavigation($navigation_data[AREA], $userinfo);
} }
unset($navigation_data); unset($navigation_data);
} }

View File

@@ -149,7 +149,7 @@ if (count($all_certs) == 0) {
} }
} }
$row = htmlentities_array($cert); $row = \Froxlor\PhpHelper::htmlentities_array($cert);
eval("\$certificates.=\"" . \Froxlor\UI\Template::getTemplate("ssl_certificates/certs_cert", true) . "\";"); eval("\$certificates.=\"" . \Froxlor\UI\Template::getTemplate("ssl_certificates/certs_cert", true) . "\";");
} else { } else {
$message = sprintf($lng['domains']['ssl_certificate_error'], $cert['domain']); $message = sprintf($lng['domains']['ssl_certificate_error'], $cert['domain']);