DomainHandler.php:

- initStruct(): fix alias_count ("something - NULL" is always NULL, now 
  enforces integer 0 for each JOINt in field with NULL value)
- set() now checks if $this->_field_$fieldname exists and calls it as
  additional validator
- split store() into store() (stores $this->values in the database) and
  storemore() (stores additional things and/or calls scripts)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1249 a1433add-5e2c-0410-b055-b7f2511e0802
pull/2/head
Christian Boltz 13 years ago
parent eba59ffd73
commit eac2564c40

@ -103,7 +103,7 @@ class DomainHandler extends PFAHandler {
'alias_count' => pacol( 0, 0, 1, 'vnum', '' , '' , '', '', 'alias_count' => pacol( 0, 0, 1, 'vnum', '' , '' , '', '',
/*not_in_db*/ 0, /*not_in_db*/ 0,
/*dont_write_to_db*/ 1, /*dont_write_to_db*/ 1,
/*select*/ 'coalesce(__alias_count - __mailbox_count,0) as alias_count', /*select*/ 'coalesce(__alias_count,0) - coalesce(__mailbox_count,0) as alias_count',
/*extrafrom*/ 'left join ( select count(*) as __alias_count, domain as __alias_domain from ' . table_by_key('alias') . /*extrafrom*/ 'left join ( select count(*) as __alias_count, domain as __alias_domain from ' . table_by_key('alias') .
' group by domain) as __alias on domain = __alias_domain'), ' group by domain) as __alias on domain = __alias_domain'),
'mailboxes' => pacol( 1, 1, 1, 'num' , 'pAdminEdit_domain_mailboxes' , 'pAdminEdit_domain_mailboxes_text' , Config::read('mailboxes') ), 'mailboxes' => pacol( 1, 1, 1, 'num' , 'pAdminEdit_domain_mailboxes' , 'pAdminEdit_domain_mailboxes_text' , Config::read('mailboxes') ),
@ -183,6 +183,7 @@ class DomainHandler extends PFAHandler {
if ($row['type'] != "password" || strlen($values[$key]) > 0 || $this->new == 1) { # skip on empty (aka unchanged) password on edit if ($row['type'] != "password" || strlen($values[$key]) > 0 || $this->new == 1) { # skip on empty (aka unchanged) password on edit
$valid = true; # trust input unless validator objects $valid = true; # trust input unless validator objects
# validate based on field type (_inp_$type)
$func="_inp_".$row['type']; $func="_inp_".$row['type'];
if (method_exists($this, $func) ) { if (method_exists($this, $func) ) {
if (!$this->{$func}($key, $values[$key])) $valid = false; if (!$this->{$func}($key, $values[$key])) $valid = false;
@ -190,7 +191,11 @@ class DomainHandler extends PFAHandler {
# TODO: warning if no validation function exists? # TODO: warning if no validation function exists?
} }
# TODO: more validation (_field_$fieldname() ?) # validate based on field name (_field_$fieldname)
$func="_field_".$key;
if (method_exists($this, $func) ) {
if (!$this->{$func}($key, $values[$key])) $valid = false;
}
if ($valid) { if ($valid) {
$this->values[$key] = $values[$key]; $this->values[$key] = $values[$key];
@ -211,6 +216,10 @@ class DomainHandler extends PFAHandler {
return $this->values_valid; return $this->values_valid;
} }
/**
* store $this->values in the database
* calls $this->storemore() where additional things can be done
*/
public function store() { public function store() {
if ($this->values_valid == false) { if ($this->values_valid == false) {
$this->errormsg[] = "one or more values are invalid!"; $this->errormsg[] = "one or more values are invalid!";
@ -238,10 +247,22 @@ class DomainHandler extends PFAHandler {
if ($result != 1) { if ($result != 1) {
$this->errormsg[] = Lang::read($this->msg['store_error']) . "\n(" . $this->username . ")\n"; # TODO: change message + use sprintf $this->errormsg[] = Lang::read($this->msg['store_error']) . "\n(" . $this->username . ")\n"; # TODO: change message + use sprintf
return false; return false;
} else { }
# TODO: drop the "else" - if $result != 1, the "return false" will already exit the function
# TODO: everything after this comment (= specific to domains) should be a separate function, $result = $this->storemore();
# TODO: because everything above is generic "write values to DB" code
if ($result) {
db_log ($this->username, $this->msg['logname'], "");
}
return $result;
}
/**
* called by $this->store() after storing $this->values in the database
* can be used to update additional tables, call scripts etc.
*/
protected function storemore() {
# TODO: whitespace fix
if ($this->new && $this->values['default_aliases']) { if ($this->new && $this->values['default_aliases']) {
foreach (Config::read('default_aliases') as $address=>$goto) { foreach (Config::read('default_aliases') as $address=>$goto) {
$address = $address . "@" . $this->username; $address = $address . "@" . $this->username;
@ -260,7 +281,8 @@ class DomainHandler extends PFAHandler {
} else { } else {
# TODO: success message for edit # TODO: success message for edit
} }
} # TODO: END whitespace fix
if ($this->new) { if ($this->new) {
if (!domain_postcreation($this->username)) { if (!domain_postcreation($this->username)) {
@ -269,8 +291,7 @@ class DomainHandler extends PFAHandler {
} else { } else {
# we don't have domain_postedit() # we don't have domain_postedit()
} }
db_log ($this->username, $this->msg['logname'], ""); return true; # TODO: don't hardcode
return true;
} }
/** /**

Loading…
Cancel
Save