0
0
mirror of https://github.com/postfixadmin/postfixadmin.git synced 2024-09-20 03:36:20 +02:00
postfixadmin/create-domain.php
Christian Boltz 27caea6ca8 create-domain.php:
- default aliases were always created, even when unchecking the checkbox
  (to be exact: after my last commit yesterday, they were never created)
  This bug was introduced in r867 (setting the default to "on") in
  combination with isset() falling back to the default value. For an
  unchecked checkbox, this means that it always used the default fallback
  which was "on" since r867.
  (Does _not_ affect the 2.3 branch.)
- replaced two <br> with a TODO ;-)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1135 a1433add-5e2c-0410-b055-b7f2511e0802
2011-07-26 19:46:08 +00:00

175 lines
6.2 KiB
PHP

<?php
/**
* Postfix Admin
*
* LICENSE
* This source file is subject to the GPL license that is bundled with
* this package in the file LICENSE.TXT.
*
* Further details on the project are available at :
* http://www.postfixadmin.com or http://postfixadmin.sf.net
*
* @version $Id$
* @license GNU GPL v2 or later.
*
* File: create-domain.php
* Allows administrators to create new domains.
* Template File: admin_create-domain.tpl
*
* Template Variables:
*
* tDomain
* tDescription
* tAliases
* tMailboxes
* tMaxquota
* tDefaultaliases
*
* Form POST \ GET Variables:
*
* fDomain
* fDescription
* fAliases
* fMailboxes
* fMaxquota
* fDefaultaliases
*/
require_once('common.php');
authentication_require_role('global-admin');
$form_fields = array(
'fDomain' => array('type' => 'str', 'default' => null),
'fDescription' => array('type' => 'str', 'default' =>''),
'fAliases' => array('type' => 'int', 'default' => $CONF['aliases']),
'fMailboxes' => array('type' => 'int', 'default' => $CONF['mailboxes']),
'fMaxquota' => array('type' => 'int', 'default' => $CONF['maxquota']),
'fDomainquota' => array('type' => 'int', 'default' => $CONF['domain_quota_default']),
'fTransport' => array('type' => 'str', 'default' => $CONF['transport_default'], 'options' => $CONF['transport_options']),
'fDefaultaliases' => array('type' => 'bool', 'default' => 'on', 'options' => array('on', 'off')),
'fBackupmx' => array('type' => 'bool', 'default' => 'off', 'options' => array('on', 'off'))
);
$fDefaultaliases = "";
$tDefaultaliases = "";
# TODO: this foreach block should only be executed for POST
foreach($form_fields as $key => $default) {
if($default['type'] == 'bool' && $_SERVER['REQUEST_METHOD'] == "POST") {
$$key = escape_string(safepost($key, 'off')); # isset for unchecked checkboxes is always false
}
elseif (isset($_POST[$key]) && (strlen($_POST[$key]) > 0)) {
$$key = escape_string($_POST[$key]);
}
else {
$$key = $default['default'];
}
if($default['type'] == 'int') {
$$key = intval($$key);
}
if($default['type'] == 'str') {
$$key = strip_tags($$key); /* should we even bother? */
}
if(isset($default['options'])) {
if(!in_array($$key, $default['options'])) {
die("Invalid parameter given for $key");
}
}
}
$fDomain = strtolower($fDomain);
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
/* default values as set above */
$tTransport = $fTransport;
$tAliases = $fAliases;
$tMaxquota = $fMaxquota;
$tDomainquota = $fDomainquota;
$tMailboxes = $fMailboxes;
$tDefaultaliases = $fDefaultaliases;
$tBackupmx = $fBackupmx;
}
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$tBackupmx = "";
if ($fDomain == null or domain_exist($fDomain) or !check_domain($fDomain))
{
$error = 1;
$tDomain = $fDomain;
$tDescription = $fDescription;
$tAliases = $fAliases;
$tMailboxes = $fMailboxes;
if (isset ($_POST['fMaxquota'])) $tMaxquota = $fMaxquota;
if (isset ($_POST['fDomainquota'])) $tDomainquota = $fDomainquota;
if (isset ($_POST['fTransport'])) $tTransport = $fTransport;
if (isset ($_POST['fDefaultaliases'])) $tDefaultaliases = $fDefaultaliases;
if (isset ($_POST['fBackupmx'])) $tBackupmx = $fBackupmx;
$pAdminCreate_domain_domain_text_error = $PALANG['pAdminCreate_domain_domain_text_error2'];
if (domain_exist ($fDomain)) $pAdminCreate_domain_domain_text_error = $PALANG['pAdminCreate_domain_domain_text_error'];
}
if ($error != 1)
{
$tAliases = $CONF['aliases'];
$tMailboxes = $CONF['mailboxes'];
$tMaxquota = $CONF['maxquota'];
$tDomainquota = $CONF['domain_quota_default'];
if ($fBackupmx == "on")
{
$fBackupmx = 1;
$sqlBackupmx = db_get_boolean(true);
}
else
{
$fBackupmx = 0;
$sqlBackupmx = db_get_boolean(false);
}
$sql_query = "INSERT INTO $table_domain (domain,description,aliases,mailboxes,maxquota,quota,transport,backupmx,created,modified) VALUES ('$fDomain','$fDescription',$fAliases,$fMailboxes,$fMaxquota,$fDomainquota,'$fTransport','$sqlBackupmx',NOW(),NOW())";
$result = db_query($sql_query);
if ($result['rows'] != 1)
{
$pAdminCreate_domain_domain_text_error = $PALANG['pAdminCreate_domain_result_error'] . "<br />($fDomain)"; # TODO: remove a sprintf string
}
else
{
if ($fDefaultaliases == "on")
{
foreach ($CONF['default_aliases'] as $address=>$goto)
{
$address = $address . "@" . $fDomain;
$result = db_query ("INSERT INTO $table_alias (address,goto,domain,created,modified) VALUES ('$address','$goto','$fDomain',NOW(),NOW())");
}
}
flash_info($PALANG['pAdminCreate_domain_result_success'] . "<br />($fDomain)"); # TODO: use a sprintf string
}
if (!domain_postcreation($fDomain))
{
flash_error($PALANG['pAdminCreate_domain_error']);
}
}
}
$smarty->assign ('tDomain', $tDomain);
$smarty->assign ('pAdminCreate_domain_domain_text', $pAdminCreate_domain_domain_text, false);
$smarty->assign ('pAdminCreate_domain_domain_text_error', $pAdminCreate_domain_domain_text_error, false);
$smarty->assign ('tDescription', $tDescription, false);
$smarty->assign ('tAliases', $tAliases);
$smarty->assign ('tMailboxes', $tMailboxes);
$smarty->assign ('tDomainquota', $tDomainquota);
$smarty->assign ('tMaxquota', $tMaxquota,false); # TODO: why is sanitize disabled? Should be just integer...
$smarty->assign ('select_options', select_options ($CONF ['transport_options'], array ($tTransport)),false);
$smarty->assign ('tDefaultaliases', ($tDefaultaliases == 'on') ? ' checked="checked"' : '');
$smarty->assign ('tBackupmx', ($tBackupmx == 'on') ? ' checked="checked"' : '');
$smarty->assign ('smarty_template', 'admin_create-domain');
$smarty->display ('index.tpl');
/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
?>