X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Faddressbook.php;h=50b16a9229865842540c6ddc9bc152add5dce65b;hb=fc99a551c505b2be1803373c8978f621ea2ea69f;hp=853b01a7b6ad82c0a98edaa4c25619611f031749;hpb=c435f076fe6b5b58e09ae19a8e216f37b069d802;p=squirrelmail.git
diff --git a/src/addressbook.php b/src/addressbook.php
index 853b01a7..50b16a92 100644
--- a/src/addressbook.php
+++ b/src/addressbook.php
@@ -3,11 +3,10 @@
/**
* addressbook.php
*
- * Copyright (c) 1999-2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
* Manage personal address book.
*
+ * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @subpackage addressbook
@@ -20,7 +19,7 @@
define('SM_PATH','../');
/** SquirrelMail required files. */
-require_once(SM_PATH . 'include/validate.php');
+include_once(SM_PATH . 'include/validate.php');
require_once(SM_PATH . 'functions/display_messages.php');
require_once(SM_PATH . 'functions/addressbook.php');
require_once(SM_PATH . 'functions/forms.php');
@@ -45,10 +44,15 @@ sqgetGlobalVar('doedit', $doedit, SQ_POST);
/* Get sorting order */
$abook_sort_order = get_abook_sort();
+/* Create page header before addressbook_init in order to display error messages correctly. */
+displayPageHeader($color, 'None');
+
/* Open addressbook with error messages on.
remote backends (LDAP) are enabled because they can be used. (list_addr function)
*/
$abook = addressbook_init(true, false);
+
+// FIXME: do we have to stop use of address book, when localbackend is not present.
if($abook->localbackend == 0) {
plain_error_message(
_("No personal address book is defined. Contact administrator."),
@@ -56,8 +60,6 @@ if($abook->localbackend == 0) {
exit();
}
-displayPageHeader($color, 'None');
-
$defdata = array();
$formerror = '';
$abortform = false;
@@ -144,7 +146,6 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P
* Update/modify address *
***********************************************/
if (!empty($editaddr)) {
-
/* Stage one: Copy data into form */
if (isset($sel) && sizeof($sel) > 0) {
if(sizeof($sel) > 1) {
@@ -155,6 +156,7 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P
$abortform = true;
list($ebackend, $enick) = explode(':', $sel[0]);
$olddata = $abook->lookup($enick, $ebackend);
+ // FIXME: Test if $olddata really contains anything and return an error message if it doesn't
/* Display the "new address" form */
abook_create_form($form_url,'editaddr',_("Update address"),_("Update address"),$olddata);
@@ -163,40 +165,40 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P
addHidden('doedit', '1').
'';
}
- } else {
-
+ } elseif ($doedit == 1) {
/* Stage two: Write new data */
- if ($doedit = 1) {
- $newdata = $editaddr;
- $r = $abook->modify($oldnick, $newdata, $backend);
-
- /* Handle error messages */
- if (!$r) {
- /* Display error */
- echo html_tag( 'table',
- html_tag( 'tr',
- html_tag( 'td',
- "\n". '' . _("ERROR") . ': ' . $abook->error . '' ."\n",
- 'center' )
- ),
- 'center', '', 'width="100%"' );
-
- /* Display the "new address" form again */
- abook_create_form($form_url,'editaddr',_("Update address"),_("Update address"),$newdata);
- echo addHidden('oldnick', $oldnick).
- addHidden('backend', $backend).
- addHidden('doedit', '1').
- "\n" . '';
- $abortform = true;
- }
- } else {
+ $newdata = $editaddr;
+ $r = $abook->modify($oldnick, $newdata, $backend);
- /* Should not get here... */
- plain_error_message(_("Unknown error"), $color);
+ /* Handle error messages */
+ if (!$r) {
+ /* Display error */
+ echo html_tag( 'table',
+ html_tag( 'tr',
+ html_tag( 'td',
+ "\n". '' . _("ERROR") . ': ' . $abook->error . '' ."\n",
+ 'center' )
+ ),
+ 'center', '', 'width="100%"' );
+
+ /* Display the "new address" form again */
+ abook_create_form($form_url,'editaddr',_("Update address"),_("Update address"),$newdata);
+ echo addHidden('oldnick', $oldnick).
+ addHidden('backend', $backend).
+ addHidden('doedit', '1').
+ "\n" . '';
$abortform = true;
}
- }
+ } else {
+ /**
+ * $editaddr is set, but $sel (address selection in address listing)
+ * and $doedit (address edit form) are not set.
+ * Assume that user clicked on "Edit address" without selecting any address.
+ */
+ $formerror = _("Please select address that you want to edit");
+ $showaddrlist = true;
+ } /* end of edit stage detection */
} /* !empty($editaddr) - Update/modify address */
} /* (!empty($deladdr)) && sizeof($sel) > 0 - Delete address(es) */
} /* !empty($addaddr['nickname']) - Add new address */
@@ -245,6 +247,11 @@ if ($showaddrlist) {
/* List addresses */
if (count($alist) > 0) {
echo addForm($form_url, 'post');
+ if ($abook->add_extra_field) {
+ $abook_fields = 6;
+ } else {
+ $abook_fields = 5;
+ }
while(list($undef,$row) = each($alist)) {
/* New table header for each backend */
@@ -255,10 +262,10 @@ if ($showaddrlist) {
html_tag( 'td',
addSubmit(_("Edit selected"), 'editaddr').
addSubmit(_("Delete selected"), 'deladdr'),
- 'center', '', 'colspan="5"' )
+ 'center', '', "colspan=\"$abook_fields\"" )
) .
html_tag( 'tr',
- html_tag( 'td', '
', 'center', '', 'colspan="5"' )
+ html_tag( 'td', '
', 'center', '', "colspan=\"$abook_fields\"" )
),
'center' );
echo "\n\n" .
@@ -276,20 +283,22 @@ if ($showaddrlist) {
'left', '', 'width="1%"' ) . "\n" .
html_tag( 'th', _("Info") .
show_abook_sort_button($abook_sort_order, _("sort by info"), 6, 7),
- 'left', '', 'width="1%"' ) . "\n",
+ 'left', '', 'width="1%"' ) .
+ ($abook->add_extra_field ? html_tag( 'th', ' ','left', '', 'width="1%"'): '') .
+ "\n",
'', $color[9] ) . "\n";
}
// Separate different backends with