Code

Added logging to addons
[gosa.git] / plugins / addons / ldapmanager / class_exportxls.inc
index efacc7efde34d445d7e03301c203f485a445e6fe..6a3302a8175cc1baab82eef13c74de52a183390c 100644 (file)
@@ -11,63 +11,77 @@ class xlsexport extends plugin
   /* attribute list for save action */
   var $attributes= array();
   var $objectclasses= array();
+  var $ui;
+  var $view_logged = FALSE;
 
   function xlsexport ($config, $dn= NULL)
   {
     /* Include config object */
     $this->config= $config;
 
-    $ui= get_userinfo();
-    $acl= get_permissions ($config->current['BASE'], $ui->subtreeACL);
-    $acl= get_module_permission($acl, "ldifexport", $config->current['BASE']);
-    $this->access= $acl;
+    $this->ui = get_userinfo();
   }
 
   function execute()
   {
        /* Call parent execute */
        plugin::execute();
+
+    /* Log view */
+    if(!$this->view_logged){
+      $this->view_logged = TRUE;
+      @log::log("view","all/".get_class($this),$this->dn);
+    }
+
     /* Set government mode */
     $smarty= get_smarty();
 
     $smarty->assign("type",FALSE);
+    $smarty->assign("depselectivbb","");
     
+    if(!isset($_POST['selfull'])) $_POST['selfull'] = "Somehow not posted";
+
     /* Check permissions for export */
-    if ($this->access != '#all#'){
-      print_red(_("You've no permission to do LDAP exports."));
+    // fill in old vars in the Export form
+    if((isset($_POST['single']))&&(isset($_POST['sfrmgetsingle']))){
+      $smarty->assign("single",$_POST['single']);
+      $smarty->assign("type","single");
+      $a=$_POST['single'];
+      $b=$_POST['selfull'];
+
+    }
+    if((isset($_POST['selfull']))&&(isset($_POST['sfrmgetfull']))){
+      $smarty->assign("depselectfull",$_POST['selfull']);
+      $smarty->assign("type","full");
+      $dn = $_POST['selfull'];
     } else {
-      // fill in old vars in the Export form
-      if((isset($_POST['single']))&&(isset($_POST['sfrmgetsingle']))){
-        $smarty->assign("single",$_POST['single']);
-        $smarty->assign("type","single");
-       $a=$_POST['single'];
-       $b=$_POST['selfull'];
-//     $dn=$a.$b;
-       
-      }
-      if((isset($_POST['selfull']))&&(isset($_POST['sfrmgetfull']))){
-        $smarty->assign("depselectfull",$_POST['selfull']);
-        $smarty->assign("type","full");
-        $dn = $_POST['selfull'];
-      } else {
-        $smarty->assign("depselectfull", "");
-      }
-      if((isset($_POST['selivbb']))&&(isset($_POST['sfrmgetivbb']))){
-        $smarty->assign("depselectivbb",$_POST['selivbb']);
-        $smarty->assign("type","ivbb");
-        $dn = $_POST['selivbb'];
-      } else {
-        $smarty->assign("depselectivbb", "");
-      }
+      $smarty->assign("depselectfull", "");
+    }
+    if((isset($_POST['selivbb']))&&(isset($_POST['sfrmgetivbb']))){
+      $smarty->assign("depselectivbb",$_POST['selivbb']);
+      $smarty->assign("type","ivbb");
+      $dn = $_POST['selivbb'];
+    } else {
+      $smarty->assign("depselectivbb", "");
     }
 
     // Set values for optionlist in form
-     $smarty->assign("deplist", $this->config->idepartments);
-     $smarty->assign("choicelist",array("ou=people,"=>"users" ,"ou=groups,"=>"groups" ,"ou=computers,ou=systems,"=>"computers","ou=servers,ou=systems,"=>"servers","dc=addressbook,"=>"addressbook"));
+    $bases      = array();
+    $acl_bases  = $this->ui->get_module_departments("all");
+    foreach($this->config->idepartments as $base_dn => $name){
+      if(in_array_ics($base_dn,$acl_bases)){
+        $bases[$base_dn] = $name;
+      }
+    }
+    $smarty->assign("deplist", $bases);
+    $smarty->assign("choicelist",array( get_people_ou()             =>"users" ,
+                                        "ou=groups,"                =>"groups" ,
+                                        "ou=systems,"               =>"computers",
+                                        "ou=servers,ou=systems,"    =>"servers",
+                                        "dc=addressbook,"           =>"addressbook"));
 
     // Get the LDAP link, to generate the Export
     $ldap = $this->config->get_ldap_link();
-       
 
     if ($this->config->current['GOVERNMENTMODE'] == 'true'){
       $smarty->assign ("govmode", "true");
@@ -79,33 +93,47 @@ class xlsexport extends plugin
 
     if(isset($dn))
     {
-      if($ldap->dn_exists($dn) && $dn != ""){
-        ;
-      }
-      else    {
+      if(!($ldap->dn_exists($dn) && $dn != "")){
         $smarty->assign("LDIFError",TRUE);
-       print_red (_("Error while exporting the requested entries!"));
+       print_red (_("Error while exporting the requested entries!"));
       }
     }
-//     print_r($_POST);
-    // Export a single LDAP entry
-    if(isset($_POST['sfrmgetsingle']))
-    {
-      $smarty->assign("para","?ivbb=2&d=".base64_encode($_POST['single'])."&n=".base64_encode($_POST['selfull'])); 
-    }
-    elseif(isset($_POST['sfrmgetfull']))
-    {
-      $smarty->assign("para","?ivbb=3&dn=".base64_encode($_POST['selfull']));
-    }
-    elseif(isset($_POST['sfrmgetivbb']))
-    {
-      $smarty->assign("para","?ivbb=4&dn=".base64_encode($_POST['selivbb']));
+   
+    /* check alcs for given dn */
+    $acls ="";
+    if(isset($dn)){
+      $acls = $this->ui->get_permissions($dn,"all/all");
     }
+    if(!preg_match("/r/",$acls)){
+
+      /* Show error msg */      
+      print_red(sprintf(_("You are not allowed to export the given ldap entry (%s)"),@LDAP::fix($dn)));
 
+      /* Show main page */
+      $smarty->assign("LDIFError",TRUE);
+      $smarty->assign("para","");
+    }else{
+
+      // Export a single LDAP entry
+      if(isset($_POST['sfrmgetsingle']))
+      {
+        $smarty->assign("para","?ivbb=2&d=".base64_encode($_POST['single'])."&n=".base64_encode($_POST['selfull']));       
+      }
+      elseif(isset($_POST['sfrmgetfull']))
+      {
+        $smarty->assign("para","?ivbb=3&dn=".base64_encode($_POST['selfull']));
+      }
+      elseif(isset($_POST['sfrmgetivbb']))
+      {
+        $smarty->assign("para","?ivbb=4&dn=".base64_encode($_POST['selivbb']));
+      }
+    }
 
     /* Show main page */
     return ($smarty->fetch (get_template_path('contentexportxls.tpl', TRUE)));
   }
+
 }