integrated attachment_common into the core
[squirrelmail.git] / src / addressbook.php
index da7585de778eb8296d345c3c0f2bb95e3c0d3172..e769db09bada5a444dbb70959b2a598304e6f3d2 100644 (file)
@@ -2,45 +2,27 @@
    /**
     **  addressbook.php
     **
+    **  Copyright (c) 1999-2000 The SquirrelMail development team
+    **  Licensed under the GNU GPL. For full terms see the file COPYING.
+    **
     **  Manage personal address book.
     **
+    **  $Id$
     **/
 
-   session_start();
-
-   if(!isset($logged_in)) {
-      echo _("You must login first.");
-      exit;
-   }
-   if(!isset($username) || !isset($key)) {
-      echo _("You need a valid user and password to access this page!");
-      exit;
-   }
-
-   if (!isset($config_php))
-      include("../config/config.php");
-   if (!isset($array_php))
-      include("../functions/array.php");
-   if (!isset($strings_php))
-      include("../functions/strings.php");
-   if (!isset($imap_php))
-      include("../functions/imap.php");
-   if (!isset($page_header_php))
-      include("../functions/page_header.php");
-   if (!isset($display_messages_php))
-      include("../functions/display_messages.php");
-   if (!isset($addressbook_php))
-      include("../functions/addressbook.php");
-
+   require_once('../src/validate.php');
+   require_once('../functions/array.php');
+   require_once('../functions/display_messages.php');
+   require_once('../functions/addressbook.php');
 
    // Sort array by the key "name"
    function alistcmp($a,$b) {   
-      if($a["backend"] > $b["backend"]) 
+      if($a['backend'] > $b['backend']) 
         return 1;
-      else if($a["backend"] < $b["backend"]) 
+      else if($a['backend'] < $b['backend']) 
         return -1;
       
-      return (strtolower($a["name"]) > strtolower($b["name"])) ? 1 : -1;
+      return (strtolower($a['name']) > strtolower($b['name'])) ? 1 : -1;
    }
 
    // Output form to add and modify address data
       printf("<TD BGCOLOR=\"%s\" ALIGN=left>".
             "<INPUT NAME=\"%s[nickname]\" SIZE=15 VALUE=\"%s\">".
             "&nbsp;<SMALL>%s</SMALL></TD></TR>\n",
-            $color[4], $name, htmlspecialchars($values["nickname"]), 
+            $color[4], $name, 
+            (isset($values['nickname']))?
+                htmlspecialchars($values['nickname']):"",
             _("Must be unique"));
       printf("<TR><TD WIDTH=50 BGCOLOR=\"$color[4]\" ALIGN=RIGHT>%s:</TD>",
             _("E-mail address"));
       printf("<TD BGCOLOR=\"%s\" ALIGN=left>".
             "<INPUT NAME=\"%s[email]\" SIZE=45 VALUE=\"%s\"></TD></TR>\n",
-            $color[4], $name, htmlspecialchars($values["email"]));
+            $color[4], $name, 
+            (isset($values["email"]))?
+                htmlspecialchars($values["email"]):"");
       printf("<TR><TD WIDTH=50 BGCOLOR=\"$color[4]\" ALIGN=RIGHT>%s:</TD>",
             _("First name"));
       printf("<TD BGCOLOR=\"%s\" ALIGN=left>".
             "<INPUT NAME=\"%s[firstname]\" SIZE=45 VALUE=\"%s\"></TD></TR>\n",
-            $color[4], $name, htmlspecialchars($values["firstname"]));
+            $color[4], $name, 
+            (isset($values["firstname"]))?
+                htmlspecialchars($values["firstname"]):"");
       printf("<TR><TD WIDTH=50 BGCOLOR=\"$color[4]\" ALIGN=RIGHT>%s:</TD>",
             _("Last name"));
       printf("<TD BGCOLOR=\"%s\" ALIGN=left>".
             "<INPUT NAME=\"%s[lastname]\" SIZE=45 VALUE=\"%s\"></TD></TR>\n",
-            $color[4], $name, htmlspecialchars($values["lastname"]));
+            $color[4], $name, 
+            (isset($values["lastname"]))?
+                htmlspecialchars($values["lastname"]):"");
       printf("<TR><TD WIDTH=50 BGCOLOR=\"$color[4]\" ALIGN=RIGHT>%s:</TD>",
             _("Additional info"));
       printf("<TD BGCOLOR=\"%s\" ALIGN=left>".
             "<INPUT NAME=\"%s[label]\" SIZE=45 VALUE=\"%s\"></TD></TR>\n",
-            $color[4], $name, htmlspecialchars($values["label"]));
+            $color[4], $name, 
+            (isset($values["label"]))?
+                htmlspecialchars($values["label"]):"");
 
       printf("<TR><TD COLSPAN=2 BGCOLOR=\"%s\" ALIGN=center>\n".
             "<INPUT TYPE=submit NAME=\"%s[SUBMIT]\" VALUE=\"%s\"></TD></TR>\n",
    }
 
 
