Code

Added acls to gotomasses
[gosa.git] / plugins / addons / gotomasses / class_gotomasses.inc
index a8230776f8aad1208e5f1a077a762390f0128261..113cbcd738283b3b486c34191d725566a1ec43bd 100644 (file)
@@ -3,7 +3,7 @@
 class gotomasses extends plugin
 {
   /* Definitions */
-  var $plHeadline     = "Mass machine";
+  var $plHeadline     = "System mass deployment";
   var $plDescription  = "This does something";
 
   /* attribute list for save action */
@@ -22,6 +22,7 @@ class gotomasses extends plugin
    */
   var $contents_backup  = array();
 
+  var $contents_initially_loaded = FALSE;
 
   function gotomasses($config, $dn= NULL)
   {
@@ -30,7 +31,6 @@ class gotomasses extends plugin
   
     /* Include config object */
     $this->config= $config;
-    $this->load_csv_data();
   }
 
 
@@ -49,6 +49,12 @@ class gotomasses extends plugin
 
   function execute()
   {
+    /* Load contents */
+    if(!$this->contents_initially_loaded){
+      $this->load_csv_data();
+      $this->contents_initially_loaded = TRUE;
+    }
+
     if(isset($_POST['export_gotomass_csv'])){
         $data = "";
         foreach($this->contents as $val){
@@ -72,22 +78,28 @@ class gotomasses extends plugin
    
     /* Import given file */ 
     if(isset($_POST['import_gotomass_csv']) && isset($_FILES['mass_file'])){
-      $str = @file_get_contents($_FILES['mass_file']['tmp_name']);
-      if(empty($str)){
-        print_red(_("The uploaded file seams to be empty, import aborted."));
+      if(!$this->acl_is_writeable("something")){
+        print_red(_("Your are not allowed to import csv data into this plugin."));
       }else{
-        $this->load_csv_data($str);
+        $str = @file_get_contents($_FILES['mass_file']['tmp_name']);
+        if(empty($str)){
+          print_red(_("The uploaded file seams to be empty, import aborted."));
+        }else{
+          $this->load_csv_data($str); 
+        }
       }
     }
 
     /* Add a new empty entry to the list */ 
     if(isset($_POST['add_new_entry'])){
-      $this->contents[] = array("MAC" => "", "OG" => "");
+      $this->contents[] = array("MAC" => "", "OG" => "","VALID_MAC" => FALSE);
     }
 
     /* Call parent execute */
     plugin::execute();
     $smarty= get_smarty();
+    $smarty->assign("is_writeable",$this->acl_is_writeable("something"));
+    $smarty->assign("is_readable", $this->acl_is_readable("something"));
     $smarty->assign("contents_modified",$this->contents_modified());
     $smarty->assign("ogs", $this->get_object_groups());
     $smarty->assign("contents", $this->contents);
@@ -123,6 +135,14 @@ class gotomasses extends plugin
 
   function load_csv_data($data = NULL)
   {
+    $ui = get_userinfo();
+
+    if(!$this->acl_is_readable("something")){
+      $this->contents =array(); 
+      print_red(_("Your are not allowed to view contents of this plugin."));
+      return(FALSE);
+    }
+
     if($data == NULL){
       if(!file_exists($this->file_to_read) || !is_readable($this->file_to_read)){
         print_red(sprintf(_("Can't locate or read csv storage file '%s'."),$this->file_to_read));
@@ -145,10 +165,11 @@ class gotomasses extends plugin
         $mac = preg_replace("/(,|;).*$/","",$str);
 
         if(!empty($og) || !empty($mac)){
-          $this->contents[] = array("MAC" => $mac , "OG" => $og);
+          $this->contents[] = array("MAC" => $mac , "OG" => $og,"VALID_MAC" => is_mac($mac));
         }
       }
       fclose($fp);
+      $this->contents_backup = $this->contents;
     }else{
       $this->contents =array(); 
       $rows = split("\n",$data);
@@ -159,16 +180,21 @@ class gotomasses extends plugin
         $mac = preg_replace("/(,|;).*$/","",$str);
 
         if(!empty($og) || !empty($mac)){
-          $this->contents[] = array("MAC" => $mac , "OG" => $og);
+          $this->contents[] = array("MAC" => $mac , "OG" => $og, "VALID_MAC" => is_mac($mac));
         }
       }
     }
-    $this->contents_backup = $this->contents;
   }
 
 
   function save_csv_data()
   {
+    if(!$this->acl_is_writeable("something")){
+      $this->contents =array(); 
+      print_red(_("Your are not allowed to write the content of this plugin."));
+      return(FALSE);
+    }
+
     if(!file_exists($this->file_to_read) || !is_writeable($this->file_to_read)){
       print_red(sprintf(_("Can't locate or write csv storage file '%s'."),$this->file_to_read));
     }else{
@@ -195,7 +221,8 @@ class gotomasses extends plugin
       $ogs = $this->get_object_groups();
       foreach($this->contents as $id => $data){
         if(isset($_POST['mac_'.$id])){
-          $this->contents[$id]['MAC'] = $_POST['mac_'.$id];
+          $this->contents[$id]['MAC']       = $_POST['mac_'.$id];
+          $this->contents[$id]['VALID_MAC'] = is_mac($_POST['mac_'.$id]);
         }
         if(isset($_POST['og_'.$id]) && in_array_ics($_POST['og_'.$id],$ogs)){
           $this->contents[$id]['OG'] = $_POST['og_'.$id];
@@ -237,13 +264,13 @@ class gotomasses extends plugin
   function plInfo()
   {
     return (array(
-        "plShortName"   => _("Mass machine deployment"),
-        "plDescription" => _("Mass machine deployment addon"),
+        "plShortName"   => _("System mass deployment"),
+        "plDescription" => _("Provide a mechanism to automatically activate a set of systems"),
         "plSelfModify"  => FALSE,
         "plDepends"     => array(),
         "plPriority"    => 0,
         "plSection"     => array("addon"),
-        "plCategory"    => array("gotomasses" => array("objectClass" => "none", "description" => _("Mass machine deployment"))),
+        "plCategory"    => array("gotomasses" => array("objectClass" => "none", "description" => _("System mass deployment"))),
         "plProvidedAcls" => array()
         ));
   }