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 }
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']);
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 }
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();
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 }
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 }
118 }
119 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
120 ?>