| | |
| | | <?php |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/rcube_ldap.php | |
| | |
| | | | Andreas Dick <andudi (at) gmx (dot) ch> | |
| | | | Aleksander Machniak <machniak@kolabsys.com> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id$ |
| | | |
| | | */ |
| | | |
| | | |
| | |
| | | if ($this->fieldmap['street'] && $this->fieldmap['locality']) { |
| | | $this->coltypes['address'] = array( |
| | | 'limit' => max(1, $this->coltypes['locality']['limit'] + $this->coltypes['address']['limit']), |
| | | 'subtypes' => array_merge((array)$this->coltypes['address']['subtypes'], $this->coltypes['locality']['subtypes']), |
| | | 'subtypes' => array_merge((array)$this->coltypes['address']['subtypes'], (array)$this->coltypes['locality']['subtypes']), |
| | | 'childs' => array(), |
| | | ) + (array)$this->coltypes['address']; |
| | | |
| | |
| | | unset($this->coltypes[$childcol]); // remove address child col from global coltypes list |
| | | } |
| | | } |
| | | |
| | | // at least one address type must be specified |
| | | if (empty($this->coltypes['address']['subtypes'])) { |
| | | $this->coltypes['address']['subtypes'] = array('home'); |
| | | } |
| | | } |
| | | else if ($this->coltypes['address']) { |
| | | $this->coltypes['address'] = array('type' => 'textarea', 'childs' => null, 'limit' => 1, 'size' => 40); |
| | | $this->coltypes['address'] += array('type' => 'textarea', 'childs' => null, 'size' => 40); |
| | | |
| | | // 'serialized' means the UI has to present a composite address field |
| | | if ($this->coltypes['address']['serialized']) { |
| | | $childprop = array('type' => 'text'); |
| | | $this->coltypes['address']['type'] = 'composite'; |
| | | $this->coltypes['address']['childs'] = array('street' => $childprop, 'locality' => $childprop, 'zipcode' => $childprop, 'country' => $childprop); |
| | | } |
| | | } |
| | | |
| | | // make sure 'required_fields' is an array |
| | |
| | | } |
| | | |
| | | // use VLV pseudo-search for autocompletion |
| | | if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == 'email,name') |
| | | $rcube = rcube::get_instance(); |
| | | |
| | | if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == join(',', $rcube->config->get('contactlist_fields'))) |
| | | { |
| | | // add general filter to query |
| | | if (!empty($this->prop['filter']) && empty($this->filter)) |
| | |
| | | else if ($val == '') { |
| | | // Field supplied is empty, verify that it is not required. |
| | | if (!in_array($fld, $this->prop['required_fields'])) { |
| | | // It is not, safe to clear. |
| | | $deletedata[$fld] = $old_data[$fld]; |
| | | // ...It is not, safe to clear. |
| | | // #1488420: Workaround "ldap_mod_del(): Modify: Inappropriate matching in..." |
| | | // jpegPhoto attribute require an array() here. It looks to me that it works for other attribs too |
| | | $deletedata[$fld] = array(); |
| | | //$deletedata[$fld] = $old_data[$fld]; |
| | | } |
| | | } |
| | | else { |
| | |
| | | # a0 = type context-specific/constructed with a length of 06 (6) bytes following |
| | | # 02 = type integer with 2 bytes following (offset): 01 01 (ie 1) |
| | | # 02 = type integer with 2 bytes following (contentCount): 01 00 |
| | | |
| | | |
| | | # whith a search string present: |
| | | # 81 = type context-specific/constructed with a length of 04 (4) bytes following (the length will change here) |
| | | # 81 indicates a user string is present where as a a0 indicates just a offset search |
| | | # 81 = type context-specific/constructed with a length of 06 (6) bytes following |
| | | |
| | | |
| | | # the following info was taken from the ISO/IEC 8825-1:2003 x.690 standard re: the |
| | | # encoding of integer values (note: these values are in |
| | | # two-complement form so since offset will never be negative bit 8 of the |
| | |
| | | # of the second (to the left of first octet) octet: |
| | | # a) shall not all be ones; and |
| | | # b) shall not all be zero |
| | | |
| | | |
| | | if ($search) |
| | | { |
| | | $search = preg_replace('/[^-[:alpha:] ,.()0-9]+/', '', $search); |
| | |
| | | // now compute length over $str |
| | | $str = self::_ber_addseq($str, 'a0'); |
| | | } |
| | | |
| | | |
| | | // now tack on records per page |
| | | $str = "020100" . self::_ber_addseq(self::_ber_encode_int($rpp-1), '02') . $str; |
| | | |