From e22f1ee5203faf0f33abf02b92cb0a0d3f30a801 Mon Sep 17 00:00:00 2001 From: tbrehm Date: Thu, 16 Feb 2006 21:36:09 +0000 Subject: [PATCH] Updates mail module --- config/exim4/exim4.conf.template | 35 +- interface/lib/classes/getconf.inc.php | 60 + interface/lib/classes/ini_parser.inc.php | 69 + interface/lib/classes/listform.inc.php | 590 +++--- interface/lib/classes/tform.inc.php | 1786 ++++++++--------- interface/lib/config.inc.php | 196 +- interface/sql/ispconfig3db.sql | 569 +++--- .../{sites => mail}/form/mail_alias.tform.php | 223 +- .../form/mail_blacklist.tform.php | 198 +- .../{sites => mail}/form/mail_box.tform.php | 281 +-- .../form/mail_domain.tform.php | 209 +- .../form/mail_domain_alias.tform.php | 234 +-- .../form/mail_domain_catchall.tform.php | 209 +- .../form/mail_domain_relay.tform.php | 209 +- .../form/mail_forward.tform.php | 0 .../web/mail/form/mail_spamfilter.tform.php | 146 ++ .../form/mail_whitelist.tform.php | 198 +- .../web/{sites => mail}/lib/admin.conf.php | 0 .../lib/lang/en_mail_alias.lng | 19 +- .../lib/lang/en_mail_alias_list.lng | 0 .../lib/lang/en_mail_blacklist.lng | 15 +- .../lib/lang/en_mail_blacklist_list.lng | 24 +- .../{sites => mail}/lib/lang/en_mail_box.lng | 26 +- .../lib/lang/en_mail_box_list.lng | 0 .../lib/lang/en_mail_domain.lng | 22 +- .../lib/lang/en_mail_domain_alias.lng | 22 +- .../lib/lang/en_mail_domain_alias_list.lng | 25 +- .../lib/lang/en_mail_domain_catchall.lng | 17 +- .../lib/lang/en_mail_domain_catchall_list.lng | 25 +- .../lib/lang/en_mail_domain_list.lng | 23 +- .../lib/lang/en_mail_domain_relay.lng | 18 +- .../lib/lang/en_mail_domain_relay_list.lng | 23 +- .../lib/lang/en_mail_forward.lng | 0 .../lib/lang/en_mail_forward_list.lng | 0 .../web/mail/lib/lang/en_mail_spamfilter.lng | 19 + .../mail/lib/lang/en_mail_spamfilter_list.lng | 13 + .../lib/lang/en_mail_whitelist.lng | 15 +- .../lib/lang/en_mail_whitelist_list.lng | 24 +- .../lib/lang/fr_mail_domain.lng | 0 .../lib/lang/fr_mail_domain_list.lng | 0 .../lib/lang/se_mail_alias.lng | 0 .../lib/lang/se_mail_alias_list.lng | 0 .../lib/lang/se_mail_blacklist.lng | 0 .../lib/lang/se_mail_blacklist_list.lng | 0 .../{sites => mail}/lib/lang/se_mail_box.lng | 0 .../lib/lang/se_mail_box_list.lng | 0 .../lib/lang/se_mail_domain.lng | 0 .../lib/lang/se_mail_domain_alias.lng | 0 .../lib/lang/se_mail_domain_alias_list.lng | 0 .../lib/lang/se_mail_domain_catchall.lng | 0 .../lib/lang/se_mail_domain_catchall_list.lng | 0 .../lib/lang/se_mail_domain_list.lng | 0 .../lib/lang/se_mail_domain_relay.lng | 0 .../lib/lang/se_mail_domain_relay_list.lng | 0 .../lib/lang/se_mail_forward.lng | 0 .../lib/lang/se_mail_forward_list.lng | 0 .../lib/lang/se_mail_whitelist.lng | 0 .../lib/lang/se_mail_whitelist_list.lng | 0 .../web/{sites => mail}/lib/module.conf.php | 48 +- .../{sites => mail}/list/mail_alias.list.php | 0 .../list/mail_blacklist.list.php | 160 +- .../{sites => mail}/list/mail_box.list.php | 0 .../{sites => mail}/list/mail_domain.list.php | 152 +- .../list/mail_domain_alias.list.php | 167 +- .../list/mail_domain_catchall.list.php | 159 +- .../list/mail_domain_relay.list.php | 149 +- .../list/mail_forward.list.php | 0 .../web/mail/list/mail_spamfilter.list.php | 85 + .../list/mail_whitelist.list.php | 160 +- .../web/{sites => mail}/mail_alias_del.php | 0 .../web/{sites => mail}/mail_alias_edit.php | 0 .../web/{sites => mail}/mail_alias_list.php | 0 .../{sites => mail}/mail_blacklist_del.php | 0 interface/web/mail/mail_blacklist_edit.php | 106 + .../{sites => mail}/mail_blacklist_list.php | 0 .../web/{sites => mail}/mail_box_del.php | 0 .../web/{sites => mail}/mail_box_edit.php | 213 +- .../web/{sites => mail}/mail_box_list.php | 0 .../{sites => mail}/mail_domain_alias_del.php | 0 .../mail_domain_alias_edit.php | 0 .../mail_domain_alias_list.php | 0 .../mail_domain_catchall_del.php | 0 .../mail_domain_catchall_edit.php | 0 .../mail_domain_catchall_list.php | 0 .../web/{sites => mail}/mail_domain_del.php | 0 .../web/{sites => mail}/mail_domain_edit.php | 0 .../web/{sites => mail}/mail_domain_list.php | 0 .../{sites => mail}/mail_domain_relay_del.php | 0 .../mail_domain_relay_edit.php | 0 .../mail_domain_relay_list.php | 0 interface/web/mail/mail_domain_route_del.php | 54 + .../mail_domain_route_edit.php} | 5 +- interface/web/mail/mail_domain_route_list.php | 30 + .../web/{sites => mail}/mail_forward_del.php | 0 .../web/{sites => mail}/mail_forward_edit.php | 0 .../web/{sites => mail}/mail_forward_list.php | 0 .../mail_spamfilter_del.php} | 107 +- interface/web/mail/mail_spamfilter_edit.php | 127 ++ interface/web/mail/mail_spamfilter_list.php | 26 + .../{sites => mail}/mail_whitelist_del.php | 0 interface/web/mail/mail_whitelist_edit.php | 106 + .../{sites => mail}/mail_whitelist_list.php | 0 .../templates/mail_alias_edit.htm | 0 .../templates/mail_alias_list.htm | 0 .../templates/mail_blacklist_edit.htm | 58 +- .../templates/mail_blacklist_list.htm | 57 +- .../templates/mail_box_autoresponder_edit.htm | 0 .../templates/mail_box_list.htm | 0 .../templates/mail_box_mailbox_edit.htm | 50 +- .../templates/mail_domain_alias_edit.htm | 0 .../templates/mail_domain_alias_list.htm | 61 +- .../templates/mail_domain_catchall_edit.htm | 0 .../templates/mail_domain_catchall_list.htm | 61 +- .../templates/mail_domain_edit.htm | 0 .../templates/mail_domain_list.htm | 53 +- .../templates/mail_domain_relay_edit.htm | 0 .../templates/mail_domain_relay_list.htm | 54 +- .../templates/mail_forward_edit.htm | 0 .../templates/mail_forward_list.htm | 0 .../mail/templates/mail_spamfilter_edit.htm | 66 + .../mail/templates/mail_spamfilter_list.htm | 30 + .../templates/mail_whitelist_edit.htm | 58 +- .../templates/mail_whitelist_list.htm | 57 +- 123 files changed, 4582 insertions(+), 3419 deletions(-) create mode 100644 interface/lib/classes/getconf.inc.php create mode 100644 interface/lib/classes/ini_parser.inc.php rename interface/web/{sites => mail}/form/mail_alias.tform.php (95%) rename interface/web/{sites => mail}/form/mail_blacklist.tform.php (94%) rename interface/web/{sites => mail}/form/mail_box.tform.php (88%) rename interface/web/{sites => mail}/form/mail_domain.tform.php (94%) rename interface/web/{sites => mail}/form/mail_domain_alias.tform.php (91%) rename interface/web/{sites => mail}/form/mail_domain_catchall.tform.php (94%) rename interface/web/{sites => mail}/form/mail_domain_relay.tform.php (95%) rename interface/web/{sites => mail}/form/mail_forward.tform.php (100%) create mode 100644 interface/web/mail/form/mail_spamfilter.tform.php rename interface/web/{sites => mail}/form/mail_whitelist.tform.php (94%) rename interface/web/{sites => mail}/lib/admin.conf.php (100%) rename interface/web/{sites => mail}/lib/lang/en_mail_alias.lng (68%) rename interface/web/{sites => mail}/lib/lang/en_mail_alias_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/en_mail_blacklist.lng (70%) rename interface/web/{sites => mail}/lib/lang/en_mail_blacklist_list.lng (83%) rename interface/web/{sites => mail}/lib/lang/en_mail_box.lng (72%) rename interface/web/{sites => mail}/lib/lang/en_mail_box_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain.lng (80%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_alias.lng (57%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_alias_list.lng (92%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_catchall.lng (77%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_catchall_list.lng (92%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_list.lng (91%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_relay.lng (73%) rename interface/web/{sites => mail}/lib/lang/en_mail_domain_relay_list.lng (91%) rename interface/web/{sites => mail}/lib/lang/en_mail_forward.lng (100%) rename interface/web/{sites => mail}/lib/lang/en_mail_forward_list.lng (100%) create mode 100644 interface/web/mail/lib/lang/en_mail_spamfilter.lng create mode 100644 interface/web/mail/lib/lang/en_mail_spamfilter_list.lng rename interface/web/{sites => mail}/lib/lang/en_mail_whitelist.lng (70%) rename interface/web/{sites => mail}/lib/lang/en_mail_whitelist_list.lng (83%) rename interface/web/{sites => mail}/lib/lang/fr_mail_domain.lng (100%) rename interface/web/{sites => mail}/lib/lang/fr_mail_domain_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_alias.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_alias_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_blacklist.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_blacklist_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_box.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_box_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_alias.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_alias_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_catchall.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_catchall_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_relay.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_domain_relay_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_forward.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_forward_list.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_whitelist.lng (100%) rename interface/web/{sites => mail}/lib/lang/se_mail_whitelist_list.lng (100%) rename interface/web/{sites => mail}/lib/module.conf.php (57%) rename interface/web/{sites => mail}/list/mail_alias.list.php (100%) rename interface/web/{sites => mail}/list/mail_blacklist.list.php (64%) rename interface/web/{sites => mail}/list/mail_box.list.php (100%) rename interface/web/{sites => mail}/list/mail_domain.list.php (70%) rename interface/web/{sites => mail}/list/mail_domain_alias.list.php (73%) rename interface/web/{sites => mail}/list/mail_domain_catchall.list.php (86%) rename interface/web/{sites => mail}/list/mail_domain_relay.list.php (70%) rename interface/web/{sites => mail}/list/mail_forward.list.php (100%) create mode 100644 interface/web/mail/list/mail_spamfilter.list.php rename interface/web/{sites => mail}/list/mail_whitelist.list.php (64%) rename interface/web/{sites => mail}/mail_alias_del.php (100%) rename interface/web/{sites => mail}/mail_alias_edit.php (100%) rename interface/web/{sites => mail}/mail_alias_list.php (100%) rename interface/web/{sites => mail}/mail_blacklist_del.php (100%) create mode 100644 interface/web/mail/mail_blacklist_edit.php rename interface/web/{sites => mail}/mail_blacklist_list.php (100%) rename interface/web/{sites => mail}/mail_box_del.php (100%) rename interface/web/{sites => mail}/mail_box_edit.php (91%) rename interface/web/{sites => mail}/mail_box_list.php (100%) rename interface/web/{sites => mail}/mail_domain_alias_del.php (100%) rename interface/web/{sites => mail}/mail_domain_alias_edit.php (100%) rename interface/web/{sites => mail}/mail_domain_alias_list.php (100%) rename interface/web/{sites => mail}/mail_domain_catchall_del.php (100%) rename interface/web/{sites => mail}/mail_domain_catchall_edit.php (100%) rename interface/web/{sites => mail}/mail_domain_catchall_list.php (100%) rename interface/web/{sites => mail}/mail_domain_del.php (100%) rename interface/web/{sites => mail}/mail_domain_edit.php (100%) rename interface/web/{sites => mail}/mail_domain_list.php (100%) rename interface/web/{sites => mail}/mail_domain_relay_del.php (100%) rename interface/web/{sites => mail}/mail_domain_relay_edit.php (100%) rename interface/web/{sites => mail}/mail_domain_relay_list.php (100%) create mode 100644 interface/web/mail/mail_domain_route_del.php rename interface/web/{sites/mail_blacklist_edit.php => mail/mail_domain_route_edit.php} (93%) create mode 100644 interface/web/mail/mail_domain_route_list.php rename interface/web/{sites => mail}/mail_forward_del.php (100%) rename interface/web/{sites => mail}/mail_forward_edit.php (100%) rename interface/web/{sites => mail}/mail_forward_list.php (100%) rename interface/web/{sites/mail_whitelist_edit.php => mail/mail_spamfilter_del.php} (89%) create mode 100644 interface/web/mail/mail_spamfilter_edit.php create mode 100644 interface/web/mail/mail_spamfilter_list.php rename interface/web/{sites => mail}/mail_whitelist_del.php (100%) create mode 100644 interface/web/mail/mail_whitelist_edit.php rename interface/web/{sites => mail}/mail_whitelist_list.php (100%) rename interface/web/{sites => mail}/templates/mail_alias_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_alias_list.htm (100%) rename interface/web/{sites => mail}/templates/mail_blacklist_edit.htm (72%) rename interface/web/{sites => mail}/templates/mail_blacklist_list.htm (56%) rename interface/web/{sites => mail}/templates/mail_box_autoresponder_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_box_list.htm (100%) rename interface/web/{sites => mail}/templates/mail_box_mailbox_edit.htm (80%) rename interface/web/{sites => mail}/templates/mail_domain_alias_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_domain_alias_list.htm (70%) rename interface/web/{sites => mail}/templates/mail_domain_catchall_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_domain_catchall_list.htm (71%) rename interface/web/{sites => mail}/templates/mail_domain_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_domain_list.htm (65%) rename interface/web/{sites => mail}/templates/mail_domain_relay_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_domain_relay_list.htm (62%) rename interface/web/{sites => mail}/templates/mail_forward_edit.htm (100%) rename interface/web/{sites => mail}/templates/mail_forward_list.htm (100%) create mode 100644 interface/web/mail/templates/mail_spamfilter_edit.htm create mode 100644 interface/web/mail/templates/mail_spamfilter_list.htm rename interface/web/{sites => mail}/templates/mail_whitelist_edit.htm (72%) rename interface/web/{sites => mail}/templates/mail_whitelist_list.htm (56%) diff --git a/config/exim4/exim4.conf.template b/config/exim4/exim4.conf.template index ac9ad56ae2..20bdcba86b 100644 --- a/config/exim4/exim4.conf.template +++ b/config/exim4/exim4.conf.template @@ -126,8 +126,11 @@ acl_check_rcpt: domains = +local_domains require verify = sender + + # Whitelist + - # Blacklist management + # Blacklist deny senders = ${lookup mysql {SELECT DISTINCT address FROM MYSQL_BLACKTABLE WHERE '${quote_mysql:$sender_address}' LIKE address \ AND (recipient = '' OR recipient = '${quote_mysql:$domain}' OR recipient = '${quote_mysql:$local_part}@${quote_mysql:$domain}') \ AND active = '1' AND server_id = 'MAILSERVER_ID'}{$value}} @@ -159,11 +162,11 @@ acl_check_host: acl_check_helo: accept hosts = +relay_from_hosts - # If the HELO pretend to be this host - deny condition = ${if or { \ - {eq {${lc:$sender_helo_name}}{MAILSERVER_HOSTNAME}} \ - {eq {${lc:$sender_helo_name}}{MAILSERVER_IP}} \ - } {true}{false} } + # If the HELO pretend to be this host + deny condition = ${if or { \ + {eq {${lc:$sender_helo_name}}{MAILSERVER_HOSTNAME}} \ + {eq {${lc:$sender_helo_name}}{MAILSERVER_IP}} \ + } {true}{false} } # by default we accept accept @@ -182,9 +185,9 @@ acl_check_data: warn message = X-SA-Report: $spam_report spam = nobody:true - condition = ${if >{$spam_score_int}{0}{true}{false}} - warn message = X-SA-Status: Yes + + warn message = X-SA-Status: Yes spam = nobody:true condition = ${if >{$spam_score_int}{50}{true}{false}} @@ -261,7 +264,7 @@ dnslookup: # allow_fail # allow_defer # data = ${lookup{$local_part}lsearch{/etc/aliases}} -# user = exim +# user = exim # file_transport = address_file # pipe_transport = address_pipe @@ -347,14 +350,14 @@ autoresponder_router: transport = autoresponder_transport unseen -cc_router: - driver = redirect - data = ${lookup mysql {SELECT cc FROM MYSQL_EMAILTABLE WHERE email=CONCAT('${quote_mysql:$local_part}','@','${quote_mysql:$domain}')}{$value}} - unseen +# cc_router: +# driver = redirect +# data = ${lookup mysql {SELECT cc FROM MYSQL_EMAILTABLE WHERE email=CONCAT('${quote_mysql:$local_part}','@','${quote_mysql:$domain}')}{$value}} +# unseen -forward_router: - driver = redirect - data = ${lookup mysql {SELECT forward FROM MYSQL_EMAILTABLE WHERE email=CONCAT('${quote_mysql:$local_part}','@','${quote_mysql:$domain}') AND forward != ''}{$value}} +# forward_router: +# driver = redirect +# data = ${lookup mysql {SELECT forward FROM MYSQL_EMAILTABLE WHERE email=CONCAT('${quote_mysql:$local_part}','@','${quote_mysql:$domain}') AND forward != ''}{$value}} local_mailbox_router: driver = accept diff --git a/interface/lib/classes/getconf.inc.php b/interface/lib/classes/getconf.inc.php new file mode 100644 index 0000000000..fd0c088649 --- /dev/null +++ b/interface/lib/classes/getconf.inc.php @@ -0,0 +1,60 @@ +config[$server_id])) { + $app->uses('ini_parser'); + $server_id = intval($server_id); + $server = $app->db->queryOneRecord("SELECT config FROM server WHERE server_id = $server_id"); + $this->config[$server_id] = $app->ini_parser->parse_ini_string(stripslashes($server["config"])); + } + + if($section == '') { + return $this->config[$server_id]; + } else { + return $this->config[$server_id][$section]; + } + } + + function get_global_config() { + + die("not yet implemented"); + + } + +} + +?> \ No newline at end of file diff --git a/interface/lib/classes/ini_parser.inc.php b/interface/lib/classes/ini_parser.inc.php new file mode 100644 index 0000000000..349990f191 --- /dev/null +++ b/interface/lib/classes/ini_parser.inc.php @@ -0,0 +1,69 @@ +config[$section][$item] = trim($matches[2]); + } + } + } + return $this->config; + } + + + + function get_ini_string($file) { + $content = ''; + foreach($this->config as $section => $data) { + $content .= "[$section]\n"; + foreach($data as $item => $value) { + if($value != '') $content .= "$item=$value\n"; + } + } + return $content; + } + +} + +?> \ No newline at end of file diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index d7f1aec3a2..e81a256206 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -1,264 +1,328 @@ -listDef = $liste; - $this->module = $module; - return true; - } - - function getSearchSQL($sql_where = "") { - global $db; - - // Hole Config Variablen - $list_name = $this->listDef["name"]; - $search_prefix = $this->listDef["search_prefix"]; - - // speichere Suchanfrage - foreach($this->listDef["item"] as $i) { - $field = $i["field"]; - - // hat sich die suche geändert - if(isset($_REQUEST[$search_prefix.$field]) and $_REQUEST[$search_prefix.$field] != $_SESSION["search"][$list_name][$search_prefix.$field]) $this->searchChanged = 1; - - // suchfeld in session speichern. - if(isset($_REQUEST[$search_prefix.$field])) $_SESSION["search"][$list_name][$search_prefix.$field] = $_REQUEST[$search_prefix.$field]; - - if($i["formtype"] == "SELECT") { - if(is_array($i['value'])) { - $out = ''; - foreach($i['value'] as $k => $v) { - $selected = ($k == $_SESSION["search"][$list_name][$search_prefix.$field] && $_SESSION["search"][$list_name][$search_prefix.$field] != '')?' SELECTED':''; - $out .= "\r\n"; - } - } - $this->searchValues[$search_prefix.$field] = $out; - } else { - $this->searchValues[$search_prefix.$field] = $_SESSION["search"][$list_name][$search_prefix.$field]; - } - } - - // Speichere Variablen in Objekt zum späteren einparsen in Template - // $this->searchValues = $_SESSION["search"][$list_name]; - - foreach($this->listDef["item"] as $i) { - $field = $i["field"]; - if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and"; - } - - if($sql_where != '') { - $sql_where = substr($sql_where,0,-3); - } else { - $sql_where = "1"; - } - - - return $sql_where; - } - - function getPagingSQL($sql_where = "1") { - global $app, $conf; - - // Hole Config Variablen - $list_name = $this->listDef["name"]; - $search_prefix = $this->listDef["search_prefix"]; - $records_per_page = $this->listDef["records_per_page"]; - $table = $this->listDef["table"]; - - // setze page auf null, wenn in session nicht gesetzt - if($_SESSION["search"][$list_name]["page"] == '') $_SESSION["search"][$list_name]["page"] = 0; - - // setze page auf wert der request variablen "page" - if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $_REQUEST["page"]; - - // page auf 0 setzen, wenn suche sich geändert hat. - if($this->searchChanged == 1) $_SESSION["search"][$list_name]["page"] = 0; - - $sql_von = $_SESSION["search"][$list_name]["page"] * $records_per_page; - $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table WHERE $sql_where"); - $pages = intval($record_count["anzahl"] / $records_per_page); - - - $vars["list_file"] = $this->listDef["file"]; - $vars["page"] = $_SESSION["search"][$list_name]["page"]; - $vars["last_page"] = $_SESSION["search"][$list_name]["page"] - 1; - $vars["next_page"] = $_SESSION["search"][$list_name]["page"] + 1; - $vars["pages"] = $pages; - $vars["max_pages"] = $pages + 1; - $vars["records_gesamt"] = $record_count["anzahl"]; - $vars["page_params"] = $this->listDef["page_params"]; - - - if($_SESSION["search"][$list_name]["page"] > 0) $vars["show_page_back"] = 1; - if($_SESSION["search"][$list_name]["page"] <= $seiten - 1) $vars["show_page_next"] = 1; - - $this->pagingValues = $vars; - $this->pagingHTML = $this->getPagingHTML($vars); - - $limit_sql = "LIMIT $sql_von, $records_per_page"; - - return $limit_sql; - } - - function getPagingHTML($vars) { - global $app; - $content = '[|<< ]'; - if($vars["show_page_back"] == 1) $content .= '[<< '.$app->lng('Back').'] '; - $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' '; - if($vars["show_page_next"] == 1) $content .= '['.$app->lng('Next').' >>] '; - $content .= '[ >>|]'; - - return $content; - } - - function getSortSQL() { - global $app, $conf; - - // Hole Config Variablen - $sort_field = $this->listDef["sort_field"]; - $sort_direction = $this->listDef["sort_direction"]; - - $sql_sort = ''; - - if($sort_field != '' && $sort_direction != '') { - $sql_sort = "ORDER BY $sort_field $sort_direction"; - } - - return $sql_sort; - } - - function decode($record) { - if(is_array($record)) { - foreach($this->listDef["item"] as $field) { - $key = $field["field"]; - switch ($field['datatype']) { - case 'VARCHAR': - $record[$key] = stripslashes($record[$key]); - break; - - case 'TEXT': - $record[$key] = stripslashes($record[$key]); - break; - - case 'DATE': - if($val > 0) { - $record[$key] = date($this->dateformat,$record[$key]); - } - break; - - case 'INTEGER': - $record[$key] = intval($record[$key]); - break; - - case 'DOUBLE': - $record[$key] = $record[$key]; - break; - - case 'CURRENCY': - $record[$key] = number_format($record[$key], 2, ',', ''); - break; - - default: - $record[$key] = stripslashes($record[$key]); - } - } - - } - return $record; - } - - - function encode($record) { - - if(is_array($record)) { - foreach($this->listDef["item"] as $field) { - $key = $field["field"]; - switch ($field['datatype']) { - case 'VARCHAR': - if(!is_array($record[$key])) { - $record[$key] = addslashes($record[$key]); - } else { - $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]); - } - break; - case 'TEXT': - if(!is_array($record[$key])) { - $record[$key] = addslashes($record[$key]); - } else { - $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]); - } - break; - case 'DATE': - if($record[$key] > 0) { - list($tag,$monat,$jahr) = explode('.',$record[$key]); - $record[$key] = mktime(0,0,0,$monat,$tag,$jahr); - } - break; - case 'INTEGER': - $record[$key] = intval($record[$key]); - break; - case 'DOUBLE': - $record[$key] = addslashes($record[$key]); - break; - case 'CURRENCY': - $record[$key] = str_replace(",",".",$record[$key]); - break; - } - - } - } - return $record; - } - -} - +listDef = $liste; + $this->module = $module; + + // Fill datasources + foreach($this->listDef["item"] as $key => $field) { + if(is_array($field['datasource'])) { + $this->listDef["item"][$key]["value"] = $this->getDatasourceData($field); + } + } + + return true; + } + + /** + * Get the key => value array of a form filed from a datasource definitiom + * + * @param field = array with field definition + * @param record = Dataset as array + * @return key => value array for the value field of a form + */ + + function getDatasourceData($field) { + global $app; + + $values = array(); + + if($field["datasource"]["type"] == 'SQL') { + + // Preparing SQL string. We will replace some + // common placeholders + $querystring = $field["datasource"]["querystring"]; + $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring); + $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring); + $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring); + $table_idx = $this->formDef['db_table_idx']; + //$querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring); + $app->uses("tform"); + $querystring = str_replace("{AUTHSQL}",$app->tform->getAuthSQL('r'),$querystring); + + // Getting the records + $tmp_records = $app->db->queryAllRecords($querystring); + if($app->db->errorMessage != '') die($app->db->errorMessage); + if(is_array($tmp_records)) { + $key_field = $field["datasource"]["keyfield"]; + $value_field = $field["datasource"]["valuefield"]; + foreach($tmp_records as $tmp_rec) { + $tmp_id = $tmp_rec[$key_field]; + $values[$tmp_id] = $tmp_rec[$value_field]; + } + } + } + + if($field["datasource"]["type"] == 'CUSTOM') { + // Calls a custom class to validate this record + if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') { + $datasource_class = $field["datasource"]['class']; + $datasource_function = $field["datasource"]['function']; + $app->uses($datasource_class); + $record = array(); + $values = $app->$datasource_class->$datasource_function($field, $record); + } else { + $this->errorMessage .= "Custom datasource class or function is empty
\r\n"; + } + } + + return $values; + + } + + function getSearchSQL($sql_where = "") { + global $db; + + // Hole Config Variablen + $list_name = $this->listDef["name"]; + $search_prefix = $this->listDef["search_prefix"]; + + // speichere Suchanfrage + foreach($this->listDef["item"] as $i) { + $field = $i["field"]; + + // hat sich die suche geändert + if(isset($_REQUEST[$search_prefix.$field]) and $_REQUEST[$search_prefix.$field] != $_SESSION["search"][$list_name][$search_prefix.$field]) $this->searchChanged = 1; + + // suchfeld in session speichern. + if(isset($_REQUEST[$search_prefix.$field])) $_SESSION["search"][$list_name][$search_prefix.$field] = $_REQUEST[$search_prefix.$field]; + + if($i["formtype"] == "SELECT") { + if(is_array($i['value'])) { + $out = ''; + foreach($i['value'] as $k => $v) { + $selected = ($k == $_SESSION["search"][$list_name][$search_prefix.$field] && $_SESSION["search"][$list_name][$search_prefix.$field] != '')?' SELECTED':''; + $out .= "\r\n"; + } + } + $this->searchValues[$search_prefix.$field] = $out; + } else { + $this->searchValues[$search_prefix.$field] = $_SESSION["search"][$list_name][$search_prefix.$field]; + } + } + + // Speichere Variablen in Objekt zum späteren einparsen in Template + // $this->searchValues = $_SESSION["search"][$list_name]; + + foreach($this->listDef["item"] as $i) { + $field = $i["field"]; + if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and"; + } + + if($sql_where != '') { + $sql_where = substr($sql_where,0,-3); + } else { + $sql_where = "1"; + } + + + return $sql_where; + } + + function getPagingSQL($sql_where = "1") { + global $app, $conf; + + // Hole Config Variablen + $list_name = $this->listDef["name"]; + $search_prefix = $this->listDef["search_prefix"]; + $records_per_page = $this->listDef["records_per_page"]; + $table = $this->listDef["table"]; + + // setze page auf null, wenn in session nicht gesetzt + if($_SESSION["search"][$list_name]["page"] == '') $_SESSION["search"][$list_name]["page"] = 0; + + // setze page auf wert der request variablen "page" + if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $_REQUEST["page"]; + + // page auf 0 setzen, wenn suche sich geändert hat. + if($this->searchChanged == 1) $_SESSION["search"][$list_name]["page"] = 0; + + $sql_von = $_SESSION["search"][$list_name]["page"] * $records_per_page; + $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table WHERE $sql_where"); + $pages = intval($record_count["anzahl"] / $records_per_page); + + + $vars["list_file"] = $this->listDef["file"]; + $vars["page"] = $_SESSION["search"][$list_name]["page"]; + $vars["last_page"] = $_SESSION["search"][$list_name]["page"] - 1; + $vars["next_page"] = $_SESSION["search"][$list_name]["page"] + 1; + $vars["pages"] = $pages; + $vars["max_pages"] = $pages + 1; + $vars["records_gesamt"] = $record_count["anzahl"]; + $vars["page_params"] = $this->listDef["page_params"]; + + + if($_SESSION["search"][$list_name]["page"] > 0) $vars["show_page_back"] = 1; + if($_SESSION["search"][$list_name]["page"] <= $seiten - 1) $vars["show_page_next"] = 1; + + $this->pagingValues = $vars; + $this->pagingHTML = $this->getPagingHTML($vars); + + $limit_sql = "LIMIT $sql_von, $records_per_page"; + + return $limit_sql; + } + + function getPagingHTML($vars) { + global $app; + $content = '[|<< ]'; + if($vars["show_page_back"] == 1) $content .= '[<< '.$app->lng('Back').'] '; + $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' '; + if($vars["show_page_next"] == 1) $content .= '['.$app->lng('Next').' >>] '; + $content .= '[ >>|]'; + + return $content; + } + + function getSortSQL() { + global $app, $conf; + + // Hole Config Variablen + $sort_field = $this->listDef["sort_field"]; + $sort_direction = $this->listDef["sort_direction"]; + + $sql_sort = ''; + + if($sort_field != '' && $sort_direction != '') { + $sql_sort = "ORDER BY $sort_field $sort_direction"; + } + + return $sql_sort; + } + + function decode($record) { + if(is_array($record)) { + foreach($this->listDef["item"] as $field) { + $key = $field["field"]; + switch ($field['datatype']) { + case 'VARCHAR': + $record[$key] = stripslashes($record[$key]); + break; + + case 'TEXT': + $record[$key] = stripslashes($record[$key]); + break; + + case 'DATE': + if($val > 0) { + $record[$key] = date($this->dateformat,$record[$key]); + } + break; + + case 'INTEGER': + $record[$key] = intval($record[$key]); + break; + + case 'DOUBLE': + $record[$key] = $record[$key]; + break; + + case 'CURRENCY': + $record[$key] = number_format($record[$key], 2, ',', ''); + break; + + default: + $record[$key] = stripslashes($record[$key]); + } + } + + } + return $record; + } + + + function encode($record) { + + if(is_array($record)) { + foreach($this->listDef["item"] as $field) { + $key = $field["field"]; + switch ($field['datatype']) { + case 'VARCHAR': + if(!is_array($record[$key])) { + $record[$key] = addslashes($record[$key]); + } else { + $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]); + } + break; + case 'TEXT': + if(!is_array($record[$key])) { + $record[$key] = addslashes($record[$key]); + } else { + $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]); + } + break; + case 'DATE': + if($record[$key] > 0) { + list($tag,$monat,$jahr) = explode('.',$record[$key]); + $record[$key] = mktime(0,0,0,$monat,$tag,$jahr); + } + break; + case 'INTEGER': + $record[$key] = intval($record[$key]); + break; + case 'DOUBLE': + $record[$key] = addslashes($record[$key]); + break; + case 'CURRENCY': + $record[$key] = str_replace(",",".",$record[$key]); + break; + } + + } + } + return $record; + } + +} + ?> \ No newline at end of file diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index 6a8d7bdc3e..dd489c365e 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -1,894 +1,894 @@ -tableDef = $table; - $this->table_name = $table_name; - $this->table_index = $table_index; - return true; - } - */ - - function loadFormDef($file,$module = '') { - global $app,$conf; - - include_once($file); - $this->formDef = $form; - - $this->module = $module; - if($module == '') { - include_once("lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"); - } else { - include_once("../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"); - } - $this->wordbook = $wb; - - return true; - } - - - /** - * Konvertiert die Daten des übergebenen assoziativen - * Arrays in "menschenlesbare" Form. - * Datentyp Konvertierung, z.B. für Ausgabe in Listen. - * - * @param record - * @return record - */ - function decode($record,$tab) { - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); - if(is_array($record)) { - foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { - switch ($field['datatype']) { - case 'VARCHAR': - $new_record[$key] = stripslashes($record[$key]); - break; - - case 'TEXT': - $new_record[$key] = stripslashes($record[$key]); - break; - - case 'DATE': - if($record[$key] > 0) { - $new_record[$key] = date($this->dateformat,$record[$key]); - } - break; - - case 'INTEGER': - $new_record[$key] = intval($record[$key]); - break; - - case 'DOUBLE': - $new_record[$key] = $record[$key]; - break; - - case 'CURRENCY': - $new_record[$key] = number_format($record[$key], 2, ',', ''); - break; - - default: - $new_record[$key] = stripslashes($record[$key]); - } - } - - } - return $new_record; - } - - /** - * Get the key => value array of a form filed from a datasource definitiom - * - * @param field = NEW oder EDIT - * @param record = Dataset as array - * @return key => value array for the value field of a form - */ - - function getDatasourceData($field, $record) { - global $app; - - $values = array(); - - if($field["datasource"]["type"] == 'SQL') { - - // Preparing SQL string. We will replace some - // common placeholders - $querystring = $field["datasource"]["querystring"]; - $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring); - $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring); - $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring); - $table_idx = $this->formDef['db_table_idx']; - $querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring); - $querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring); - - // Getting the records - $tmp_records = $app->db->queryAllRecords($querystring); - if($app->db->errorMessage != '') die($app->db->errorMessage); - if(is_array($tmp_records)) { - $key_field = $field["datasource"]["keyfield"]; - $value_field = $field["datasource"]["valuefield"]; - foreach($tmp_records as $tmp_rec) { - $tmp_id = $tmp_rec[$key_field]; - $values[$tmp_id] = $tmp_rec[$value_field]; - } - } - } - - if($field["datasource"]["type"] == 'CUSTOM') { - // Calls a custom class to validate this record - if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') { - $datasource_class = $field["datasource"]['class']; - $datasource_function = $field["datasource"]['function']; - $app->uses($datasource_class); - $values = $app->$datasource_class->$datasource_function($field, $record); - } else { - $this->errorMessage .= "Custom datasource class or function is empty
\r\n"; - } - } - - return $values; - - } - - - /** - * Record für Ausgabe in Formularen vorbereiten. - * - * @param record = Datensatz als Array - * @param action = NEW oder EDIT - * @return record - */ - function getHTML($record, $tab, $action = 'NEW') { - - global $app; - - $this->action = $action; - - if(!is_array($this->formDef)) $app->error("Keine Formdefinition vorhanden."); - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); - - $new_record = array(); - if($action == 'EDIT') { - $record = $this->decode($record,$tab); - if(is_array($record)) { - foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { - $val = $record[$key]; - - // If Datasource is set, get the data from there - if(is_array($field['datasource'])) { - $field["value"] = $this->getDatasourceData($field, $record); - } - - switch ($field['formtype']) { - case 'SELECT': - if(is_array($field['value'])) { - $out = ''; - foreach($field['value'] as $k => $v) { - $selected = ($k == $val)?' SELECTED':''; - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - case 'MULTIPLE': - if(is_array($field['value'])) { - - // aufsplitten ergebnisse - $vals = explode($field['separator'],$val); - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - - $selected = ''; - foreach($vals as $tvl) { - if(trim($tvl) == trim($k)) $selected = ' SELECTED'; - } - - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'PASSWORD': - $new_record[$key] = ''; - break; - - case 'CHECKBOX': - $checked = (empty($val))?'':' CHECKED'; - $new_record[$key] = "\r\n"; - break; - - case 'CHECKBOXARRAY': - if(is_array($field['value'])) { - - // aufsplitten ergebnisse - $vals = explode($field['separator'],$val); - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - - $checked = ''; - foreach($vals as $tvl) { - if(trim($tvl) == trim($k)) $checked = ' CHECKED'; - } - - $out .= "$v
\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'RADIO': - if(is_array($field['value'])) { - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - $checked = ($k == $val)?' CHECKED':''; - $out .= " $v
\r\n"; - } - } - $new_record[$key] = $out; - break; - - default: - $new_record[$key] = htmlspecialchars($record[$key]); - } - } - } - } else { - // Action: NEW - foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { - - // If Datasource is set, get the data from there - if(is_array($field['datasource'])) { - $field["value"] = $this->getDatasourceData($field, $record); - } - - switch ($field['formtype']) { - case 'SELECT': - if(is_array($field['value'])) { - $out = ''; - foreach($field['value'] as $k => $v) { - $selected = ($k == $val)?' SELECTED':''; - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - case 'MULTIPLE': - if(is_array($field['value'])) { - - // aufsplitten ergebnisse - $vals = explode($field['separator'],$val); - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - - $out .= "\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'PASSWORD': - $new_record[$key] = ''; - break; - - case 'CHECKBOX': - $checked = (empty($field["default"]))?'':' CHECKED'; - $new_record[$key] = "\r\n"; - break; - - case 'CHECKBOXARRAY': - if(is_array($field['value'])) { - - // aufsplitten ergebnisse - $vals = explode($field['separator'],$field["default"]); - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - - $checked = ''; - foreach($vals as $tvl) { - if(trim($tvl) == trim($k)) $checked = ' CHECKED'; - } - - $out .= " $v
\r\n"; - } - } - $new_record[$key] = $out; - break; - - case 'RADIO': - if(is_array($field['value'])) { - - // HTML schreiben - $out = ''; - foreach($field['value'] as $k => $v) { - $checked = ($k == $field["default"])?' CHECKED':''; - $out .= " $v
\r\n"; - } - } - $new_record[$key] = $out; - break; - - default: - $new_record[$key] = htmlspecialchars($field['default']); - } - } - - } - - if($this->debug == 1) $this->dbg($new_record); - - return $new_record; - } - - /** - * Record in "maschinen lesbares" Format überführen - * und Werte gegen reguläre Ausdrücke prüfen. - * - * @param record = Datensatz als Array - * @return record - */ - function encode($record,$tab) { - - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); - //$this->errorMessage = ''; - - if(is_array($record)) { - foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { - - if(is_array($field['validators'])) $this->validateField($key, $record[$key], $field['validators']); - - switch ($field['datatype']) { - case 'VARCHAR': - if(!is_array($record[$key])) { - $new_record[$key] = addslashes($record[$key]); - } else { - $new_record[$key] = implode($field['separator'],$record[$key]); - } - break; - case 'TEXT': - if(!is_array($record[$key])) { - $new_record[$key] = addslashes($record[$key]); - } else { - $new_record[$key] = implode($field['separator'],$record[$key]); - } - break; - case 'DATE': - if($record[$key] > 0) { - list($tag,$monat,$jahr) = explode('.',$record[$key]); - $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr); - } - break; - case 'INTEGER': - $new_record[$key] = intval($record[$key]); - //if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default']; - //if($key == 'refresh') die($record[$key]); - break; - case 'DOUBLE': - $new_record[$key] = addslashes($record[$key]); - break; - case 'CURRENCY': - $new_record[$key] = str_replace(",",".",$record[$key]); - break; - } - - // The use of the field value is deprecated, use validators instead - if($field['regex'] != '') { - // Enable that "." matches also newlines - $field['regex'] .= 's'; - if(!preg_match($field['regex'], $record[$key])) { - $errmsg = $field['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - } - - - } - } - return $new_record; - } - - /** - * process the validators for a given field. - * - * @param field_name = Name of the field - * @param field_value = value of the field - * @param validatoors = Array of validators - * @return record - */ - - function validateField($field_name, $field_value, $validators) { - - global $app; - - // loop trough the validators - foreach($validators as $validator) { - - switch ($validator['type']) { - case 'REGEX': - $validator['regex'] .= 's'; - if(!preg_match($validator['regex'], $field_value)) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - break; - case 'UNIQUE': - if($this->action == 'NEW') { - $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'"); - if($num_rec["number"] > 0) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - } else { - $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id); - if($num_rec["number"] > 0) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - } - break; - case 'NOTEMPTY': - if(empty($field_value)) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - break; - case 'ISEMAIL': - if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,4}$/i", $field_value)) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - break; - case 'ISINT': - $tmpval = intval($field_value); - if($tmpval === 0 and !empty($field_value)) { - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - break; - case 'ISPOSITIVE': - if(!is_numeric($field_value) || $field_value <= 0){ - $errmsg = $validator['errmsg']; - $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; - } - break; - case 'CUSTOM': - // Calls a custom class to validate this record - if($validator['class'] != '' and $validator['function'] != '') { - $validator_class = $validator['class']; - $validator_function = $validator['function']; - $app->uses($validator_class); - $this->errorMessage .= $app->$validator_class->$validator_function($validator); - } else { - $this->errorMessage .= "Custom validator class or function is empty
\r\n"; - } - break; - } - - - } - - return true; - } - - /** - * SQL Statement für Record erzeugen. - * - * @param record = Datensatz als Array - * @param action = INSERT oder UPDATE - * @param primary_id - * @return record - */ - function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') { - - global $app; - - // If there are no data records on the tab, return empty sql string - if(count($this->formDef['tabs'][$tab]['fields']) == 0) return ''; - - // checking permissions - if($this->formDef['auth'] == 'yes') { - if($action == "INSERT") { - if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.
\r\n"; - } else { - if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Insert denied.
\r\n"; - } - } - - $this->action = $action; - $this->primary_id = $primary_id; - - $record = $this->encode($record,$tab); - $sql_insert_key = ''; - $sql_insert_val = ''; - $sql_update = ''; - - if(!is_array($this->formDef)) $app->error("Keine Formulardefinition vorhanden."); - if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); - - // gehe durch alle Felder des Tabs - if(is_array($record)) { - foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { - // Wenn es kein leeres Passwortfeld ist - if (!($field['formtype'] == 'PASSWORD' and $record[$key] == '')) { - // Erzeuge Insert oder Update Quelltext - if($action == "INSERT") { - if($field['formtype'] == 'PASSWORD') { - $sql_insert_key .= "`$key`, "; - if($field['encryption'] == 'CRYPT') { - $sql_insert_val .= "'".crypt($record[$key])."', "; - } else { - $sql_insert_val .= "md5('".$record[$key]."'), "; - } - } else { - $sql_insert_key .= "`$key`, "; - $sql_insert_val .= "'".$record[$key]."', "; - } - } else { - if($field['formtype'] == 'PASSWORD') { - if($field['encryption'] == 'CRYPT') { - $sql_update .= "`$key` = '".crypt($record[$key])."', "; - } else { - $sql_update .= "`$key` = md5('".$record[$key]."'), "; - } - } else { - $sql_update .= "`$key` = '".$record[$key]."', "; - } - } - } - } - } - - - // Füge Backticks nur bei unvollständigen Tabellennamen ein - if(stristr($this->formDef['db_table'],'.')) { - $escape = ''; - } else { - $escape = '`'; - } - - - if($action == "INSERT") { - if($this->formDef['auth'] == 'yes') { - // Setze User und Gruppe - $sql_insert_key .= "`sys_userid`, "; - $sql_insert_val .= ($this->formDef["auth_preset"]["userid"] > 0)?"'".$this->formDef["auth_preset"]["userid"]."', ":"'".$_SESSION["s"]["user"]["userid"]."', "; - $sql_insert_key .= "`sys_groupid`, "; - $sql_insert_val .= ($this->formDef["auth_preset"]["groupid"] > 0)?"'".$this->formDef["auth_preset"]["groupid"]."', ":"'".$_SESSION["s"]["user"]["default_group"]."', "; - $sql_insert_key .= "`sys_perm_user`, "; - $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_user"]."', "; - $sql_insert_key .= "`sys_perm_group`, "; - $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_group"]."', "; - $sql_insert_key .= "`sys_perm_other`, "; - $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_other"]."', "; - } - $sql_insert_key = substr($sql_insert_key,0,-2); - $sql_insert_val = substr($sql_insert_val,0,-2); - $sql = "INSERT INTO ".$escape.$this->formDef['db_table'].$escape." ($sql_insert_key) VALUES ($sql_insert_val)"; - } else { - if($primary_id != 0) { - $sql_update = substr($sql_update,0,-2); - $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id; - if($sql_ext_where != '') $sql .= " and ".$sql_ext_where; - } else { - $app->error("Primary ID fehlt!"); - } - } - - // Daten in History tabelle speichern - if($this->errorMessage == '' and $this->formDef['db_history'] == 'yes') $this->datalogSave($action,$primary_id,$record); - - return $sql; - } - - /** - * Debugging arrays. - * - * @param array_data - */ - function dbg($array_data) { - - echo "
";
-                print_r($array_data);
-                echo "
"; - - } - - - function showForm() { - global $app,$conf; - - if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen."); - - $active_tab = $this->getNextTab(); - - // definiere Tabs - foreach( $this->formDef["tabs"] as $key => $tab) { - - $tab['name'] = $key; - if($tab['name'] == $active_tab) { - - // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul. - if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"]; - - // überprüfe, ob das Template existiert, wenn nicht - // dann generiere das Template - if(!is_file($tab["template"])) { - $app->uses('tform_tpl_generator'); - $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']); - } - - $app->tpl->setInclude('content_tpl',$tab["template"]); - $tab["active"] = 1; - $_SESSION["s"]["form"]["tab"] = $tab['name']; - } else { - $tab["active"] = 0; - } - - // Die Datenfelder werden für die Tabs nicht benötigt - unset($tab["fields"]); - unset($tab["plugins"]); - - $frmTab[] = $tab; - } - - // setting form tabs - $app->tpl->setLoop("formTab", $frmTab); - - // Set form action - $app->tpl->setVar('form_action',$this->formDef["action"]); - $app->tpl->setVar('form_active_tab',$active_tab); - - // Set form title - $form_hint = ''.$this->formDef["title"].''; - if($this->formDef["description"] != '') $form_hint .= '

'.$this->formDef["description"]; - $app->tpl->setVar('form_hint',$form_hint); - - // Set Wordbook for this form - - $app->tpl->setVar($this->wordbook); - } - - - - function datalogSave($action,$primary_id,$record_new) { - global $app,$conf; - - // Füge Backticks nur bei unvollständigen Tabellennamen ein - if(stristr($this->formDef['db_table'],'.')) { - $escape = ''; - } else { - $escape = '`'; - } - - if($action == "UPDATE") { - $sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id; - $record_old = $app->db->queryOneRecord($sql); - } else { - $record_old = array(); - } - - $diffrec = array(); - - if(is_array($record_new)) { - foreach($record_new as $key => $val) { - if($record_old[$key] != $val) { - // Datensatz hat sich geändert - $diffrec[$key] = array('old' => $record_old[$key], - 'new' => $val); - } - } - } - - if(count($diffrec) > 0) { - $diffstr = $app->db->quote(serialize($diffrec)); - $username = $app->db->quote($_SESSION["s"]["user"]["username"]); - $dbidx = $this->formDef['db_table_idx'].":".$primary_id; - $action = ($action == 'INSERT')?'i':'u'; - $sql = "INSERT INTO sys_datalog (dbtable,dbidx,action,tstamp,user,data) VALUES ('".$this->formDef['db_table']."','$dbidx','$action','".time()."','$username','$diffstr')"; - $app->db->query($sql); - } - - return true; - - } - - function getAuthSQL($perm) { - - $sql = '('; - $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR "; - $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR "; - $sql .= "sys_perm_other like '%$perm%'"; - $sql .= ')'; - - return $sql; - } - - /* - Diese funktion überprüft, ob ein User die Berechtigung $perm für den Datensatz mit der ID $record_id - hat. It record_id = 0, dann wird gegen die user Defaults des Formulares getestet. - */ - function checkPerm($record_id,$perm) { - global $app; - - if($record_id > 0) { - // Füge Backticks nur bei unvollständigen Tabellennamen ein - if(stristr($this->formDef['db_table'],'.')) { - $escape = ''; - } else { - $escape = '`'; - } - - $sql = "SELECT ".$this->formDef['db_table_idx']." FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$record_id." AND ".$this->getAuthSQL($perm); - if($record = $app->db->queryOneRecord($sql)) { - return true; - } else { - return false; - } - } else { - $result = false; - if($this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["userid"] && stristr($perm,$this->formDef["auth_preset"]["perm_user"])) $result = true; - if($this->formDef["auth_preset"]["groupid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true; - if(@stristr($this->formDef["auth_preset"]["perm_other"],$perm)) $result = true; - - // if preset == 0, everyone can insert a record of this type - if($this->formDef["auth_preset"]["userid"] == 0 AND $this->formDef["auth_preset"]["groupid"] == 0 AND (@stristr($this->formDef["auth_preset"]["perm_user"],$perm) OR @stristr($this->formDef["auth_preset"]["perm_group"],$perm))) $result = true; - - return $result; - - } - - } - - function getNextTab() { - // Welcher Tab wird angezeigt - if($this->errorMessage == '') { - // wenn kein Fehler vorliegt - if($_REQUEST["next_tab"] != '') { - // wenn nächster Tab bekannt - $active_tab = $_REQUEST["next_tab"]; - } else { - // ansonsten ersten tab nehmen - $active_tab = $this->formDef['tab_default']; - } - } else { - // bei Fehlern den gleichen Tab nochmal anzeigen - $active_tab = $_SESSION["s"]["form"]["tab"]; - } - - return $active_tab; - } - - function getCurrentTab() { - return $_SESSION["s"]["form"]["tab"]; - } - -} - +tableDef = $table; + $this->table_name = $table_name; + $this->table_index = $table_index; + return true; + } + */ + + function loadFormDef($file,$module = '') { + global $app,$conf; + + include_once($file); + $this->formDef = $form; + + $this->module = $module; + if($module == '') { + include_once("lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"); + } else { + include_once("../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"); + } + $this->wordbook = $wb; + + return true; + } + + + /** + * Konvertiert die Daten des übergebenen assoziativen + * Arrays in "menschenlesbare" Form. + * Datentyp Konvertierung, z.B. für Ausgabe in Listen. + * + * @param record + * @return record + */ + function decode($record,$tab) { + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); + if(is_array($record)) { + foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { + switch ($field['datatype']) { + case 'VARCHAR': + $new_record[$key] = stripslashes($record[$key]); + break; + + case 'TEXT': + $new_record[$key] = stripslashes($record[$key]); + break; + + case 'DATE': + if($record[$key] > 0) { + $new_record[$key] = date($this->dateformat,$record[$key]); + } + break; + + case 'INTEGER': + $new_record[$key] = intval($record[$key]); + break; + + case 'DOUBLE': + $new_record[$key] = $record[$key]; + break; + + case 'CURRENCY': + $new_record[$key] = number_format($record[$key], 2, ',', ''); + break; + + default: + $new_record[$key] = stripslashes($record[$key]); + } + } + + } + return $new_record; + } + + /** + * Get the key => value array of a form filed from a datasource definitiom + * + * @param field = array with field definition + * @param record = Dataset as array + * @return key => value array for the value field of a form + */ + + function getDatasourceData($field, $record) { + global $app; + + $values = array(); + + if($field["datasource"]["type"] == 'SQL') { + + // Preparing SQL string. We will replace some + // common placeholders + $querystring = $field["datasource"]["querystring"]; + $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring); + $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring); + $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring); + $table_idx = $this->formDef['db_table_idx']; + $querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring); + $querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring); + + // Getting the records + $tmp_records = $app->db->queryAllRecords($querystring); + if($app->db->errorMessage != '') die($app->db->errorMessage); + if(is_array($tmp_records)) { + $key_field = $field["datasource"]["keyfield"]; + $value_field = $field["datasource"]["valuefield"]; + foreach($tmp_records as $tmp_rec) { + $tmp_id = $tmp_rec[$key_field]; + $values[$tmp_id] = $tmp_rec[$value_field]; + } + } + } + + if($field["datasource"]["type"] == 'CUSTOM') { + // Calls a custom class to validate this record + if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') { + $datasource_class = $field["datasource"]['class']; + $datasource_function = $field["datasource"]['function']; + $app->uses($datasource_class); + $values = $app->$datasource_class->$datasource_function($field, $record); + } else { + $this->errorMessage .= "Custom datasource class or function is empty
\r\n"; + } + } + + return $values; + + } + + + /** + * Record für Ausgabe in Formularen vorbereiten. + * + * @param record = Datensatz als Array + * @param action = NEW oder EDIT + * @return record + */ + function getHTML($record, $tab, $action = 'NEW') { + + global $app; + + $this->action = $action; + + if(!is_array($this->formDef)) $app->error("Keine Formdefinition vorhanden."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); + + $new_record = array(); + if($action == 'EDIT') { + $record = $this->decode($record,$tab); + if(is_array($record)) { + foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { + $val = $record[$key]; + + // If Datasource is set, get the data from there + if(is_array($field['datasource'])) { + $field["value"] = $this->getDatasourceData($field, $record); + } + + switch ($field['formtype']) { + case 'SELECT': + if(is_array($field['value'])) { + $out = ''; + foreach($field['value'] as $k => $v) { + $selected = ($k == $val)?' SELECTED':''; + $out .= "\r\n"; + } + } + $new_record[$key] = $out; + break; + case 'MULTIPLE': + if(is_array($field['value'])) { + + // aufsplitten ergebnisse + $vals = explode($field['separator'],$val); + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + + $selected = ''; + foreach($vals as $tvl) { + if(trim($tvl) == trim($k)) $selected = ' SELECTED'; + } + + $out .= "\r\n"; + } + } + $new_record[$key] = $out; + break; + + case 'PASSWORD': + $new_record[$key] = ''; + break; + + case 'CHECKBOX': + $checked = (empty($val))?'':' CHECKED'; + $new_record[$key] = "\r\n"; + break; + + case 'CHECKBOXARRAY': + if(is_array($field['value'])) { + + // aufsplitten ergebnisse + $vals = explode($field['separator'],$val); + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + + $checked = ''; + foreach($vals as $tvl) { + if(trim($tvl) == trim($k)) $checked = ' CHECKED'; + } + + $out .= "$v
\r\n"; + } + } + $new_record[$key] = $out; + break; + + case 'RADIO': + if(is_array($field['value'])) { + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + $checked = ($k == $val)?' CHECKED':''; + $out .= " $v
\r\n"; + } + } + $new_record[$key] = $out; + break; + + default: + $new_record[$key] = htmlspecialchars($record[$key]); + } + } + } + } else { + // Action: NEW + foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { + + // If Datasource is set, get the data from there + if(is_array($field['datasource'])) { + $field["value"] = $this->getDatasourceData($field, $record); + } + + switch ($field['formtype']) { + case 'SELECT': + if(is_array($field['value'])) { + $out = ''; + foreach($field['value'] as $k => $v) { + $selected = ($k == $val)?' SELECTED':''; + $out .= "\r\n"; + } + } + $new_record[$key] = $out; + break; + case 'MULTIPLE': + if(is_array($field['value'])) { + + // aufsplitten ergebnisse + $vals = explode($field['separator'],$val); + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + + $out .= "\r\n"; + } + } + $new_record[$key] = $out; + break; + + case 'PASSWORD': + $new_record[$key] = ''; + break; + + case 'CHECKBOX': + $checked = (empty($field["default"]))?'':' CHECKED'; + $new_record[$key] = "\r\n"; + break; + + case 'CHECKBOXARRAY': + if(is_array($field['value'])) { + + // aufsplitten ergebnisse + $vals = explode($field['separator'],$field["default"]); + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + + $checked = ''; + foreach($vals as $tvl) { + if(trim($tvl) == trim($k)) $checked = ' CHECKED'; + } + + $out .= " $v
\r\n"; + } + } + $new_record[$key] = $out; + break; + + case 'RADIO': + if(is_array($field['value'])) { + + // HTML schreiben + $out = ''; + foreach($field['value'] as $k => $v) { + $checked = ($k == $field["default"])?' CHECKED':''; + $out .= " $v
\r\n"; + } + } + $new_record[$key] = $out; + break; + + default: + $new_record[$key] = htmlspecialchars($field['default']); + } + } + + } + + if($this->debug == 1) $this->dbg($new_record); + + return $new_record; + } + + /** + * Record in "maschinen lesbares" Format überführen + * und Werte gegen reguläre Ausdrücke prüfen. + * + * @param record = Datensatz als Array + * @return record + */ + function encode($record,$tab) { + + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); + //$this->errorMessage = ''; + + if(is_array($record)) { + foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { + + if(is_array($field['validators'])) $this->validateField($key, $record[$key], $field['validators']); + + switch ($field['datatype']) { + case 'VARCHAR': + if(!is_array($record[$key])) { + $new_record[$key] = addslashes($record[$key]); + } else { + $new_record[$key] = implode($field['separator'],$record[$key]); + } + break; + case 'TEXT': + if(!is_array($record[$key])) { + $new_record[$key] = addslashes($record[$key]); + } else { + $new_record[$key] = implode($field['separator'],$record[$key]); + } + break; + case 'DATE': + if($record[$key] > 0) { + list($tag,$monat,$jahr) = explode('.',$record[$key]); + $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr); + } + break; + case 'INTEGER': + $new_record[$key] = intval($record[$key]); + //if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default']; + //if($key == 'refresh') die($record[$key]); + break; + case 'DOUBLE': + $new_record[$key] = addslashes($record[$key]); + break; + case 'CURRENCY': + $new_record[$key] = str_replace(",",".",$record[$key]); + break; + } + + // The use of the field value is deprecated, use validators instead + if($field['regex'] != '') { + // Enable that "." matches also newlines + $field['regex'] .= 's'; + if(!preg_match($field['regex'], $record[$key])) { + $errmsg = $field['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + } + + + } + } + return $new_record; + } + + /** + * process the validators for a given field. + * + * @param field_name = Name of the field + * @param field_value = value of the field + * @param validatoors = Array of validators + * @return record + */ + + function validateField($field_name, $field_value, $validators) { + + global $app; + + // loop trough the validators + foreach($validators as $validator) { + + switch ($validator['type']) { + case 'REGEX': + $validator['regex'] .= 's'; + if(!preg_match($validator['regex'], $field_value)) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + break; + case 'UNIQUE': + if($this->action == 'NEW') { + $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'"); + if($num_rec["number"] > 0) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + } else { + $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id); + if($num_rec["number"] > 0) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + } + break; + case 'NOTEMPTY': + if(empty($field_value)) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + break; + case 'ISEMAIL': + if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $field_value)) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + break; + case 'ISINT': + $tmpval = intval($field_value); + if($tmpval === 0 and !empty($field_value)) { + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + break; + case 'ISPOSITIVE': + if(!is_numeric($field_value) || $field_value <= 0){ + $errmsg = $validator['errmsg']; + $this->errorMessage .= $this->wordbook[$errmsg]."
\r\n"; + } + break; + case 'CUSTOM': + // Calls a custom class to validate this record + if($validator['class'] != '' and $validator['function'] != '') { + $validator_class = $validator['class']; + $validator_function = $validator['function']; + $app->uses($validator_class); + $this->errorMessage .= $app->$validator_class->$validator_function($validator); + } else { + $this->errorMessage .= "Custom validator class or function is empty
\r\n"; + } + break; + } + + + } + + return true; + } + + /** + * SQL Statement für Record erzeugen. + * + * @param record = Datensatz als Array + * @param action = INSERT oder UPDATE + * @param primary_id + * @return record + */ + function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') { + + global $app; + + // If there are no data records on the tab, return empty sql string + if(count($this->formDef['tabs'][$tab]['fields']) == 0) return ''; + + // checking permissions + if($this->formDef['auth'] == 'yes') { + if($action == "INSERT") { + if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.
\r\n"; + } else { + if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Insert denied.
\r\n"; + } + } + + $this->action = $action; + $this->primary_id = $primary_id; + + $record = $this->encode($record,$tab); + $sql_insert_key = ''; + $sql_insert_val = ''; + $sql_update = ''; + + if(!is_array($this->formDef)) $app->error("Keine Formulardefinition vorhanden."); + if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab)."); + + // gehe durch alle Felder des Tabs + if(is_array($record)) { + foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) { + // Wenn es kein leeres Passwortfeld ist + if (!($field['formtype'] == 'PASSWORD' and $record[$key] == '')) { + // Erzeuge Insert oder Update Quelltext + if($action == "INSERT") { + if($field['formtype'] == 'PASSWORD') { + $sql_insert_key .= "`$key`, "; + if($field['encryption'] == 'CRYPT') { + $sql_insert_val .= "'".crypt($record[$key])."', "; + } else { + $sql_insert_val .= "md5('".$record[$key]."'), "; + } + } else { + $sql_insert_key .= "`$key`, "; + $sql_insert_val .= "'".$record[$key]."', "; + } + } else { + if($field['formtype'] == 'PASSWORD') { + if($field['encryption'] == 'CRYPT') { + $sql_update .= "`$key` = '".crypt($record[$key])."', "; + } else { + $sql_update .= "`$key` = md5('".$record[$key]."'), "; + } + } else { + $sql_update .= "`$key` = '".$record[$key]."', "; + } + } + } + } + } + + + // Füge Backticks nur bei unvollständigen Tabellennamen ein + if(stristr($this->formDef['db_table'],'.')) { + $escape = ''; + } else { + $escape = '`'; + } + + + if($action == "INSERT") { + if($this->formDef['auth'] == 'yes') { + // Setze User und Gruppe + $sql_insert_key .= "`sys_userid`, "; + $sql_insert_val .= ($this->formDef["auth_preset"]["userid"] > 0)?"'".$this->formDef["auth_preset"]["userid"]."', ":"'".$_SESSION["s"]["user"]["userid"]."', "; + $sql_insert_key .= "`sys_groupid`, "; + $sql_insert_val .= ($this->formDef["auth_preset"]["groupid"] > 0)?"'".$this->formDef["auth_preset"]["groupid"]."', ":"'".$_SESSION["s"]["user"]["default_group"]."', "; + $sql_insert_key .= "`sys_perm_user`, "; + $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_user"]."', "; + $sql_insert_key .= "`sys_perm_group`, "; + $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_group"]."', "; + $sql_insert_key .= "`sys_perm_other`, "; + $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_other"]."', "; + } + $sql_insert_key = substr($sql_insert_key,0,-2); + $sql_insert_val = substr($sql_insert_val,0,-2); + $sql = "INSERT INTO ".$escape.$this->formDef['db_table'].$escape." ($sql_insert_key) VALUES ($sql_insert_val)"; + } else { + if($primary_id != 0) { + $sql_update = substr($sql_update,0,-2); + $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id; + if($sql_ext_where != '') $sql .= " and ".$sql_ext_where; + } else { + $app->error("Primary ID fehlt!"); + } + } + + // Daten in History tabelle speichern + if($this->errorMessage == '' and $this->formDef['db_history'] == 'yes') $this->datalogSave($action,$primary_id,$record); + + return $sql; + } + + /** + * Debugging arrays. + * + * @param array_data + */ + function dbg($array_data) { + + echo "
";
+                print_r($array_data);
+                echo "
"; + + } + + + function showForm() { + global $app,$conf; + + if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen."); + + $active_tab = $this->getNextTab(); + + // definiere Tabs + foreach( $this->formDef["tabs"] as $key => $tab) { + + $tab['name'] = $key; + if($tab['name'] == $active_tab) { + + // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul. + if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"]; + + // überprüfe, ob das Template existiert, wenn nicht + // dann generiere das Template + if(!is_file($tab["template"])) { + $app->uses('tform_tpl_generator'); + $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']); + } + + $app->tpl->setInclude('content_tpl',$tab["template"]); + $tab["active"] = 1; + $_SESSION["s"]["form"]["tab"] = $tab['name']; + } else { + $tab["active"] = 0; + } + + // Die Datenfelder werden für die Tabs nicht benötigt + unset($tab["fields"]); + unset($tab["plugins"]); + + $frmTab[] = $tab; + } + + // setting form tabs + $app->tpl->setLoop("formTab", $frmTab); + + // Set form action + $app->tpl->setVar('form_action',$this->formDef["action"]); + $app->tpl->setVar('form_active_tab',$active_tab); + + // Set form title + $form_hint = ''.$this->formDef["title"].''; + if($this->formDef["description"] != '') $form_hint .= '

