1 <?php
3 class faiPartition extends plugin
4 {
5 var $attributes = array("cn","description","FAIfsCreateOptions","FAIfsOptions","FAIfsTuneOptions",
6 "FAIfsType","FAImountOptions","FAImountPoint","FAIpartitionNr","FAIpartitionFlags","FAIdiskType",
7 "FAIpartitionSize","FAIpartitionType","FAIstate", "bootable","resize", "preserve", "preserveType",
8 "encrypted");
10 var $cn = "";
11 var $description = "";
12 var $FAIfsCreateOptions = "";
13 var $FAIfsOptions = "";
14 var $FAIfsTuneOptions = "";
15 var $FAIfsType = "";
16 var $FAImountOptions = "";
17 var $FAImountPoint = "";
18 var $FAIpartitionNr = "";
19 var $FAIpartitionSize = "";
20 var $FAIpartitionType = "";
21 var $FAIstate = "";
22 var $FAIpartitionFlags = "";
24 var $FAIdiskType = "disk";
26 var $FAIpartitionSizeType = "fixed";
27 var $sizeStart = 0;
28 var $sizeStop = 0;
29 var $sizeStart_Type = "MB";
30 var $sizeStop_Type = "MB";
32 var $bootable = false;
33 var $resize = false;
34 var $preserve = false;
35 var $preserveType = "always";
36 var $encrypted = false;
38 function __construct($config, $object, $type)
39 {
40 foreach($this->attributes as $attr){
41 if(isset($object[$attr])){
42 $this->$attr = $object[$attr];
43 }
44 }
46 $this->FAIdiskType = $type;
48 /* Prepare size attribute
49 * This attribute may represent a range, a fixed value
50 * or a percentage.
51 * fixed is just a number * 500MB
52 * range * 500MB-1TB
53 * remaining * -
54 */
56 // Fixed
57 if(preg_match("/^[0-9]*(KB|MB|GB|TB|PB)$/",$this->FAIpartitionSize)){
58 $this->sizeStart = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB)$/","\\1",$this->FAIpartitionSize);
59 $this->sizeStart_Type = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB)$/","\\2",$this->FAIpartitionSize);
60 $this->FAIpartitionSizeType = "fixed";
61 }else
63 // Dynamic range
64 if(preg_match("/^[0-9]*(KB|MB|GB|TB|PB)-[0-9]*(KB|MB|GB|TB|PB)$/",$this->FAIpartitionSize)){
65 $this->sizeStart = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB).*$/","\\1",$this->FAIpartitionSize);
66 $this->sizeStart_Type = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB).*$/","\\2",$this->FAIpartitionSize);
67 $this->sizeStop = preg_replace("/^[^\-]*\-([0-9]*)(KB|MB|GB|TB|PB)$/","\\1",$this->FAIpartitionSize);
68 $this->sizeStop_Type = preg_replace("/^[^\-]*\-([0-9]*)(KB|MB|GB|TB|PB)$/","\\2",$this->FAIpartitionSize);
69 $this->FAIpartitionSizeType = "dynamic";
70 }else
72 // Dynamic range
73 if(preg_match("/^\-$/",$this->FAIpartitionSize)){
74 $this->FAIpartitionSizeType = "remaining";
75 }
76 }
78 function execute()
79 {
80 plugin::execute();
81 $smarty = get_smarty();
83 // Create a list of selectable partition types
84 if($this->FAIdiskType == "disk"){
85 $types = array(
86 "primary" => _("Primary"),
87 "secondary" => _("Secondary"));
88 }elseif($this->FAIdiskType == "raid"){
89 $types = array(
90 "raid0" => _("Raid 0"),
91 "raid1" => _("Raid 1"),
92 "raid5" => _("Raid 5"),
93 "raid6" => _("Raid 6"));
94 }else{
95 $types = "";
96 }
99 // Create a list of all size options
100 $partitionSizeTypes = array(
101 "fixed" => _("Fixed"),
102 "dynamic" => _("Dynamic"),
103 "remaining" => _("Use remaining space")
104 );
106 // Create a list of all size options
107 $sizeTypes = array(
108 "KB" => _("KB"),
109 "MB" => _("MB"),
110 "GB" => _("GB"),
111 "TB" => _("TB"),
112 "PB" => _("PB"),
113 "%" => _("Percent")
114 );
116 // Preserve types
117 $preserveTypes = array(
118 "always" => _("Always"),
119 "reinstall" => _("Reinstall"));
121 $FAIfsTypes = array(
122 "swap" => _("Swap"),
123 "ext2" => _("Ext 2"),
124 "ext3" => _("Ext 3"),
125 "ext4" => _("Ext 4"),
126 "reiserfs" => _("Reiser fs"),
127 "xfs" => _("Xfs"),
128 "btrfs" => _("Btrfs"));
130 $smarty->assign("partitionTypes", $types);
131 $smarty->assign("partitionSizeTypes", $partitionSizeTypes);
132 $smarty->assign("FAIpartitionSizeType", $this->FAIpartitionSizeType);
133 $smarty->assign("sizeTypes", $sizeTypes);
135 $smarty->assign("sizeStart_Type", $this->sizeStart_Type);
136 $smarty->assign("sizeStop_Type", $this->sizeStop_Type);
137 $smarty->assign("sizeStart", $this->sizeStart);
138 $smarty->assign("sizeStop", $this->sizeStop);
140 $smarty->assign("preserveTypes", $preserveTypes);
141 $smarty->assign("preserveType", $this->preserveType);
143 $smarty->assign("FAIfsTypes", $FAIfsTypes);
145 foreach($this->attributes as $attr){
146 $smarty->assign($attr,$this->$attr);
147 }
148 return($smarty->fetch(get_template_path("faiPartition.tpl", TRUE, dirname(__FILE__))));
149 }
151 function save_object()
152 {
153 if(isset($_POST['faiPartition'])){
154 foreach($this->attributes as $attr){
155 if(isset($_POST[$attr])){
156 $this->$attr = get_post($attr);
157 }
158 }
159 foreach(array("FAIpartitionSizeType","sizeStart","sizeStop","sizeStart_Type","sizeStop_Type") as $attr){
160 if(isset($_POST[$attr])){
161 $this->$attr = get_post($attr);
162 }
163 }
164 foreach(array("bootable","preserve","resize","encrypted") as $attr){
165 if(isset($_POST[$attr])){
166 $this->$attr = TRUE;
167 }else{
168 $this->$attr = FALSE;
169 }
170 }
171 }
172 }
174 function save()
175 {
176 $ret = array();
177 foreach($this->attributes as $attr){
178 $ret[$attr] = $this->$attr;
179 }
181 // Save partition size
182 switch($this->FAIpartitionSizeType){
183 case 'fixed' :
184 $ret['FAIpartitionSize'] = $this->sizeStart.$this->sizeStart_Type;break;
185 case 'dynamic' :
186 $ret['FAIpartitionSize'] = $this->sizeStart.$this->sizeStart_Type."-".
187 $this->sizeStop.$this->sizeStop_Type;break;
188 case 'remaining' :
189 $ret['FAIpartitionSize'] = "-";break;
190 default: trigger_error("Unknown partition size!");
191 }
193 return($ret);
194 }
195 }
196 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
197 ?>