Code

Include personal title in cn/dn
[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     $this->config= $config;
22     $this->dn= $dn;
24     if($attach){
25       $this->filesToAttach = $attach;
26     }
27     $this->baseDir = search_config($this->config->data,"environment", "KIOSKPATH");
28   }
30   function execute()
31   {
32         /* Call parent execute */
33         plugin::execute();
35     /* Fill templating stuff */
36     $smarty= get_smarty();
37     $display= "";
39     $smarty->assign("gotoKioskProfileACL",chkacl($this->acl,"gotoKioskProfile"));
41     foreach($this->attributes as $attr){
42       $smarty->assign($attr."ACL",chkacl($this->acl,$attr));
43     }
45     /* Add new kiosk profile 
46      * in profile directory ($this->baseDir); 
47      */
48     if((isset($_POST['profileAdd']))&&(isset($_FILES['newProfile']))){
49       $file = $_FILES['newProfile'];
50       if(!file_exists($this->baseDir.$file['name'])){
51         $this->filesToAttach[$file['name']]=$file;
52         $this->filesToAttach[$file['name']]['contents'] = file_get_contents($file['tmp_name']);
53       }
54     }
55      
56     $only_once = true;
57     foreach($_POST as $name => $value){
58       
59       if((preg_match("/^delkiosk_/",$name))&&($only_once)){
60         $only_once = false;
61         $id  = preg_replace("/^delkiosk_/","",$name);
62         $id = preg_replace("/_.*$/","",$id);
63     
64         $name = preg_replace("/^.*\//i","",base64_decode($id));
65         
66         $filename = $this->baseDir."/".$name;
68         if(isset($this->filesToAttach[$name])){
69           unset($this->filesToAttach[$name]);
70         }else{
72           $res = @unlink($filename);
73           if(!$res){
74             if(!is_writeable($filename)){
75               print_red(sprintf(_("Can't delete '%s'. Error was: permission denied."), $filename));
76             }
77             if(!file_exists($filename)){
78               print_red(sprintf(_("Can't delete '%s'. Errow was: file doesn't exist."), $filename));
79             }
80           }
81         }
82       }
83     }
85     /* Delete profile
86      * Delete selected file form $this->baseDir
87      */
88     if((isset($_POST['profileDel']))&&(isset($_POST['gotoKioskProfile']))){
89       $filename = $this->baseDir."/".preg_replace("/^.*\//i","",$_POST['gotoKioskProfile']);
90   
91       $res = @unlink($filename);
92       if(!$res){
93         if(!is_writeable($filename)){
94           print_red(sprintf(_("Can't delete '%s'. Error was: permission denied."), $filename));
95         }
96         if(!file_exists($filename)){
97           print_red(sprintf(_("Can't delete '%s'. Errow was: file doesn't exist."), $filename));
98         }
99       
100       }
101     }
103     $divlist = new divSelectBox("KioskProfiles");
104     $divlist -> SetHeight (300);
106     $tmp = $this->getKioskProfiles();
108     foreach($tmp as $val ){
109       $divlist->AddEntry(array(
110                           array("string"=>"<a target='_blank' href='getkiosk.php?id=".$val."'>".$val."</a>"),
111                           array("string"=>"<input type='image' src='images/edittrash.png' class='center' alt='delete' name='delkiosk_".base64_encode($val)."'>" , 
112                                 "attach"=>" style='border-right: 0px;width:24px; text-align:center;' ")
113                               )); 
114     }
115       
117     /*Assign all existing profiles to smarty*/
120     $smarty->assign("divlist",$divlist->DrawList());
122     $smarty->assign("gotoKioskProfiles",$this->getKioskProfiles());
123     $smarty->assign("gotoKioskProfileKeys",array_flip($this->getKioskProfiles()));
125     $display.= $smarty->fetch(get_template_path('kioskManagement.tpl', TRUE,dirname(__FILE__)));
126     return($display);
127   }
129   function save(){
130     return($this->filesToAttach);
131   }
133   function getKioskProfiles($attach = false)
134   {
135     $a_return = array();
136     
137     /* Empty? */
138     if ($this->baseDir == ""){
139       print_red(_("There is no KIOSKPATH defined in your gosa.conf. Can't manage kiosk profiles!"));
140       return ($a_return);
141     }
142     
143     $dir = @opendir($this->baseDir);
144     if(!$dir){
145       print_red(sprintf(_("Kiosk path '%s' is not accessible. Please check the permissions."),$this->baseDir));
146     }else{
147       $a_return = array();
148       while($file = readdir($dir)){
149         if(!preg_match("/^\./", $file)){
150           $name = $file;
151           $a_return[$name] = $name;
152         }
153       }
154     }
156     foreach($this->filesToAttach as $file){
157       $a_return[$file['name']] = $file['name'];
158     }
160     if($attach){
161       foreach($attach as $file){
162         $a_return[$file['name']] = $file['name'];
163       }
164     }
166     return($a_return);
167   }
170 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
171 ?>