Code

b0c3fb068483f447ee6d6e89fa978442a52613b1
[gosa.git] / gosa-plugins / goto / admin / systems / goto / Device / class_InstallRecipe.inc
1 <?php
3 class InstallRecipe extends plugin
4 {
5     public $member = array();
6     public $kickstartTemplateDN = "";
7     public $kickstartKeyboardlayout = "";
8     public $kickstartSystemLocale = "";
9     public $kickstartTimezone = "";
10     public $kickstartTimeUTC = "";
11     public $kickstartNTPServer = "";
12     public $kickstartMirrorDN = "";
13     public $kickstartRootEnabled = "";
14     public $kickstartRootPasswordHash = "";
15     public $kickstartKernelPackage = "";
16     public $kickstartPartitionTable = "";
18     public $objectclasses = array('installRecipe');
19     public $attributes = array("member","kickstartTemplateDN","kickstartKeyboardlayout","kickstartSystemLocale",
20             "kickstartTimezone","kickstartTimeUTC","kickstartNTPServer","kickstartMirrorDN",
21             "kickstartRootEnabled","kickstartRootPasswordHash","kickstartKernelPackage","kickstartPartitionTable");
23     function __construct(&$config, $dn)
24     {
25         plugin::plugin($config, $dn);
27         // Preset some values for new accounts
28         if(!$this->is_account){
30             // Preset the device timezone
31             $tz = timezone::get_default_timezone();
32             $this->kickstartTimezone = $tz['name'];
33         }
35         // Prepare list of timezones
36         $tmp = timezone::_get_tz_zones();
37         $list = array();
38         foreach($tmp['TIMEZONES'] as $name => $offset){
39             if($offset >= 0){
40                 $list[$name] = $name." ( + ".sprintf("%0.2f",$offset/(60*60))." "._("hours").")";
41             }else{
42                 $offset = $offset * -1;
43                 $list[$name] = $name." ( - ".sprintf("%0.2f",($offset/(60*60)))." "._("hours").")";
44             }
45         }  
46         uksort($list, 'strnatcasecmp'); 
47         $this->timezones = $list;
49         // Prepare member list 
50         $this->memberList= new sortableListing($this->member);
51         $this->memberList->setDeleteable(true);
52         $this->memberList->setColspecs(array('*'));
53         $this->memberList->setWidth("100%");
54         $this->memberList->setHeight("70px");
55  
56     
57     }
59     function execute()
60     {
61         plugin::execute();    
62         $smarty = get_smarty();
63         $smarty->assign('timezones', $this->timezones);
64         foreach($this->attributes as $attr){
65             $smarty->assign($attr, $this->$attr);
66         }
68         // Fill and render the member list widget
69         $this->memberList->setListData($this->member);
70         $this->memberList->update();
71         $this->memberList->setAcl($this->getacl('member'));
72         $smarty->assign('memberList', $this->memberList->render());
73         return($smarty->fetch(get_template_path('goto/Device/InstallRecipe.tpl', TRUE)));
74     }
76     
77     function save_object()
78     {
79         plugin::save_object();
80         $this->kickstartRootEnabled = isset($_POST['kickstartRootEnabled']);
82         // Update the member list widget. 
83         $this->memberList->save_object();
84         $this->member = $this->memberList->getMaintainedData();
85         if(isset($_POST['member']) && isset($_POST['addMember'])){
86             $member= get_post('member');
87             $this->member[] = $member;
88         }
89     }
92     function save()
93     {
94         plugin::save();
96         $this->cleanup();
97         $ldap=$this->config->get_ldap_link();
98         $ldap->cd($this->config->current['BASE']);
99         $ldap->cd($this->dn);
100         $ldap->modify($this->attrs);
101         new log("modify","Device/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
102         if (!$ldap->success()){
103             msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class()));
104         }else{
105             $this->handle_post_events("modify");
106         }
107     }
109     static function plInfo()
110     {
111         return (array(
112                     "plShortName"   => _("Device"),
113                     "plDescription" => _("Registered device"),
114                     "plSelfModify"  => FALSE,
115                     "plDepends"     => array(),
116                     "plPriority"    => 1,
117                     "plSection"     => array("administration"),
118                     "plCategory"    => array("Device"),
119                     "plProvidedAcls" => array(
120                         "member" => _("Member"),
121                         "kickstartTemplateDN" => _("Template"),
122                         "kickstartKeyboardlayout" => _("Keyboard layout"),
123                         "kickstartSystemLocale" => _("System locale"),
124                         "kickstartTimezone" => _("Timezone"),
125                         "kickstartTimeUTC" => _("Time"),
126                         "kickstartNTPServer" => _("NTP-Server"),
127                         "kickstartMirrorDN" => _("Kickstart mirror"),
128                         "kickstartRootEnabled" => _("Root login enabled"),
129                         "kickstartRootPasswordHash" => _("Root password hash"),
130                         "kickstartKernelPackage" => _("Kernal package"),
131                         "kickstartPartitionTable" => _("Partition table")
132                         )
133                         )
134                         );
135     }
138 ?>