getValue('appearance','hide_template_warning')) { system_message(array( 'title' => sprintf('%s [%s]', _('Unknown template [post] function'), $matches[1]), 'body' => sprintf('%s [%s]', _('The template function is not known and will be ignored.'), $values['post']), 'type' => 'warn')); } unset($values['post']); } } } # Check our helper functions exists if (isset($values['helper']['value']) && ! is_array($values['helper']['value'])) { if (preg_match('/^=php\.(\w+)\((.*)\)$/', $values['helper']['value'], $matches)) { if ( ! in_array($matches[1], array('GetNextNumber', 'PasswordEncryptionTypes'))) { if ( ! $_SESSION[APPCONFIG]->getValue('appearance', 'hide_template_warning')) { system_message(array( 'title' => sprintf('%s [%s]', _('Unknown template helper function'), $matches[1]), 'body' => sprintf('%s [%s]', _('The template helper function is not known and will be ignored.'), $values['helper']['value']), 'type' => 'warn')); } unset($values['helper']['value']); } } } # Check to see if the value is auto generated, our attribute type is dependant on the function called. if (isset($values['value']) && ! is_array($values['value'])) { if (preg_match('/^=php\.(\w+)\((.*)\)$/',$values['value'],$matches)) { switch ($matches[1]) { case 'MultiList': if (! isset($values['type'])) { $values['type'] = 'multiselect'; } case 'PickList': return $this->newSelectionAttribute($name,$values,$server_id,$source); case 'RandomPassword': return $this->newRandomPasswordAttribute($name,$values,$server_id,$source); # Fall through and determine the attribute using other methods. case 'GetNextNumber': case 'Function' : break; default: if (! $_SESSION[APPCONFIG]->getValue('appearance','hide_template_warning')) { system_message(array( 'title' => sprintf('%s [%s]', _('Unknown template function'), $matches[1]), 'body' => sprintf('%s [%s]', _('The template function is not known and will be ignored.'), $values['value']), 'type' => 'warn')); } unset($values['value']); } } } if (isset($values['type'])) { switch ($values['type']) { case 'password': if ( ! strcasecmp($name, 'sambaLMPassword') || ! strcasecmp($name, 'sambaNTPassword')) { return $this->newSambaPasswordAttribute($name, $values, $server_id, $source); } else { return $this->newPasswordAttribute($name, $values, $server_id, $source); } case 'multiselect': case 'select': return $this->newSelectionAttribute($name, $values, $server_id, $source); case 'textarea': return $this->newMultiLineAttribute($name, $values, $server_id, $source); } } if (! strcasecmp($name,'objectClass')) { return $this->newObjectClassAttribute($name,$values,$server_id,$source); } elseif ($app['server']->isJpegPhoto($name) || in_array($name,$app['server']->getValue('server','jpeg_attributes'))) { return $this->newJpegAttribute($name,$values,$server_id,$source); } elseif ($app['server']->isAttrBinary($name)) { return $this->newBinaryAttribute($name,$values,$server_id,$source); } elseif (! strcasecmp($name,'userPassword')) { return $this->newPasswordAttribute($name,$values,$server_id,$source); } elseif (! strcasecmp($name,'sambaLMPassword') || ! strcasecmp($name,'sambaNTPassword')) { return $this->newSambaPasswordAttribute($name,$values,$server_id,$source); } elseif (in_array(strtolower($name),array_keys(array_change_key_case($_SESSION[APPCONFIG]->getValue('appearance','date_attrs'))))) { return $this->newDateAttribute($name,$values,$server_id,$source); } elseif (in_array(strtolower($name),array('shadowlastchange','shadowmin','shadowmax','shadowexpire','shadowwarning','shadowinactive'))) { return $this->newShadowAttribute($name,$values,$server_id,$source); } elseif ($app['server']->isAttrBoolean($name)) { $attribute = $this->newSelectionAttribute($name,$values,$server_id,$source); $attribute->addOption('TRUE',_('true')); $attribute->addOption('FALSE',_('false')); return $attribute; } elseif ($app['server']->isDNAttr($name)) { return $this->newDnAttribute($name,$values,$server_id,$source); } elseif ($app['server']->isMultiLineAttr($name)) { return $this->newMultiLineAttribute($name,$values,$server_id,$source); } elseif (! strcasecmp($name,'gidNumber')) { return $this->newGidAttribute($name,$values,$server_id,$source); } else { return new Attribute($name,$values,$server_id,$source); } } private function newJpegAttribute($name,$values,$server_id,$source) { return new JpegAttribute($name,$values,$server_id,$source); } private function newBinaryAttribute($name,$values,$server_id,$source) { return new BinaryAttribute($name,$values,$server_id,$source); } private function newPasswordAttribute($name,$values,$server_id,$source) { return new PasswordAttribute($name,$values,$server_id,$source); } private function newSambaPasswordAttribute($name,$values,$server_id,$source) { return new SambaPasswordAttribute($name,$values,$server_id,$source); } private function newRandomPasswordAttribute($name,$values,$server_id,$source) { return new RandomPasswordAttribute($name,$values,$server_id,$source); } private function newShadowAttribute($name,$values,$server_id,$source) { return new ShadowAttribute($name,$values,$server_id,$source); } private function newSelectionAttribute($name,$values,$server_id,$source) { return new SelectionAttribute($name,$values,$server_id,$source); } private function newMultiLineAttribute($name,$values,$server_id,$source) { return new MultiLineAttribute($name,$values,$server_id,$source); } private function newDateAttribute($name,$values,$server_id,$source) { return new DateAttribute($name,$values,$server_id,$source); } private function newObjectClassAttribute($name,$values,$server_id,$source) { return new ObjectClassAttribute($name,$values,$server_id,$source); } private function newDnAttribute($name,$values,$server_id,$source) { return new DnAttribute($name,$values,$server_id,$source); } private function newGidAttribute($name,$values,$server_id,$source) { return new GidAttribute($name,$values,$server_id,$source); } }