Code

Cleaned up code
[gosa.git] / setup / class_setupStep_Schema.inc
index 6dba41c0a32c4454d5e215d1e5c6e48cc434cbf7..2008128a4253fb173439d7ec2ce69a83478e85ef 100644 (file)
@@ -20,7 +20,7 @@
 */
 
 
-class setup_step_7 extends setup_step
+class Step_Schema extends setup_step
 {
   var $checked = array();
   var $not_checked = array();
@@ -29,7 +29,7 @@ class setup_step_7 extends setup_step
   var $enable_schema_check = TRUE;
   var $samba_version       = 3;
 
-  function setup_step_7()
+  function Step_Schema()
   {
     $this->update_strings();
   }
@@ -37,9 +37,9 @@ class setup_step_7 extends setup_step
   
   function update_strings()
   {
-    $this->s_title      = _("Ldap schema check");
-    $this->s_title_long = _("Ldap schema check");
-    $this->s_info       = _("This dialog checks your ldap schema setup");
+    $this->s_title      = _("LDAP schema check");
+    $this->s_title_long = _("LDAP schema check");
+    $this->s_info       = _("Perform test on your current LDAP schema");
   }
 
   
@@ -56,7 +56,7 @@ class setup_step_7 extends setup_step
     if($failed_checks == 0){
       $this->is_completed = TRUE;
     }else{
-      $this->is_completed = FALSE;
+      $this->is_completed = TRUE;
     }
 
     $smarty = get_smarty();
@@ -66,16 +66,9 @@ class setup_step_7 extends setup_step
     $smarty->assign("checks",$this->checked);
     $smarty->assign("not_checked",$this->not_checked);
     $smarty->assign("failed_checks",$failed_checks);
-    return($smarty -> fetch (get_template_path("../setup/setup_step7.tpl")));
+    return($smarty -> fetch (get_template_path("../setup/setup_schema.tpl")));
   }
 
-  function check_schema_version($description, $version)
-  {
-    $desc= preg_replace("/^.* DESC\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $description);
-    return preg_match("/\(v$version\)/", $desc);
-  }
-
-
   function save_object()
   {
     if(isset($_POST['step7_posted'])){
@@ -89,20 +82,19 @@ class setup_step_7 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']);
     $objectclasses = $ldap->get_objectclasses();
     if(count($objectclasses) == 0){
-      return (array(array("msg" => _("Can't get schema information from server. No schema check possible!"), "status" => FALSE)));
+      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;
@@ -111,114 +103,6 @@ class setup_step_7 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"));
-        }
-      }
-    }
-  
-    $this->checked = $checks;
-    $tmp = $objectclasses;
-    $not_checked = array();
-    foreach($tmp as $name => $val){
-      $desc = "no description.";
-      if(preg_match("/DESC/",$val)){ 
-        $desc = preg_replace("/^.*DESC[ ]*'/i","",$val) ;
-        $desc = preg_replace("/'.*$/i","",$desc) ;
-      }  
-      $not_checked[$name] = $desc;
-    }
-
-    $this->not_checked = $not_checked;  
   }
 }