-   // IMAP Login
-   $imapConnection = sqimap_login ($username, $key, 
-                                  $imapServerAddress, $imapPort, 10);
-   include("../src/load_prefs.php");
-   sqimap_logout ($imapConnection);
-
-
    // Open addressbook, with error messages on but without LDAP (the
    // second "true"). Don't need LDAP here anyway
    $abook = addressbook_init(true, true);
       exit();
    }
 
-   displayPageHeader($color, "None");
+   displayPageHeader($color, 'None');
 
 
    $defdata   = array();
-   $formerror = "";
+   $formerror = '';
    $abortform = false;
    $showaddrlist = true;
    $defselected  = array();
 
 
    // Handle user's actions
-   if($REQUEST_METHOD == "POST") {
+   if($REQUEST_METHOD == 'POST') {
 
       // ***********************************************
       // Add new address
       // ***********************************************
-      if(!empty($addaddr["nickname"])) {
+      if(!empty($addaddr['nickname'])) {
         
         $r = $abook->add($addaddr, $abook->localbackend);
 
         if(!$r) {
            // Remove backend name from error string
            $errstr = $abook->error;
-           $errstr = ereg_replace("^\[.*\] *", "", $errstr);
+           $errstr = ereg_replace('^\[.*\] *', '', $errstr);
 
            $formerror = $errstr;
            $showaddrlist = false;
         $delfailed = false;
 
         for($i = 0 ; (($i < sizeof($sel)) && !$delfailed) ; $i++) {
-           list($sbackend, $snick) = split(":", $sel[$i]);
+           list($sbackend, $snick) = explode(':', $sel[$i]);
 
            // When we get to a new backend, process addresses in
            // previous one.
       else if(!empty($editaddr)) {
 
         // Stage one: Copy data into form
-         if(sizeof($sel) > 0) {
+         if (isset($sel) && sizeof($sel) > 0) {
            if(sizeof($sel) > 1) {
               $formerror = _("You can only edit one address at the time");
               $showaddrlist = true;
               $defselected = $sel;
            } else {
               $abortform = true;
-              list($ebackend, $enick) = split(":", $sel[0]);
+              list($ebackend, $enick) = explode(':', $sel[0]);
               $olddata = $abook->lookup($enick, $ebackend);
 
               // Display the "new address" form
-              printf("<FORM ACTION=\"%s\" METHOD=\"POST\">\n", $PHP_SELF);
+              print "<FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\">\n";
               print "<TABLE WIDTH=100% COLS=1 ALIGN=CENTER>\n";
               print "<TR><TD BGCOLOR=\"$color[0]\" ALIGN=CENTER>\n<STRONG>";
               print _("Update address");
               printf("<INPUT TYPE=hidden NAME=backend VALUE=\"%s\">\n",
                      htmlspecialchars($olddata["backend"]));
               print "<INPUT TYPE=hidden NAME=doedit VALUE=1>\n";
-              print "</FORM>";        
+              print '</FORM>';
            }
         }
 
               print "</TABLE>\n";
               address_form("editaddr", _("Update address"), $newdata);
               printf("<INPUT TYPE=hidden NAME=oldnick VALUE=\"%s\">\n",
-                     htmlspecialchars($newdata["nickname"]));
+                     htmlspecialchars($oldnick));
               printf("<INPUT TYPE=hidden NAME=backend VALUE=\"%s\">\n",
-                     htmlspecialchars($newdata["backend"]));
+                     htmlspecialchars($backend));
               print "<INPUT TYPE=hidden NAME=doedit VALUE=1>\n";
-              print "</FORM>";        
+              print '</FORM>';        
 
               $abortform = true;
            }
 
    // Display the address management part
    if($showaddrlist) {
-      printf("<FORM ACTION=\"%s\" METHOD=\"POST\">\n", $PHP_SELF);
-
       // Get and sort address list
       $alist = $abook->list_addr();
+      if(!is_array($alist)) {
+       plain_error_message($abook->error, $color);
+       exit;
+      }
+
       usort($alist,'alistcmp');
       $prevbackend = -1;
       $headerprinted = false;
 
+      echo "<p align=center><a href=\"#AddAddress\">" .
+         _("Add address") . "</a></p>\n";
+
       // List addresses
-      while(list($key,$row) = each($alist)) {
+      printf("<FORM ACTION=\"%s\" METHOD=\"POST\">\n", $PHP_SELF);
+      while(list($undef,$row) = each($alist)) {
 
         // New table header for each backend
         if($prevbackend != $row["backend"]) {
            if($prevbackend >= 0) {
-              print "<TR><TD COLSPAN=5 ALIGN=center>";
+              print "<TR><TD COLSPAN=5 ALIGN=center>\n";
+              printf("<INPUT TYPE=submit NAME=editaddr VALUE=\"%s\">\n",
+                 _("Edit selected"));
+              printf("<INPUT TYPE=submit NAME=deladdr VALUE=\"%s\">\n",
+                 _("Delete selected"));
+              echo "</tr>\n";
+              print '<TR><TD COLSPAN="5" ALIGN=center>';
               print "&nbsp;<BR></TD></TR></TABLE>\n";
            }
 
            print "<STRONG>\n</TD></TR>\n";
            print "</TABLE>\n";
 
-           print '<TABLE COLS=5 BORDER=0 CELLPADDING=1 CELLSPACING=0 WIDTH="90%" ALIGN=center>';
+           print '<TABLE COLS="5" BORDER="0" CELLPADDING="1" CELLSPACING="0" WIDTH="90%" ALIGN="center">';
            printf('<TR BGCOLOR="%s"><TH ALIGN=left WIDTH="%s">&nbsp;'.
                   '<TH ALIGN=left WIDTH="%s">%s<TH ALIGN=left WIDTH="%s">%s'.
                   '<TH ALIGN=left WIDTH="%s">%s<TH ALIGN=left WIDTH="%s">%s'.
            $headerprinted = true;
         } // End of header
 
-        $prevbackend = $row["backend"];
+        $prevbackend = $row['backend'];
 
         // Check if this user is selected
-        if(in_array($row["backend"].":".$row["nickname"], $defselected)) 
-           $selected = "CHECKED";
+        if(in_array($row['backend'].':'.$row['nickname'], $defselected)) 
+           $selected = 'CHECKED';
         else
-           $selected = "";
+           $selected = '';
       
         // Print one row
         printf("<TR%s>",
 
 
    // Display the "new address" form
-   printf("<FORM ACTION=\"%s\" METHOD=\"POST\">\n", $PHP_SELF);
+   echo "<a name=\"AddAddress\"></a>\n";
+   printf("<FORM ACTION=\"%s\" NAME=f_add METHOD=\"POST\">\n", $PHP_SELF);
    print "<TABLE WIDTH=100% COLS=1 ALIGN=CENTER>\n";
    print "<TR><TD BGCOLOR=\"$color[0]\" ALIGN=CENTER>\n<STRONG>";
    printf(_("Add to %s"), $abook->localbackendname);
    print "<STRONG>\n</TD></TR>\n";
    print "</TABLE>\n";
-   address_form("addaddr", _("Add address"), $defdata);
-   print "</FORM>";
+   address_form('addaddr', _("Add address"), $defdata);
+   print '</FORM>';
 
+   // Add hook for anything that wants on the bottom
+   do_hook("addressbook_bottom");
 ?>
 
 </BODY></HTML>