Code

Fixed a set of errors
[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     $smarty->assign("gotoKioskProfileACL",chkacl($this->acl,"gotoKioskProfile"));
39     foreach($this->attributes as $attr){
40       $smarty->assign($attr."ACL",chkacl($this->acl,$attr));
41     }
43     /* Add new kiosk profile 
44      * in profile directory ($this->baseDir); 
45      */
46     if((isset($_POST['profileAdd']))&&(isset($_FILES['newProfile']))){
47       $file = $_FILES['newProfile'];
48       if(!file_exists($this->baseDir.$file['name'])){
49         $this->filesToAttach[$file['name']]=$file;
50         $this->filesToAttach[$file['name']]['contents'] = file_get_contents($file['tmp_name']);
51       }
52     }
53      
54     $only_once = true;
55     foreach($_POST as $name => $value){
56       
57       if((preg_match("/^delkiosk_/",$name))&&($only_once)){
58         $only_once = false;
59         $id  = preg_replace("/^delkiosk_/","",$name);
60         $id = preg_replace("/_.*$/","",$id);
62         $filename = $this->baseDir."/".preg_replace("/^.*\//i","",base64_decode($id));
64         $res = unlink($filename);
65         if(!$res){
66           if(!is_writeable($filename)){
67             print_red(sprintf(_("Can't delete '%s'. Error was: permission denied."), $filename));
68           }
69           if(!file_exists($filename)){
70             print_red(sprintf(_("Can't delete '%s'. Errow was: file doesn't exist."), $filename));
71           }
72         }
73       }
74     }
76     /* Delete profile
77      * Delete selected file form $this->baseDir
78      */
79     if((isset($_POST['profileDel']))&&(isset($_POST['gotoKioskProfile']))){
80       $filename = $this->baseDir."/".preg_replace("/^.*\//i","",$_POST['gotoKioskProfile']);
81   
82       $res = @unlink($filename);
83       if(!$res){
84         if(!is_writeable($filename)){
85           print_red(sprintf(_("Can't delete '%s'. Error was: permission denied."), $filename));
86         }
87         if(!file_exists($filename)){
88           print_red(sprintf(_("Can't delete '%s'. Errow was: file doesn't exist."), $filename));
89         }
90       
91       }
92     }
94     $divlist = new divSelectBox("KioskProfiles");
95     $divlist -> SetHeight (300);
97     $tmp = $this->getKioskProfiles();
99     foreach($tmp as $val ){
100       $divlist->AddEntry(array(
101                           array("string"=>"<a target='_blank' href='getkiosk.php?id=".$val."'>".$val."</a>"),
102                           array("string"=>"<input type='image' src='images/edittrash.png' class='center' alt='delete' name='delkiosk_".base64_encode($val)."'>" , 
103                                 "attach"=>" style='border-right: 0px;width:24px; text-align:center;' ")
104                               )); 
105     }
106       
108     /*Assign all existing profiles to smarty*/
111     $smarty->assign("divlist",$divlist->DrawList());
113     $smarty->assign("gotoKioskProfiles",$this->getKioskProfiles());
114     $smarty->assign("gotoKioskProfileKeys",array_flip($this->getKioskProfiles()));
116     $display.= $smarty->fetch(get_template_path('kioskManagement.tpl', TRUE,dirname(__FILE__)));
117     return($display);
118   }
120   function save(){
121     return($this->filesToAttach);
122   }
124   function getKioskProfiles($attach = false)
125   {
126     $a_return = array();
127     
128     /* Empty? */
129     if ($this->baseDir == ""){
130       print_red(_("There is no KIOSKPATH defined in your gosa.conf. Can't manage kiosk profiles!"));
131       return ($a_return);
132     }
133     
134     $dir = @opendir($this->baseDir);
135     if(!$dir){
136       print_red(sprintf(_("Kiosk path '%s' is not accessible. Please check the permissions."),$this->baseDir));
137     }else{
138       $a_return = array();
139       while($file = readdir($dir)){
140         if(!preg_match("/^\./", $file)){
141           $name = $file;
142           $a_return[$name] = $name;
143         }
144       }
145     }
147     foreach($this->filesToAttach as $file){
148       $a_return[$file['name']] = $file['name'];
149     }
151     if($attach){
152       foreach($attach as $file){
153         $a_return[$file['name']] = $file['name'];
154       }
155     }
157     return($a_return);
158   }
161 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
162 ?>