Code

Replaced in_array calls for gosa-plugins
[gosa.git] / gosa-plugins / goto / admin / mimetypes / class_mimetypeGeneric.inc
index f5cb4d0aad5278ecfc7f5b429c34332211d3dd6a..76ae925e5e9df578b663fb365a0ff3b1c0738ee1 100644 (file)
@@ -37,6 +37,8 @@ class mimetype extends plugin
   var $DivApps                                                             = NULL;
   var $DivEApps                                                                    = NULL;
 
+  var $FAIstate ="";
+
   /* These vars will be copied too, if you use copy&paste mode */
   var $CopyPasteVars        = array("use_gotoMimeFilePattern","use_gotoMimeApplication","use_gotoMimeEmbeddedApplication","iconData",
                                     "gotoMimeLeftClickAction_I","gotoMimeLeftClickAction_E","gotoMimeLeftClickAction_Q","use_gotoMimeIcon");
@@ -104,7 +106,7 @@ class mimetype extends plugin
         $tmp = array();
         for($i = 0 ; $i < $this->attrs[$attr]['count'] ; $i ++){
           $str = $this->attrs[$attr][$i];
-          $tmp2= split("\|",$str);
+          $tmp2= explode("|",$str);
 
           if(count($tmp2) == 2){
             $name = $tmp2[0];
@@ -127,7 +129,7 @@ class mimetype extends plugin
         $this->base= dn2base($ui->dn);
       }
     } else {
-      $this->base= preg_replace ("/^[^,]+,[^,]+,/", "", $this->dn);
+      $this->base= preg_replace ("/^.*,".preg_quote(get_ou("mimetypeRDN"), '/')."/i", "", $this->dn);
     }
 
     /* Get icon data */
@@ -156,40 +158,9 @@ class mimetype extends plugin
 
     $tmp = $this->plInfo();
     foreach($tmp['plProvidedAcls'] as $name => $translation){
-      $smarty->assign($name."ACL",$this->getacl($name));
-    }
-
-    /* Base select dialog */
-    $once = true;
-    foreach($_POST as $name => $value){
-      if(preg_match("/^chooseBase/",$name) && $once){
-        $once = false;
-        $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases());
-        $this->dialog->setCurrentBase($this->base);
-      }
-    }
-
-    /* Dialog handling */
-    if(is_object($this->dialog)){
-
-      /* Must be called before save_object */
-      $this->dialog->save_object();
-
-      if($this->dialog->isClosed()){
-        $this->dialog = false;
-      }elseif($this->dialog->isSelected()){
-
-        /* A new base was selected, check if it is a valid one */
-        $tmp = $this->get_allowed_bases();
-        if(isset($tmp[$this->dialog->isSelected()])){
-          $this->base = $this->dialog->isSelected();
-        }
-
-        $this->dialog= false;
-      }else{
-        return($this->dialog->execute());
-      }
+      $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/i",$this->FAIstate)));
     }
