diff --git a/functions.inc.php b/functions.inc.php
index aeef0cbe..c31eaa8f 100644
--- a/functions.inc.php
+++ b/functions.inc.php
@@ -392,6 +392,37 @@ function safecookie ($param, $default="") {
return $retval;
}
+/**
+ * pacol
+ * @param int $allow_editing
+ * @param int $display_in_form
+ * @param int display_in_list
+ * @param String $type
+ * @param String PALANG_label
+ * @param String PALANG_desc
+ * @param any optional $default
+ * @param array optional $options
+ * @param int $not_in_db
+ * @return array for $struct
+ */
+function pacol($allow_editing, $display_in_form, $display_in_list, $type, $PALANG_label, $PALANG_desc, $default = "", $options = array(), $not_in_db=0) {
+ global $PALANG;
+
+ if ($PALANG_label != '') $PALANG_label = $PALANG[$PALANG_label];
+ if ($PALANG_desc != '') $PALANG_desc = $PALANG[$PALANG_desc ];
+
+ return array(
+ 'editable' => $allow_editing,
+ 'display_in_form' => $display_in_form,
+ 'display_in_list' => $display_in_list,
+ 'type' => $type,
+ 'label' => $PALANG_label, # $PALANG field label
+ 'desc' => $PALANG_desc, # $PALANG field description
+ 'default' => $default,
+ 'options' => $options,
+ 'not_in_db' => $not_in_db,
+ );
+}
//
// get_domain_properties
diff --git a/model/DomainHandler.php b/model/DomainHandler.php
index b1413b57..0075da94 100644
--- a/model/DomainHandler.php
+++ b/model/DomainHandler.php
@@ -9,7 +9,6 @@ class DomainHandler extends PFAHandler {
protected $username = null; # actually it's the domain - variable name kept for consistence with the other classes
protected $id_field = null;
protected $struct = array();
- protected $defaults = array();
protected $new = 0; # 1 on create, otherwise 0
public $errormsg = array();
@@ -28,36 +27,32 @@ class DomainHandler extends PFAHandler {
private function initStruct() {
$this->id_field = 'domain';
- # TODO: merge $struct and $defaults to one array?
- # TODO: use a helper function to fill $struct with named keys instead of [0], [1], ...
- # TODO: find a way to handle field labels - not sure if the fetchmail way (construct $LANG keys from field name) is perfect
+ # TODO: shorter PALANG labels ;-)
+ # TODO: hardcode 'default' to Config::read in pacol()?
+
+ $transp = boolconf('transport') ? 1 : 0; # TOOD: use a function or write a Config::intbool function
+ $quota = boolconf('maxquota') ? 1 : 0; # TOOD: use a function or write a Config::intbool function
+ $dom_q = boolconf('domain_quota') ? 1 : 0; # TOOD: use a function or write a Config::intbool function
$this->struct=array(
- # field name allow display in... type
+ # field name allow display in... type $PALANG label $PALANG description default / options / not in database
# editing? form list
- "domain" => array( $this->new, 1, 1, 'text' ),
- "description" => array( 1, 1, 1, 'text' ),
- "aliases" => array( 1, 1, 1, 'num' ),
- "mailboxes" => array( 1, 1, 1, 'num' ),
- "maxquota" => array( 1, 1, 1, 'num' ),
- "quota" => array( 1, 1, 1, 'num' ),
- "transport" => array( 1, 1, 1, 'enum' ),
- "backupmx" => array( 1, 1, 1, 'bool' ),
- "active" => array( 1, 1, 1, 'bool' ),
- "created" => array( 0, 0, 1, 'text' ),
- "modified" => array( 0, 0, 1, 'text' ),
- );
- # labels and descriptions are taken from $PALANG['pFetchmail_field_xxx'] and $PALANG['pFetchmail_desc_xxx']
-
- $this->defaults=array(
- 'aliases' => Config::read('aliases'),
- 'mailboxes' => Config::read('mailboxes'),
- 'maxquota' => Config::read('maxquota'),
- 'quota' => Config::read('domain_quota_default'),
- 'transport' => $this->getTransports(),
- 'backupmx' => 0,
- 'active' => 1,
+ "domain" => pacol( $this->new, 1, 1, 'text', 'pAdminEdit_domain_domain' , '' ),
+ "description" => pacol( 1, 1, 1, 'text', 'pAdminEdit_domain_description', '' ),
+ "aliases" => pacol( 1, 1, 1, 'num' , 'pAdminEdit_domain_aliases' , 'pAdminEdit_domain_aliases_text' , Config::read('aliases') ),
+ "mailboxes" => pacol( 1, 1, 1, 'num' , 'pAdminEdit_domain_mailboxes' , 'pAdminEdit_domain_mailboxes_text' , Config::read('mailboxes') ),
+ "maxquota" => pacol( $quota, $quota, $quota, 'num' , 'pAdminEdit_domain_maxquota' , 'pAdminEdit_domain_maxquota_text' , Config::read('maxquota') ),
+ "quota" => pacol( $dom_q, $dom_q, $dom_q, 'num' , 'pAdminEdit_domain_quota' , 'pAdminEdit_domain_maxquota_text' , Config::read('domain_quota_default') ),
+ "transport" => pacol( $transp, $transp,$transp,'enum', 'pAdminEdit_domain_transport' , 'pAdminEdit_domain_transport_text' , Config::read('transport_default') ,
+ /*options*/ $this->getTransports() ),
+ "backupmx" => pacol( 1, 1, 1, 'bool', 'pAdminEdit_domain_backupmx' , '' ),
+ "active" => pacol( 1, 1, 1, 'bool', 'pAdminEdit_domain_active' , '' ),
+ "defaultaliases" => pacol( $this->new, 1, 0, 'bool', 'pAdminCreate_domain_defaultaliases ', '' , '','', /*not in db*/ 1 ),
+ "created" => pacol( 0, 0, 1, 'text', '' , '' ), # TODO: type = date?
+ # TODO (or "ctime/mtime" so that "date" can be used for vacation start/end date)
+ "modified" => pacol( 0, 0, 1, 'text', 'pAdminList_domain_modified' , '' ), # TODO: type = date?
);
+
}
public function getTransports() {
@@ -81,11 +76,13 @@ class DomainHandler extends PFAHandler {
# base validation
$checked = array();
foreach($this->struct as $key=>$row) {
- list($editable, $displayform, $displaylist, $type) = $row;
- if ($editable != 0){
- $func="_inp_".$type;
- $val=safepost($key);
- if ($type!="password" || strlen($values[$key]) > 0 || $this->new == 1) { # skip on empty (aka unchanged) password on edit
+# list($editable, $displayform, $displaylist, $type) = $row;
+ if ($row['editable'] == 0){ # not editable
+ # TODO: fill with defaults if $this->new != 0
+ } else {
+ $func="_inp_".$row['type'];
+ $val=safepost($key); # TODO: use $values instead of $_POST
+ if ($row['type'] != "password" || strlen($values[$key]) > 0 || $this->new == 1) { # skip on empty (aka unchanged) password on edit
if (method_exists($this, $func) ) {
$checked[$key] = $this->{$func}($values[$key]);
} else {
@@ -114,12 +111,13 @@ class DomainHandler extends PFAHandler {
'domain' => $this->username,
);
$result = db_insert ('alias', $arr);
+ # TODO: error checking
}
}
- $tMessage = Lang::read('pAdminCreate_domain_result_success') . "
(" . $this->username . ")";
+ $tMessage = Lang::read('pAdminCreate_domain_result_success') . "
(" . $this->username . ")"; # TODO: remove
# TODO: tMessage is not used/returned anywhere
}
if (!domain_postcreation($this->username)) {
- $tMessage = Lang::read('pAdminCreate_domain_error');
+ $tMessage = Lang::read('pAdminCreate_domain_error'); # TODO: tMessage is not used/returned anywhere
}
db_log ($this->username, 'create_domain', "");
return true;