Code

Prepared for multiple asterisk servers
[gosa.git] / plugins / admin / fai / class_faiProfileEntry.inc
index c1f990506d7934223866544229268324d4cf626d..3f968dc9f11498a60a683f8918cd8f5570c7658f 100644 (file)
@@ -14,16 +14,24 @@ class faiProfileEntry extends plugin
 
   /* Array with available class names */
   var $FAIAllclasses        = array();
+  var $ui;
 
   function faiProfileEntry ($config, $dn= NULL,$used=array(),$objects=false)
   {
     plugin::plugin ($config, $dn);
 
     /* Search only in fai tree */
-    $base = "ou=fai,ou=configs,ou=systems,".$_SESSION['faifilter']['base'];
+    $base = "ou=fai,ou=configs,ou=systems,".$_SESSION['CurrentMainBase'];
+
+    $this->ui = get_userinfo();
 
     /* Create array with categories to be able to sort different types of objects */
-    $categories = array("FAIscript","FAItemplate","FAIhook","FAIvariable","FAIpartitionTable","FAIpackageList");
+    $categories = array("FAIscript"         => "faiScript",
+                        "FAItemplate"       => "faiTemplate",
+                        "FAIhook"           => "faiHook",
+                        "FAIvariable"       => "faiVariable",
+                        "FAIpartitionTable" => "faiPartitionTable",
+                        "FAIpackageList"    => "faiPackageList");
 
     /* Read out all objects from fai tree */
     $ldap= $this->config->get_ldap_link();
@@ -36,11 +44,18 @@ class faiProfileEntry extends plugin
       
       /* Only use objects which have cn set */
       if((isset($attrs['cn'][0]))&&(!in_array($attrs['cn'][0],$used))){
-        foreach($categories as $cat){
+        foreach($categories as $cat => $acl){
           if(in_array($cat,$attrs['objectClass'])){
         
+            $acl =  $this->ui->get_permissions($attrs['dn'],"fai/".$acl); 
+
             /* Append different types of objects */
             $this->FAIAllclasses[$attrs['cn'][0]]['objects'][$cat]=$cat;
+      
+            if(!isset($this->FAIAllclasses[$attrs['cn'][0]]['acl'])){
+              $this->FAIAllclasses[$attrs['cn'][0]]['acl']="";
+            }
+            $this->FAIAllclasses[$attrs['cn'][0]]['acl'].=$acl;
 
             /* Set selected status to false */
             $this->FAIAllclasses[$attrs['cn'][0]]['status']=false;
@@ -50,6 +65,8 @@ class faiProfileEntry extends plugin
         }
       }
     }
+
+
     $tmp = array();
     ksort($sort);
     foreach($sort as $name){
@@ -58,10 +75,9 @@ class faiProfileEntry extends plugin
     $this->FAIAllclasses = array();
     $this->FAIAllclasses = $tmp;
 
-
     /* If no search filter is set, create one */
     if (!is_global("SUBfaifilter")){
-      $SUBfaifilter= array("base" => "ou=fai,ou=configs,ou=systems,".$base, "Sregex" => "*");
+      $SUBfaifilter= array("base" => "ou=fai,ou=configs,ou=systems,".$_SESSION['CurrentMainBase'], "Sregex" => "*");
       $SUBfaifilter['SShowTemplates'] = true;
       $SUBfaifilter['SShowScripts']   = true;
       $SUBfaifilter['SShowHooks']     = true;
@@ -104,8 +120,9 @@ class faiProfileEntry extends plugin
     /* Check if we used a checkboxe from the list, to select dselect an entry */
     foreach($_POST as $name => $value){
       foreach($this->FAIAllclasses as $class => $obj){
-        if(isset($_POST["ON_PAGE_".$class])){
-          if(isset($_POST['USE_'.$class])){
+        $bclass = base64_encode($class);
+        if(isset($_POST["ON_PAGE_".$bclass])){
+          if(isset($_POST['USE_'.$bclass])){
             $this->FAIAllclasses[$class]['status']=true;  
           }else{
             $this->FAIAllclasses[$class]['status']=false;  
@@ -115,12 +132,12 @@ class faiProfileEntry extends plugin
     }
 
     /* Create different picture for each object type */
-    $objTypes['FAIhook']            = "<image src='images/fai_hook.png' title='"._("Hook bundle")."' alt=''>&nbsp;";
-    $objTypes['FAItemplate']        = "<image src='images/fai_template.png' title='"._("Template bundle")."' alt=''>&nbsp;";
-    $objTypes['FAIscript']          = "<image src='images/fai_script.png' title='"._("Script bundle")."' alt=''>&nbsp;";
-    $objTypes['FAIvariable']        = "<image src='images/fai_variable.png' title='"._("Variable bundle")."' alt=''>&nbsp;";
-    $objTypes['FAIpackageList']     = "<image src='images/fai_packages.png' title='"._("Package bundle")."' alt=''>&nbsp;";
-    $objTypes['FAIpartitionTable']  = "<image src='images/fai_partitionTable.png' title='"._("Partition table")."' alt=''>&nbsp;";
+    $objTypes['FAIhook']            = "<img src='images/fai_hook.png' title='"._("Hook bundle")."' alt=''>&nbsp;";
+    $objTypes['FAItemplate']        = "<img src='images/fai_template.png' title='"._("Template bundle")."' alt=''>&nbsp;";
+    $objTypes['FAIscript']          = "<img src='images/fai_script.png' title='"._("Script bundle")."' alt=''>&nbsp;";
+    $objTypes['FAIvariable']        = "<img src='images/fai_variable.png' title='"._("Variable bundle")."' alt=''>&nbsp;";
+    $objTypes['FAIpackageList']     = "<img src='images/fai_packages.png' title='"._("Package bundle")."' alt=''>&nbsp;";
+    $objTypes['FAIpartitionTable']  = "<img src='images/fai_partitionTable.png' title='"._("Partition table")."' alt=''>&nbsp;";
 
     /* Magic quotes GPC, escapes every ' " \, to solve some security risks
      * If we post the escaped strings they will be escaped again
@@ -160,6 +177,11 @@ class faiProfileEntry extends plugin
     /* Check every single class name to match the current search filter */
     foreach($this->FAIAllclasses as $usedClass => $classes){
 
+      /* Skip those entries that we are not allowed to read. */
+      if(!preg_match("/r/",$classes['acl'])){
+        continue;
+      }
+
       $fi = str_replace("*",".*",$SUBfaifilter['Sregex']);  
  
       $abort = true; 
@@ -199,7 +221,7 @@ class faiProfileEntry extends plugin
         }      
         
         /* Append to list */
-        $field1 = array("string"=> preg_replace("/%KEY%/",$usedClass,$action_check).$usedClass,"attach"=>"");
+        $field1 = array("string"=> str_replace("%KEY%",base64_encode($usedClass),$action_check).$usedClass,"attach"=>"");
         $field2 = array("string"=> $str,"attach"=>"style='border-right:0px;'");
         $divlist->AddEntry(array($field1,$field2));
       }
@@ -225,7 +247,9 @@ class faiProfileEntry extends plugin
   /* Check supplied data */
   function check()
   {
-    $message= array();
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+
     return ($message);
   }