Code

Added mapping for "halt" to "localboot"
[gosa.git] / plugins / admin / systems / class_glpiPrinterCartridgesEdit.inc
1 <?php
3 class glpiPrinterCartridgesEdit extends plugin
4 {
5   /* attribute list for save action */
6   var $ignore_account       = TRUE;
7   var $attributes           = array("ID","name","ref","location","type","FK_glpi_enterprise","tech_num","deleted","comments","alarm");
8   var $objectclasses        = array("whatever");
10   var $printer_type      = 0;
12   var $additional_printer= array();
13   var $needToCatch       = true;
15   var $parent           = NULL;
17   var $ID                 = "";
18   var $name               = "";
19   var $ref                = "";
20   var $location           = "";
21   var $type               = "";
22   var $FK_glpi_enterprise = "";
23   var $tech_num           = "";
24   var $deleted            = "";
25   var $comments           = "";
26   var $alarm              = "";  
28   var $cur_dialog         = false;
29   var $edit_type          =false;
32   function glpiPrinterCartridgesEdit ($config, $dn,$printer_type,$values = NULL )
33   {
34     plugin::plugin ($config, $dn);
36     $ui= get_userinfo();
37     $acl= get_permissions ($this->dn, $ui->subtreeACL);
38     $this->acl= get_module_permission($acl, "component", $this->dn);
39     
41     foreach($this->attributes as $val){
42       if(isset($values[$val])){
43         $this->$val = $values[$val];
44       }else{
45         $this->$val = "";
46       }
47     }
49     $this->needToCatch = true;
50     
51     $this->printer_type = $printer_type;
53   }
55   function remove_from_parent()
56   {
57     if($this->ID > 0){
58       $this->parent->handle->removeCartridgeDropdownType($this->ID);
59     }
60   }
62   function execute()
63   {
64     /* Call parent execute */
65     plugin::execute();
67     /* Fill templating stuff */
68     $smarty= get_smarty();
69     $display= "";
71     /* Get all currently used/supported printer types for this cartridge type
72      */
73     if($this->needToCatch){
74       $this->needToCatch = false;
75       if(!empty($this->type)){
76         $this->additional_printer= $this->parent->handle->getSupportedPrinterTypeIDsForCartridge($this->ID);
77       }
78     }
84   
85     /* Printer type management
86      */
87     if(isset($_POST['edit_type_cartridge'])){
88       $this->dialog = true;
89       $this->edit_type=true;
90     }
92     /* This closes the printer type editing dialog
93      */
94     if(isset($_POST['close_edit_type_cartridge'])){
95       $this->edit_type=false;
96       $this->dialog = false;
97     }
99     /* This appends a new printer to our sytem types
100      */
101     if((isset($_POST['add_cartridge_type']))&&(!empty($_POST['cartridge_type_string']))){
102       print "Add";
103       $this->parent->handle->addCartridgeDropdownType($_POST['cartridge_type_string']);
104     }
106     /* Remove selected type from our printer types list
107      */
108     if((isset($_POST['del_cartridge_type']))&&(!empty($_POST['select_type_cartridge']))){
109       $used = $this->parent->handle->getUsedDropdownTypes($_POST['select_type_cartridge']);
110       if(!count($used)){
111         $this->parent->handle->removeCartridgeDropdownType($_POST['select_type_cartridge']);
112       }else{
113         print_red(_("Can't delete this entry, it is still in use."));
114       }
115     }
117     /* Rename selected printer type to given string
118      */
119     /* Update*/
120     if((isset($_POST['rename_cartridge_type']))&&(!empty($_POST['select_type_cartridge']))&&(!empty($_POST['cartridge_type_string']))){
121       $this->parent->handle->updateCartridgeDropdownType($_POST['cartridge_type_string'],$_POST['select_type_cartridge']);
122     }
124     /* Someone wants to edit the printer types ...
125        So, lets open a new dialog which provides some buttons to edit the types
126      */
127     if($this->edit_type){
128       $smarty->assign("PrinterTypes",            $this->parent->handle->getCartridgeTypes());
129       $smarty->assign("PrinterTypeKeys",         array_flip($this->parent->handle->getCartridgeTypes()));
130       $display= $smarty->fetch(get_template_path('glpi_edit_cartridge_type.tpl', TRUE));
131       return($display);
132     }
140  
141     /* Assign attributes */ 
142     foreach($this->attributes as $attr){
143       $smarty->assign($attr,$this->$attr);
144       $smarty->assign($attr."ACL",chkacl($this->acl,$attr));
145     }
147     /* Selecte technical responsible person
148      */
149     if(isset($_POST['SelectCartridgeTechPerson'])){
150       $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_cartridge_tech_num");
151     }
153     /* Abort user selection
154      */
155     $smarty->assign("AbortSelectUser","SelectCartridgeUserCancel");
156     $smarty->assign("SaveSelectUser" ,"user_cartridge_tech_num");
157     if(isset($_POST['SelectCartridgeUserCancel'])){
158       $this->dialog = false;
159       $this->addUser ="";
160       $this->cur_dialog = false;
161     }
163     /* Start ldap, and get all glpiUsers */
164     $ldap = $this->config->get_ldap_link();
165     $users = ($this->parent->handle->getUsers());
167     /* Technical responsible/contact person selected 
168     */
169     if(isset($_GET['act'])&&($_GET['act']=="user_cartridge_tech_num")){
171       /* Get posted id */
172       $id = base64_decode($_GET['id']);
174       /* Check if user is already created in glpi database */
175       if(!in_array($id,$users)){
177         /* If this user doesn't exists in glpi db, we must create him */
178         $ldap->cat($id, array('cn', 'mail', 'telephoneNumber'));
179         $atr = $ldap->fetch();
180         $tmp = array();
181         $use = array( "cn"              =>"name",
182             "mail"            =>"email",
183             "telephoneNumber" =>"phone");
185         /* Create array */
186         foreach($use as $gosa => $glpi){
187           if(isset($atr[$gosa])){
188             $tmp[$glpi]= $atr[$gosa][0];
189           }
190         }
192         /* Add this user */
193         $this->parent->handle->addUser($tmp,$id);
194       }
196       /* Re-read users */
197       $users = ($this->parent->handle->getUsers());
199       /* Get user */
200       $tmp = array_flip($users);
201       $id=$tmp[$id];
202     
203       /* Close dialog and use this user */
204       $this->tech_num = $id;
205       $this->cur_dialog   = false;
206       $this->dialog= false;
207     }
209     /* Execute dialog*/
210     if($this->cur_dialog){
211       $this->cur_dialog->save_object();
212       $this->dialog=true;
213       $this->cur_dialog->parent = &$this;
214       return($this->cur_dialog->execute());
215     }else{
216       $this->dialog= false;
217     }
219     /* Create matrix with all possible printer types 
220      */
221     $matrix = "<table summary=''><tr>";
222     $types = $this->parent->handle->getPrinterTypes();
223    
224     /* Specifies number of cols */ 
225     $spalten = 2;
226     
227     $spalt = $spalten; 
228     foreach($types as $key => $type){
229       $spalt -- ; 
231       /* Create new row, if cols for this row reached $spalten */
232       if($spalt < 0) {
233         $spalt = $spalten -1;
234         $matrix .= "</tr><tr>";
235       }
237       /* Avoid deselecting every checkbox */
238       if($key == $this->printer_type){
239         $matrix.= "<td><input type='checkbox' name='UsePrinterType_".$key."' disabled checked>".$type."</td>";
240       }else{
241       
242         /* Cehck checkbox */
243         $check = "";
244         if(isset($this->additional_printer[$key])){
245           $check = " checked "; 
246         }
247         $matrix.= "<td><input type='checkbox' name='UsePrinterType_".$key."' ".$check." ><input type='hidden' name='wasOnPage_".$key."' ".$check.">".$type."</td>";
248       }
249     }
250     
251     /* Complete table row, to avoid html errors */
252     if($spalt >0){
253       while($spalt >0){
254         $spalt -- ;
255         $matrix .="<td>&nbsp;</td>";
256       }
257     }
258     
259     $matrix .= "</tr></table>";
261      /* Append manufacturers
262      */
263     $smarty->assign("PrinterTypeMatrix",      $matrix);
264     
265     $smarty->assign("ManufacturerKeys",       array_flip($this->parent->handle->getEnterprises()));
266     $smarty->assign("Manufacturers",          $this->parent->handle->getEnterprises());
267     $smarty->assign("FK_glpi_enterprise",     $this->FK_glpi_enterprise);
269     $smarty->assign("typeKeys",               array_flip($this->parent->handle->getCartridgeTypes()));
270     $smarty->assign("types",                  $this->parent->handle->getCartridgeTypes());
271     $smarty->assign("type",                   $this->type);
273      /* Handle tech person
274        Assign name ... to smarty, if set
275      */
276     if(isset($users[$this->tech_num])){
277       $ldap->cat($users[$this->tech_num], array('givenName', 'sn', 'uid'));
278       $tr = $ldap->fetch();
279       $str = "";
280       if(isset($tr['givenName'][0])){   $str .= $tr['givenName'][0]." ";      }
281       if(isset($tr['sn'][0])) {         $str .= $tr['sn'][0]." ";             }
282       if(isset($tr['uid'][0])){         $str .= "[".$tr['uid'][0]."]";        }
283       $smarty->assign("tech_num",               $str);
284     }else{
285       $smarty->assign("tech_num",               _("N/A"));
286     }
289     $display.= $smarty->fetch(get_template_path('glpiPrinterCartridgesEdit.tpl', TRUE,dirname(__FILE__)));
290     return($display);
291   }
293   /* Check given values */
294   function check(){
295     /* Call common method to give check the hook */
296     $message= plugin::check();
297   
298     /* Avoid choosing an already used name */
299     $types = $this->parent->handle->getCartridgeTypeInformations();
300     foreach($types as $type){
301       if($type['name'] == $this->name){
302         if($type['ID'] != $this->ID){
303           $message[]= _("The selected name is already in use.");
304         }        
305       }
306     }  
307     return $message;
308   }
310   /* Save Post data */
311   function save_object()
312   {
313     foreach($this->attributes as $attr){
314       if(isset($_POST[$attr])){
315         $this->$attr= $_POST[$attr];
316       }
317     }
319     /* Get selected checkboxes */
320     foreach($_POST as $name => $value){
321       if(preg_match("/wasOnPage_/",$name)){
322         $id = preg_replace("/wasOnPage_/","",$name);
323         if(isset($_POST['UsePrinterType_'.$id])){
324           $this->additional_printer[$id]=$id;
325         }else{
326           if(isset($this->additional_printer[$id])){
327             unset($this->additional_printer[$id]);
328           }
329         }
330       }
331     }
332   }
334   /* Create / Update database with this new infos */
335   function save()
336   {
337     $tmp  = array();
338     foreach($this->attributes as $attr){
339       $tmp[$attr] = $this-> $attr;
340     }
341     $types = array();
342     $types = $this->additional_printer;
343     $types[$this->printer_type]=$this->printer_type;
344     $this->parent->handle->Add_UpdateCatrigdeType($tmp,$types);
345   }
348 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
349 ?>