Code

Implemented new acls methods
[gosa.git] / plugins / personal / environment / class_environment.inc
index 3dac6a487a5d3d8f43ebf42ced057542b03cd471..547b6dd32721b738ca4307ce70b8bbf4f7e465b4 100644 (file)
@@ -26,11 +26,11 @@ class environment extends plugin
   var $gotoProfileServer  = "";     // Specifies the selected profile server
   var $gotoProfileServers = array();// Specifies all available and selectable servers
   var $gotoProfileFlags   = "";     // Flags enabled  ? only used to set ACL and save 
-  var $gotoProfileFlag_C  = "";     // Flag is set to C if we have the profile caching fucntion enabled 
+  var $gotoProfileFlagC  = "";     // Flag is set to C if we have the profile caching fucntion enabled 
   
   var $gotoXResolution    = "auto";     // The selected resolution eg: 1024x768
   var $gotoXResolutions   = array();// Contains all available resolutions for this account
-  var $gotoProfileFlag_L  = "";     // Flag is set to L to enable runtime resolution change 
+  var $gotoProfileFlagL  = "";     // Flag is set to L to enable runtime resolution change 
   var $gotoProfileQuota   = "";     // User Quota Settings
 
   /* Logon script section*/
@@ -61,7 +61,7 @@ class environment extends plugin
   /* general settings */
   // Sets the attributes which will kept on page reload, which will be saved, ...
 
-  var $CopyPasteVars      = array("gotoHotplugDevices","newKioskProfiles","gotoAvailableShares","gotoShareSelections","gotoPrinterSel","gotoProfileFlag_L","gotoXResolutions","gotoProfileFlag_C","gotoProfileServers","useProfile","is_group","in_dialog","OrigCn");
+  var $CopyPasteVars      = array("gotoHotplugDevices","newKioskProfiles","gotoAvailableShares","gotoShareSelections","gotoPrinterSel","gotoProfileFlagL","gotoXResolutions","gotoProfileFlagC","gotoProfileServers","useProfile","is_group","in_dialog","OrigCn");
 
   var $attributes         = array("uid","gotoProfileServer","gotoProfileFlags",
                                     "gotoXResolution","gotoProfileQuota",
@@ -162,7 +162,14 @@ class environment extends plugin
         $tmp = split("\|",$share);
         $tmp2['server']      =$tmp[0];
         $tmp2['name']        =$tmp[1];
-        $tmp2['mountPoint']  =$tmp[2];
+        
+        /* Decode base64 if needed */
+        if (!preg_match('%/%', $tmp[2])){
+          $tmp2['mountPoint']  =base64_decode($tmp[2]);
+        } else {
+          $tmp2['mountPoint']  =$tmp[2];
+        }
+
         if(isset($tmp[3])){
           $tmp2['PwdHash']  =$tmp[3];
         }else{
@@ -179,11 +186,11 @@ class environment extends plugin
 
     for($i = 0 ; $i < strlen($this->gotoProfileFlags) ; $i ++){
       $chr = $this->gotoProfileFlags[$i];
-      $name = "gotoProfileFlag_".$chr;
+      $name = "gotoProfileFlag".$chr;
       $this->$name=$chr;
     }
 
-    if((!empty($this->gotoProfileServer))||($this->gotoProfileFlag_C=="C")){
+    if((!empty($this->gotoProfileServer))||($this->gotoProfileFlagC=="C")){
       $this->useProfile = true;
     }else{
       $this->useProfile = false;
@@ -250,12 +257,7 @@ class environment extends plugin
     }
 
     /* Prepare ACL settings*/
-    if(chkacl($this->acl,$s_attr)=="") {
-      $smarty->assign($s_attr."ACL","");
-    }else{
-      $smarty->assign($s_attr."ACL"," disabled ");
-    }
-
+    $smarty->assign($s_attr."ACL",$this->getacl($s_attr));
   }
 
   /* Is accout enabled | are we editing from usermenu or admin menu 
@@ -366,42 +368,25 @@ class environment extends plugin
       }
     
       /* Prepare ACL settings*/
-      if(chkacl($this->acl,$s_attr)=="") {
-        $smarty->assign($s_attr."ACL","");
-      }else{
-        $smarty->assign($s_attr."ACL"," disabled ");
-      }
+      $smarty->assign($s_attr."ACL",$this->getacl($s_attr));
  
     }
 
-    foreach(array("gotoHotplugDevice","gotoPrinterSel") as $s_attr){
-      if(chkacl($this->acl,$s_attr)=="") {
-        $smarty->assign($s_attr."ACL","");
-      }else{
-        $smarty->assign($s_attr."ACL"," disabled ");
-      }
+    foreach(array("gotoHotplugDevice","gotoProfileFlagC","gotoProfileFlagL") as $s_attr){
+      $smarty->assign($s_attr."ACL",$this->getacl($s_attr));
     }
 
     if(empty($this->useProfile)){
-      $smarty->assign("gotoProfileACL","disabled");
       $smarty->assign("useProfileCHK","");
+      $smarty->assign("gotoProfileServerACL" , preg_replace("/w/","",$this->getacl("gotoProfileServer")));
+      $smarty->assign("gotoProfileQuotaACL" , preg_replace("/w/","",$this->getacl("gotoProfileQuota")));
+      $smarty->assign("gotoProfileFlagCACL" , preg_replace("/w/","",$this->getacl("gotoProfileFlagC")));
     }else{
-      $smarty->assign("gotoProfileACL","");
       $smarty->assign("useProfileCHK"," checked ");
     }
-
-    $smarty->assign("useProfileACL","");
-    if($this->acl != "#none#"){
-      $smarty->assign("useProfileACL","");
-      $smarty->assign("gotoProfileFlag_CACL"," ");
-      $smarty->assign("gotoProfileQuotaACL"," ");
-    }else{
-      $smarty->assign("gotoProfileFlag_CACL"," disabled ");
-      $smarty->assign("useProfileACL","disabled");
-      $smarty->assign("gotoProfileServer"," disabled ");
-      $smarty->assign("gotoProfileQuotaACL"," disabled ");
-    }
+   
+     
+    $smarty->assign("gotoProfileACL", $this->getacl("gotoProfileServer").$this->getacl("gotoProfileQuota"));
 
     /* HANDLE Profile Settings here 
      * Assign available Quota and resolution settings
@@ -410,16 +395,16 @@ class environment extends plugin
      * Assign this all to Smarty 
      */
 
-    if(empty($this->gotoProfileFlag_L)){
-      $smarty->assign("gotoProfileFlag_LCHK"," ");
+    if(empty($this->gotoProfileFlagL)){
+      $smarty->assign("gotoProfileFlagLCHK"," ");
     }else{
-      $smarty->assign("gotoProfileFlag_LCHK"," checked ");
+      $smarty->assign("gotoProfileFlagLCHK"," checked ");
     }
 
-    if(empty($this->gotoProfileFlag_C)){
-      $smarty->assign("gotoProfileFlag_CCHK"," ");
+    if(empty($this->gotoProfileFlagC)){
+      $smarty->assign("gotoProfileFlagCCHK"," ");
     }else{
-      $smarty->assign("gotoProfileFlag_CCHK"," checked ");
+      $smarty->assign("gotoProfileFlagCCHK"," checked ");
     }
 
 
@@ -782,19 +767,6 @@ class environment extends plugin
       }
       return($disp);
     }
-    if($this->acl != "#none#"){
-      $smarty->assign("useProfileACL","");
-    }else{
-      $smarty->assign("gotoProfileFlag_CACL"," disabled ");
-      $smarty->assign("gotoProfileServerACL"," disabled ");
-      $smarty->assign("gotoProfileQuotaACL"," disabled ");
-    }
-
-    if(!$this->useProfile){
-      $smarty->assign("gotoProfileFlag_CACL"," disabled ");
-      $smarty->assign("gotoProfileServerACL"," disabled ");
-      $smarty->assign("gotoProfileQuotaACL"," disabled ");
-    }
 
     /* Als smarty vars are set. Get smarty template and generate output */
     $display.= $smarty->fetch(get_template_path('environment.tpl', TRUE,dirname(__FILE__)));
@@ -848,15 +820,15 @@ class environment extends plugin
       }else{
         $this->useProfile = false;
       }
-      if(isset($_POST['gotoProfileFlag_C'])){
-        $this->gotoProfileFlag_C = $_POST['gotoProfileFlag_C'];
+      if(isset($_POST['gotoProfileFlagC'])){
+        $this->gotoProfileFlagC = $_POST['gotoProfileFlagC'];
       }else{
-        $this->gotoProfileFlag_C = false;
+        $this->gotoProfileFlagC = false;
       }
-      if(isset($_POST['gotoProfileFlag_L'])){
-        $this->gotoProfileFlag_L = $_POST['gotoProfileFlag_L'];
+      if(isset($_POST['gotoProfileFlagL'])){
+        $this->gotoProfileFlagL = $_POST['gotoProfileFlagL'];
       }else{
-        $this->gotoProfileFlag_L = false;
+        $this->gotoProfileFlagL = false;
       }
 
       $tmp= $this->gosaDefaultPrinter;
@@ -944,12 +916,6 @@ class environment extends plugin
       }
     }
 
-
-    /* Save usersettings to Printer */
-    if(chkacl($this->acl,"gotoPrinter")!=""){
-      $this->gotoPrinter = array();
-    }  
-    
     /* 1. Search all printers that have our uid/cn as member 
      * 2. Delete this uid/cn from every single entry and save it again.
      * 2.1 There are different types of members: Users / Groups, this will be defined in $suffix
@@ -1019,7 +985,11 @@ class environment extends plugin
     /* Prepare Shares */
     $this->attrs['gotoShare']=array();
     foreach($this->gotoShares as $name => $share){
-      $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$share['mountPoint']."|".$share['PwdHash']."|".$share['Username'];
+      $mntp= $share['mountPoint'];
+      if (!preg_match('=^[a-z0-9+_/%-]+$=i', $mntp)){
+        $mntp= base64_encode($mntp);
+      }
+      $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$mntp."|".$share['PwdHash']."|".$share['Username'];
     }
 
 
@@ -1035,7 +1005,7 @@ class environment extends plugin
     }
  
     /* Prepare Flags */
