Code

Fixed o
[gosa.git] / plugins / personal / environment / class_kioskManagementDialog.inc
1 <?php
3 class kioskManagementDialog extends plugin
4 {
5   /* CLI vars */
6   var $cli_summary          = "Manage server basic objects";
7   var $cli_description      = "Some longer text\nfor help";
8   var $cli_parameters       = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
10   /* attribute list for save action */
11   var $ignore_account       = TRUE;
12   var $attributes           = array("filesToAttach");
13   var $objectclasses        = array("whatever");
14   var $use_existing         = false;  
15   var $filesToAttach        = array();
17   var $baseDir              = "../kiosk/";
19   function kioskManagementDialog ($config, $dn= NULL,$attach=false )
20   {
21     plugin::plugin ($config, $dn);
22     if($attach){
23       $this->filesToAttach = $attach;
24     }
25     $this->baseDir = search_config($this->config->data,"environment", "KIOSKPATH");
26   }
28   function execute()
29   {
30         /* Call parent execute */
31         plugin::execute();
33     /* Fill templating stuff */
34     $smarty= get_smarty();
35     $display= "";
37   foreach($this->attributes as $attr){
38     $smarty->assign($attr."ACL",chkacl($this->acl,$attr));
39   }
41     /* Add new kiosk profile 
42      * in profile directory ($this->baseDir); 
43      */
44     if((isset($_POST['profileAdd']))&&(isset($_FILES['newProfile']))){
45       $file = $_FILES['newProfile'];
46       if(!file_exists($this->baseDir.$file['name'])){
47         $this->filesToAttach[$file['name']]=$file;
48         $this->filesToAttach[$file['name']]['contents'] = file_get_contents($file['tmp_name']);
49       }
50     }
51       
52     /* Delete profile
53      * Delete selected file form $this->baseDir
54      */
55     if((isset($_POST['profileDel']))&&(isset($_POST['gotoKioskProfile']))){
56       $filename = $this->baseDir."/".preg_replace("/^.*\//i","",$_POST['gotoKioskProfile']);
57   
58       $res = @unlink($filename);
59       if(!$res){
60         if(!is_writeable($filename)){
61           print_red(sprintf(_("Can't delete '%s'. Error was: permission denied."), $filename));
62         }
63         if(!file_exists($filename)){
64           print_red(sprintf(_("Can't delete '%s'. Errow was: file doesn't exist."), $filename));
65         }
66       
67       }
68     }
70     /*Assign all existing profiles to smarty*/
71     $smarty->assign("gotoKioskProfiles",$this->getKioskProfiles());
72     $smarty->assign("gotoKioskProfileKeys",array_flip($this->getKioskProfiles()));
74     $display.= $smarty->fetch(get_template_path('kioskManagement.tpl', TRUE,dirname(__FILE__)));
75     return($display);
76   }
78   function save(){
79     return($this->filesToAttach);
80   }
82   function getKioskProfiles($attach = false)
83   {
84     $a_return = array();
85     
86     /* Empty? */
87     if ($this->baseDir == ""){
88       print_red(_("There is no KIOSKPATH defined in your gosa.conf. Can't manage kiosk profiles!"));
89       return ($a_return);
90     }
91     
92     $dir = @opendir($this->baseDir);
93     if(!$dir){
94       print_red(sprintf(_("Kiosk path '%s' is not accessible. Please check the permissions."),$this->baseDir));
95     }else{
96       $a_return = array();
97       while($file = readdir($dir)){
98         if(!(($file==".")||($file==".."))){
99           $name = $file;
100           $a_return[$name] = $name;
101         }
102       }
103     }
105     foreach($this->filesToAttach as $file){
106       $a_return[$file['name']] = $file['name'];
107     }
109     if($attach){
110       foreach($attach as $file){
111         $a_return[$file['name']] = $file['name'];
112       }
113     }
115     return($a_return);
116   }
119 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
120 ?>