* search_fields contains a hash containing sources as keys and an array
* of search fields as the value.
*
+ * @param array $data Data items:
+ * <pre>
+ * 'fields' - (array) Hash containing addressbook sources as keys and an
+ * array of search fields as values.
+ * 'sources' - (array) List of selected addressbooks.
+ * </pre>
+ *
* @return string HTML UI code.
*/
- static public function addressbooks()
+ static public function addressbooks($data)
{
global $prefs, $registry;
$writeable = array();
}
- $search = Horde_Core_Prefs_Utils::getAddressbookSearchParams();
-
if (count($readable) == 1) {
// Only one source, no need to display the selection widget
- $search['sources'] = array_keys($readable);
+ $data['sources'] = array_keys($readable);
}
- foreach ($search['sources'] as $source) {
+ foreach ($data['sources'] as $source) {
if (!empty($readable[$source])) {
$selected[$source] = $readable[$source];
}
}
- foreach (array_diff(array_keys($readable), $search['sources']) as $val) {
+ foreach (array_diff(array_keys($readable), $data['sources']) as $val) {
$unselected[$val] = $readable[$val];
}
'name' => $field['name'],
'label' => $field['label']
);
- if (isset($search['fields'][$source]) &&
- in_array($field['name'], $search['fields'][$source])) {
+ if (isset($data['fields'][$source]) &&
+ in_array($field['name'], $data['fields'][$source])) {
$tmpsel[] = $field['name'];
}
}
return $this->_sound();
case 'sourceselect':
- return Horde_Core_Prefs_Ui_Widgets::addressbooks();
+ $search = IMP::getAddressbookSearchParams();
+ return Horde_Core_Prefs_Ui_Widgets::addressbooks(array(
+ 'fields' => $search['fields'],
+ 'sources' => $search['sources']
+ ));
case 'spamselect':
return $this->_spam();
$apiargs['addressbooks'] = array($source);
$apiargs['fields'] = array();
-$search_fields_pref = json_decode($prefs->getValue('search_fields'), true);
-if (!empty($search_fields_pref) && isset($search_fields_pref[$source])) {
- $apiargs['fields'][$source] = $search_fields_pref[$source];
+$searchpref = Kronolith::getAddressbookSearchParams();
+if (isset($searchpref[$source])) {
+ $apiargs['fields'][$source] = $searchpref[$source];
}
if ($search || $prefs->getValue('display_contact')) {
$search = reset(array_filter(array_map('trim', Horde_Mime_Address::explode($addrString, ',;'))));
- $src = json_decode($GLOBALS['prefs']->getValue('search_sources'));
- if (!is_array($src)) {
- $src = array();
- }
-
- $fields = json_decode($GLOBALS['prefs']->getValue('search_fields'), true);
- if (!is_array($fields)) {
- $fields = array();
- }
+ $searchpref = Kronolith::getAddressbookSearchParams();
try {
- $res = $GLOBALS['registry']->call('contacts/search', array($search, $src, $fields, true));
+ $res = $GLOBALS['registry']->call('contacts/search', array($search, $searchpref['sources'], $searchpref['fields'], true));
} catch (Horde_Exception $e) {
Horde::logMessage($e, 'ERR');
return array();
return $this->_defaultAlarmManagement($ui);
case 'sourceselect':
- return Horde_Core_Prefs_Ui_Widgets::addressbooks();
+ $search = Kronolith::getAddressbookSearchParams();
+ return Horde_Core_Prefs_Ui_Widgets::addressbooks(array(
+ 'fields' => $search['fields'],
+ 'sources' => $search['sources']
+ ));
}
return '';
}
}
+ /**
+ * Determines parameters needed to do an address search
+ *
+ * @return array An array with two keys: 'fields' and 'sources'.
+ */
+ static public function getAddressbookSearchParams()
+ {
+ $src = json_decode($GLOBALS['prefs']->getValue('search_sources'));
+ if (empty($src)) {
+ $src = array();
+ }
+
+ $fields = json_decode($GLOBALS['prefs']->getValue('search_fields'), true);
+ if (empty($fields)) {
+ $fields = array();
+ }
+
+ return array(
+ 'fields' => $fields,
+ 'sources' => $src
+ );
+ }
+
}
*/
static public function getAddressList($search = '')
{
- $sparams = self::getAddressSearchParams();
+ $sparams = Whups::getAddressbookSearchParams();
try {
$res = $GLOBALS['registry']->call('contacts/search', array($search, $sparams['sources'], $sparams['fields'], false));
} catch (Horde_Exception $e) {
return $search;
}
- /**
- * Determines parameters needed to do an address search
- *
- * @return array An array with two keys: 'sources' and 'fields'.
- */
- static public function getAddressSearchParams()
- {
- $src = json_decode($GLOBALS['prefs']->getValue('search_sources'));
- if (!is_array($src)) {
- $src = array();
- }
-
-
- $fields = json_decode($GLOBALS['prefs']->getValue('search_fields'), true);
- if (!is_array($fields)) {
- $fields = array();
- }
-
- return array(
- 'fields' => $fields,
- 'sources' => $src
- );
- }
-
}
{
switch ($item) {
case 'sourceselect':
- return Horde_Core_Prefs_Ui_Widgets::addressbooks();
+ $search = Whups::getAddressbookSearchParams();
+ return Horde_Core_Prefs_Ui_Widgets::addressbooks(array(
+ 'fields' => $search['fields'],
+ 'sources' => $search['sources']
+ ));
}
return '';
: array();
}
+ /**
+ * Determines parameters needed to do an address search
+ *
+ * @return array An array with two keys: 'sources' and 'fields'.
+ */
+ static public function getAddressbookSearchParams()
+ {
+ $src = json_decode($GLOBALS['prefs']->getValue('search_sources'));
+ if (!is_array($src)) {
+ $src = array();
+ }
+
+ $fields = json_decode($GLOBALS['prefs']->getValue('search_fields'), true);
+ if (!is_array($fields)) {
+ $fields = array();
+ }
+
+ return array(
+ 'fields' => $fields,
+ 'sources' => $src
+ );
+ }
+
}