Code

Added mirror url support
[gosa.git] / plugins / admin / applications / class_applicationGeneric.inc
index 8ef8bb24e0d53f0d4e88025103fb85007ea8a96f..34ab301b7394030bafc1a9162983469c9db5c90a 100644 (file)
@@ -14,6 +14,7 @@ class application extends plugin
   var $gosaApplicationName= "";
   var $gosaApplicationFlags= "";
   var $gosaApplicationIcon= "";
+  var $gotoLogonScript ="";
   var $iconData;
 
   /* Headpage attributes */
@@ -22,7 +23,7 @@ class application extends plugin
 
   /* attribute list for save action */
   var $attributes= array("cn", "description", "gosaApplicationExecute", "gosaApplicationName",
-                       "gosaApplicationFlags");
+                       "gosaApplicationFlags","gotoLogonScript");
   var $objectclasses= array("top", "gosaApplication");
 
   function application ($config, $dn= NULL)
@@ -37,20 +38,74 @@ class application extends plugin
        if ($this->iconData == ""){
                $this->set_picture("");
        }
-       $_SESSION['picture']= $this->iconData;
+       $_SESSION['binary']= $this->iconData;
+       $_SESSION['binarytype']= "image/jpeg";
        $this->gosaApplicationIcon= $this->iconData;
 
        /* This is always an account */
        $this->is_account= TRUE;
 
        if ($this->dn == "new"){
-               $ui= get_userinfo();
-               $this->base= dn2base($ui->dn);
+               if(isset($_SESSION['appfilter']['depselect'])){
+                       $this->base=$_SESSION['appfilter']['depselect'];
+               }else{
+                       $ui= get_userinfo();
+                       $this->base= dn2base($ui->dn);
+               }
        } else {
                $this->base= preg_replace ("/^[^,]+,[^,]+,/", "", $this->dn);
        }
   }
 
+  function generateTempalte(){
+       $str =  "# This code is part of GOsa (https://gosa.gonicus.de)\n".
+                       "#\n".
+            "# This program is free software; you can redistribute it and/or modify\n".
+            "# it under the terms of the GNU General Public License as published by\n".
+            "# the Free Software Foundation; either version 2 of the License, or\n".
+            "# (at your option) any later version.\n".
+            "#\n".
+            "# This program is distributed in the hope that it will be useful,\n".
+            "# but WITHOUT ANY WARRANTY; without even the implied warranty of\n".
+            "# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n".
+            "# GNU General Public License for more details.\n".
+            "#\n".
+            "# You should have received a copy of the GNU General Public License\n".
+            "# along with this program; if not, write to the Free Software\n".
+            "# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n".
+            "#\n";
+
+       $vars = ($this->attrs['gosaApplicationParameter']);
+       unset($vars['count']);
+
+
+       $str .="# This plugin handles these environment variables:\n";
+
+       foreach($vars as $var){
+               if(preg_match("/\:/",$var)){
+                       $stra   = split(":",$var);
+                       $Name   = $stra[0];
+                       $Value  = $stra[1];
+               }else{
+                       $Name   = $var;
+                       $Value  = "";
+               }
+               for($i = strlen($Name);$i < 25 ; $i++){
+                       $Name.=" ";
+               }
+               if(!empty($Value)){
+                       $str.= "# ".$Name."\t\t(e.g. ".$Value.")\n";
+               }else{
+                       $str.= "# ".$Name."\n";
+               }
+       }
+       $str .= "#\n".
+                       "# Don't remove the following tag, it is used for header update.\n".
+                       "### END HEADER ###";
+       return($str);
+  }
+
   function execute()
   {
        /* Do we represent a valid group? */
@@ -59,7 +114,25 @@ class application extends plugin
                         _("This 'dn' is no application.")."</b>";
                 return ($display);
        }
-  
+
+       if(isset($_POST['ScriptTemplate'])){
+               $head = $this->generateTempalte();
+               $scr  = $this->gotoLogonScript; 
+               
+               if(preg_match("/### END HEADER ###/",$scr)){
+                       $pos = strrpos($scr,"### END HEADER ###");
+                       $pos = $pos + strlen("### END HEADER ###");
+                       $scr=substr($scr,$pos,(strlen($scr)));
+               }
+
+               $this->gotoLogonScript = $head.$scr;
+       }
+       
+       if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile']))){
+               $str = file_get_contents($_FILES['ScriptFile']['tmp_name']);
+               $this->gotoLogonScript = $str;
+       }
        /* Fill templating stuff */
        $smarty= get_smarty();
        $smarty->assign("cn", $this->cn);
@@ -91,6 +164,7 @@ class application extends plugin
                        $smarty->assign("$val", "");
                }
        }
+       $smarty->assign("gotoLogonScript",$this->gotoLogonScript);
        $smarty->assign("base_select", $this->base);
        $smarty->assign("gosaApplicationFlagsACL", chkacl($this->acl, "gosaApplicationFlags"));
 
@@ -129,6 +203,7 @@ class application extends plugin
   function save_object()
   {
        if (isset($_POST['cn'])){
+       
                plugin::save_object();
 
                /* Save application flags */
@@ -240,6 +315,11 @@ class application extends plugin
        if ($this->cn == ""){
                $message[]= _("Required field 'Name' is not filled.");
        }
+
+       if(preg_match("/[^a-z0-9]/",$this->cn)) {
+               $message[]=_("Invalid character in application name. Only a-z 0-9 are allowed.");
+       }
+
        if ($this->gosaApplicationExecute == ""){
                $message[]= _("Required field 'Execute' is not filled.");
        }
@@ -291,7 +371,8 @@ class application extends plugin
        if (file_exists($filename)){
                $fd = fopen ($filename, "rb");
                $this->iconData= fread ($fd, filesize ($filename));
-               $_SESSION['picture']= $this->iconData;
+               $_SESSION['binary']= $this->iconData;
+               $_SESSION['binarytype']= "image/jpeg";
                $this->gosaApplicationIcon= $this->iconData;
 
                fclose ($fd);