'.$this->formDef["description"]; + $app->tpl->setVar('form_hint',$form_hint); + + // Set Wordbook for this form + + $app->tpl->setVar($this->wordbook); + } + + + + function datalogSave($action,$primary_id,$record_new) { + global $app,$conf; + + // Füge Backticks nur bei unvollständigen Tabellennamen ein + if(stristr($this->formDef['db_table'],'.')) { + $escape = ''; + } else { + $escape = '`'; + } + + if($action == "UPDATE") { + $sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id; + $record_old = $app->db->queryOneRecord($sql); + } else { + $record_old = array(); + } + + $diffrec = array(); + + if(is_array($record_new)) { + foreach($record_new as $key => $val) { + if($record_old[$key] != $val) { + // Datensatz hat sich geändert + $diffrec[$key] = array('old' => $record_old[$key], + 'new' => $val); + } + } + } + + if(count($diffrec) > 0) { + $diffstr = $app->db->quote(serialize($diffrec)); + $username = $app->db->quote($_SESSION["s"]["user"]["username"]); + $dbidx = $this->formDef['db_table_idx'].":".$primary_id; + $action = ($action == 'INSERT')?'i':'u'; + $sql = "INSERT INTO sys_datalog (dbtable,dbidx,action,tstamp,user,data) VALUES ('".$this->formDef['db_table']."','$dbidx','$action','".time()."','$username','$diffstr')"; + $app->db->query($sql); + } + + return true; + + } + + function getAuthSQL($perm) { + + $sql = '('; + $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR "; + $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR "; + $sql .= "sys_perm_other like '%$perm%'"; + $sql .= ')'; + + return $sql; + } + + /* + Diese funktion überprüft, ob ein User die Berechtigung $perm für den Datensatz mit der ID $record_id + hat. It record_id = 0, dann wird gegen die user Defaults des Formulares getestet. + */ + function checkPerm($record_id,$perm) { + global $app; + + if($record_id > 0) { + // Füge Backticks nur bei unvollständigen Tabellennamen ein + if(stristr($this->formDef['db_table'],'.')) { + $escape = ''; + } else { + $escape = '`'; + } + + $sql = "SELECT ".$this->formDef['db_table_idx']." FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$record_id." AND ".$this->getAuthSQL($perm); + if($record = $app->db->queryOneRecord($sql)) { + return true; + } else { + return false; + } + } else { + $result = false; + if($this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["userid"] && stristr($perm,$this->formDef["auth_preset"]["perm_user"])) $result = true; + if($this->formDef["auth_preset"]["groupid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true; + if(@stristr($this->formDef["auth_preset"]["perm_other"],$perm)) $result = true; + + // if preset == 0, everyone can insert a record of this type + if($this->formDef["auth_preset"]["userid"] == 0 AND $this->formDef["auth_preset"]["groupid"] == 0 AND (@stristr($this->formDef["auth_preset"]["perm_user"],$perm) OR @stristr($this->formDef["auth_preset"]["perm_group"],$perm))) $result = true; + + return $result; + + } + + } + + function getNextTab() { + // Welcher Tab wird angezeigt + if($this->errorMessage == '') { + // wenn kein Fehler vorliegt + if($_REQUEST["next_tab"] != '') { + // wenn nächster Tab bekannt + $active_tab = $_REQUEST["next_tab"]; + } else { + // ansonsten ersten tab nehmen + $active_tab = $this->formDef['tab_default']; + } + } else { + // bei Fehlern den gleichen Tab nochmal anzeigen + $active_tab = $_SESSION["s"]["form"]["tab"]; + } + + return $active_tab; + } + + function getCurrentTab() { + return $_SESSION["s"]["form"]["tab"]; + } + +} + ?> \ No newline at end of file diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index 871e4fc7cc..6adc17707b 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -1,99 +1,99 @@ - \ No newline at end of file diff --git a/interface/sql/ispconfig3db.sql b/interface/sql/ispconfig3db.sql index d3f98830e2..984a53c91e 100644 --- a/interface/sql/ispconfig3db.sql +++ b/interface/sql/ispconfig3db.sql @@ -1,305 +1,231 @@ --- phpMyAdmin SQL Dump --- version 2.6.2-Debian-3sarge1 --- http://www.phpmyadmin.net --- --- Host: localhost --- Erstellungszeit: 25. November 2005 um 19:28 --- Server Version: 4.0.24 --- PHP-Version: 4.3.10-16 --- --- Datenbank: `mailserver` --- - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_blacklist` --- - -DROP TABLE IF EXISTS `mail_blacklist`; -CREATE TABLE `mail_blacklist` ( - `blacklist_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `address` varchar(200) NOT NULL default '', - `recipient` varchar(200) NOT NULL default '', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`blacklist_id`), - KEY `server_id` (`server_id`,`address`,`recipient`) -) TYPE=MyISAM AUTO_INCREMENT=3 ; - --- --- Daten für Tabelle `mail_blacklist` --- - -INSERT INTO `mail_blacklist` (`blacklist_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `address`, `recipient`, `active`) VALUES (2, 1, 0, 'riud', 'riud', '', 1, 'till@test.int', 'till@test.int', '0'); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_box` --- - -DROP TABLE IF EXISTS `mail_box`; -CREATE TABLE `mail_box` ( - `mailbox_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `email` varchar(255) NOT NULL default '', - `cryptpwd` varchar(128) NOT NULL default '', - `clearpwd` varchar(128) NOT NULL default '', - `name` varchar(128) NOT NULL default '', - `uid` int(10) unsigned NOT NULL default '0', - `gid` int(10) unsigned NOT NULL default '0', - `maildir` varchar(255) NOT NULL default '', - `quota` varchar(255) NOT NULL default '', - `cc` varchar(50) NOT NULL default '', - `forward` varchar(50) NOT NULL default '', - `autoresponder` enum('0','1') NOT NULL default '0', - `autoresponder_text` tinytext NOT NULL, - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`mailbox_id`), - KEY `server_id` (`server_id`,`email`) -) TYPE=MyISAM AUTO_INCREMENT=2 ; - --- --- Daten für Tabelle `mail_box` --- - -INSERT INTO `mail_box` (`mailbox_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `email`, `cryptpwd`, `clearpwd`, `name`, `uid`, `gid`, `maildir`, `quota`, `cc`, `forward`, `autoresponder`, `autoresponder_text`, `active`) VALUES (1, 1, 0, 'riud', 'riud', '', 1, 'till@test.int', '$1$tRlfKeOB$iHJgCn8mH8x/dh/XWy6v0/', '', '', 0, 0, '/var/spool/mail/till', '100', '', '', '0', '', '1'); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_domain` --- - -DROP TABLE IF EXISTS `mail_domain`; -CREATE TABLE `mail_domain` ( - `domain_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `type` enum('local','relay','alias') NOT NULL default 'local', - `relay_host` varchar(255) NOT NULL default '', - `destination` varchar(255) NOT NULL default '', - `active` tinyint(4) NOT NULL default '1', - PRIMARY KEY (`domain_id`), - KEY `server_id` (`server_id`,`domain`,`type`) -) TYPE=MyISAM AUTO_INCREMENT=7 ; - --- --- Daten für Tabelle `mail_domain` --- - -INSERT INTO `mail_domain` (`domain_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `type`, `relay_host`, `destination`, `active`) VALUES (1, 1, 0, 'riud', 'riud', '', 1, 'test.int', 'local', '', '', 1); -INSERT INTO `mail_domain` (`domain_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `type`, `relay_host`, `destination`, `active`) VALUES (2, 1, 0, 'riud', 'riud', '', 1, 'test2.int', 'alias', '', 'test.int', 1); -INSERT INTO `mail_domain` (`domain_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `type`, `relay_host`, `destination`, `active`) VALUES (5, 1, 0, 'riud', 'riud', '', 1, 'ensign.int', 'alias', '', 'ensign.de', 1); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_domain_catchall` --- - -DROP TABLE IF EXISTS `mail_domain_catchall`; -CREATE TABLE `mail_domain_catchall` ( - `domain_catchall_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `destination` varchar(255) NOT NULL default '', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`domain_catchall_id`), - KEY `server_id` (`server_id`,`domain`) -) TYPE=MyISAM AUTO_INCREMENT=2 ; - --- --- Daten für Tabelle `mail_domain_catchall` --- - -INSERT INTO `mail_domain_catchall` (`domain_catchall_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `destination`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 1, 'test.int', 'till@test.int', '1'); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_greylist` --- - -DROP TABLE IF EXISTS `mail_greylist`; -CREATE TABLE `mail_greylist` ( - `greylist_id` int(11) NOT NULL auto_increment, - `relay_ip` varchar(64) default NULL, - `from_domain` varchar(255) default NULL, - `block_expires` datetime NOT NULL default '0000-00-00 00:00:00', - `record_expires` datetime NOT NULL default '0000-00-00 00:00:00', - `origin_type` enum('MANUAL','AUTO') NOT NULL default 'AUTO', - `create_time` datetime NOT NULL default '0000-00-00 00:00:00', - PRIMARY KEY (`greylist_id`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - --- --- Daten für Tabelle `mail_greylist` --- - - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_mailman_domain` --- - -DROP TABLE IF EXISTS `mail_mailman_domain`; -CREATE TABLE `mail_mailman_domain` ( - `mailman_id` int(11) NOT NULL auto_increment, - `server_id` int(11) NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `mm_home` varchar(255) NOT NULL default '', - `mm_wrap` varchar(255) NOT NULL default '', - `mm_user` varchar(50) NOT NULL default '', - `mm_group` varchar(50) NOT NULL default '', - PRIMARY KEY (`mailman_id`,`server_id`,`domain`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - --- --- Daten für Tabelle `mail_mailman_domain` --- - - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_redirect` --- - -DROP TABLE IF EXISTS `mail_redirect`; -CREATE TABLE `mail_redirect` ( - `redirect_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `email` varchar(255) NOT NULL default '', - `destination` varchar(255) NOT NULL default '', - `type` enum('alias','forward') NOT NULL default 'alias', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`redirect_id`), - KEY `server_id` (`server_id`,`email`) -) TYPE=MyISAM AUTO_INCREMENT=4 ; - --- --- Daten für Tabelle `mail_redirect` --- - -INSERT INTO `mail_redirect` (`redirect_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `email`, `destination`, `type`, `active`) VALUES (1, 1, 0, 'riud', 'riud', '', 1, 'tom@test.int', 'till@test.int', 'alias', '1'); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_spamfilter` --- - -DROP TABLE IF EXISTS `mail_spamfilter`; -CREATE TABLE `mail_spamfilter` ( - `spamfilter_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `email` varchar(255) NOT NULL default '', - `spam_rewrite_score_int` int(11) NOT NULL default '0', - `spam_delete_score_int` int(11) NOT NULL default '0', - `spam_redirect_score_int` int(11) NOT NULL default '0', - `spam_rewrite_subject` varchar(50) NOT NULL default '***SPAM***', - `spam_redirect_maildir` varchar(255) NOT NULL default '', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`spamfilter_id`), - KEY `server_id` (`server_id`,`email`) -) TYPE=MyISAM AUTO_INCREMENT=2 ; - --- --- Daten für Tabelle `mail_spamfilter` --- - -INSERT INTO `mail_spamfilter` (`spamfilter_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `email`, `spam_rewrite_score_int`, `spam_delete_score_int`, `spam_redirect_score_int`, `spam_rewrite_subject`, `spam_redirect_maildir`, `active`) VALUES (1, 0, 0, '', '', '', 1, 'till@test.int', 100, 100, 1, '***SPAM mag ich nicht***', '/var/spool/mail/spam', '1'); - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_transport` --- - -DROP TABLE IF EXISTS `mail_transport`; -CREATE TABLE `mail_transport` ( - `whitelist_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `destination` varchar(255) NOT NULL default '', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`whitelist_id`), - KEY `server_id` (`server_id`,`destination`), - KEY `server_id_2` (`server_id`,`domain`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - --- --- Daten für Tabelle `mail_transport` --- - - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `mail_whitelist` --- - -DROP TABLE IF EXISTS `mail_whitelist`; -CREATE TABLE `mail_whitelist` ( - `whitelist_id` int(11) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_id` int(11) NOT NULL default '0', - `address` varchar(255) NOT NULL default '', - `active` enum('0','1') NOT NULL default '1', - PRIMARY KEY (`whitelist_id`), - KEY `server_id` (`server_id`,`address`) -) TYPE=MyISAM AUTO_INCREMENT=1 ; - --- --- Daten für Tabelle `mail_whitelist` --- - - - - --- -------------------------------------------------------- +# phpMyAdmin MySQL-Dump +# version 2.4.0-rc1 +# http://www.phpmyadmin.net/ (download page) +# +# Host: localhost +# Erstellungszeit: 16. Februar 2006 um 22:34 +# Server Version: 4.0.23 +# PHP-Version: 5.0.3 +# Datenbank: `ispconfig3` +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_blacklist` +# + +DROP TABLE IF EXISTS mail_blacklist; +CREATE TABLE mail_blacklist ( + blacklist_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + address varchar(200) NOT NULL default '', + recipient varchar(200) NOT NULL default '', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (blacklist_id), + KEY server_id (server_id,address,recipient) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_box` +# + +DROP TABLE IF EXISTS mail_box; +CREATE TABLE mail_box ( + mailbox_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + email varchar(255) NOT NULL default '', + cryptpwd varchar(128) NOT NULL default '', + clearpwd varchar(128) NOT NULL default '', + name varchar(128) NOT NULL default '', + uid int(10) unsigned NOT NULL default '0', + gid int(10) unsigned NOT NULL default '0', + maildir varchar(255) NOT NULL default '', + quota varchar(255) NOT NULL default '', + autoresponder enum('0','1') NOT NULL default '0', + autoresponder_text tinytext NOT NULL, + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (mailbox_id), + KEY server_id (server_id,email) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_domain` +# + +DROP TABLE IF EXISTS mail_domain; +CREATE TABLE mail_domain ( + domain_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + domain varchar(255) NOT NULL default '', + type enum('local','relay','alias') NOT NULL default 'local', + destination varchar(255) NOT NULL default '', + active tinyint(4) NOT NULL default '1', + PRIMARY KEY (domain_id), + KEY server_id (server_id,domain,type) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_domain_catchall` +# + +DROP TABLE IF EXISTS mail_domain_catchall; +CREATE TABLE mail_domain_catchall ( + domain_catchall_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + domain varchar(255) NOT NULL default '', + destination varchar(255) NOT NULL default '', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (domain_catchall_id), + KEY server_id (server_id,domain) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_greylist` +# + +DROP TABLE IF EXISTS mail_greylist; +CREATE TABLE mail_greylist ( + greylist_id int(11) NOT NULL auto_increment, + relay_ip varchar(64) default NULL, + from_domain varchar(255) default NULL, + block_expires datetime NOT NULL default '0000-00-00 00:00:00', + record_expires datetime NOT NULL default '0000-00-00 00:00:00', + origin_type enum('MANUAL','AUTO') NOT NULL default 'AUTO', + create_time datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (greylist_id) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_mailman_domain` +# + +DROP TABLE IF EXISTS mail_mailman_domain; +CREATE TABLE mail_mailman_domain ( + mailman_id int(11) NOT NULL auto_increment, + server_id int(11) NOT NULL default '0', + domain varchar(255) NOT NULL default '', + mm_home varchar(255) NOT NULL default '', + mm_wrap varchar(255) NOT NULL default '', + mm_user varchar(50) NOT NULL default '', + mm_group varchar(50) NOT NULL default '', + PRIMARY KEY (mailman_id,server_id,domain) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_redirect` +# + +DROP TABLE IF EXISTS mail_redirect; +CREATE TABLE mail_redirect ( + redirect_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + email varchar(255) NOT NULL default '', + destination varchar(255) NOT NULL default '', + type enum('alias','forward') NOT NULL default 'alias', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (redirect_id), + KEY server_id (server_id,email) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_spamfilter` +# + +DROP TABLE IF EXISTS mail_spamfilter; +CREATE TABLE mail_spamfilter ( + spamfilter_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + email varchar(255) NOT NULL default '', + spam_rewrite_score_int int(11) NOT NULL default '0', + spam_delete_score_int int(11) NOT NULL default '0', + spam_redirect_score_int int(11) NOT NULL default '0', + spam_rewrite_subject varchar(50) NOT NULL default '***SPAM***', + spam_redirect_maildir varchar(255) NOT NULL default '', + spam_redirect_maildir_purge int(11) NOT NULL default '7', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (spamfilter_id), + KEY server_id (server_id,email) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_transport` +# + +DROP TABLE IF EXISTS mail_transport; +CREATE TABLE mail_transport ( + whitelist_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + domain varchar(255) NOT NULL default '', + destination varchar(255) NOT NULL default '', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (whitelist_id), + KEY server_id (server_id,destination), + KEY server_id_2 (server_id,domain) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `mail_whitelist` +# + +DROP TABLE IF EXISTS mail_whitelist; +CREATE TABLE mail_whitelist ( + whitelist_id int(11) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_id int(11) NOT NULL default '0', + address varchar(255) NOT NULL default '', + recipient varchar(255) NOT NULL default '', + active enum('0','1') NOT NULL default '1', + PRIMARY KEY (whitelist_id), + KEY server_id (server_id,address) +) TYPE=MyISAM; +# -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `reseller` @@ -351,25 +277,26 @@ CREATE TABLE `reseller` ( -- Tabellenstruktur für Tabelle `server` -- -DROP TABLE IF EXISTS `server`; -CREATE TABLE `server` ( - `server_id` bigint(20) NOT NULL auto_increment, - `sys_userid` int(11) NOT NULL default '0', - `sys_groupid` int(11) NOT NULL default '0', - `sys_perm_user` varchar(5) NOT NULL default '', - `sys_perm_group` varchar(5) NOT NULL default '', - `sys_perm_other` varchar(5) NOT NULL default '', - `server_name` varchar(255) NOT NULL default '', - `mail_server` int(11) NOT NULL default '0', - `web_server` int(11) NOT NULL default '0', - `dns_server` int(11) NOT NULL default '0', - `file_server` int(11) NOT NULL default '0', - `mysql_server` int(11) NOT NULL default '0', - `postgresql_server` int(11) NOT NULL default '0', - `firebird_server` int(11) NOT NULL default '0', - `active` int(11) NOT NULL default '1', - PRIMARY KEY (`server_id`) -) TYPE=MyISAM AUTO_INCREMENT=2 ; +DROP TABLE IF EXISTS server; +CREATE TABLE server ( + server_id bigint(20) NOT NULL auto_increment, + sys_userid int(11) NOT NULL default '0', + sys_groupid int(11) NOT NULL default '0', + sys_perm_user varchar(5) NOT NULL default '', + sys_perm_group varchar(5) NOT NULL default '', + sys_perm_other varchar(5) NOT NULL default '', + server_name varchar(255) NOT NULL default '', + mail_server int(11) NOT NULL default '0', + web_server int(11) NOT NULL default '0', + dns_server int(11) NOT NULL default '0', + file_server int(11) NOT NULL default '0', + mysql_server int(11) NOT NULL default '0', + postgresql_server int(11) NOT NULL default '0', + firebird_server int(11) NOT NULL default '0', + config text NOT NULL, + active int(11) NOT NULL default '1', + PRIMARY KEY (server_id) +) TYPE=MyISAM; -- -- Daten für Tabelle `server` diff --git a/interface/web/sites/form/mail_alias.tform.php b/interface/web/mail/form/mail_alias.tform.php similarity index 95% rename from interface/web/sites/form/mail_alias.tform.php rename to interface/web/mail/form/mail_alias.tform.php index 4944a934bc..1223b953e8 100644 --- a/interface/web/sites/form/mail_alias.tform.php +++ b/interface/web/mail/form/mail_alias.tform.php @@ -1,111 +1,114 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['alias'] = array ( - 'title' => "Email alias", - 'width' => 100, - 'template' => "templates/mail_alias_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'email' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', - 'errmsg'=> 'email_error_isemail'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'destination' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT email FROM mail_box WHERE {AUTHSQL} ORDER BY email', - 'keyfield' => 'email', - 'valuefield' => 'email' - ), - 'value' => '' - ), - 'type' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('alias' => 'Alias','forward'=>'Forward') - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['alias'] = array ( + 'title' => "Email alias", + 'width' => 100, + 'template' => "templates/mail_alias_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'email' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'errmsg'=> 'email_error_isemail'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'destination' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT email FROM mail_box WHERE {AUTHSQL} ORDER BY email', + 'keyfield' => 'email', + 'valuefield' => 'email' + ), + 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'errmsg'=> 'destination_error_isemail'), + ), + 'value' => '' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('alias' => 'Alias','forward'=>'Forward') + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_blacklist.tform.php b/interface/web/mail/form/mail_blacklist.tform.php similarity index 94% rename from interface/web/sites/form/mail_blacklist.tform.php rename to interface/web/mail/form/mail_blacklist.tform.php index 541d70587b..6b91c3a49d 100644 --- a/interface/web/sites/form/mail_blacklist.tform.php +++ b/interface/web/mail/form/mail_blacklist.tform.php @@ -1,96 +1,104 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['blacklist'] = array ( - 'title' => "Blacklist", - 'width' => 100, - 'template' => "templates/mail_blacklist_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'address' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'address_error_notempty'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['blacklist'] = array ( + 'title' => "Blacklist", + 'width' => 100, + 'template' => "templates/mail_blacklist_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'address' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'address_error_notempty'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'recipient' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_box.tform.php b/interface/web/mail/form/mail_box.tform.php similarity index 88% rename from interface/web/sites/form/mail_box.tform.php rename to interface/web/mail/form/mail_box.tform.php index 68c28a2244..0ab736be88 100644 --- a/interface/web/sites/form/mail_box.tform.php +++ b/interface/web/mail/form/mail_box.tform.php @@ -1,132 +1,151 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['mailbox'] = array ( - 'title' => "Mailbox", - 'width' => 100, - 'template' => "templates/mail_box_mailbox_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'email' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', - 'errmsg'=> 'email_error_isemail'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'email_error_unique'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'cryptpwd' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'PASSWORD', - 'encryption'=> 'CRYPT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - -$form["tabs"]['autoresponder'] = array ( - 'title' => "Autoresponder", - 'width' => 100, - 'template' => "templates/mail_box_autoresponder_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'autoresponder_text' => array ( - 'datatype' => 'TEXT', - 'formtype' => 'TEXTAREA', - 'default' => '', - 'value' => '', - 'cols' => '30', - 'rows' => '15' - ), - 'autoresponder' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['mailbox'] = array ( + 'title' => "Mailbox", + 'width' => 100, + 'template' => "templates/mail_box_mailbox_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'email' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL', + 'errmsg'=> 'email_error_isemail'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'email_error_unique'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'cryptpwd' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'PASSWORD', + 'encryption'=> 'CRYPT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'quota' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'quota_error_isint'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'maildir' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + +$form["tabs"]['autoresponder'] = array ( + 'title' => "Autoresponder", + 'width' => 100, + 'template' => "templates/mail_box_autoresponder_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'autoresponder_text' => array ( + 'datatype' => 'TEXT', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'cols' => '30', + 'rows' => '15' + ), + 'autoresponder' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php similarity index 94% rename from interface/web/sites/form/mail_domain.tform.php rename to interface/web/mail/form/mail_domain.tform.php index 81c822aff2..ecdb76fbda 100644 --- a/interface/web/sites/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -1,104 +1,107 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['domain'] = array ( - 'title' => "Domain", - 'width' => 100, - 'template' => "templates/mail_domain_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'domain' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'domain_error_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'domain_error_unique'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'type' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('local' => 'local','relay'=>'relay','manual_relay'=>'manual Relay') - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['domain'] = array ( + 'title' => "Domain", + 'width' => 100, + 'template' => "templates/mail_domain_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'domain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'domain_error_empty'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'domain_error_unique'), + 2 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'domain_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('local' => 'local','relay'=>'relay','manual_relay'=>'manual Relay') + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_domain_alias.tform.php b/interface/web/mail/form/mail_domain_alias.tform.php similarity index 91% rename from interface/web/sites/form/mail_domain_alias.tform.php rename to interface/web/mail/form/mail_domain_alias.tform.php index d2373d8e05..499cb47ed9 100644 --- a/interface/web/sites/form/mail_domain_alias.tform.php +++ b/interface/web/mail/form/mail_domain_alias.tform.php @@ -1,115 +1,121 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['domain'] = array ( - 'title' => "Domain", - 'width' => 100, - 'template' => "templates/mail_domain_alias_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE 1 ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'domain' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'domain_error_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'domain_error_unique'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'destination' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'destination_error_empty'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'type' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('alias' => 'alias','local' => 'local','relay'=>'relay','manual_relay'=>'manual Relay') - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['domain'] = array ( + 'title' => "Domain", + 'width' => 100, + 'template' => "templates/mail_domain_alias_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE 1 ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'domain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'domain_error_empty'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'domain_error_unique'), + 2 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'domain_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'destination' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'destination_error_empty'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'destination_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('alias' => 'alias','local' => 'local','relay'=>'relay','manual_relay'=>'manual Relay') + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_domain_catchall.tform.php b/interface/web/mail/form/mail_domain_catchall.tform.php similarity index 94% rename from interface/web/sites/form/mail_domain_catchall.tform.php rename to interface/web/mail/form/mail_domain_catchall.tform.php index b7fe7bc2b3..0f16d4405e 100644 --- a/interface/web/sites/form/mail_domain_catchall.tform.php +++ b/interface/web/mail/form/mail_domain_catchall.tform.php @@ -1,104 +1,107 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['catchall'] = array ( - 'title' => "Domain Catchall", - 'width' => 150, - 'template' => "templates/mail_domain_catchall_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'VARCHAR', - 'default' => '', - 'value' => '' - ), - 'domain' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'domain_error_unique'), - ), - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => "SELECT domain FROM mail_domain WHERE type = 'local' AND {AUTHSQL} ORDER BY domain", - 'keyfield'=> 'domain', - 'valuefield'=> 'domain' - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'destination' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['catchall'] = array ( + 'title' => "Domain Catchall", + 'width' => 150, + 'template' => "templates/mail_domain_catchall_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'VARCHAR', + 'default' => '', + 'value' => '' + ), + 'domain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'domain_error_unique'), + 1 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'domain_error_regex'), + ), + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => "SELECT domain FROM mail_domain WHERE type = 'local' AND {AUTHSQL} ORDER BY domain", + 'keyfield'=> 'domain', + 'valuefield'=> 'domain' + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'destination' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_domain_relay.tform.php b/interface/web/mail/form/mail_domain_relay.tform.php similarity index 95% rename from interface/web/sites/form/mail_domain_relay.tform.php rename to interface/web/mail/form/mail_domain_relay.tform.php index eb208032d7..90e3305a6b 100644 --- a/interface/web/sites/form/mail_domain_relay.tform.php +++ b/interface/web/mail/form/mail_domain_relay.tform.php @@ -1,104 +1,107 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['domain'] = array ( - 'title' => "Domain", - 'width' => 100, - 'template' => "templates/mail_domain_relay_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE 1 ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'domain' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'domain_error_empty'), - 1 => array ( 'type' => 'UNIQUE', - 'errmsg'=> 'domain_error_unique'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'type' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => '', - 'value' => array('relay'=>'relay','local' => 'local','manual_relay'=>'manual Relay') - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['domain'] = array ( + 'title' => "Domain", + 'width' => 100, + 'template' => "templates/mail_domain_relay_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE 1 ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'domain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'domain_error_empty'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'domain_error_unique'), + 2 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'domain_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('relay'=>'relay','local' => 'local','manual_relay'=>'manual Relay') + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_forward.tform.php b/interface/web/mail/form/mail_forward.tform.php similarity index 100% rename from interface/web/sites/form/mail_forward.tform.php rename to interface/web/mail/form/mail_forward.tform.php diff --git a/interface/web/mail/form/mail_spamfilter.tform.php b/interface/web/mail/form/mail_spamfilter.tform.php new file mode 100644 index 0000000000..7495fd881b --- /dev/null +++ b/interface/web/mail/form/mail_spamfilter.tform.php @@ -0,0 +1,146 @@ + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['spamfilter'] = array ( + 'title' => "Spamfilter", + 'width' => 100, + 'template' => "templates/mail_spamfilter_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'email' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'email_error_notempty'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'email_error_unique'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'spam_rewrite_score_int' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '5.00', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'spam_redirect_score_int' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '7.00', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'spam_delete_score_int' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '15.00', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'spam_rewrite_subject' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '***SPAM***', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'spam_redirect_maildir' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT mailbox_id,email FROM mail_box WHERE {AUTHSQL} ORDER BY email', + 'keyfield'=> 'mailbox_id', + 'valuefield'=> 'email' + ), + 'default' => '', + 'value' => '' + ), + 'spam_redirect_maildir_purge' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => '7', + 'value' => '', + 'width' => '10', + 'maxlength' => '10' + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + +?> \ No newline at end of file diff --git a/interface/web/sites/form/mail_whitelist.tform.php b/interface/web/mail/form/mail_whitelist.tform.php similarity index 94% rename from interface/web/sites/form/mail_whitelist.tform.php rename to interface/web/mail/form/mail_whitelist.tform.php index b9006bb19a..69f68e6226 100644 --- a/interface/web/sites/form/mail_whitelist.tform.php +++ b/interface/web/mail/form/mail_whitelist.tform.php @@ -1,96 +1,104 @@ - 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['whitelist'] = array ( - 'title' => "Witelist", - 'width' => 100, - 'template' => "templates/mail_whitelist_edit.htm", - 'fields' => array ( - ################################## - # Begin Datatable fields - ################################## - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'address' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', - 'errmsg'=> 'address_error_notempty'), - ), - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'active' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'CHECKBOX', - 'default' => '1', - 'value' => '1' - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['whitelist'] = array ( + 'title' => "Witelist", + 'width' => 100, + 'template' => "templates/mail_whitelist_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'server_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'value' => '' + ), + 'address' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'address_error_notempty'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'recipient' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'active' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'CHECKBOX', + 'default' => '1', + 'value' => '1' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/lib/admin.conf.php b/interface/web/mail/lib/admin.conf.php similarity index 100% rename from interface/web/sites/lib/admin.conf.php rename to interface/web/mail/lib/admin.conf.php diff --git a/interface/web/sites/lib/lang/en_mail_alias.lng b/interface/web/mail/lib/lang/en_mail_alias.lng similarity index 68% rename from interface/web/sites/lib/lang/en_mail_alias.lng rename to interface/web/mail/lib/lang/en_mail_alias.lng index 28c7dda9b2..4023eb61c9 100644 --- a/interface/web/sites/lib/lang/en_mail_alias.lng +++ b/interface/web/mail/lib/lang/en_mail_alias.lng @@ -1,10 +1,11 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_alias_list.lng b/interface/web/mail/lib/lang/en_mail_alias_list.lng similarity index 100% rename from interface/web/sites/lib/lang/en_mail_alias_list.lng rename to interface/web/mail/lib/lang/en_mail_alias_list.lng diff --git a/interface/web/sites/lib/lang/en_mail_blacklist.lng b/interface/web/mail/lib/lang/en_mail_blacklist.lng similarity index 70% rename from interface/web/sites/lib/lang/en_mail_blacklist.lng rename to interface/web/mail/lib/lang/en_mail_blacklist.lng index a2f71fecb0..1138100b0b 100644 --- a/interface/web/sites/lib/lang/en_mail_blacklist.lng +++ b/interface/web/mail/lib/lang/en_mail_blacklist.lng @@ -1,8 +1,9 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_blacklist_list.lng b/interface/web/mail/lib/lang/en_mail_blacklist_list.lng similarity index 83% rename from interface/web/sites/lib/lang/en_mail_blacklist_list.lng rename to interface/web/mail/lib/lang/en_mail_blacklist_list.lng index c866e31ad2..cc90ac898e 100644 --- a/interface/web/sites/lib/lang/en_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/en_mail_blacklist_list.lng @@ -1,12 +1,14 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_box.lng b/interface/web/mail/lib/lang/en_mail_box.lng similarity index 72% rename from interface/web/sites/lib/lang/en_mail_box.lng rename to interface/web/mail/lib/lang/en_mail_box.lng index ff001ff5a9..7472cc91dd 100644 --- a/interface/web/sites/lib/lang/en_mail_box.lng +++ b/interface/web/mail/lib/lang/en_mail_box.lng @@ -1,13 +1,15 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_box_list.lng b/interface/web/mail/lib/lang/en_mail_box_list.lng similarity index 100% rename from interface/web/sites/lib/lang/en_mail_box_list.lng rename to interface/web/mail/lib/lang/en_mail_box_list.lng diff --git a/interface/web/sites/lib/lang/en_mail_domain.lng b/interface/web/mail/lib/lang/en_mail_domain.lng similarity index 80% rename from interface/web/sites/lib/lang/en_mail_domain.lng rename to interface/web/mail/lib/lang/en_mail_domain.lng index c6a788e454..6f89de675b 100644 --- a/interface/web/sites/lib/lang/en_mail_domain.lng +++ b/interface/web/mail/lib/lang/en_mail_domain.lng @@ -1,12 +1,12 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_alias.lng b/interface/web/mail/lib/lang/en_mail_domain_alias.lng similarity index 57% rename from interface/web/sites/lib/lang/en_mail_domain_alias.lng rename to interface/web/mail/lib/lang/en_mail_domain_alias.lng index 37d6fb0fab..ff39edfa8a 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_alias.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_alias.lng @@ -1,11 +1,13 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_alias_list.lng b/interface/web/mail/lib/lang/en_mail_domain_alias_list.lng similarity index 92% rename from interface/web/sites/lib/lang/en_mail_domain_alias_list.lng rename to interface/web/mail/lib/lang/en_mail_domain_alias_list.lng index 75d9593a47..2554f66f83 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_alias_list.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_alias_list.lng @@ -1,13 +1,14 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_catchall.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng similarity index 77% rename from interface/web/sites/lib/lang/en_mail_domain_catchall.lng rename to interface/web/mail/lib/lang/en_mail_domain_catchall.lng index ca7af2a13c..f93073b702 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_catchall.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall.lng @@ -1,9 +1,10 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng similarity index 92% rename from interface/web/sites/lib/lang/en_mail_domain_catchall_list.lng rename to interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng index 1144404e4c..a15d7973e9 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_catchall_list.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng @@ -1,13 +1,14 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_list.lng b/interface/web/mail/lib/lang/en_mail_domain_list.lng similarity index 91% rename from interface/web/sites/lib/lang/en_mail_domain_list.lng rename to interface/web/mail/lib/lang/en_mail_domain_list.lng index 2532583330..d4788684af 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_list.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_list.lng @@ -1,12 +1,13 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_relay.lng b/interface/web/mail/lib/lang/en_mail_domain_relay.lng similarity index 73% rename from interface/web/sites/lib/lang/en_mail_domain_relay.lng rename to interface/web/mail/lib/lang/en_mail_domain_relay.lng index 87c85815be..65846b1190 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_relay.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_relay.lng @@ -1,10 +1,10 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_domain_relay_list.lng b/interface/web/mail/lib/lang/en_mail_domain_relay_list.lng similarity index 91% rename from interface/web/sites/lib/lang/en_mail_domain_relay_list.lng rename to interface/web/mail/lib/lang/en_mail_domain_relay_list.lng index ac796d00be..1b98bf36ae 100644 --- a/interface/web/sites/lib/lang/en_mail_domain_relay_list.lng +++ b/interface/web/mail/lib/lang/en_mail_domain_relay_list.lng @@ -1,12 +1,13 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_forward.lng b/interface/web/mail/lib/lang/en_mail_forward.lng similarity index 100% rename from interface/web/sites/lib/lang/en_mail_forward.lng rename to interface/web/mail/lib/lang/en_mail_forward.lng diff --git a/interface/web/sites/lib/lang/en_mail_forward_list.lng b/interface/web/mail/lib/lang/en_mail_forward_list.lng similarity index 100% rename from interface/web/sites/lib/lang/en_mail_forward_list.lng rename to interface/web/mail/lib/lang/en_mail_forward_list.lng diff --git a/interface/web/mail/lib/lang/en_mail_spamfilter.lng b/interface/web/mail/lib/lang/en_mail_spamfilter.lng new file mode 100644 index 0000000000..e9013e7d61 --- /dev/null +++ b/interface/web/mail/lib/lang/en_mail_spamfilter.lng @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng new file mode 100644 index 0000000000..69aafffec2 --- /dev/null +++ b/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_whitelist.lng b/interface/web/mail/lib/lang/en_mail_whitelist.lng similarity index 70% rename from interface/web/sites/lib/lang/en_mail_whitelist.lng rename to interface/web/mail/lib/lang/en_mail_whitelist.lng index a2f71fecb0..faf0619806 100644 --- a/interface/web/sites/lib/lang/en_mail_whitelist.lng +++ b/interface/web/mail/lib/lang/en_mail_whitelist.lng @@ -1,8 +1,9 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_mail_whitelist_list.lng b/interface/web/mail/lib/lang/en_mail_whitelist_list.lng similarity index 83% rename from interface/web/sites/lib/lang/en_mail_whitelist_list.lng rename to interface/web/mail/lib/lang/en_mail_whitelist_list.lng index cb982b414f..71f7639f3b 100644 --- a/interface/web/sites/lib/lang/en_mail_whitelist_list.lng +++ b/interface/web/mail/lib/lang/en_mail_whitelist_list.lng @@ -1,12 +1,14 @@ - \ No newline at end of file diff --git a/interface/web/sites/lib/lang/fr_mail_domain.lng b/interface/web/mail/lib/lang/fr_mail_domain.lng similarity index 100% rename from interface/web/sites/lib/lang/fr_mail_domain.lng rename to interface/web/mail/lib/lang/fr_mail_domain.lng diff --git a/interface/web/sites/lib/lang/fr_mail_domain_list.lng b/interface/web/mail/lib/lang/fr_mail_domain_list.lng similarity index 100% rename from interface/web/sites/lib/lang/fr_mail_domain_list.lng rename to interface/web/mail/lib/lang/fr_mail_domain_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_alias.lng b/interface/web/mail/lib/lang/se_mail_alias.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_alias.lng rename to interface/web/mail/lib/lang/se_mail_alias.lng diff --git a/interface/web/sites/lib/lang/se_mail_alias_list.lng b/interface/web/mail/lib/lang/se_mail_alias_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_alias_list.lng rename to interface/web/mail/lib/lang/se_mail_alias_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_blacklist.lng b/interface/web/mail/lib/lang/se_mail_blacklist.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_blacklist.lng rename to interface/web/mail/lib/lang/se_mail_blacklist.lng diff --git a/interface/web/sites/lib/lang/se_mail_blacklist_list.lng b/interface/web/mail/lib/lang/se_mail_blacklist_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_blacklist_list.lng rename to interface/web/mail/lib/lang/se_mail_blacklist_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_box.lng b/interface/web/mail/lib/lang/se_mail_box.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_box.lng rename to interface/web/mail/lib/lang/se_mail_box.lng diff --git a/interface/web/sites/lib/lang/se_mail_box_list.lng b/interface/web/mail/lib/lang/se_mail_box_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_box_list.lng rename to interface/web/mail/lib/lang/se_mail_box_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain.lng b/interface/web/mail/lib/lang/se_mail_domain.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain.lng rename to interface/web/mail/lib/lang/se_mail_domain.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_alias.lng b/interface/web/mail/lib/lang/se_mail_domain_alias.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_alias.lng rename to interface/web/mail/lib/lang/se_mail_domain_alias.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_alias_list.lng b/interface/web/mail/lib/lang/se_mail_domain_alias_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_alias_list.lng rename to interface/web/mail/lib/lang/se_mail_domain_alias_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_catchall.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_catchall.lng rename to interface/web/mail/lib/lang/se_mail_domain_catchall.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_catchall_list.lng rename to interface/web/mail/lib/lang/se_mail_domain_catchall_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_list.lng b/interface/web/mail/lib/lang/se_mail_domain_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_list.lng rename to interface/web/mail/lib/lang/se_mail_domain_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_relay.lng b/interface/web/mail/lib/lang/se_mail_domain_relay.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_relay.lng rename to interface/web/mail/lib/lang/se_mail_domain_relay.lng diff --git a/interface/web/sites/lib/lang/se_mail_domain_relay_list.lng b/interface/web/mail/lib/lang/se_mail_domain_relay_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_domain_relay_list.lng rename to interface/web/mail/lib/lang/se_mail_domain_relay_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_forward.lng b/interface/web/mail/lib/lang/se_mail_forward.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_forward.lng rename to interface/web/mail/lib/lang/se_mail_forward.lng diff --git a/interface/web/sites/lib/lang/se_mail_forward_list.lng b/interface/web/mail/lib/lang/se_mail_forward_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_forward_list.lng rename to interface/web/mail/lib/lang/se_mail_forward_list.lng diff --git a/interface/web/sites/lib/lang/se_mail_whitelist.lng b/interface/web/mail/lib/lang/se_mail_whitelist.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_whitelist.lng rename to interface/web/mail/lib/lang/se_mail_whitelist.lng diff --git a/interface/web/sites/lib/lang/se_mail_whitelist_list.lng b/interface/web/mail/lib/lang/se_mail_whitelist_list.lng similarity index 100% rename from interface/web/sites/lib/lang/se_mail_whitelist_list.lng rename to interface/web/mail/lib/lang/se_mail_whitelist_list.lng diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/mail/lib/module.conf.php similarity index 57% rename from interface/web/sites/lib/module.conf.php rename to interface/web/mail/lib/module.conf.php index dcdf738d24..f6de41f93c 100644 --- a/interface/web/sites/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -1,10 +1,10 @@ 'sites', - 'title' => 'Sites & Email', + 'name' => 'mail', + 'title' => 'Email', 'template' => 'module.tpl.htm', 'navframe_page' => '', - 'startpage' => 'sites/index.php', + 'startpage' => 'mail/index.php', 'tab_width' => '', 'nav' => array ( @@ -18,43 +18,43 @@ $module = array ( array ( 'title' => 'Domain', 'target' => 'content', - 'link' => 'sites/mail_domain_list.php', + 'link' => 'mail/mail_domain_list.php', ), 1 => array ( 'title' => 'Domain Alias', 'target' => 'content', - 'link' => 'sites/mail_domain_alias_list.php', + 'link' => 'mail/mail_domain_alias_list.php', ), 2 => array ( 'title' => 'Domain Relay', 'target' => 'content', - 'link' => 'sites/mail_domain_relay_list.php', + 'link' => 'mail/mail_domain_relay_list.php', ), 3 => array ( 'title' => 'Email Mailbox', 'target' => 'content', - 'link' => 'sites/mail_box_list.php', + 'link' => 'mail/mail_box_list.php', ), 4 => array ( 'title' => 'Email Alias', 'target' => 'content', - 'link' => 'sites/mail_alias_list.php', + 'link' => 'mail/mail_alias_list.php', ), 5 => array ( 'title' => 'Email Forward', 'target' => 'content', - 'link' => 'sites/mail_forward_list.php', + 'link' => 'mail/mail_forward_list.php', ), 6 => array ( 'title' => 'Email Catchall', 'target' => 'content', - 'link' => 'sites/mail_domain_catchall_list.php', + 'link' => 'mail/mail_domain_catchall_list.php', ), 7 => array ( @@ -72,15 +72,35 @@ $module = array ( array ( 0 => array ( - 'title' => 'Email Whitelist', + 'title' => 'Whitelist', 'target' => 'content', - 'link' => 'sites/mail_whitelist_list.php', + 'link' => 'mail/mail_whitelist_list.php', ), 1 => array ( - 'title' => 'Email Blacklist', + 'title' => 'Blacklist', 'target' => 'content', - 'link' => 'sites/mail_blacklist_list.php', + 'link' => 'mail/mail_blacklist_list.php', + ), + 2 => + array ( + 'title' => 'Spamfilter', + 'target' => 'content', + 'link' => 'mail/mail_spamfilter_list.php', + ), + ), + ), + 2 => + array ( + 'title' => 'Fetchmail', + 'open' => 1, + 'items' => + array ( + 0 => + array ( + 'title' => 'Fetchmail Accounts', + 'target' => 'content', + 'link' => 'mail/fetchmail_list.php', ), ), ), diff --git a/interface/web/sites/list/mail_alias.list.php b/interface/web/mail/list/mail_alias.list.php similarity index 100% rename from interface/web/sites/list/mail_alias.list.php rename to interface/web/mail/list/mail_alias.list.php diff --git a/interface/web/sites/list/mail_blacklist.list.php b/interface/web/mail/list/mail_blacklist.list.php similarity index 64% rename from interface/web/sites/list/mail_blacklist.list.php rename to interface/web/mail/list/mail_blacklist.list.php index 90315ccce0..12308e55aa 100644 --- a/interface/web/sites/list/mail_blacklist.list.php +++ b/interface/web/mail/list/mail_blacklist.list.php @@ -1,69 +1,93 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "address", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - - + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "address", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + +$liste["item"][] = array( 'field' => "recipient", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + ?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_box.list.php b/interface/web/mail/list/mail_box.list.php similarity index 100% rename from interface/web/sites/list/mail_box.list.php rename to interface/web/mail/list/mail_box.list.php diff --git a/interface/web/sites/list/mail_domain.list.php b/interface/web/mail/list/mail_domain.list.php similarity index 70% rename from interface/web/sites/list/mail_domain.list.php rename to interface/web/mail/list/mail_domain.list.php index 07c4681d87..359a6dfd36 100644 --- a/interface/web/sites/list/mail_domain.list.php +++ b/interface/web/mail/list/mail_domain.list.php @@ -1,69 +1,85 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "domain", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - - + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "domain", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + ?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_domain_alias.list.php b/interface/web/mail/list/mail_domain_alias.list.php similarity index 73% rename from interface/web/sites/list/mail_domain_alias.list.php rename to interface/web/mail/list/mail_domain_alias.list.php index 885900878e..06965c48d9 100644 --- a/interface/web/sites/list/mail_domain_alias.list.php +++ b/interface/web/mail/list/mail_domain_alias.list.php @@ -1,77 +1,92 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "domain", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "destination", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "domain", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "destination", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + ?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_domain_catchall.list.php b/interface/web/mail/list/mail_domain_catchall.list.php similarity index 86% rename from interface/web/sites/list/mail_domain_catchall.list.php rename to interface/web/mail/list/mail_domain_catchall.list.php index 131343e36b..c6f9c3099b 100644 --- a/interface/web/sites/list/mail_domain_catchall.list.php +++ b/interface/web/mail/list/mail_domain_catchall.list.php @@ -1,76 +1,85 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "domain", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "destination", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "domain", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "destination", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); ?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_domain_relay.list.php b/interface/web/mail/list/mail_domain_relay.list.php similarity index 70% rename from interface/web/sites/list/mail_domain_relay.list.php rename to interface/web/mail/list/mail_domain_relay.list.php index 9f0ea3549c..1f97ea5bab 100644 --- a/interface/web/sites/list/mail_domain_relay.list.php +++ b/interface/web/mail/list/mail_domain_relay.list.php @@ -1,68 +1,83 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "domain", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "domain", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + ?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_forward.list.php b/interface/web/mail/list/mail_forward.list.php similarity index 100% rename from interface/web/sites/list/mail_forward.list.php rename to interface/web/mail/list/mail_forward.list.php diff --git a/interface/web/mail/list/mail_spamfilter.list.php b/interface/web/mail/list/mail_spamfilter.list.php new file mode 100644 index 0000000000..d959918a1b --- /dev/null +++ b/interface/web/mail/list/mail_spamfilter.list.php @@ -0,0 +1,85 @@ + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "email", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + + +?> \ No newline at end of file diff --git a/interface/web/sites/list/mail_whitelist.list.php b/interface/web/mail/list/mail_whitelist.list.php similarity index 64% rename from interface/web/sites/list/mail_whitelist.list.php rename to interface/web/mail/list/mail_whitelist.list.php index 82847666e4..79a582cbf7 100644 --- a/interface/web/sites/list/mail_whitelist.list.php +++ b/interface/web/mail/list/mail_whitelist.list.php @@ -1,69 +1,93 @@ - "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "address", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - - + "active", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'value' => array('1' => "Yes",'0' => "No")); + + +$liste["item"][] = array( 'field' => "server_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "address", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + +$liste["item"][] = array( 'field' => "recipient", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + ?> \ No newline at end of file diff --git a/interface/web/sites/mail_alias_del.php b/interface/web/mail/mail_alias_del.php similarity index 100% rename from interface/web/sites/mail_alias_del.php rename to interface/web/mail/mail_alias_del.php diff --git a/interface/web/sites/mail_alias_edit.php b/interface/web/mail/mail_alias_edit.php similarity index 100% rename from interface/web/sites/mail_alias_edit.php rename to interface/web/mail/mail_alias_edit.php diff --git a/interface/web/sites/mail_alias_list.php b/interface/web/mail/mail_alias_list.php similarity index 100% rename from interface/web/sites/mail_alias_list.php rename to interface/web/mail/mail_alias_list.php diff --git a/interface/web/sites/mail_blacklist_del.php b/interface/web/mail/mail_blacklist_del.php similarity index 100% rename from interface/web/sites/mail_blacklist_del.php rename to interface/web/mail/mail_blacklist_del.php diff --git a/interface/web/mail/mail_blacklist_edit.php b/interface/web/mail/mail_blacklist_edit.php new file mode 100644 index 0000000000..4caf0344c4 --- /dev/null +++ b/interface/web/mail/mail_blacklist_edit.php @@ -0,0 +1,106 @@ +uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onShowEnd() { + global $app, $conf; + + // Getting recipient from data record + $recipient = $this->dataRecord["recipient"]; + $email_parts = explode("@",$recipient); + $app->tpl->setVar("recipient_local_part",$email_parts[0]); + + // Getting Domains of the user + $sql = "SELECT domain FROM mail_domain WHERE type = 'local' AND ".$app->tform->getAuthSQL('r'); + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + if($_SESSION["s"]["user"]["typ"] == 'admin') $domain_select .= ''; + foreach( $domains as $domain) { + $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; + $domain_select .= "\r\n"; + } + $app->tpl->setVar("recipient_domain",$domain_select); + + parent::onShowEnd(); + } + + function onSubmit() { + global $app, $conf; + + // Check if Domain belongs to user + $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["recipient_domain"])."' AND ".$app->tform->getAuthSQL('r')); + if($domain["domain"] != $_POST["recipient_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + + // compose the email field + if($_POST["recipient_local_part"] != '') { + $this->dataRecord["recipient"] = $_POST["recipient_local_part"]."@".$_POST["recipient_domain"]; + } else { + $this->dataRecord["recipient"] = $_POST["recipient_domain"]; + } + // Set the server id of the mailbox = server ID of mail domain. + //$this->dataRecord["server_id"] = $domain["server_id"]; + + unset($this->dataRecord["recipient_local_part"]); + unset($this->dataRecord["recipient_domain"]); + + parent::onSubmit(); + } + +} + +$app->tform_actions = new page_action; +$app->tform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/sites/mail_blacklist_list.php b/interface/web/mail/mail_blacklist_list.php similarity index 100% rename from interface/web/sites/mail_blacklist_list.php rename to interface/web/mail/mail_blacklist_list.php diff --git a/interface/web/sites/mail_box_del.php b/interface/web/mail/mail_box_del.php similarity index 100% rename from interface/web/sites/mail_box_del.php rename to interface/web/mail/mail_box_del.php diff --git a/interface/web/sites/mail_box_edit.php b/interface/web/mail/mail_box_edit.php similarity index 91% rename from interface/web/sites/mail_box_edit.php rename to interface/web/mail/mail_box_edit.php index 4d007a7189..a93d14a7a6 100644 --- a/interface/web/sites/mail_box_edit.php +++ b/interface/web/mail/mail_box_edit.php @@ -1,104 +1,111 @@ -uses('tpl,tform,tform_actions'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - - function onShowEnd() { - global $app, $conf; - - $email = $this->dataRecord["email"]; - $email_parts = explode("@",$email); - $app->tpl->setVar("email_local_part",$email_parts[0]); - - // Getting Domains of the user - $sql = "SELECT domain FROM mail_domain WHERE type = 'local' AND ".$app->tform->getAuthSQL('r'); - $domains = $app->db->queryAllRecords($sql); - $domain_select = ''; - foreach( $domains as $domain) { - $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; - $domain_select .= "\r\n"; - } - $app->tpl->setVar("email_domain",$domain_select); - - parent::onShowEnd(); - } - - function onSubmit() { - global $app, $conf; - - // Check if Domain belongs to user - $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); - if($domain["domain"] != $_POST["email_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; - - // if its an insert, check for password - if($this->id == 0 and $_POST["cryptpwd"] == '') { - $app->tform->errorMessage .= $app->tform->wordbook["error_no_pwd"]."
"; - } - - // compose the email field - $this->dataRecord["email"] = $_POST["email_local_part"]."@".$_POST["email_domain"]; - // Set the server id of the mailbox = server ID of mail domain. - $this->dataRecord["server_id"] = $domain["server_id"]; - - unset($this->dataRecord["email_local_part"]); - unset($this->dataRecord["email_domain"]); - - parent::onSubmit(); - } - -} - -$app->tform_actions = new page_action; -$app->tform_actions->onLoad(); - +uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onShowEnd() { + global $app, $conf; + + $email = $this->dataRecord["email"]; + $email_parts = explode("@",$email); + $app->tpl->setVar("email_local_part",$email_parts[0]); + + // Getting Domains of the user + $sql = "SELECT domain FROM mail_domain WHERE type = 'local' AND ".$app->tform->getAuthSQL('r'); + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + foreach( $domains as $domain) { + $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; + $domain_select .= "\r\n"; + } + $app->tpl->setVar("email_domain",$domain_select); + + parent::onShowEnd(); + } + + function onSubmit() { + global $app, $conf; + + // Check if Domain belongs to user + $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); + if($domain["domain"] != $_POST["email_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + + // if its an insert, check for password + if($this->id == 0 and $_POST["cryptpwd"] == '') { + $app->tform->errorMessage .= $app->tform->wordbook["error_no_pwd"]."
"; + } + + // compose the email field + $this->dataRecord["email"] = $_POST["email_local_part"]."@".$_POST["email_domain"]; + // Set the server id of the mailbox = server ID of mail domain. + $this->dataRecord["server_id"] = $domain["server_id"]; + + unset($this->dataRecord["email_local_part"]); + unset($this->dataRecord["email_domain"]); + + // setting Maildir + $app->uses('getconf'); + $mail_config = $app->getconf->get_server_config($domain["server_id"],'mail'); + $maildir = str_replace("[domain]",$domain["domain"],$mail_config["maildir_path"]); + $maildir = str_replace("[localpart]",$_POST["email_local_part"],$maildir); + $this->dataRecord["maildir"] = $maildir; + + parent::onSubmit(); + } + +} + +$app->tform_actions = new page_action; +$app->tform_actions->onLoad(); + ?> \ No newline at end of file diff --git a/interface/web/sites/mail_box_list.php b/interface/web/mail/mail_box_list.php similarity index 100% rename from interface/web/sites/mail_box_list.php rename to interface/web/mail/mail_box_list.php diff --git a/interface/web/sites/mail_domain_alias_del.php b/interface/web/mail/mail_domain_alias_del.php similarity index 100% rename from interface/web/sites/mail_domain_alias_del.php rename to interface/web/mail/mail_domain_alias_del.php diff --git a/interface/web/sites/mail_domain_alias_edit.php b/interface/web/mail/mail_domain_alias_edit.php similarity index 100% rename from interface/web/sites/mail_domain_alias_edit.php rename to interface/web/mail/mail_domain_alias_edit.php diff --git a/interface/web/sites/mail_domain_alias_list.php b/interface/web/mail/mail_domain_alias_list.php similarity index 100% rename from interface/web/sites/mail_domain_alias_list.php rename to interface/web/mail/mail_domain_alias_list.php diff --git a/interface/web/sites/mail_domain_catchall_del.php b/interface/web/mail/mail_domain_catchall_del.php similarity index 100% rename from interface/web/sites/mail_domain_catchall_del.php rename to interface/web/mail/mail_domain_catchall_del.php diff --git a/interface/web/sites/mail_domain_catchall_edit.php b/interface/web/mail/mail_domain_catchall_edit.php similarity index 100% rename from interface/web/sites/mail_domain_catchall_edit.php rename to interface/web/mail/mail_domain_catchall_edit.php diff --git a/interface/web/sites/mail_domain_catchall_list.php b/interface/web/mail/mail_domain_catchall_list.php similarity index 100% rename from interface/web/sites/mail_domain_catchall_list.php rename to interface/web/mail/mail_domain_catchall_list.php diff --git a/interface/web/sites/mail_domain_del.php b/interface/web/mail/mail_domain_del.php similarity index 100% rename from interface/web/sites/mail_domain_del.php rename to interface/web/mail/mail_domain_del.php diff --git a/interface/web/sites/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php similarity index 100% rename from interface/web/sites/mail_domain_edit.php rename to interface/web/mail/mail_domain_edit.php diff --git a/interface/web/sites/mail_domain_list.php b/interface/web/mail/mail_domain_list.php similarity index 100% rename from interface/web/sites/mail_domain_list.php rename to interface/web/mail/mail_domain_list.php diff --git a/interface/web/sites/mail_domain_relay_del.php b/interface/web/mail/mail_domain_relay_del.php similarity index 100% rename from interface/web/sites/mail_domain_relay_del.php rename to interface/web/mail/mail_domain_relay_del.php diff --git a/interface/web/sites/mail_domain_relay_edit.php b/interface/web/mail/mail_domain_relay_edit.php similarity index 100% rename from interface/web/sites/mail_domain_relay_edit.php rename to interface/web/mail/mail_domain_relay_edit.php diff --git a/interface/web/sites/mail_domain_relay_list.php b/interface/web/mail/mail_domain_relay_list.php similarity index 100% rename from interface/web/sites/mail_domain_relay_list.php rename to interface/web/mail/mail_domain_relay_list.php diff --git a/interface/web/mail/mail_domain_route_del.php b/interface/web/mail/mail_domain_route_del.php new file mode 100644 index 0000000000..d69f9e20fc --- /dev/null +++ b/interface/web/mail/mail_domain_route_del.php @@ -0,0 +1,54 @@ +uses("tform_actions"); +$app->tform_actions->onDelete(); + +?> \ No newline at end of file diff --git a/interface/web/sites/mail_blacklist_edit.php b/interface/web/mail/mail_domain_route_edit.php similarity index 93% rename from interface/web/sites/mail_blacklist_edit.php rename to interface/web/mail/mail_domain_route_edit.php index e72f28cfbb..a87a8ae2c9 100644 --- a/interface/web/sites/mail_blacklist_edit.php +++ b/interface/web/mail/mail_domain_route_edit.php @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Begin Form configuration ******************************************/ -$tform_def_file = "form/mail_blacklist.tform.php"; +$tform_def_file = "form/mail_domain_route.tform.php"; /****************************************** * End Form configuration @@ -49,7 +49,8 @@ if(!stristr($_SESSION["s"]["user"]["modules"],$_SESSION["s"]["module"]["name"])) // Loading classes $app->uses('tpl,tform,tform_actions'); -$app->tform_actions->onLoad(); +// let tform_actions handle the page +$app->tform_actions->onLoad(); ?> \ No newline at end of file diff --git a/interface/web/mail/mail_domain_route_list.php b/interface/web/mail/mail_domain_route_list.php new file mode 100644 index 0000000000..c7f004f890 --- /dev/null +++ b/interface/web/mail/mail_domain_route_list.php @@ -0,0 +1,30 @@ +uses('listform_actions'); + +// Limit the results to alias domains +$app->listform_actions->SQLExtWhere = ""; + +// Generate the page +$app->listform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/sites/mail_forward_del.php b/interface/web/mail/mail_forward_del.php similarity index 100% rename from interface/web/sites/mail_forward_del.php rename to interface/web/mail/mail_forward_del.php diff --git a/interface/web/sites/mail_forward_edit.php b/interface/web/mail/mail_forward_edit.php similarity index 100% rename from interface/web/sites/mail_forward_edit.php rename to interface/web/mail/mail_forward_edit.php diff --git a/interface/web/sites/mail_forward_list.php b/interface/web/mail/mail_forward_list.php similarity index 100% rename from interface/web/sites/mail_forward_list.php rename to interface/web/mail/mail_forward_list.php diff --git a/interface/web/sites/mail_whitelist_edit.php b/interface/web/mail/mail_spamfilter_del.php similarity index 89% rename from interface/web/sites/mail_whitelist_edit.php rename to interface/web/mail/mail_spamfilter_del.php index 9eec2069cf..a6985ef46b 100644 --- a/interface/web/sites/mail_whitelist_edit.php +++ b/interface/web/mail/mail_spamfilter_del.php @@ -1,55 +1,54 @@ -uses('tpl,tform,tform_actions'); -$app->tform_actions->onLoad(); - - +uses("tform_actions"); +$app->tform_actions->onDelete(); + ?> \ No newline at end of file diff --git a/interface/web/mail/mail_spamfilter_edit.php b/interface/web/mail/mail_spamfilter_edit.php new file mode 100644 index 0000000000..2c3766a99a --- /dev/null +++ b/interface/web/mail/mail_spamfilter_edit.php @@ -0,0 +1,127 @@ +uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onShowEnd() { + global $app, $conf; + + // Getting email from data record + $email = $this->dataRecord["email"]; + $email_parts = explode("@",$email); + $app->tpl->setVar("email_local_part",$email_parts[0]); + + // Getting Domains of the user + $sql = "SELECT domain FROM mail_domain WHERE type = 'local' AND ".$app->tform->getAuthSQL('r'); + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + foreach( $domains as $domain) { + $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; + $domain_select .= "\r\n"; + } + $app->tpl->setVar("email_domain",$domain_select); + + // calculate scores + if(count($this->dataRecord) > 0) { + $app->tpl->setVar("spam_rewrite_score_int",number_format($this->dataRecord["spam_rewrite_score_int"] / 100, 2, '.', '')); + $app->tpl->setVar("spam_redirect_score_int",number_format($this->dataRecord["spam_redirect_score_int"] / 100, 2, '.', '')); + $app->tpl->setVar("spam_delete_score_int",number_format($this->dataRecord["spam_delete_score_int"] / 100, 2, '.', '')); + } + + // Changing maildir to mailbox_id + $sql = "SELECT mailbox_id FROM mail_box WHERE maildir = '".$this->dataRecord["spam_redirect_maildir"]."' AND ".$app->tform->getAuthSQL('r'); + $mailbox = $app->db->queryOneRecord($sql); + $this->dataRecord["spam_redirect_maildir"] = $mailbox["mailbox_id"]; + + parent::onShowEnd(); + } + + function onSubmit() { + global $app, $conf; + + // Check if Domain belongs to user + $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["email_domain"])."' AND ".$app->tform->getAuthSQL('r')); + if($domain["domain"] != $_POST["email_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + + // compose the email field + if($_POST["email_local_part"] != '') { + $this->dataRecord["email"] = $_POST["email_local_part"]."@".$_POST["email_domain"]; + } else { + $this->dataRecord["email"] = $_POST["email_domain"]; + } + // Set the server id of the mailbox = server ID of mail domain. + $this->dataRecord["server_id"] = $domain["server_id"]; + + unset($this->dataRecord["email_local_part"]); + unset($this->dataRecord["email_domain"]); + + // calculate scores + $this->dataRecord["spam_rewrite_score_int"] = $_POST["spam_rewrite_score_int"] * 100; + $this->dataRecord["spam_redirect_score_int"] = $_POST["spam_redirect_score_int"] * 100; + $this->dataRecord["spam_delete_score_int"] = $_POST["spam_delete_score_int"] * 100; + + // Changing mailbox_id to maildir + $sql = "SELECT maildir FROM mail_box WHERE mailbox_id = '".intval($_POST["spam_redirect_maildir"])."' AND ".$app->tform->getAuthSQL('r'); + $mailbox = $app->db->queryOneRecord($sql); + $this->dataRecord["spam_redirect_maildir"] = $mailbox["maildir"]; + + parent::onSubmit(); + } + +} + +$app->tform_actions = new page_action; +$app->tform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/mail/mail_spamfilter_list.php b/interface/web/mail/mail_spamfilter_list.php new file mode 100644 index 0000000000..e510589ee1 --- /dev/null +++ b/interface/web/mail/mail_spamfilter_list.php @@ -0,0 +1,26 @@ +uses('listform_actions'); + +$app->listform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/sites/mail_whitelist_del.php b/interface/web/mail/mail_whitelist_del.php similarity index 100% rename from interface/web/sites/mail_whitelist_del.php rename to interface/web/mail/mail_whitelist_del.php diff --git a/interface/web/mail/mail_whitelist_edit.php b/interface/web/mail/mail_whitelist_edit.php new file mode 100644 index 0000000000..ece39d52e3 --- /dev/null +++ b/interface/web/mail/mail_whitelist_edit.php @@ -0,0 +1,106 @@ +uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +class page_action extends tform_actions { + + function onShowEnd() { + global $app, $conf; + + // Getting recipient from data record + $recipient = $this->dataRecord["recipient"]; + $email_parts = explode("@",$recipient); + $app->tpl->setVar("recipient_local_part",$email_parts[0]); + + // Getting Domains of the user + $sql = "SELECT domain FROM mail_domain WHERE type = 'local' AND ".$app->tform->getAuthSQL('r'); + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + if($_SESSION["s"]["user"]["typ"] == 'admin') $domain_select .= ''; + foreach( $domains as $domain) { + $selected = ($domain["domain"] == $email_parts[1])?'SELECTED':''; + $domain_select .= "\r\n"; + } + $app->tpl->setVar("recipient_domain",$domain_select); + + parent::onShowEnd(); + } + + function onSubmit() { + global $app, $conf; + + // Check if Domain belongs to user + $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($_POST["recipient_domain"])."' AND ".$app->tform->getAuthSQL('r')); + if($domain["domain"] != $_POST["recipient_domain"]) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + + // compose the email field + if($_POST["recipient_local_part"] != '') { + $this->dataRecord["recipient"] = $_POST["recipient_local_part"]."@".$_POST["recipient_domain"]; + } else { + $this->dataRecord["recipient"] = $_POST["recipient_domain"]; + } + // Set the server id of the mailbox = server ID of mail domain. + // $this->dataRecord["server_id"] = $domain["server_id"]; + + unset($this->dataRecord["recipient_local_part"]); + unset($this->dataRecord["recipient_domain"]); + + parent::onSubmit(); + } + +} + +$app->tform_actions = new page_action; +$app->tform_actions->onLoad(); + + +?> \ No newline at end of file diff --git a/interface/web/sites/mail_whitelist_list.php b/interface/web/mail/mail_whitelist_list.php similarity index 100% rename from interface/web/sites/mail_whitelist_list.php rename to interface/web/mail/mail_whitelist_list.php diff --git a/interface/web/sites/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_alias_edit.htm rename to interface/web/mail/templates/mail_alias_edit.htm diff --git a/interface/web/sites/templates/mail_alias_list.htm b/interface/web/mail/templates/mail_alias_list.htm similarity index 100% rename from interface/web/sites/templates/mail_alias_list.htm rename to interface/web/mail/templates/mail_alias_list.htm diff --git a/interface/web/sites/templates/mail_blacklist_edit.htm b/interface/web/mail/templates/mail_blacklist_edit.htm similarity index 72% rename from interface/web/sites/templates/mail_blacklist_edit.htm rename to interface/web/mail/templates/mail_blacklist_edit.htm index 774a29c749..dab389a3e7 100644 --- a/interface/web/sites/templates/mail_blacklist_edit.htm +++ b/interface/web/mail/templates/mail_blacklist_edit.htm @@ -1,28 +1,32 @@ - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='server_id_txt'}: - -
{tmpl_var name='address_txt'}:
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  - -
+ + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='server_id_txt'}: + +
{tmpl_var name='address_txt'}:
{tmpl_var name='recipient_txt'}: @
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  + +
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_blacklist_list.htm b/interface/web/mail/templates/mail_blacklist_list.htm similarity index 56% rename from interface/web/sites/templates/mail_blacklist_list.htm rename to interface/web/mail/templates/mail_blacklist_list.htm index 34cb69c748..1d2ec6c420 100644 --- a/interface/web/sites/templates/mail_blacklist_list.htm +++ b/interface/web/mail/templates/mail_blacklist_list.htm @@ -1,27 +1,32 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="address"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="address"}{tmpl_var name="recipient"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_box_autoresponder_edit.htm b/interface/web/mail/templates/mail_box_autoresponder_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_box_autoresponder_edit.htm rename to interface/web/mail/templates/mail_box_autoresponder_edit.htm diff --git a/interface/web/sites/templates/mail_box_list.htm b/interface/web/mail/templates/mail_box_list.htm similarity index 100% rename from interface/web/sites/templates/mail_box_list.htm rename to interface/web/mail/templates/mail_box_list.htm diff --git a/interface/web/sites/templates/mail_box_mailbox_edit.htm b/interface/web/mail/templates/mail_box_mailbox_edit.htm similarity index 80% rename from interface/web/sites/templates/mail_box_mailbox_edit.htm rename to interface/web/mail/templates/mail_box_mailbox_edit.htm index 1466e1759a..8cf7356663 100644 --- a/interface/web/sites/templates/mail_box_mailbox_edit.htm +++ b/interface/web/mail/templates/mail_box_mailbox_edit.htm @@ -1,24 +1,28 @@ - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='email_txt'}: @
{tmpl_var name='cryptpwd_txt'}:
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  - -
+ + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='email_txt'}: @
{tmpl_var name='cryptpwd_txt'}:
{tmpl_var name='quota_txt'}: MB
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  + +
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_domain_alias_edit.htm b/interface/web/mail/templates/mail_domain_alias_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_domain_alias_edit.htm rename to interface/web/mail/templates/mail_domain_alias_edit.htm diff --git a/interface/web/sites/templates/mail_domain_alias_list.htm b/interface/web/mail/templates/mail_domain_alias_list.htm similarity index 70% rename from interface/web/sites/templates/mail_domain_alias_list.htm rename to interface/web/mail/templates/mail_domain_alias_list.htm index f5b2145753..8bdbe331eb 100644 --- a/interface/web/sites/templates/mail_domain_alias_list.htm +++ b/interface/web/mail/templates/mail_domain_alias_list.htm @@ -1,30 +1,33 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="domain"}{tmpl_var name="destination"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"}{tmpl_var name="destination"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_domain_catchall_edit.htm rename to interface/web/mail/templates/mail_domain_catchall_edit.htm diff --git a/interface/web/sites/templates/mail_domain_catchall_list.htm b/interface/web/mail/templates/mail_domain_catchall_list.htm similarity index 71% rename from interface/web/sites/templates/mail_domain_catchall_list.htm rename to interface/web/mail/templates/mail_domain_catchall_list.htm index c2b5f6d41b..5ade0ad5f9 100644 --- a/interface/web/sites/templates/mail_domain_catchall_list.htm +++ b/interface/web/mail/templates/mail_domain_catchall_list.htm @@ -1,30 +1,33 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="domain"}{tmpl_var name="destination"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"}{tmpl_var name="destination"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_domain_edit.htm rename to interface/web/mail/templates/mail_domain_edit.htm diff --git a/interface/web/sites/templates/mail_domain_list.htm b/interface/web/mail/templates/mail_domain_list.htm similarity index 65% rename from interface/web/sites/templates/mail_domain_list.htm rename to interface/web/mail/templates/mail_domain_list.htm index 93e7d1a76b..79c09580e1 100644 --- a/interface/web/sites/templates/mail_domain_list.htm +++ b/interface/web/mail/templates/mail_domain_list.htm @@ -1,26 +1,29 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="domain"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_domain_relay_edit.htm b/interface/web/mail/templates/mail_domain_relay_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_domain_relay_edit.htm rename to interface/web/mail/templates/mail_domain_relay_edit.htm diff --git a/interface/web/sites/templates/mail_domain_relay_list.htm b/interface/web/mail/templates/mail_domain_relay_list.htm similarity index 62% rename from interface/web/sites/templates/mail_domain_relay_list.htm rename to interface/web/mail/templates/mail_domain_relay_list.htm index 7c2c0ebd2c..ae1f2ee67b 100644 --- a/interface/web/sites/templates/mail_domain_relay_list.htm +++ b/interface/web/mail/templates/mail_domain_relay_list.htm @@ -1,27 +1,29 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="domain"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="domain"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_forward_edit.htm b/interface/web/mail/templates/mail_forward_edit.htm similarity index 100% rename from interface/web/sites/templates/mail_forward_edit.htm rename to interface/web/mail/templates/mail_forward_edit.htm diff --git a/interface/web/sites/templates/mail_forward_list.htm b/interface/web/mail/templates/mail_forward_list.htm similarity index 100% rename from interface/web/sites/templates/mail_forward_list.htm rename to interface/web/mail/templates/mail_forward_list.htm diff --git a/interface/web/mail/templates/mail_spamfilter_edit.htm b/interface/web/mail/templates/mail_spamfilter_edit.htm new file mode 100644 index 0000000000..044b5e1be3 --- /dev/null +++ b/interface/web/mail/templates/mail_spamfilter_edit.htm @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='email_txt'}: @
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
 
