$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,
function full_address($row) {
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']);
+
+ // allow multiple addresses in one row (poor person's grouping - bah)
+ // (separate with commas)
+ //
+ $return = '';
+ $addresses = explode(',', $row['email']);
+ foreach ($addresses as $address) {
+
+ if (!empty($return)) $return .= ', ';
+
+ if ($addrsrch_fullname == 'fullname')
+ $return .= '"' . $row['name'] . '" <' . trim($address) . '>';
+ else if ($addrsrch_fullname == 'nickname')
+ $return .= '"' . $row['nickname'] . '" <' . trim($address) . '>';
+ else // "noprefix"
+ $return .= trim($address);
+
+ }
+
+ return $return;
}
/**
/**
- * 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();
$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 {
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;
}
}
}
/**
- * 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;
}