function getPuppetInfo($formData)
 {
     global $wgOpenStackManagerPuppetOptions;
     $puppetinfo = array();
     if ($wgOpenStackManagerPuppetOptions['enabled']) {
         $puppetGroups = OpenStackNovaPuppetGroup::getGroupList($formData['project']);
         $this->getPuppetInfoByGroup($puppetinfo, $puppetGroups, $formData);
         $puppetGroups = OpenStackNovaPuppetGroup::getGroupList();
         $this->getPuppetInfoByGroup($puppetinfo, $puppetGroups, $formData);
     }
     return $puppetinfo;
 }
 /**
  * @return void
  */
 function listPuppetGroups()
 {
     $this->setHeaders();
     $this->getOutput()->setPagetitle($this->msg('openstackmanager-puppetgrouplist'));
     $this->getOutput()->addModuleStyles('ext.openstack');
     if ($this->getUser()->isAllowed('listall')) {
         $projects = OpenStackNovaProject::getAllProjects();
     } else {
         $projects = OpenStackNovaProject::getProjectsByName($this->userLDAP->getProjects());
     }
     $this->showProjectFilter($projects);
     $projectfilter = $this->getProjectFilter();
     if (!$projectfilter) {
         $this->getOutput()->addWikiMsg('openstackmanager-setprojectfilter');
         return null;
     }
     $out = '';
     foreach ($projects as $project) {
         $projectName = $project->getProjectName();
         if ($projectfilter && !in_array($projectName, $projectfilter)) {
             continue;
         }
         $actions = array('projectadmin' => array());
         $actions['projectadmin'][] = $this->createActionLink('openstackmanager-createpuppetgroup', array('action' => 'create', 'project' => $projectName));
         $out .= $this->createProjectSection($projectName, $actions, $this->getPuppetGroupOutput(OpenStackNovaPuppetGroup::getGroupList($projectName)));
     }
     $action = '';
     $showlinks = $this->userCanExecute($this->getUser());
     if ($showlinks) {
         $action = $this->createActionLink('openstackmanager-createpuppetgroup', array('action' => 'create'));
         $action = Html::rawElement('span', array('id' => 'novaaction'), "[{$action}]");
     }
     $allProjectsMsg = Html::rawElement('span', array('class' => 'mw-customtoggle-allprojects', 'id' => 'novaproject'), $this->msg('openstackmanager-puppetallprojects')->escaped());
     $out .= Html::rawElement('h2', array(), "{$allProjectsMsg} {$action}");
     $groupsOut = $this->getPuppetGroupOutput(OpenStackNovaPuppetGroup::getGroupList(), $showlinks);
     $out .= Html::rawElement('div', array('class' => 'mw-collapsible', 'id' => 'mw-customcollapsible-allprojects'), $groupsOut);
     $this->getOutput()->addHTML($out);
 }
 function setPuppetInfo(&$instanceInfo, $puppetinfo = array())
 {
     $project = $instanceInfo['project']['default'];
     $projectGroups = OpenStackNovaPuppetGroup::getGroupList($project);
     $this->setPuppetInfoByGroups($instanceInfo, $puppetinfo, $projectGroups);
     $globalGroups = OpenStackNovaPuppetGroup::getGroupList();
     $this->setPuppetInfoByGroups($instanceInfo, $puppetinfo, $globalGroups);
 }
 /**
  * @return void
  */
 function listPuppetGroups()
 {
     $this->setHeaders();
     $this->getOutput()->setPagetitle(wfMsg('openstackmanager-puppetgrouplist'));
     $this->getOutput()->addModuleStyles('ext.openstack');
     $out = '';
     $projects = $this->userLDAP->getProjects();
     foreach ($projects as $project) {
         if (!$this->userLDAP->inRole('sysadmin', $project)) {
             continue;
         }
         $action = Linker::link($this->getTitle(), wfMsgHtml('openstackmanager-createpuppetgroup'), array(), array('action' => 'create', 'project' => $project));
         $action = Html::rawElement('span', array('id' => 'novaaction'), "[{$action}]");
         $projectName = Html::rawElement('span', array('class' => 'mw-customtoggle-' . $project, 'id' => 'novaproject'), $project);
         $out .= Html::rawElement('h2', array(), "{$projectName} {$action}");
         $groupsOut = $this->getPuppetGroupOutput(OpenStackNovaPuppetGroup::getGroupList($project));
         $out .= Html::rawElement('div', array('class' => 'mw-collapsible', 'id' => 'mw-customcollapsible-' . $project), $groupsOut);
     }
     $action = '';
     $showlinks = $this->userCanExecute($this->getUser());
     if ($showlinks) {
         $action = Linker::link($this->getTitle(), wfMsgHtml('openstackmanager-createpuppetgroup'), array(), array('action' => 'create'));
         $action = Html::rawElement('span', array('id' => 'novaaction'), "[{$action}]");
     }
     $allProjectsMsg = Html::rawElement('span', array('class' => 'mw-customtoggle-allprojects', 'id' => 'novaproject'), wfMsgHtml('openstackmanager-puppetallprojects'));
     $out .= Html::rawElement('h2', array(), "{$allProjectsMsg} {$action}");
     $groupsOut = $this->getPuppetGroupOutput(OpenStackNovaPuppetGroup::getGroupList(), $showlinks);
     $out .= Html::rawElement('div', array('class' => 'mw-collapsible', 'id' => 'mw-customcollapsible-allprojects'), $groupsOut);
     $this->getOutput()->addHTML($out);
 }