1 <?php
3 class newConfigManagement extends plugin
4 {
5 var $initTime;
6 var $plHeadline = "Config management";
7 var $plDescription = "Config management";
9 var $installationMethods = array();
11 var $selectedDistribution;
13 function __construct($config, $dn)
14 {
15 $this->config = &$config;
16 $this->listing = new ConfigManagementListing($this->config, get_userinfo());
17 $this->dataModel = new ConfigManagementDataModel();
19 // Load distributions
20 $rpc = $this->config->getRpcHandle();
21 $res = $rpc->getDistributions();
22 if(!$rpc->success()){
23 msg_dialog::display(_("Error"), sprintf(_("Failed to load distributions, error was '%s'!"), $rpc->get_error()),ERROR_DIALOG);
24 return(NULL);
25 }
26 foreach($res as $dist){
27 $this->dataModel->addItem('Distribution','/root', $dist);
29 // Load the releases for the current distribution
30 $releases = $rpc->getReleases($dist);
31 if(!$rpc->success()){
32 msg_dialog::display(_("Error"), sprintf(_("Failed to load releases, error was '%s'!"), $rpc->get_error()),ERROR_DIALOG);
33 return(NULL);
34 }
35 foreach($releases as $release){
36 $this->dataModel->addItem('Release',"/root/{$dist}", $release);
38 // Load packages
39 $packages = $rpc->getPackages($release);
40 if(!$rpc->success()){
41 msg_dialog::display(_("Error"), sprintf(_("Failed to load packages, error was '%s'!"), $rpc->get_error()),ERROR_DIALOG);
42 return(NULL);
43 }
44 foreach($packages as $package){
45 $this->dataModel->addItem('Package',"/root/{$dist}/{$release}", $package['name'], $package);
46 }
47 }
48 }
50 }
52 function save_object()
53 {
54 $this->listing->save_object();
55 $this->selectedDistribution = $this->listing->getSelectedDistribution();
56 $this->selectedRelease = $this->listing->getSelectedRelease();
57 }
60 /*! \brief Intializes this plugin
61 * All available installation methods will be loaded
62 */
63 function loadInstallationMethods()
64 {
65 // Reset erros
66 $this->rpcError = $this->initFailed = FALSE;
68 // Load configuration via rpc.
69 $rpc = $this->config->getRpcHandle();
71 // Populate install methods on success.
72 $res = $rpc->getSupportedInstallMethods();
73 if(!$rpc->success()){
74 $this->rpcError = TRUE;
75 $this->errorMessage = $rpc->get_error();;
76 return;
77 }
78 $this->installationMethods = $res;
79 if(!count($this->installationMethods)){
80 $this->errorMessage = _("No selectable install methods returned!");
81 msg_dialog::display(_("Setup"), $this->errorMessage , ERROR_DIALOG);
82 $this->initFailed = TRUE;
83 return;
84 }
85 }
88 function execute()
89 {
90 $this->listing->setDistributions($this->getDistList());
91 $this->listing->setReleases($this->getReleaseList());
92 return($this->listing->renderList());
93 }
96 function getReleaseList()
97 {
98 $res = array();
99 $res = array("cn=root" => '/');
100 if(isset($this->distributionMap[$this->selectedDistribution])){
101 $dist = $this->distributionMap[$this->selectedDistribution];
102 $list = $this->dataModel->getItemsByType('Release');
103 $this->releaseMap = array();
104 foreach($list as $base => $entry){
105 if($entry['parentPath'] != $dist) continue;
106 $res["cn={$entry['name']},cn=root"] = $entry['name'];
107 $this->releaseMap["cn={$entry['name']},cn=root"] = $entry['path'];
108 }
109 }
110 return($res);
111 }
114 function getDistList()
115 {
116 $list = $this->dataModel->getItemsByType('Distribution');
117 $res = array();
118 $res = array("cn=root" => '');
119 $this->distributionMap = array();
120 foreach($list as $base => $entry){
121 $res["cn={$entry['name']},cn=root"] = $entry['name'];
122 $this->distributionMap["cn={$entry['name']},cn=root"] = $entry['path'];
123 }
124 return($res);
125 }
128 function remove_lock()
129 {
130 }
132 public static function plInfo()
133 {
134 return (array(
135 "plShortName" => _("Config management"),
136 "plDescription" => _("Config management"),
137 "plSelfModify" => FALSE,
138 "plDepends" => array(),
139 "plPriority" => 0,
140 "plSection" => array("administration"),
141 "plCategory" => array(
142 "newConfigManagement" => array("description" => _("Config management"),
143 "objectClass" => "FAKE_OC_newConfigManagement")),
144 "plProvidedAcls"=> array()
145 ));
146 }
147 }
148 ?>