| | |
| | | $bind_dn = $this->prop['bind_dn']; |
| | | |
| | | $this->base_dn = $this->prop['base_dn']; |
| | | $this->groups_base_dn = ($this->prop['groups']['base_dn']) ? |
| | | $this->prop['groups']['base_dn'] : $this->base_dn; |
| | | $this->groups_base_dn = $this->prop['groups']['base_dn'] ?: $this->base_dn; |
| | | |
| | | // User specific access, generate the proper values to use. |
| | | if ($this->prop['user_specific']) { |
| | |
| | | $attrib = array_merge($attrib, array_values($this->group_types)); |
| | | $attrib[] = 'memberURL'; |
| | | |
| | | $filter = $this->prop['groups']['member_filter'] ? $this->prop['groups']['member_filter'] : '(objectclass=*)'; |
| | | $filter = $this->prop['groups']['member_filter'] ?: '(objectclass=*)'; |
| | | |
| | | for ($i=0; $i < $entry[$attr]['count']; $i++) { |
| | | if (empty($entry[$attr][$i])) |
| | |
| | | } |
| | | } |
| | | |
| | | return $newdn ? $newdn : true; |
| | | return $newdn ?: true; |
| | | } |
| | | |
| | | /** |
| | |
| | | function delete_all($with_groups = false) |
| | | { |
| | | // searching for contact entries |
| | | $dn_list = $this->ldap->list_entries($this->base_dn, $this->prop['filter'] ? $this->prop['filter'] : '(objectclass=*)'); |
| | | $dn_list = $this->ldap->list_entries($this->base_dn, $this->prop['filter'] ?: '(objectclass=*)'); |
| | | |
| | | if (!empty($dn_list)) { |
| | | foreach ($dn_list as $idx => $entry) { |
| | |
| | | if ($this->is_group_entry($rec)) { |
| | | $out['_type'] = 'group'; |
| | | $out['readonly'] = true; |
| | | $fieldmap['name'] = $this->group_data['name_attr'] ? $this->group_data['name_attr'] : $this->prop['groups']['name_attr']; |
| | | $fieldmap['name'] = $this->group_data['name_attr'] ?: $this->prop['groups']['name_attr']; |
| | | } |
| | | |
| | | // assign object type from object class mapping |
| | |
| | | if ($col == 'email' && $this->mail_domain && !strpos($value, '@')) |
| | | $out[$rf][] = sprintf('%s@%s', $value, $this->mail_domain); |
| | | else if (in_array($col, array('street','zipcode','locality','country','region'))) |
| | | $out['address'.($subtype?':':'').$subtype][$i][$col] = $value; |
| | | $out['address' . ($subtype ? ':' : '') . $subtype][$i][$col] = $value; |
| | | else if ($col == 'address' && strpos($value, '$') !== false) // address data is represented as string separated with $ |
| | | list($out[$rf][$i]['street'], $out[$rf][$i]['locality'], $out[$rf][$i]['zipcode'], $out[$rf][$i]['country']) = explode('$', $value); |
| | | else if ($rec[$lf]['count'] > 1) |
| | |
| | | $filter = $this->prop['groups']['filter']; |
| | | $scope = $this->prop['groups']['scope']; |
| | | $name_attr = $this->prop['groups']['name_attr']; |
| | | $email_attr = $this->prop['groups']['email_attr'] ? $this->prop['groups']['email_attr'] : 'mail'; |
| | | $email_attr = $this->prop['groups']['email_attr'] ?: 'mail'; |
| | | $sort_attrs = $this->prop['groups']['sort'] ? (array)$this->prop['groups']['sort'] : array($name_attr); |
| | | $sort_attr = $sort_attrs[0]; |
| | | |
| | |
| | | $new_dn = 'cn=' . rcube_ldap_generic::quote_string($group_name, true) . ',' . $this->groups_base_dn; |
| | | $new_gid = self::dn_encode($new_dn); |
| | | $member_attr = $this->get_group_member_attr(); |
| | | $name_attr = $this->prop['groups']['name_attr'] ? $this->prop['groups']['name_attr'] : 'cn'; |
| | | $name_attr = $this->prop['groups']['name_attr'] ?: 'cn'; |
| | | $new_entry = array( |
| | | 'objectClass' => $this->prop['groups']['object_classes'], |
| | | $name_attr => $group_name, |
| | | $member_attr => '', |
| | | $name_attr => $group_name, |
| | | $member_attr => '', |
| | | ); |
| | | |
| | | if (!$this->ldap->add_entry($new_dn, $new_entry)) { |
| | |
| | | |
| | | $base_dn = $this->groups_base_dn; |
| | | $contact_dn = self::dn_decode($contact_id); |
| | | $name_attr = $this->prop['groups']['name_attr'] ? $this->prop['groups']['name_attr'] : 'cn'; |
| | | $name_attr = $this->prop['groups']['name_attr'] ?: 'cn'; |
| | | $member_attr = $this->get_group_member_attr(); |
| | | $add_filter = ''; |
| | | |