X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=setup%2Fclass_setupStep_Schema.inc;h=2008128a4253fb173439d7ec2ce69a83478e85ef;hb=484c83ff60fc5a427dd9e18be1c504d3dbb6e337;hp=8d22f6ed60e352384a9620edfc653969862a57f7;hpb=d6bbbc7fe5f9d45ecc39efd26e417b72e744760a;p=gosa.git diff --git a/setup/class_setupStep_Schema.inc b/setup/class_setupStep_Schema.inc index 8d22f6ed6..2008128a4 100644 --- a/setup/class_setupStep_Schema.inc +++ b/setup/class_setupStep_Schema.inc @@ -69,12 +69,6 @@ class Step_Schema extends setup_step return($smarty -> fetch (get_template_path("../setup/setup_schema.tpl"))); } - function check_schema_version($class, $version) - { - return preg_match("/\(v$version\)/", $class['DESC']); - } - - function save_object() { if(isset($_POST['step7_posted'])){ @@ -88,11 +82,11 @@ class Step_Schema extends setup_step } } - function check_schema() { $cfg = $this->parent->captured_values; - $messages= array(); + $rfc2307bis = $cfg['rfc2307bis']; + $this->checked = check_schema($cfg,$rfc2307bis); /* Get objectclasses */ $ldap = new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE,$cfg['tls']); @@ -101,7 +95,6 @@ class Step_Schema extends setup_step print_red(_("Can't get schema information from server. No schema check possible!")); } - /* Which samba version do we use? */ if(isset($objectclasses['sambaSamAccount'])){ $this->samba_version = 3; @@ -110,132 +103,6 @@ class Step_Schema extends setup_step }else{ $this->samba_version = 0; } - - /* This is the default block used for each entry. - * to avoid unset indexes. - */ - $def_check = array("REQUIRED_VERSION" => "0", - "SCHEMA_FILES" => array(), - "CLASSES_REQUIRED" => array(), - "STATUS" => FALSE, - "IS_MUST_HAVE" => FALSE, - "MSG" => "", - "INFO" => "");#_("There is currently no information specified for this schema extension.")); - - - /* The gosa base schema */ - $checks['gosaObject'] = $def_check; - $checks['gosaObject']['REQUIRED_VERSION'] = "2.4"; - $checks['gosaObject']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema"); - $checks['gosaObject']['CLASSES_REQUIRED'] = array("gosaObject"); - $checks['gosaObject']['IS_MUST_HAVE'] = TRUE; - - /* GOsa Account class */ - $checks["gosaAccount"]["REQUIRED_VERSION"]= "2.4"; - $checks["gosaAccount"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema"); - $checks["gosaAccount"]["CLASSES_REQUIRED"]= array("gosaAccount"); - $checks["gosaAccount"]["IS_MUST_HAVE"] = TRUE; - $checks["gosaAccount"]["INFO"] = _("Used to store account specific informations."); - - /* GOsa lock entry, used to mark currently edited objects as 'in use' */ - $checks["gosaLockEntry"]["REQUIRED_VERSION"] = "2.4"; - $checks["gosaLockEntry"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema"); - $checks["gosaLockEntry"]["CLASSES_REQUIRED"] = array("gosaLockEntry"); - $checks["gosaLockEntry"]["IS_MUST_HAVE"] = TRUE; - $checks["gosaLockEntry"]["INFO"] = _("Used to lock currently edited entries to avoid multiple changes at the same time."); - - /* Some other checks */ - foreach(array( - "gosaCacheEntry" => array("version" => "2.4"), - "gosaDepartment" => array("version" => "2.4"), - "goFaxAccount" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), - "goFaxSBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), - "goFaxRBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), - "gosaUserTemplate" => array("version" => "2.4", "class" => "posixAccount","file" => "nis.schema"), - "gosaMailAccount" => array("version" => "2.4", "class" => "mailAccount","file" => "gosa+samba3.schema"), - "gosaProxyAccount" => array("version" => "2.4", "class" => "proxyAccount","file" => "gosa+samba3.schema"), - "gosaApplication" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"), - "gosaApplicationGroup" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"), - "GOhard" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"), - "gotoTerminal" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"), - "goServer" => array("version" => "2.4","class" => "server","file" => "goserver.schema"), - "goTerminalServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"), - "goShareServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"), - "goNtpServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"), - "goSyslogServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"), - "goLdapServer" => array("version" => "2.4"), - "goCupsServer" => array("version" => "2.4", "class" => array("posixAccount", "terminals"),), - "goImapServer" => array("version" => "2.4", "class" => array("mailAccount", "mailgroup"),"file" => "gosa+samba3.schema"), - "goKrbServer" => array("version" => "2.4"), - "goFaxServer" => array("version" => "2.4", "class" => "gofaxAccount","file" => "gofax.schema"), - ) as $name => $values){ - - $checks[$name] = $def_check; - if(isset($values['version'])){ - $checks[$name]["REQUIRED_VERSION"] = $values['version']; - } - if(isset($values['file'])){ - $checks[$name]["SCHEMA_FILES"] = array($values['file']); - } - $checks[$name]["CLASSES_REQUIRED"] = array($name); - } - - foreach($checks as $name => $value){ - foreach($value['CLASSES_REQUIRED'] as $class){ - - if(!isset($objectclasses[$name])){ - $checks[$name]['STATUS'] = FALSE; - if($value['IS_MUST_HAVE']){ - $checks[$name]['MSG'] = sprintf(_("The required objectClass '%s' is not present in your schema setup"),$class); - }else{ - $checks[$name]['MSG'] = sprintf(_("The optional objectClass '%s' is not present in your schema setup"),$class); - } - }elseif(!$this->check_schema_version($objectclasses[$name],$value['REQUIRED_VERSION'])){ - $checks[$name]['STATUS'] = FALSE; - - if($value['IS_MUST_HAVE']){ - $checks[$name]['MSG'] = sprintf(_("The required objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']); - }else{ - $checks[$name]['MSG'] = sprintf(_("The optional objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']); - } - }else{ - $checks[$name]['STATUS'] = TRUE; - $checks[$name]['MSG'] = sprintf(_("Class(es) available")); - } - } - } - - $tmp = $objectclasses; - - /* Depending on selected rfc2307bis mode, we need different schema configurations */ - $rfc2307bis = $this->parent->captured_values['rfc2307bis']; - - - /* The gosa base schema */ - $checks['posixGroup'] = $def_check; - $checks['posixGroup']['REQUIRED_VERSION'] = "2.4"; - $checks['posixGroup']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema"); - $checks['posixGroup']['CLASSES_REQUIRED'] = array("posixGroup"); - $checks['posixGroup']['STATUS'] = TRUE; - $checks['posixGroup']['IS_MUST_HAVE'] = TRUE; - $checks['posixGroup']['MSG'] = ""; - $checks['posixGroup']['INFO'] = ""; - - if(isset($tmp['posixGroup'])){ - - if($rfc2307bis && isset($tmp['posixGroup']['STRUCTURAL'])){ - $checks['posixGroup']['STATUS'] = FALSE; - $checks['posixGroup']['MSG'] = _("You have enabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option."); - $checks['posixGroup']['INFO'] = _("In order to use rfc2307bis conform groups the objectClass 'posixGroup' must be AUXILIARY"); - } - if(!$rfc2307bis && !isset($tmp['posixGroup']['STRUCTURAL'])){ - $checks['posixGroup']['STATUS'] = FALSE; - $checks['posixGroup']['MSG'] = _("You have disabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option."); - $checks['posixGroup']['INFO'] = _("The objectClass 'posixGroup' must be STRUCTURAL"); - } - } - - $this->checked = $checks; } }