| | |
| | | } |
| | | |
| | | // make sure LDAP_rdn field is required |
| | | if (!empty($this->prop['LDAP_rdn']) && !in_array($this->prop['LDAP_rdn'], $this->prop['required_fields'])) { |
| | | if (!empty($this->prop['LDAP_rdn']) && !in_array($this->prop['LDAP_rdn'], $this->prop['required_fields']) && !in_array($this->prop['LDAP_rdn'], array_keys($this->prop['autovalues']))) { |
| | | $this->prop['required_fields'][] = $this->prop['LDAP_rdn']; |
| | | } |
| | | |
| | |
| | | $newentry = $this->_map_data($save_cols); |
| | | $newentry['objectClass'] = $this->prop['LDAP_Object_Classes']; |
| | | |
| | | // add automatically generated attributes |
| | | $this->add_autovalues($newentry); |
| | | |
| | | // Verify that the required fields are set. |
| | | $missing = null; |
| | | foreach ($this->prop['required_fields'] as $fld) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Generate missing attributes as configured |
| | | * |
| | | * @param array LDAP record attributes |
| | | */ |
| | | protected function add_autovalues(&$attrs) |
| | | { |
| | | $attrvals = array(); |
| | | foreach ($attrs as $k => $v) { |
| | | $attrvals['{'.$k.'}'] = is_array($v) ? $v[0] : $v; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Execute the LDAP search based on the stored credentials |