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