{tmpl_var name='spam_rewrite_txt'}
{tmpl_var name='spam_rewrite_score_int_txt'}:
{tmpl_var name='spam_rewrite_subject_txt'}:
 
{tmpl_var name='spam_redirect_txt'}
{tmpl_var name='spam_redirect_score_int_txt'}:
{tmpl_var name='spam_redirect_maildir_txt'}: + +
{tmpl_var name='spam_redirect_maildir_purge_txt'}: {tmpl_var name='days_txt'}
 
{tmpl_var name='spam_delete_txt'}
{tmpl_var name='spam_delete_score_int_txt'}:
{tmpl_var name='disable_txt'}
  + +
+ \ No newline at end of file diff --git a/interface/web/mail/templates/mail_spamfilter_list.htm b/interface/web/mail/templates/mail_spamfilter_list.htm new file mode 100644 index 0000000000..d1507bdf7f --- /dev/null +++ b/interface/web/mail/templates/mail_spamfilter_list.htm @@ -0,0 +1,30 @@ +
+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="email"}[{tmpl_var name='delete_txt'}]
+
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_whitelist_edit.htm b/interface/web/mail/templates/mail_whitelist_edit.htm similarity index 72% rename from interface/web/sites/templates/mail_whitelist_edit.htm rename to interface/web/mail/templates/mail_whitelist_edit.htm index 8c11d09340..96b2e95187 100644 --- a/interface/web/sites/templates/mail_whitelist_edit.htm +++ b/interface/web/mail/templates/mail_whitelist_edit.htm @@ -1,28 +1,32 @@ - - - - - - - - - - - - - - - - - - - - -
{tmpl_var name='server_id_txt'}: - -
{tmpl_var name='address_txt'}:
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  - -
+ + + + + + + + + + + + + + + + + + + + + + + + +
{tmpl_var name='server_id_txt'}: + +
{tmpl_var name='address_txt'}:
{tmpl_var name='recipient_txt'}: @
{tmpl_var name='active_txt'}:{tmpl_var name='active'}
  
  + +
\ No newline at end of file diff --git a/interface/web/sites/templates/mail_whitelist_list.htm b/interface/web/mail/templates/mail_whitelist_list.htm similarity index 56% rename from interface/web/sites/templates/mail_whitelist_list.htm rename to interface/web/mail/templates/mail_whitelist_list.htm index 00461859f7..6c46d1f63c 100644 --- a/interface/web/sites/templates/mail_whitelist_list.htm +++ b/interface/web/mail/templates/mail_whitelist_list.htm @@ -1,27 +1,32 @@ -
-

-

- - - - - - - - - - - - - - - - - - - - - - -
 
{tmpl_var name="server_id"}{tmpl_var name="address"}[{tmpl_var name='delete_txt'}]
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="active"}{tmpl_var name="server_id"}{tmpl_var name="address"}{tmpl_var name="recipient"}[{tmpl_var name='delete_txt'}]
\ No newline at end of file -- GitLab