| | |
| | | // add required (non empty) fields filter |
| | | $req_filter = ''; |
| | | foreach ((array)$required as $field) { |
| | | if (in_array($field, (array)$fields)) // required field is already in search filter |
| | | continue; |
| | | if ($attrs = $this->_map_field($field)) { |
| | | if (count($attrs) > 1) |
| | | $req_filter .= '(|'; |
| | |
| | | |
| | | foreach ((array)$this->prop['autovalues'] as $lf => $templ) { |
| | | if (empty($attrs[$lf])) { |
| | | // replace {attr} placeholders with concrete attribute values |
| | | $templ = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals)); |
| | | |
| | | if (strpos($templ, '(') !== false) |
| | | $attrs[$lf] = eval("return ($templ);"); |
| | | else |
| | | $attrs[$lf] = $templ; |
| | | if (strpos($templ, '(') !== false) { |
| | | // replace {attr} placeholders with (escaped!) attribute values to be safely eval'd |
| | | $code = preg_replace('/\{\w+\}/', '', strtr($templ, array_map('addslashes', $attrvals))); |
| | | $attrs[$lf] = eval("return ($code);"); |
| | | } |
| | | else { |
| | | // replace {attr} placeholders with concrete attribute values |
| | | $attrs[$lf] = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | * List all active contact groups of this source |
| | | * |
| | | * @param string Optional search string to match group name |
| | | * @param int Matching mode: |
| | | * 0 - partial (*abc*), |
| | | * 1 - strict (=), |
| | | * 2 - prefix (abc*) |
| | | * |
| | | * @return array Indexed list of contact groups, each a hash array |
| | | */ |
| | | function list_groups($search = null) |
| | | function list_groups($search = null, $mode = 0) |
| | | { |
| | | if (!$this->groups) |
| | | return array(); |
| | |
| | | |
| | | $groups = array(); |
| | | if ($search) { |
| | | $search = mb_strtolower($search); |
| | | foreach ($group_cache as $group) { |
| | | if (strpos(mb_strtolower($group['name']), $search) !== false) |
| | | if ($this->compare_search_value('name', $group['name'], $search, $mode)) { |
| | | $groups[] = $group; |
| | | } |
| | | } |
| | | } |
| | | else |