+    $smarty->assign("IconReadable", preg_match("/r/",$this->getacl("gotoMimeIcon",preg_match("/freeze/i",$this->FAIstate))));
 
     /* Check Posts */
     $posts = array(    
@@ -205,81 +176,84 @@ class mimetype extends plugin
     $once = true;
 
     /* Walk through posts and try to find some commands for us. */
-    foreach($_POST as $name => $value){
-
-      /* Walk through possible commands */
-      foreach($posts as $regex => $action){
-
-        /* Check if there is a command posted */
-        if(preg_match($regex,$name) && $once){
-          $once = false;
-
-          /* Get action vars */
-          $func                = $action['Func'];              // Get function name 
-          $attr                = $action['Attr'];              // Get attribute name
-
-          /* Get entry id */
-          $s_entry     = preg_replace($regex,"",$name);
-          $s_entry     = preg_replace("/_[xy]$/","",$s_entry); 
-
-          /* Execute a command with the given attribute and entry 
-             e.g. $this->gotoMimeFilePattern = $this->ArrayUp(3,$this->gotoMimeFilePattern) */
-          if($this->acl_is_writeable($attr)){
-            $this->$attr= $this->$func($s_entry,$this->$attr,true);                                     
+    if(!preg_match("/freeze/i",$this->FAIstate)){
+      foreach($_POST as $name => $value){
+
+        /* Walk through possible commands */
+        foreach($posts as $regex => $action){
+
+          /* Check if there is a command posted */
+          if(preg_match($regex,$name) && $once){
+            $once = false;
+
+            /* Get action vars */
+            $func              = $action['Func'];              // Get function name 
+            $attr              = $action['Attr'];              // Get attribute name
+            $acl_a             = preg_replace("/^use_/","",$action['Attr']);           // Get attribute name
+
+            /* Get entry id */
+            $s_entry   = preg_replace($regex,"",$name);
+            $s_entry   = preg_replace("/_[xy]$/","",$s_entry); 
+
+            /* Execute a command with the given attribute and entry 
+               e.g. $this->gotoMimeFilePattern = $this->ArrayUp(3,$this->gotoMimeFilePattern) */
+            if($this->acl_is_writeable($acl_a)){
+              $this->$attr= $this->$func($s_entry,$this->$attr,true);                                   
+            }
           }
         }
       }
-    }
-
-    /* Set a new icon was requested */
-    if(isset($_POST['update_icon']) && (isset($_FILES['picture_file']['name']))){
-      $this->set_new_picture($_FILES['picture_file']['tmp_name']);             
-    }
-
-    /* Add gotoMimeFilePattern */
-    if(isset($_POST['AddNewFilePattern']) && isset($_POST['NewFilePattern'])){
-      if($this->acl_is_writeable("gotoMimeFilePattern")){
-        $str = $_POST['NewFilePattern'];
-        if(!empty($str)){
-          $this->use_gotoMimeFilePattern[] = $str;
-        }
-      }
-    }  
 
-    /* Add gotoMimeFilePattern */
-    if(isset($_POST['AddNewApplication']) && 
-            (isset($_POST['NewApplication']) || isset($_POST['NewApplicationSelect']))){
-      if($this->acl_is_writeable("gotoMimeApplication")){
-        $str = "";
-        if(isset($_POST['NewApplicationSelect']) && !empty($_POST['NewApplicationSelect'])){
-          $str = get_post("NewApplicationSelect");
-        }
-        if(isset($_POST['NewApplication']) && !empty($_POST['NewApplication'])){
-          $str = get_post("NewApplication");
-        }
-        if(!empty($str) && !in_array($str,$this->use_gotoMimeApplication)){
-          $this->use_gotoMimeApplication[] = $str;
-        }
+      /* Set a new icon was requested */
+      if(isset($_POST['update_icon']) && (isset($_FILES['picture_file']['name']))){
+        $this->set_new_picture($_FILES['picture_file']['tmp_name']);           
       }
-    }  
 
-    /* Add embedded application 
-     *  - From input or from select box 
-     */
-    if(isset($_POST['AddNewEmbeddedApplication']) && 
-            (isset($_POST['NewEmbeddedApplication']) || isset($_POST['NewEmbeddedApplicationSelect']))){
-      if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){
-        $str = "";
-        if(isset($_POST['NewEmbeddedApplicationSelect']) && !empty($_POST['NewEmbeddedApplicationSelect'])){
-          $str = get_post('NewEmbeddedApplicationSelect');
+      /* Add gotoMimeFilePattern */
+      if(isset($_POST['AddNewFilePattern']) && isset($_POST['NewFilePattern'])){
+        if($this->acl_is_writeable("gotoMimeFilePattern")){
+          $str = trim($_POST['NewFilePattern']);
+          if($str != ""){
+            $this->use_gotoMimeFilePattern[] = $str;
+          }
         }
-        if(isset($_POST['NewEmbeddedApplication']) && !empty($_POST['NewEmbeddedApplication'])){
-          $str = get_post('NewEmbeddedApplication');
+      }        
+
+      /* Add gotoMimeFilePattern */
+      if(isset($_POST['AddNewApplication']) && 
+          (isset($_POST['NewApplication']) || isset($_POST['NewApplicationSelect']))){
+        if($this->acl_is_writeable("gotoMimeApplication")){
+          $str = "";
+          if(isset($_POST['NewApplicationSelect']) && !empty($_POST['NewApplicationSelect'])){
+            $str = trim(get_post("NewApplicationSelect"));
+          }
+          if(isset($_POST['NewApplication']) && !empty($_POST['NewApplication'])){
+            $str = trim(get_post("NewApplication"));
+          }
+          if($str != "" && !in_array_strict($str,$this->use_gotoMimeApplication)){
+            $this->use_gotoMimeApplication[] = $str;
+          }
         }
-        if(!empty($str) && !in_array($str,$this->use_gotoMimeEmbeddedApplication)){
-          $this->use_gotoMimeEmbeddedApplication[] = $str;
+      }        
+
+      /* Add embedded application 
+       *  - From input or from select box 
+       */
+      if(isset($_POST['AddNewEmbeddedApplication']) && 
+          (isset($_POST['NewEmbeddedApplication']) || isset($_POST['NewEmbeddedApplicationSelect']))){
+        if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){
+          $str = "";
+          if(isset($_POST['NewEmbeddedApplicationSelect']) && !empty($_POST['NewEmbeddedApplicationSelect'])){
+            $str = trim(get_post('NewEmbeddedApplicationSelect'));
+          }
+          if(isset($_POST['NewEmbeddedApplication']) && !empty($_POST['NewEmbeddedApplication'])){
+            $str = trim(get_post('NewEmbeddedApplication'));
+          }
+          if($str != "" && !in_array_strict($str,$this->use_gotoMimeEmbeddedApplication)){
+            $this->use_gotoMimeEmbeddedApplication[] = $str;
+          }
         }
-      }
+      }        
     }  
 
     /* Create divlists */
@@ -291,7 +265,7 @@ class mimetype extends plugin
     $DivEApps          -> SetHeight(100);
 
 
-    if($this->acl_is_writeable("gotoMimeFilePattern")){
+    if($this->acl_is_writeable("gotoMimeFilePattern") && !preg_match("/freeze/i",$this->FAIstate)){
       $Pattern_Actions= " <input type='image' src='images/lists/sort-up.png'   class='center'  name='Pattern_SortUp_%s' >&nbsp;
       <input type='image' src='images/lists/sort-down.png'     class='center'  name='Pattern_SortDown_%s'>&nbsp;
       <input type='image' src='images/lists/trash.png' class='center'  name='Pattern_Remove_%s'>";
@@ -299,7 +273,7 @@ class mimetype extends plugin
       $Pattern_Actions= "";    
     }
 
-    if($this->acl_is_writeable("gotoMimeApplication")){
+    if($this->acl_is_writeable("gotoMimeApplication") && !preg_match("/freeze/i",$this->FAIstate)){
       $Apps_Actions    = " <input type='image' src='images/lists/sort-up.png'  class='center'  name='Apps_SortUp_%s' >&nbsp;
       <input type='image' src='images/lists/sort-down.png'     class='center'  name='Apps_SortDown_%s'>&nbsp;
       <input type='image' src='images/lists/trash.png' class='center'  name='Apps_Remove_%s'>";
@@ -307,7 +281,7 @@ class mimetype extends plugin
       $Apps_Actions= "";       
     }
 
-    if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){
+    if($this->acl_is_writeable("gotoMimeEmbeddedApplication") && !preg_match("/freeze/i",$this->FAIstate)){
       $EApps_Actions   = " <input type='image' src='images/lists/sort-up.png'  class='center'  name='EApps_SortUp_%s' >&nbsp;
       <input type='image' src='images/lists/sort-down.png'     class='center'  name='EApps_SortDown_%s'>&nbsp;
       <input type='image' src='images/lists/trash.png' class='center'  name='EApps_Remove_%s'>";
@@ -369,7 +343,7 @@ class mimetype extends plugin
 
   function save_object()
   {
-    if(isset($_POST['MimeGeneric'])){
+    if(isset($_POST['MimeGeneric']) && !preg_match("/freeze/i",$this->FAIstate)){
 
       /* Create a base backup and reset the
          base directly after calling plugin::save_object();
@@ -522,7 +496,7 @@ class mimetype extends plugin
   function check()
   {
     $message = plugin::check();
-    if(empty($this->cn)){
+    if($this->cn == "" ){
       $message[] = msgPool::required(_("Name"));
     }
     if(!count($this->use_gotoMimeFilePattern)){
@@ -536,7 +510,7 @@ class mimetype extends plugin
     if($this->is_release()){
       $base = $this->parent->parent->mime_release;
     }else{
-      $base = get_ou("mimetypeou").$this->base;
+      $base = get_ou("mimetypeRDN").$this->base;
     }
 
     $ldap->ls("(&(objectClass=gotoMimeType)(cn=".$this->cn."))",$base,array("cn"));
@@ -565,7 +539,7 @@ class mimetype extends plugin
   function set_new_picture($filename)
   {
     if (empty($filename)){
-      $filename= "./images/default_icon.png";
+      $filename= "./plugins/goto/images/default_icon.png";
       $this->use_gotoMimeIcon= "*removed*";
     }else{
       $this->use_gotoMimeIcon= $filename;