Eliminate PHP notices. Thanks to Pablo Alvarez de Sotomayor Posadillo
[squirrelmail.git] / functions / addressbook.php
index 965ac93f0889fff9a0e2ce8be08256213725a194..0c68958d225c623c99938a60addbeff64a61f451 100644 (file)
@@ -363,9 +363,8 @@ function show_abook_sort_button($abook_sort_order, $alt_tag,
         $which = 8;
     }
 
-    $uri = $form_url .'?abook_sort_order=' . $which;
-    foreach ($uri_extra as $key => $value)
-       $uri = set_url_var($uri, $key, $value, FALSE);
+    $uri_extra['abook_sort_order'] = $which;
+    $uri = set_uri_vars($form_url, $uri_extra, FALSE);
 
     /* Now that we have everything figured out, show the actual button. */
     return create_hyperlink($uri,
@@ -595,13 +594,29 @@ class AddressBook {
 
 
     /**
-     * Lookup an address by alias.
+     * Lookup an address by the indicated field.
+     *
      * Only possible in local backends.
-     * @param string $alias
-     * @param integer backend number
-     * @return array lookup results. False, if not found.
+     *
+     * @param string  $value The value to look up
+     * @param integer $bnum  The number of the backend to
+     *                       look within (OPTIONAL; defaults 
+     *                       to look in all local backends)
+     * @param integer $field The field to look in, should be one
+     *                       of the SM_ABOOK_FIELD_* constants
+     *                       defined in include/constants.php
+     *                       (OPTIONAL; defaults to nickname field)
+     *                       NOTE: uniqueness is only guaranteed
+     *                       when the nickname field is used here;
+     *                       otherwise, the first matching address
+     *                       is returned.
+     *
+     * @return mixed Array with lookup results when the value
+     *               was found, an empty array if the value was
+     *               not found, or false if an error occured.
+     *
      */
-    function lookup($alias, $bnum = -1) {
+    function lookup($value, $bnum = -1, $field = SM_ABOOK_FIELD_NICKNAME) {
 
         $ret = array();
 
@@ -610,7 +625,7 @@ class AddressBook {
                 $this->error = _("Unknown address book backend");
                 return false;
             }
-            $res = $this->backends[$bnum]->lookup($alias);
+            $res = $this->backends[$bnum]->lookup($value, $field);
             if (is_array($res)) {
                return $res;
             } else {
@@ -623,13 +638,18 @@ class AddressBook {
         for ($i = 0 ; $i < sizeof($sel) ; $i++) {
             $backend = &$sel[$i];
             $backend->error = '';
-            $res = $backend->lookup($alias);
+            $res = $backend->lookup($value, $field);
+
+            // return an address if one is found
+            // (empty array means lookup concluded
+            // but no result found - in this case,
+            // proceed to next backend)
+            //
             if (is_array($res)) {
-               if(!empty($res))
-              return $res;
+                if (!empty($res)) return $res;
             } else {
-               $this->error = $backend->error;
-               return false;
+                $this->error = $backend->error;
+                return false;
             }
         }
 
@@ -907,11 +927,23 @@ class addressbook_backend {
     }
 
     /**
-     * Find entry in backend by alias
-     * @param string $alias name used for id
-     * @return bool
+     * Find entry in backend by the indicated field
+     *
+     * @param string  $value The value to look up
+     * @param integer $field The field to look in, should be one
+     *                       of the SM_ABOOK_FIELD_* constants
+     *                       defined in include/constants.php
+     *                       NOTE: uniqueness is only guaranteed
+     *                       when the nickname field is used here;
+     *                       otherwise, the first matching address
+     *                       is returned.
+     *
+     * @return mixed Array with lookup results when the value
+     *               was found, an empty array if the value was
+     *               not found, or false if an error occured.
+     *
      */
-    function lookup($alias) {
+    function lookup($value, $field) {
         $this->set_error('lookup is not implemented');
         return false;
     }
@@ -970,15 +1002,13 @@ class addressbook_backend {
      * @since 1.5.2
      */
     function fullname($firstname,$lastname) {
-        /**
-         * i18n: allows to control fullname layout in address book listing
-         * first %s is for first name, second %s is for last name.
-         * Translate it to '%2$s %1$s', if surname must be displayed first in your language.
-         * Please note that variables can be set to empty string and extra formating 
-         * (for example '%2$s, %1$s' as in 'Smith, John') might break. Use it only for 
-         * setting name and surname order. scripts will remove all prepended and appended
-         *  whitespace.
-         */
+        // i18n: allows to control fullname layout in address book listing
+        // first %s is for first name, second %s is for last name.
+        // Translate it to '%2$s %1$s', if surname must be displayed first in your language.
+        // Please note that variables can be set to empty string and extra formating 
+        // (for example '%2$s, %1$s' as in 'Smith, John') might break. Use it only for 
+        // setting name and surname order. scripts will remove all prepended and appended
+        // whitespace.
         return trim(sprintf(dgettext('squirrelmail',"%s %s"),$firstname,$lastname));
     }
 }