Code

757534c3d0e2bae94062bb6c39657e4fc884c252
[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         $list = $this->dataModel->getItemsByType('Package');
91         $rel = $this->selectedRelease;
92         $displayEntries = array();
93         foreach($list as $entry){
94             if($entry['parentPath'] == $rel){
95                 $displayEntries[] = $entry;
96             }
97         }
98     
99         $this->listing->setDistributions($this->getDistList());
100         $this->listing->setReleases($this->getReleaseList());
101         return($this->listing->renderList());
102     }
105     function getReleaseList()
106     {
107         $res = array();
108         $dist = $this->selectedDistribution;
109         $list = $this->dataModel->getItemsByType('Release');
110         foreach($list as $base => $entry){
111             if($entry['parentPath'] != $dist) continue;
112             $res[$entry['path']] = $entry['name'];
113         }
114         return($res);
115     }
116     
117     
118     function getDistList()
119     {
120         $list = $this->dataModel->getItemsByType('Distribution');
121         $res = array('/root/wurst' => 'wurst', '/root/tester' => 'tester');
122         foreach($list as $base => $entry){
123             $res[$entry['path']] = $entry['name'];
124         }
125         return($res);
126     }
127     
129     function remove_lock()
130     {
131     }
133     public static function plInfo()
134     {
135         return (array(
136                     "plShortName"   => _("Config management"),
137                     "plDescription" => _("Config management"),
138                     "plSelfModify"  => FALSE,
139                     "plDepends"     => array(),
140                     "plPriority"    => 0,
141                     "plSection"     => array("administration"),
142                     "plCategory"    => array(
143                         "newConfigManagement" => array("description"  => _("Config management"),
144                             "objectClass"  => "FAKE_OC_newConfigManagement")),
145                     "plProvidedAcls"=> array()
146                     ));
147     }
149 ?>