Code

Updated config management class
[gosa.git] / gosa-core / plugins / admin / newConfigManagement / class_newConfigManagement.inc
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     }
59     
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     }
112     
113     
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     }
126     
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     }
148 ?>