b0c3fb068483f447ee6d6e89fa978442a52613b1
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");
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 }
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 }
136 }
138 ?>