SF.net SVN: postfixadmin:[1358] trunk
Brought to you by:
christian_boltz,
gingerdog
From: <chr...@us...> - 2012-04-09 01:48:10
|
Revision: 1358 http://postfixadmin.svn.sourceforge.net/postfixadmin/?rev=1358&view=rev Author: christian_boltz Date: 2012-04-09 01:48:04 +0000 (Mon, 09 Apr 2012) Log Message: ----------- remove obsolete functions from AliasHandler (part 2/2) AliasHandler.php: - remove obsolete functions update(), is_mailbox_alias(), is_vacation_address(), hasAliasRecord() - updated delete() to use new *Handler syntax (most of it should be moved to PFAHandler, but that's another story ;-) users/edit-alias.php: - replace $ah->update with $ah->set / $ah->store - use 0/1 for $fForward_and_store instead of YES/NO - use safepost instead of isset() templates/users_edit-alias.tpl: - use 0/1 for $fForward_and_store instead of YES/NO xmlrpc.php: - replace $ah->update with new *Handler syntax Note: the changes in xmlrpc.php are untested again ;-) Modified Paths: -------------- trunk/model/AliasHandler.php trunk/templates/users_edit-alias.tpl trunk/users/edit-alias.php trunk/xmlrpc.php Modified: trunk/model/AliasHandler.php =================================================================== --- trunk/model/AliasHandler.php 2012-04-09 01:06:52 UTC (rev 1357) +++ trunk/model/AliasHandler.php 2012-04-09 01:48:04 UTC (rev 1358) @@ -293,159 +293,19 @@ /********************************************************************************************************************************************************** old function from non-PFAHandler times of AliasHandler - They still work, but are deprecated and will be removed. + Will be replaced by a global delete() function in PFAHandler **********************************************************************************************************************************************************/ - /** - * @param string $address - * @param string $username - * @return boolean true if the username is an alias for the mailbox AND we have alias_control turned off. - * TODO: comment for @return: does alias_control really matter here? - */ - public function is_mailbox_alias($address) { - global $CONF; - - if($address != $this->id) { # avoid false positives if $address is a mailbox - return false; - } - - $table_mailbox = table_by_key('mailbox'); - $E_address = escape_string($address); - $sql = "SELECT * FROM $table_mailbox WHERE username='$E_address'"; - $result = db_query($sql); - if($result['rows'] != 1) { - return false; - } else { - return true; - } - } - /** - * @param string $address - * @return boolean true if the address contains the vacation domain - */ - public function is_vacation_address($address) { - global $CONF; - if($CONF['vacation'] == 'YES') { - if(stripos($address, '@' . $CONF['vacation_domain'])) { # TODO: check full vacation address user#domain.com@vacation_domain - return true; - } - } - return false; - } - /** - * @return boolean true on success - * @param string $username - * @param array $addresses - list of aliases to set for the user. - * @param string flags - forward_and_store or remote_only or '' - * @param boolean $vacation_persist - set to false to stop the vacation address persisting across updates - * Set the user's aliases to those provided. If $addresses ends up being empty the alias record is removed. # TODO: deleting that's buggy behaviour, error out instead - */ - public function update($addresses, $flags = '', $vacation_persist=true) { - // find out if the user is on vacation or not; if they are, - // then the vacation alias needs adding to the db (as we strip it out in the get method) - // likewise with the alias_control address. - - # TODO: move all validation from edit-alias/create-alias and users/edit-alias here - - $valid_flags = array('', 'forward_and_store', 'remote_only'); - if(!in_array($flags, $valid_flags)) { - die("Invalid flag passed into update()... : $flag - valid options are :" . implode(',', $valid_flags)); - } - $addresses = array_unique($addresses); - - list (/*NULL*/, $domain) = explode('@', $this->id); - - if ( ! $this->get(true) ) die("Alias not existing?"); # TODO: better error behaviour - - foreach($this->return as $address) { - if($vacation_persist) { - if($this->is_vacation_address($address)) { - $addresses[] = $address; - } - } - if($flags != 'remote_only') { - if($this->is_mailbox_alias($address)) { - $addresses[] = $address; - } - } - } - $addresses = array_unique($addresses); - - $new_list = array(); - if($flags == 'remote_only') { - foreach($addresses as $address) { # TODO: write a remove_from_array function, see http://tech.petegraham.co.uk/2007/03/22/php-remove-values-from-array/ - // strip out our username... if it's in the list given. - if($address != $this->id) { - $new_list[] = $address; - } - } - $addresses = $new_list; - } - - if($flags == 'forward_and_store') { - if(!in_array($this->id, $addresses)) { - $addresses[] = $this->id; - } - } - $new_list = array(); - foreach($addresses as $address) { - if($address != '') { - $new_list[] = $address; # TODO use remove_from_array, see above - } - } - $addresses = array_unique($new_list); - $E_username = escape_string($this->id); - $goto = implode(',', $addresses); - if(sizeof($addresses) == 0) { - # $result = db_delete('alias', 'address', $this->id); # '"DELETE FROM $table_alias WHERE address = '$username'"; # TODO: should never happen and causes broken behaviour - error_log("Alias set to empty / Attemp to delete: " . $this->id); # TODO: more/better error handling - maybe just return false? - } - if($this->hasAliasRecord() == false) { # TODO should never happen in update() - see also the comments on handling DELETE above - $alias_data = array( - 'address' => $this->id, - 'goto' => $goto, - 'domain' => $domain, - 'active' => db_get_boolean(True), - ); - $result = db_insert('alias', $alias_data); - } else { - $alias_data = array( - 'goto' => $goto, - ); - $result = db_update('alias', 'address', $this->id, $alias_data); - } - if($result != 1) { - return false; - } - db_log ($domain, 'edit_alias', "$E_username -> $goto"); - return true; - } - - /** - * @return boolean true if the user has an alias record (i.e row in alias table); else false. - */ - private function hasAliasRecord() { # only used by update() in this class - $username = escape_string($this->id); - $table_alias = table_by_key('alias'); - $sql = "SELECT * FROM $table_alias WHERE address = '$username'"; - $result = db_query($sql); - if($result['rows'] == 1) { - return true; - } - return false; - } - - /** * @return true on success false on failure */ public function delete(){ - if( ! $this->get() ) { + if( ! $this->view() ) { $this->errormsg[] = 'An alias with that address does not exist.'; # TODO: make translatable return false; } - if ($this->is_mailbox_alias($this->id) ) { + if ($this->return['is_mailbox']) { $this->errormsg[] = 'This alias belongs to a mailbox and can\'t be deleted.'; # TODO: make translatable return false; } Modified: trunk/templates/users_edit-alias.tpl =================================================================== --- trunk/templates/users_edit-alias.tpl 2012-04-09 01:06:52 UTC (rev 1357) +++ trunk/templates/users_edit-alias.tpl 2012-04-09 01:48:04 UTC (rev 1358) @@ -22,9 +22,9 @@ <tr> <td> </td> <td colspan="2"> - <input class="flat" type="radio" name="fForward_and_store" value="YES"{$forward_and_store}/> + <input class="flat" type="radio" name="fForward_and_store" value="1"{$forward_and_store}/> {$PALANG.pEdit_alias_forward_and_store}<br /> - <input class="flat" type="radio" name="fForward_and_store" value="NO" {$forward_only}/> + <input class="flat" type="radio" name="fForward_and_store" value="0" {$forward_only}/> {$PALANG.pEdit_alias_forward_only} </td> </tr> Modified: trunk/users/edit-alias.php =================================================================== --- trunk/users/edit-alias.php 2012-04-09 01:06:52 UTC (rev 1357) +++ trunk/users/edit-alias.php 2012-04-09 01:48:04 UTC (rev 1358) @@ -60,9 +60,12 @@ $pEdit_alias_goto = $PALANG['pEdit_alias_goto']; - if (isset($_POST['fGoto'])) $fGoto = trim($_POST['fGoto']); - if (isset($_POST['fForward_and_store'])) $fForward_and_store = $_POST['fForward_and_store']; + $fGoto = trim(safepost('fGoto')); + $fForward_and_store = safepost('fForward_and_store'); + # TODO: use edit.php (or create a edit_user.php) + # TODO: this will obsolete lots of the code below (parsing $goto and the error checks) + $goto = strtolower ($fGoto); $goto = preg_replace ('/\\\r\\\n/', ',', $goto); $goto = preg_replace ('/\r\n/', ',', $goto); @@ -76,7 +79,7 @@ $goto = array_merge(array_unique($goto)); $good_goto = array(); - if($fForward_and_store != 'YES' && sizeof($goto) == 1 && $goto[0] == '') { + if($fForward_and_store != 1 && sizeof($goto) == 1 && $goto[0] == '') { flash_error($PALANG['pEdit_alias_goto_text_error1']); $error += 1; } @@ -100,22 +103,31 @@ } if ($error == 0) { - $flags = 'remote_only'; - if($fForward_and_store == "YES" ) { - $flags = 'forward_and_store'; + + $values = array( + 'goto' => $good_goto, + 'goto_mailbox' => $fForward_and_store, + ); + + if (!$ah->set($values)) { + $errormsg = $ah->errormsg; + flash_error($errormsg[0]); } - $updated = $ah->update($good_goto, $flags); + + $updated = $ah->store(); + if($updated) { header ("Location: main.php"); exit; } flash_error($PALANG['pEdit_alias_result_error']); + } else { $tGotoArray = $goto; } $smarty->assign ('tGotoArray', $tGotoArray); - if ($fForward_and_store == "YES") { + if ($fForward_and_store == 1) { $smarty->assign ('forward_and_store', ' checked="checked"'); $smarty->assign ('forward_only', ''); } else { Modified: trunk/xmlrpc.php =================================================================== --- trunk/xmlrpc.php 2012-04-09 01:06:52 UTC (rev 1357) +++ trunk/xmlrpc.php 2012-04-09 01:48:04 UTC (rev 1358) @@ -155,11 +155,19 @@ public function update($addresses, $flags) { $ah = new AliasHandler(); $ah->init($_SESSION['username']); - /** - * if the user is on vacation, they should use VacationProxy stuff to remove it - * and we'll never return the vacation address from here anyway - */ - return $ah->update($addresses, $flags, true); + + $values['goto'] = $addresses; + + if ($flags == 'forward_and_store') { + $values['goto_mailbox'] = 1; + } elseif ($flags == 'remote_only') { + $values['goto_mailbox'] = 0; + } else { + return false; # invalid parameter + } + + if (!$ah->set($values)) return false; + return $ah->store(); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |