Code

Removed a couple of normalize_preg calls
[gosa.git] / gosa-plugins / goto / admin / applications / class_applicationGeneric.inc
index 09c530577c95634d54eec9fffd46df6a2548207c..f8364a09999fc3dd0ae42a310269a1fce468605c 100644 (file)
@@ -26,6 +26,7 @@ class application extends plugin
       "gosaApplicationFlags","gotoLogonScript");
 
   var $objectclasses= array("top", "gosaApplication");
+  var $FAIstate ="";
 
   function application (&$config, $dn= NULL, $parent= NULL)
   {
@@ -56,7 +57,7 @@ class application extends plugin
         $this->base= dn2base($ui->dn);
       }
     } else {
-      $this->base= preg_replace ("/^[^,]+,".get_ou('applicationou')."/", "", $this->dn);
+      $this->base= preg_replace ("/^[^,]+,".get_ou('applicationRDN')."/", "", $this->dn);
     }
 
     $this->orig_cn = $this->cn;
@@ -115,8 +116,9 @@ class application extends plugin
 
     $tmp = $this->plInfo();
     foreach($tmp['plProvidedAcls'] as $name => $translation){
-      $smarty->assign($name."ACL",$this->getacl($name));
+      $smarty->assign($name."ACL",$this->getacl($name, preg_match("/freeze/i",$this->FAIstate)));
     }
+    $smarty->assign("IconReadable", $this->acl_is_readable("gosaApplicationIcon"));
  
     /* Do we represent a valid group? */
     if (!$this->is_account && $this->parent === NULL){
@@ -144,7 +146,7 @@ class application extends plugin
     $head = $this->generateTemplate();
     $this->gotoLogonScript= $this->generateTemplate().preg_replace('/.*### END HEADER ###/s', '', $this->gotoLogonScript);
 
-    if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile']))){
+    if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile'])) && !preg_match("/freeze/i",$this->FAIstate)){
       $str = file_get_contents($_FILES['ScriptFile']['tmp_name']);
       $this->gotoLogonScript = $str;
     }
@@ -167,7 +169,7 @@ class application extends plugin
     /* Base select dialog */
     $once = true;
     foreach($_POST as $name => $value){
-      if(preg_match("/^chooseBase/",$name) && $once){
+      if(preg_match("/^chooseBase/",$name) && $once && !preg_match("/freeze/i",$this->FAIstate)){
         $once = false;
         $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases());
         $this->dialog->setCurrentBase($this->base);
@@ -204,10 +206,10 @@ class application extends plugin
     }
 
     /* Checkboxes */
-    foreach (array("G" => "exec_for_groupmembers", "O" => "overwrite_config",
-          "L" => "place_on_kicker",
-          "D" => "place_on_desktop", "M" => "place_in_startmenu") as $key => $val){
-      if (preg_match("/$key/", $this->gosaApplicationFlags)){
+    foreach (array("G" => "execForGroupmembers", "O" => "overwriteConfig",
+          "L" => "placeOnKicker",
+          "D" => "placeOnDesktop", "M" => "placeInStartmenu") as $key => $val){
+      if (preg_match("/$key/", $this->gosaApplicationFlags) && $this->acl_is_readable("$val")){
         $smarty->assign("$val", "checked");
       } else {
         $smarty->assign("$val", "");
@@ -227,7 +229,7 @@ class application extends plugin
     restore_error_handler();
 
     /* Parse release out of object dn */
-    $release = preg_replace("/".get_ou("applicationou").normalizePreg($this->base)."$/","",$this->dn);
+    $release = preg_replace("/".get_ou("applicationRDN").preg_quote($this->base)."$/","",$this->dn);
     $release = preg_replace("/^cn=[^,]+,/","",$release);
 
     /* Get a list of all groups 
@@ -247,7 +249,7 @@ class application extends plugin
       $ldap->cd($release.$group);
       $ldap->search("(objectClass=gotoMenuEntry)",array("dn"));
       while($attrs = $ldap->fetch()){
-        $info = preg_replace("/".normalizePreg($release.$group)."$/","",$attrs['dn']); 
+        $info = preg_replace("/".preg_quote($release.$group)."$/","",$attrs['dn']); 
         if(preg_match("/^cn=".$this->cn."/",$info) && !preg_match("/ou=[^,]+,/",$info)){
           $found[] = $attrs['dn'];
         }
@@ -288,6 +290,10 @@ class application extends plugin
   /* Save data to object */
   function save_object()
   {
+    if(preg_match("/freeze/i",$this->FAIstate)){
+      return;
+    }
+
     if (isset($_POST['cn'])){
 
       /* Create a base backup and reset the
@@ -300,25 +306,22 @@ class application extends plugin
       /* Save attributes */
       parent::save_object();
 
+      $checks = array("execForGroupmembers" => "G",
+                      "placeOnDesktop"      => "D",
+                      "placeOnKicker"       => "L",
+                      "placeInStartmenu"    => "M",
+                      "overwriteConfig"     => "O");
+
       /* Save application flags */
-      $flag= "";
-      if (isset($_POST['exec_for_groupmembers']) && $_POST['exec_for_groupmembers'] == 1){
-        $flag.= "G";
-      }
-      if (isset($_POST['place_on_desktop']) && $_POST['place_on_desktop'] == 1){
-        $flag.= "D";
-      }
-      if (isset($_POST['place_on_kicker']) && $_POST['place_on_kicker'] == 1){
-        $flag.= "L";
-      }
-      if (isset($_POST['place_in_startmenu']) && $_POST['place_in_startmenu'] == 1){
-        $flag.= "M";
-      }
-      if (isset($_POST['overwrite_config']) && $_POST['overwrite_config'] == 1){
-        $flag.= "O";
-      }
-      if ($this->acl_is_writeable("gosaApplicationFlags")){
-        $this->gosaApplicationFlags= "[$flag]";
+      foreach($checks as $name => $flag){
+        if($this->acl_is_writeable($name)){
+          $set = isset($_POST[$name]) && $_POST[$name] == 1;
+          if(!$set && preg_match("/".$flag."/",$this->gosaApplicationFlags)){
+            $this->gosaApplicationFlags = preg_replace("/".$flag."/","",$this->gosaApplicationFlags);  
+          }elseif($set && !preg_match("/".$flag."/",$this->gosaApplicationFlags)){
+            $this->gosaApplicationFlags = preg_replace("/]/",$flag."]",$this->gosaApplicationFlags); 
+          }
+        }  
       }
 
       /* Remove current picture */
@@ -410,7 +413,7 @@ class application extends plugin
 
     /* Permissions for that base? */
     if ($this->base != ""){
-      $new_dn= "cn=".$this->cn.",".get_ou('applicationou').$this->base;
+      $new_dn= "cn=".$this->cn.",".get_ou('applicationRDN').$this->base;
     } else {
       $new_dn= $this->dn;
     }
@@ -425,8 +428,8 @@ class application extends plugin
       $message[]= msgPool::required(_("Name"));
     }
 
-    if(preg_match("/[^a-z0-9]/",$this->cn))    {
-      $message[]=msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9]*$/");
+    if(preg_match("/[^a-z0-9_-]/",$this->cn))  {
+      $message[]=msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9_-]*$/");
     }
 
     if ($this->gosaApplicationExecute == ""){
@@ -442,7 +445,7 @@ class application extends plugin
     if($this->is_release()){
       $base = $this->parent->parent->app_release;
     }else{
-      $base = get_ou('applicationou').$this->base;
+      $base = get_ou('applicationRDN').$this->base;
     }
 
     $ldap->ls("(&(objectClass=gosaApplication)(cn=".$this->cn."))",$base,array("cn"));
@@ -457,7 +460,7 @@ class application extends plugin
      */
     if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){
       $message[] = msgPool::permCreate();
-    }elseif($this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){
+    }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){
       $message[] = msgPool::permMove();
     }
 
@@ -529,7 +532,7 @@ class application extends plugin
   function set_picture($filename)
   {
     if (!is_file($filename)){
-      $filename= "./images/default_icon.png";
+      $filename= "./plugins/goto/images/default_icon.png";
       $this->gosaApplicationIcon= "*removed*";
     }
 
@@ -603,14 +606,13 @@ class application extends plugin
             "gosaApplicationExecute"  => _("Execute"),
             "gosaApplicationName"     => _("Name"),
             "gosaApplicationIcon"     => _("Icon"),
-            "gosaApplicationFlags"    => _("Flag"),
             "gotoLogonScript"         => _("Script content"),
 
-            "exec_for_groupmembers" => _("Only executable for members"),              // G
-            "place_on_desktop"      => _("Place icon on members desktop"),            // D
-            "place_on_kicker"       => _("Place entry in members launch bar"),        // L
-            "place_in_startmenu"    => _("Place entry in members startmenu"),         // M
-            "overwrite_config"      => _("Replace user configuration on startup"))  // O
+            "execForGroupmembers" => _("Only executable for members"),              // G
+            "placeOnDesktop"      => _("Place icon on members desktop"),            // D
+            "placeOnKicker"       => _("Place entry in members launch bar"),        // L
+            "placeInStartmenu"    => _("Place entry in members startmenu"),         // M
+            "overwriteConfig"      => _("Replace user configuration on startup"))  // O
             ));
   }
 }