2007-03-24 08:27:00 +01:00
< ? php
2007-09-30 17:53:54 +02:00
/**
* 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 : edit - mailbox . php
* Used to update an existing mailboxes settings .
2009-12-24 15:58:01 +01:00
* Template File : edit - mailbox . tpl
2007-09-30 17:53:54 +02:00
*
* Template Variables :
*
* tMessage
* tName
* tQuota
*
* Form POST \ GET Variables :
*
* fUsername
* fDomain
* fPassword
* fPassword2
* fName
* fQuota
* fActive
*/
2007-08-22 00:37:26 +02:00
2007-09-22 12:59:41 +02:00
require_once ( 'common.php' );
2007-08-22 00:37:26 +02:00
2007-09-22 12:59:41 +02:00
authentication_require_role ( 'admin' );
$SESSID_USERNAME = authentication_get_username ();
2007-03-24 08:27:00 +01:00
2007-10-02 15:37:42 +02:00
$fUsername = 'x' ;
$fDomain = 'y' ;
$error = 0 ;
2007-08-22 00:37:26 +02:00
if ( isset ( $_GET [ 'username' ])) $fUsername = escape_string ( $_GET [ 'username' ]);
$fUsername = strtolower ( $fUsername );
if ( isset ( $_GET [ 'domain' ])) $fDomain = escape_string ( $_GET [ 'domain' ]);
$pEdit_mailbox_name_text = $PALANG [ 'pEdit_mailbox_name_text' ];
$pEdit_mailbox_quota_text = $PALANG [ 'pEdit_mailbox_quota_text' ];
2007-10-02 15:37:42 +02:00
if ( ! ( check_owner ( $SESSID_USERNAME , $fDomain ) || authentication_has_role ( 'global-admin' )) )
{
2008-01-03 22:51:08 +01:00
$error = 1 ;
$tName = $fName ;
$tQuota = $fQuota ;
$tActive = $fActive ;
$tMessage = $PALANG [ 'pEdit_mailbox_domain_error' ] . " $fDomain </span> " ;
2007-10-02 15:37:42 +02:00
}
2007-12-17 08:03:54 +01:00
$result = db_query ( " SELECT * FROM $table_mailbox WHERE username = ' $fUsername ' AND domain = ' $fDomain ' " );
if ( $result [ 'rows' ] != 1 ) {
2008-01-03 22:51:08 +01:00
die ( " Invalid username chosen; user does not exist in mailbox table " );
2007-12-17 08:03:54 +01:00
}
2007-10-02 15:37:42 +02:00
$user_details = db_array ( $result [ 'result' ]);
2007-03-24 08:27:00 +01:00
if ( $_SERVER [ 'REQUEST_METHOD' ] == " GET " )
{
2008-01-03 22:51:08 +01:00
if ( check_owner ( $SESSID_USERNAME , $fDomain ) || authentication_has_role ( 'global-admin' ))
{
$tName = $user_details [ 'name' ];
$tQuota = divide_quota ( $user_details [ 'quota' ]);
$tActive = $user_details [ 'active' ];
if ( 'pgsql' == $CONF [ 'database_type' ]) {
$tActive = ( 't' == $user_details [ 'active' ]) ? 1 : 0 ;
}
2008-11-23 13:18:20 +01:00
2008-01-03 22:51:08 +01:00
$result = db_query ( " SELECT * FROM $table_domain WHERE domain=' $fDomain ' " );
if ( $result [ 'rows' ] == 1 )
{
$row = db_array ( $result [ 'result' ]);
$tMaxquota = $row [ 'maxquota' ];
}
}
2007-03-24 08:27:00 +01:00
}
2008-02-28 12:58:52 +01:00
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && isset ( $_POST [ 'cancel' ])) {
header ( " Location: list-virtual.php?domain= $fDomain " );
exit ( 0 );
}
2007-03-24 08:27:00 +01:00
if ( $_SERVER [ 'REQUEST_METHOD' ] == " POST " )
{
2008-01-03 22:51:08 +01:00
if ( isset ( $_POST [ 'fPassword' ])) $fPassword = escape_string ( $_POST [ 'fPassword' ]);
if ( isset ( $_POST [ 'fPassword2' ])) $fPassword2 = escape_string ( $_POST [ 'fPassword2' ]);
if ( isset ( $_POST [ 'fName' ])) $fName = escape_string ( $_POST [ 'fName' ]);
if ( isset ( $_POST [ 'fQuota' ])) $fQuota = intval ( $_POST [ 'fQuota' ]);
if ( isset ( $_POST [ 'fActive' ])) $fActive = escape_string ( $_POST [ 'fActive' ]);
2008-11-22 11:23:36 +01:00
if ( $fPassword != $user_details [ 'password' ] || $fPassword2 != $user_details [ 'password' ]){
2008-01-03 22:51:08 +01:00
$min_length = $CONF [ 'min_password_length' ];
if ( $fPassword == $fPassword2 ) {
if ( $fPassword != " " ) {
2008-01-09 22:47:28 +01:00
if ( $min_length > 0 && strlen ( $fPassword ) < $min_length ) {
flash_error ( sprintf ( $PALANG [ 'pPasswordTooShort' ], $CONF [ 'min_password_length' ]));
$error = 1 ;
}
2008-01-03 22:51:08 +01:00
$formvars [ 'password' ] = pacrypt ( $fPassword );
}
}
else {
flash_error ( $PALANG [ 'pEdit_mailbox_password_text_error' ]);
$error = 1 ;
}
}
if ( $CONF [ 'quota' ] == " YES " )
{
if ( ! check_quota ( $fQuota , $fDomain ))
{
$error = 1 ;
$tName = $fName ;
$tQuota = $fQuota ;
$tActive = $fActive ;
$pEdit_mailbox_quota_text = $PALANG [ 'pEdit_mailbox_quota_text_error' ];
}
}
if ( $error != 1 )
{
if ( ! empty ( $fQuota ))
{
$quota = multiply_quota ( $fQuota );
}
else
{
$quota = 0 ;
}
if ( $fActive == " on " )
{
$sqlActive = db_get_boolean ( True );
$fActive = 1 ;
}
else
{
$sqlActive = db_get_boolean ( False );
$fActive = 0 ;
}
$formvars [ 'name' ] = $fName ;
$formvars [ 'quota' ] = $quota ;
$formvars [ 'active' ] = $sqlActive ;
2008-12-12 20:40:39 +01:00
if ( preg_match ( '/^(.*)@/' , $fUsername , $matches )) {
$formvars [ 'local_part' ] = $matches [ 1 ];
}
2011-03-09 21:50:13 +01:00
$result = db_update_q ( 'mailbox' , " username=' $fUsername ' AND domain=' $fDomain ' " , $formvars ); # TODO: check if we need the AND domain=... clause, if not, switch to db_update()
2008-06-17 23:19:44 +02:00
$maildir = $user_details [ 'maildir' ];
2008-05-25 23:19:58 +02:00
if ( $result != 1 || ! mailbox_postedit ( $fUsername , $fDomain , $maildir , $quota )) {
2008-01-03 22:51:08 +01:00
$tMessage = $PALANG [ 'pEdit_mailbox_result_error' ];
}
else {
2011-02-15 23:20:27 +01:00
db_log ( $fDomain , 'edit_mailbox' , $fUsername );
2008-01-03 22:51:08 +01:00
header ( " Location: list-virtual.php?domain= $fDomain " );
exit ( 0 );
}
2008-01-09 22:47:28 +01:00
}
else
{
# error detected. Put the values the user entered in the form again.
$tName = $fName ;
$tQuota = $fQuota ;
$tActive = $fActive ;
2008-01-03 22:51:08 +01:00
}
2007-08-22 00:37:26 +02:00
}
2009-11-05 15:55:39 +01:00
$smarty -> assign ( 'fUsername' , $fUsername );
2009-12-24 15:58:01 +01:00
$smarty -> assign ( 'pEdit_mailbox_password_text' , $pEdit_mailbox_password_text , false );
$smarty -> assign ( 'tName' , $tName , false );
$smarty -> assign ( 'pEdit_mailbox_name_text' , $pEdit_mailbox_name_text , false );
2009-11-05 15:55:39 +01:00
$smarty -> assign ( 'tMaxquota' , $tMaxquota );
$smarty -> assign ( 'tQuota' , $tQuota );
$smarty -> assign ( 'pEdit_mailbox_quota_text' , $pEdit_mailbox_quota_text );
if ( $tActive ) $smarty -> assign ( 'tActive' , ' checked="checked"' );
2009-12-24 15:58:01 +01:00
$smarty -> assign ( 'tMessage' , $tMessage , false );
2009-11-05 15:55:39 +01:00
$smarty -> assign ( 'smarty_template' , 'edit-mailbox' );
$smarty -> display ( 'index.tpl' );
2007-03-24 08:27:00 +01:00
/* vim: set expandtab softtabstop=3 tabstop=3 shiftwidth=3: */
?>