Code

Cleaned up code
[gosa.git] / setup / class_setupStep_Schema.inc
index 8fe111673b09a2d9e2f5461c1b441809d2703301..2008128a4253fb173439d7ec2ce69a83478e85ef 100644 (file)
@@ -39,7 +39,7 @@ class Step_Schema extends setup_step
   {
     $this->s_title      = _("LDAP schema check");
     $this->s_title_long = _("LDAP schema check");
-    $this->s_info       = _("Perform test on your curren LDAP schema");
+    $this->s_info       = _("Perform test on your current LDAP schema");
   }
 
   
@@ -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;
   }
 }