Code

Updated FAI template entry.
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiManagement.inc
index 2a4eb0b42ba34b6ec916301cb6f60bfd6bdca9ff..e5f1bd8c6a3287afc75c055bbf8754e2bed563e2 100644 (file)
@@ -51,6 +51,7 @@ class faiManagement extends plugin
   var $allow_freeze_object_attach = TRUE;
 
   var $no_save;
+  var $acl_base     ="";
   var $fai_base     ="";
   var $fai_release  ="";
 
@@ -77,17 +78,19 @@ class faiManagement extends plugin
     $this->DivListFai = new divListFai($this->config,$this);
 
     /* Copy & Paste handler */
-    if ($this->config->boolValueIsTrue("main", "enableCopyPaste")){
+    if ($this->config->boolValueIsTrue("main", "copyPaste")){
       $this->CopyPasteHandler= new CopyPasteHandler($this->config);
     }
 
-    /* Set default release */
-    $this->fai_base = get_ou("faiou").$this->config->current['BASE'];
+    /* Set default release 
+     */
+    $this->acl_base = $this->config->current['BASE'];
+    $this->fai_base = get_ou("faiBaseRDN").$this->config->current['BASE'];
 
     if(!session::is_set("fai_filter")){
 
       /* Set intial release */
-      $rel = $config->search("faiManagement","DEFAULT_RELEASE",array("menu"));
+      $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu"));
       $rels = array_flip($this->getBranches());
       if(isset($rels[$rel])){
         $rel = $rels[$rel];
@@ -318,7 +321,7 @@ class faiManagement extends plugin
 
                                /* Lock the current entry, so nobody will edit it during deletion */
                                add_lock ($this->dn, $this->ui->dn);
-                               $smarty->assign("warning",msgPool::deleteInfo(@LDAP::fix($this->dn),_("FAI object")));
+                               $smarty->assign("warning",msgPool::deleteInfo(LDAP::fix($this->dn),_("FAI object")));
         $smarty->assign("multiple", false);
                                return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
                        } else {
@@ -363,7 +366,7 @@ class faiManagement extends plugin
           $dns_names = array();
           foreach($this->dns as $dn){
             add_lock ($dn, $this->ui->dn);
-            $dns_names[] = @LDAP::fix($dn);
+            $dns_names[] = LDAP::fix($dn);
           }
 
           /* Lock the current entry, so nobody will edit it during deletion */
@@ -448,7 +451,7 @@ class faiManagement extends plugin
       Delete confirmed 
      ****************/
 
-               /* Deltetion was confirmed, so delete this entry
+               /* Deletion was confirmed, so delete this entry
      */
     if (isset($_POST['delete_terminal_confirm'])){
 
@@ -538,9 +541,9 @@ class faiManagement extends plugin
       if("" != $this->config->search("faiManagement", "POSTREMOVE",array('menu','tabs'))){
         /* Load permissions for selected 'dn' and check if
            we're allowed to remove this 'dn' */
-        if($this->acl_is_removeable()){
+        if(preg_match("/d/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){
           $smarty->assign("release_hidden",base64_encode($this->fai_release));
-          $smarty->assign("info", msgPool::deleteInfo(@LDAP::fix($this->fai_release),_("FAI branch/freeze")));
+          $smarty->assign("info", msgPool::deleteInfo(LDAP::fix($this->fai_release),_("FAI branch/freeze")));
           return($smarty->fetch(get_template_path('remove_branch.tpl',TRUE)));
         } else {
           msg_dialog::display(_("Permission error"), _("You have no permission to delete this release!"), ERROR_DIALOG);
@@ -571,14 +574,14 @@ class faiManagement extends plugin
 
           $br = $this->getBranches();
 
-          if(isset($br[$bb]) && $this->acl_is_removeable()){
+          if(isset($br[$bb]) && preg_match("/d/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){
             $name = $br[$bb];
 
             $ldap->cd($bb);
             $ldap->recursive_remove();
-            $ldap->cd(preg_replace('/,'.normalizePreg(get_ou('faiou')).'/', ','.get_ou('applicationou'), $bb));
+            $ldap->cd(preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'/', ','.get_ou('applicationRDN'), $bb));
             $ldap->recursive_remove();
-            $ldap->cd(preg_replace('/,'.normalizePreg(get_ou('faiou')).'/', ','.get_ou('mimetypeou'), $bb));
+            $ldap->cd(preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'/', ','.get_ou('mimetypeRDN'), $bb));
             $ldap->recursive_remove();
 
             /* Search for all groups with configured application menus.
@@ -586,7 +589,7 @@ class faiManagement extends plugin
               - The search für menu configuration for the specified release and collect all those dns.
               - Remove entries
              */
-            $release_ou = preg_replace("/".normalizePreg(get_ou("faiou")).".*$/","",$bb);
+            $release_ou = preg_replace("/".preg_quote(get_ou("faiBaseRDN"), '/').".*$/","",$bb);
             $ldap->cd($this->config->current['BASE']);
             $ldap->search("(objectClass=posixGroup)",array("dn"));
           
@@ -604,7 +607,7 @@ class faiManagement extends plugin
               $ldap->cd($dn);
               $ldap->search("(objectClass=FAIbranch)",array("dn"));
               while($attrs = $ldap->fetch()){
-                if(preg_match("/^".normalizePreg($release_ou)."/",$attrs['dn'])){
+                if(preg_match("/^".preg_quote($release_ou, '/')."/",$attrs['dn'])){
                   $dns[] = $attrs['dn'];
                 }
               }
@@ -689,7 +692,7 @@ class faiManagement extends plugin
 
     if(isset($_GET['PerformBranch'])){
     
-      if(!$this->acl_is_createable()){
+      if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){
         msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG);
       }else{
 
@@ -728,11 +731,11 @@ class faiManagement extends plugin
           }
         }
 
-        $appsrc = preg_replace("/".normalizePreg(get_ou('faiou'))."/",get_ou('applicationou'),$baseToUse); 
-        $appdst = preg_replace("/".normalizePreg(get_ou('faiou'))."/",get_ou('applicationou'),"ou=".$name.",".$baseToUse) ; 
+        $appsrc = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('applicationRDN'),$baseToUse); 
+        $appdst = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('applicationRDN'),"ou=".$name.",".$baseToUse) ; 
 
-        $mimesrc = preg_replace("/".normalizePreg(get_ou('faiou'))."/",get_ou('mimetypeou'),$baseToUse); 
-        $mimedst = preg_replace("/".normalizePreg(get_ou('faiou'))."/",get_ou('mimetypeou'),"ou=".$name.",".$baseToUse) ; 
+        $mimesrc = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('mimetypeRDN'),$baseToUse); 
+        $mimedst = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('mimetypeRDN'),"ou=".$name.",".$baseToUse) ; 
 
         /* Check if source depeartments exist */
         foreach(array($baseToUse,$appsrc,$mimesrc) as $dep){
@@ -799,6 +802,7 @@ class faiManagement extends plugin
 
         echo "<div style='width:100%;text-align:right;'><form name='form' method='post' action='?plug=".$_GET['plug']."' target='_parent'>
           <br><input type='submit' name='CloseIFrame' value='"._("Continue")."'>
+          <input type='hidden' name='php_c_check' value='1'>
           </form></div>";
 
         echo "<script language=\"javascript\" type=\"text/javascript\">scrollDown2();</script>" ;
@@ -825,7 +829,7 @@ class faiManagement extends plugin
             $evt = $events['TRIGGERED']['DaemonEvent_recreate_fai_release_db'];
             $tmp = new $evt['CLASS_NAME']($this->config);
             $tmp->set_type(TRIGGERED_EVENT);
-            $tmp->add_targets(array("GOsa"));
+            $tmp->add_targets(array("GOSA"));
             $o_queue = new gosaSupportDaemon();
             if(!$o_queue->append($tmp)){
               msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG);
@@ -850,8 +854,8 @@ class faiManagement extends plugin
      */
     if("" != $this->config->search("faiManagement", "POSTCREATE",array('menu','tabs'))){
       if(($s_action == "branch_branch")||($this->dispNewBranch)){
-        if(!$this->acl_is_createable()){
-        msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG);
+        if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){
+          msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG);
         }else{
           $this->dispNewBranch=true;
           $smarty->assign("iframe",false);
@@ -871,7 +875,7 @@ class faiManagement extends plugin
      */
     if("" != $this->config->search("faiManagement", "POSTCREATE",array('menu','tabs'))){
       if(($s_action == "freeze_branch")||($this->dispNewFreeze)){
-        if(!$this->acl_is_createable()){
+        if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){
           msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG);
         }else{
           $this->dispNewFreeze = true;
@@ -901,7 +905,7 @@ class faiManagement extends plugin
                     "new_package"       =>  _("package list"));
 
     if(isset($types[$s_action])){
-      $acl = $this->ui->get_permissions($this->fai_base,"fai/".$type_acl_mapping[$types[$s_action]]);
+      $acl = $this->ui->get_permissions($this->acl_base,"fai/".$type_acl_mapping[$types[$s_action]]);
       if(preg_match("/c/",$acl)){
         $this->dialog = new askClassName($this->config,$this->dn,$this->ui,$types[$s_action]);
         $this->dialog->parent = &$this;
@@ -914,7 +918,7 @@ class faiManagement extends plugin
     if($s_action == "new_profile"){
       $this->dn = "new" ;
 
-      $acl = $this->ui->get_permissions($this->fai_base,"fai/faiProfile");
+      $acl = $this->ui->get_permissions($this->acl_base,"fai/faiProfile");
       if(preg_match("/c/",$acl)){
         $a_setup= $this->get_type(array("objectClass"=>array("FAIprofile")));
         $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai");
@@ -1071,7 +1075,7 @@ class faiManagement extends plugin
   function get_used_snapshot_bases()
   {
     $tmp = array();
-    $types = array("faipartitionou","faiscriptou","faitemplateou","faihookou","faiprofileou","faivariableou","faipackageou");
+    $types = array("faiPartitionRDN","faiScriptRDN","faiTemplateRDN","faiHookRDN","faiProfileRDN","faiVariableRDN","faiPackageRDN");
     foreach($types as $type){
       $tmp[] = get_ou($type).$this->fai_release;
     }
@@ -1130,7 +1134,7 @@ class faiManagement extends plugin
       }
     }
     $this->base = $base;
-    $this->set_acl_base($this->base);
+    $this->set_acl_base($this->acl_base);
 
     $this->lock_type = FAI::get_release_tag(FAI::get_release_dn($base));
 
@@ -1138,13 +1142,13 @@ class faiManagement extends plugin
      * Generate List of Partitions,Hooks,Scripts,Templates,Profiles ... 
      */
     $ObjectTypes = array(
-        "FAIpartitionTable"  => array("OU"=> get_ou('faipartitionou') , "CHKBOX"=>"ShowPartitions"  ,"ACL" => "faiPartitionTable"),
-        "FAIpackageList"     => array("OU"=> get_ou('faipackageou')   , "CHKBOX"=>"ShowPackages"    ,"ACL" => "faiPackage"),
-        "FAIscript"          => array("OU"=> get_ou('faiscriptou')    , "CHKBOX"=>"ShowScripts"     ,"ACL" => "faiScript"),
-        "FAIvariable"        => array("OU"=> get_ou('faivariableou')  , "CHKBOX"=>"ShowVariables"   ,"ACL" => "faiVariable"),
-        "FAIhook"            => array("OU"=> get_ou('faihookou')      , "CHKBOX"=>"ShowHooks"       ,"ACL" => "faiHook"),
-        "FAIprofile"         => array("OU"=> get_ou('faiprofileou')   , "CHKBOX"=>"ShowProfiles"    ,"ACL" => "faiProfile"),
-        "FAItemplate"        => array("OU"=> get_ou('faitemplateou')  , "CHKBOX"=>"ShowTemplates"   ,"ACL" => "faiTemplate"));
+        "FAIpartitionTable"  => array("OU"=> get_ou('faiPartitionRDN') , "CHKBOX"=>"ShowPartitions"  ,"ACL" => "faiPartitionTable"),
+        "FAIpackageList"     => array("OU"=> get_ou('faiPackageRDN')   , "CHKBOX"=>"ShowPackages"    ,"ACL" => "faiPackage"),
+        "FAIscript"          => array("OU"=> get_ou('faiScriptRDN')    , "CHKBOX"=>"ShowScripts"     ,"ACL" => "faiScript"),
+        "FAIvariable"        => array("OU"=> get_ou('faiVariableRDN')  , "CHKBOX"=>"ShowVariables"   ,"ACL" => "faiVariable"),
+        "FAIhook"            => array("OU"=> get_ou('faiHookRDN')      , "CHKBOX"=>"ShowHooks"       ,"ACL" => "faiHook"),
+        "FAIprofile"         => array("OU"=> get_ou('faiProfileRDN')   , "CHKBOX"=>"ShowProfiles"    ,"ACL" => "faiProfile"),
+        "FAItemplate"        => array("OU"=> get_ou('faiTemplateRDN')  , "CHKBOX"=>"ShowTemplates"   ,"ACL" => "faiTemplate"));
 
     $filter = "";
     foreach($ObjectTypes as $key => $data){
@@ -1199,30 +1203,32 @@ class faiManagement extends plugin
     /*  Append opsi objects, if opsi is available and if we are on the fai_base
      */
     if($this->opsi instanceof opsi && $this->opsi->enabled()){  
-
-      $err = FALSE;
-      if(!$err && $this->DivListFai->ShowOpsiNetboot){
-        $n_pro = $this->opsi->get_netboot_products();
-        $err |= $this->opsi->is_error();
-        foreach($n_pro as $name => $data){
-          $entry = array("cn" => $name,
-              "description" => $data['DESC'],
-              "type" => "opsi_netboot");
-          $this->objects[$name."_opsi_netboot"] = $entry;
-        }  
-      }
-      if(!$err && $this->DivListFai->ShowOpsiLocal){
-        $l_pro = $this->opsi->get_local_products();
-        $err |= $this->opsi->is_error();
-        foreach($l_pro as $name => $data){
-          $entry = array("cn" => $name,
-              "description" => $data['DESC'],
-              "type" => "opsi_local");
-          $this->objects[$name."_opsi_local"] = $entry;
+      $opsi_acl = $this->ui->get_permissions($base,"opsi/opsiProperties");
+      if(preg_match("/r/",$opsi_acl)){
+        $err = FALSE;
+        if(!$err && $this->DivListFai->ShowOpsiNetboot){
+          $n_pro = $this->opsi->get_netboot_products();
+          $err |= $this->opsi->is_error();
+          foreach($n_pro as $name => $data){
+            $entry = array("cn" => $name,
+                "description" => $data['DESC'],
+                "type" => "opsi_netboot");
+            $this->objects[$name."_opsi_netboot"] = $entry;
+          }  
+        }
+        if(!$err && $this->DivListFai->ShowOpsiLocal){
+          $l_pro = $this->opsi->get_local_products();
+          $err |= $this->opsi->is_error();
+          foreach($l_pro as $name => $data){
+            $entry = array("cn" => $name,
+                "description" => $data['DESC'],
+                "type" => "opsi_local");
+            $this->objects[$name."_opsi_local"] = $entry;
+          }  
         }  
-      }  
-      if($err){
-        msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+        if($err){
+          msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+        }
       }
     }
 
@@ -1395,7 +1401,7 @@ class faiManagement extends plugin
 
     if($oc == "FAIprofile"){
       $f = "";
-      $ocs = array("FAItemplate","FAIhook","FAIpartitionTable","FAIpackageList","FAIscript","FAIvariable");
+      $ocs = array("FAIprofile","FAItemplate","FAIhook","FAIpartitionTable","FAIpackageList","FAIscript","FAIvariable");
       foreach($ocs as $oc){
         $f .= "(objectClass=".$oc.")";
       }