avoid E_STRICT errors
[squirrelmail.git] / functions / addressbook.php
index cc463e7a70b1136e2ed57deff09b6609de7812b2..b65f993b667d6a9630a8360957f3433d7536865b 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Functions require SM_PATH and support of forms.php functions
  *
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright © 1999-2007 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -125,10 +125,13 @@ function addressbook_init($showerr = true, $onlylocal = false) {
      * Since 1.5.2 hook sends third ($onlylocal) argument to address book
      * plugins in order to allow detection of local address book init.
      * @since 1.5.1 and 1.4.5
+     * Since 1.5.2, the plugin arguments are passed inside an array
+     * and by reference, so plugins hooking in here need to accept arguments
+     * in an array and change those values as needed instead of returning
+     * the changed values.
      */
-    $hookReturn = do_hook('abook_init', $abook, $r, $onlylocal);
-    $abook = $hookReturn[1];
-    $r = $hookReturn[2];
+    $temp = array(&$abook, &$r, &$onlylocal);
+    do_hook('abook_init', $temp);
     if (!$r && $showerr) {
         if ($abook_init_error!='') $abook_init_error.="\n";
         $abook_init_error.=_("Error initializing other address books.") . "\n" . $abook->error;
@@ -228,8 +231,6 @@ function addressbook_cmp($a,$b) {
 
 /**
  * Retrieve a list of writable backends
- * 
- * @author Steve Brown
  * @since 1.5.2
  */
 function getWritableBackends () {
@@ -246,46 +247,6 @@ function getWritableBackends () {
     return $write;
 }
 
-/**
- * Provides list of writeable backends.  Works only when address is added,
- * e.g. $name='addaddr'.
- * 
- * NOTE: This function needs to remain during the templating process to maintain
- *       some degree of backwards compatability with plugins.
- * 
- * @param string $name name of form
- * @return string html formated backend field (select or hidden)
- */
-function list_writable_backends($name) {
-    global $color, $abook;
-    if ( $name != 'addaddr' ) { return; }
-    $writeable_abook = 1;
-    if ( $abook->numbackends > 1 ) {
-        $backends = $abook->get_backend_list();
-        $writeable_abooks=array();
-        while (list($undef,$v) = each($backends)) {
-            if ($v->writeable) {
-                // add each backend to array
-                $writeable_abooks[$v->bnum]=$v->sname;
-                // save backend number
-                $writeable_abook=$v->bnum;
-            }
-        }
-        if (count($writeable_abooks)>1) {
-            // we have more than one writeable backend
-            $ret=addSelect('backend',$writeable_abooks,null,true);
-            return html_tag( 'tr',
-                             html_tag( 'td', _("Add to:"),'right', $color[4] ) .
-                             html_tag( 'td', $ret, 'left', $color[4] )) . "\n";
-        }
-    }
-    // Only one backend exists or is writeable.
-    return html_tag( 'tr',
-                     html_tag( 'td',
-                               addHidden('backend', $writeable_abook),
-                               'center', $color[4], 'colspan="2"')) . "\n";
-}
-
 /**
  * Sort array by the key "name"
  */
@@ -483,7 +444,8 @@ class AddressBook {
               * NB: Because the backend files are included from within this function they DO NOT have access to
               * vars in the global scope. This function is the global scope for the included backend !!!
               */
-            $aBackend = do_hook('abook_add_class');
+            global $null;
+            $aBackend = do_hook('abook_add_class', $null);
             if (isset($aBackend) && is_array($aBackend) && isset($aBackend[$backend])) {
                 require_once($aBackend[$backend]);
             } else {
@@ -524,15 +486,14 @@ class AddressBook {
      * @return string email address with real name prepended
      */
     function full_address($row) {
-        global $addrsrch_fullname, $data_dir, $username;
-        $prefix = getPref($data_dir, $username, 'addrsrch_fullname');
-        if (($prefix != "" || (isset($addrsrch_fullname) &&
-            $prefix == $addrsrch_fullname)) && $prefix != 'noprefix') {
-            $name = ($prefix == 'nickname' ? $row['nickname'] : $row['name']);
-            return $name . ' <' . trim($row['email']) . '>';
-        } else {
+        global $data_dir, $username;
+        $addrsrch_fullname = getPref($data_dir, $username, 'addrsrch_fullname');
+        if ($addrsrch_fullname == 'fullname')
+            return $row['name'] . ' <' . trim($row['email']) . '>';
+        else if ($addrsrch_fullname == 'nickname')
+            return $row['nickname'] . ' <' . trim($row['email']) . '>';
+        else // "noprefix"
             return trim($row['email']);
-        }
     }
 
     /**