-    $this->attrs['gotoProfileFlags'] = array($this->gotoProfileFlag_C.$this->gotoProfileFlag_L);
+    $this->attrs['gotoProfileFlags'] = array($this->gotoProfileFlagC.$this->gotoProfileFlagL);
     if(empty($this->attrs['gotoProfileFlags'][0])){
       $this->attrs['gotoProfileFlags']=array();
       }
@@ -1045,14 +1015,6 @@ class environment extends plugin
       $this->attrs['gotoProfileServer']= array(); 
     }
 
-    foreach($this->attributes as $s_attr){
-      if(chkacl($this->acl,$s_attr)!="") {
-        if(isset($this->attrs[$s_attr])){
-          unset($this->attrs[$s_attr]);
-        }
-      }
-    }
-
     $ldap->cat ($this->dn, array('dn'));
     if ($ldap->fetch()){
       $mode= "modify";
@@ -1152,16 +1114,20 @@ function printOutHotPlugDevices()
                                                                         "description" => _("Command to extend the list of possible screen resolutions"))),
 
                   "plProvidedAcls"  => array(
+
+                    "gotoProfileFlagL"    => _("Resolution changeable during session") ,
+                    "gotoProfileFlagC"    => _("Cache profile localy") ,
+
+                    "gotoProfileQuota"    => _("Profile quota") ,
                     "gotoProfileServer"   => _("Profile server") ,
-                    "gotoProfileFlag_L"   => _("Resolution changeable during session") ,
-                    "gotoProfileFlag_C"   => _("Cache profile localy") ,
+
                     "gotoXResolution"     => _("Resolution") ,
-                    "gotoProfileQuota"    => _("Profile quota") ,
-                    "gotoLogonScripts"    => _("Logon script") ,
-                    "gotoPrinter"         => _("Printer") ,
-                    "gosaDefaultPrinter"  => _("Default printer") ,
                     "gotoKioskProfile"    => _("Kiosk profile") ,
-                    "gotoShare"           => _("Shares")),
+
+                    "gosaDefaultPrinter"  => _("Default printer") ,
+                    "gotoLogonScript"     => _("Logon script") ,
+                    "gotoHotplugDevice"   => _("Hotplug devices"),
+                    "gotoShare"           => _("Shares"))
                    ));
     }
 }