| | |
| | | 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']; |
| | | |
| | |
| | | $this->coltypes['address']['childs'][$childcol] = array('type' => 'text'); |
| | | 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']) { |
| | |
| | | |
| | | for ($i = 0; $i < $entries['count']; $i++) { |
| | | $rec = $this->_ldap2result($entries[$i]); |
| | | foreach (array('email', 'name') as $f) { |
| | | $val = mb_strtolower($rec[$f]); |
| | | switch ($mode) { |
| | | case 1: |
| | | $got = ($val == $search); |
| | | break; |
| | | case 2: |
| | | $got = ($search == substr($val, 0, strlen($search))); |
| | | break; |
| | | default: |
| | | $got = (strpos($val, $search) !== false); |
| | | break; |
| | | } |
| | | foreach ($fields as $f) { |
| | | foreach ((array)$rec[$f] as $val) { |
| | | $val = mb_strtolower($val); |
| | | switch ($mode) { |
| | | case 1: |
| | | $got = ($val == $search); |
| | | break; |
| | | case 2: |
| | | $got = ($search == substr($val, 0, strlen($search))); |
| | | break; |
| | | default: |
| | | $got = (strpos($val, $search) !== false); |
| | | break; |
| | | } |
| | | |
| | | if ($got) { |
| | | $this->result->add($rec); |
| | | $this->result->count++; |
| | | break; |
| | | if ($got) { |
| | | $this->result->add($rec); |
| | | $this->result->count++; |
| | | break 2; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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 { |