/**
  * Main execution function
  * @param $par array Parameters passed to the page
  */
 function execute($par)
 {
     global $wgCategoryTreeDefaultOptions, $wgCategoryTreeSpecialPageOptions, $wgCategoryTreeForceHeaders;
     $this->setHeaders();
     $request = $this->getRequest();
     if ($par) {
         $this->target = $par;
     } else {
         $this->target = $request->getVal('target', wfMessage('rootcategory')->text());
     }
     $this->target = trim($this->target);
     # HACK for undefined root category
     if ($this->target == '<rootcategory>' || $this->target == '&lt;rootcategory&gt;') {
         $this->target = null;
     }
     $options = array();
     # grab all known options from the request. Normalization is done by the CategoryTree class
     foreach ($wgCategoryTreeDefaultOptions as $option => $default) {
         if (isset($wgCategoryTreeSpecialPageOptions[$option])) {
             $default = $wgCategoryTreeSpecialPageOptions[$option];
         }
         $options[$option] = $request->getVal($option, $default);
     }
     $this->tree = new CategoryTree($options);
     $output = $this->getOutput();
     $output->addWikiMsg('categorytree-header');
     $this->executeInputForm();
     if ($this->target !== '' && $this->target !== null) {
         if (!$wgCategoryTreeForceHeaders) {
             CategoryTree::setHeaders($output);
         }
         $title = CategoryTree::makeTitle($this->target);
         if ($title && $title->getArticleID()) {
             $output->addHTML(Xml::openElement('div', array('class' => 'CategoryTreeParents')));
             $output->addHTML(wfMessage('categorytree-parents')->parse());
             $output->addHTML(wfMessage('colon-separator')->escaped());
             $parents = $this->tree->renderParents($title);
             if ($parents == '') {
                 $output->addHTML(wfMessage('categorytree-no-parent-categories')->parse());
             } else {
                 $output->addHTML($parents);
             }
             $output->addHTML(Xml::closeElement('div'));
             $output->addHTML(Xml::openElement('div', array('class' => 'CategoryTreeResult')));
             $output->addHTML($this->tree->renderNode($title, 1));
             $output->addHTML(Xml::closeElement('div'));
         } else {
             $output->addHTML(Xml::openElement('div', array('class' => 'CategoryTreeNotice')));
             $output->addHTML(wfMessage('categorytree-not-found', $this->target)->parse());
             $output->addHTML(Xml::closeElement('div'));
         }
     }
 }
 /**
  * Main execution function
  * @param $par Parameters passed to the page
  */
 function execute($par)
 {
     global $wgRequest, $wgOut, $wgMakeBotPrivileged, $wgUser;
     $this->setHeaders();
     if ($par) {
         $this->target = $par;
     } else {
         $this->target = $wgRequest->getVal('target', wfMsg('rootcategory'));
     }
     $this->target = trim($this->target);
     #HACK for undefined root category
     if ($this->target == '<rootcategory>' || $this->target == '&lt;rootcategory&gt;') {
         $this->target = NULL;
     }
     $this->mode = $wgRequest->getVal('mode', CT_MODE_CATEGORIES);
     if ($this->mode == 'all') {
         $this->mode = CT_MODE_ALL;
     } else {
         if ($this->mode == 'pages') {
             $this->mode = CT_MODE_PAGES;
         } else {
             if ($this->mode == 'categories') {
                 $this->mode = CT_MODE_CATEGORIES;
             }
         }
     }
     $this->mode = (int) $this->mode;
     $wgOut->addWikiText(wfMsgNoTrans('categorytree-header'));
     $wgOut->addHtml($this->makeInputForm());
     if ($this->target !== '' && $this->target !== NULL) {
         CategoryTree::setHeaders($wgOut);
         $title = CategoryTree::makeTitle($this->target);
         if ($title && $title->getArticleID()) {
             $html = '';
             $html .= wfOpenElement('div', array('class' => 'CategoryTreeParents'));
             $html .= wfElement('span', array('class' => 'CategoryTreeParents'), wfMsg('categorytree-parents')) . ': ';
             $ct = new CategoryTree();
             $parents = $ct->renderParents($title, $this->mode);
             if ($parents == '') {
                 $html .= wfMsg('categorytree-nothing-found');
             } else {
                 $html .= $parents;
             }
             $html .= wfCloseElement('div');
             $html .= wfOpenElement('div', array('class' => 'CategoryTreeResult'));
             $html .= $ct->renderNode($title, $this->mode, true, false);
             $html .= wfCloseElement('div');
             $wgOut->addHtml($html);
         } else {
             $wgOut->addHtml(wfOpenElement('div', array('class' => 'CategoryTreeNotice')));
             $wgOut->addWikiText(wfMsg('categorytree-not-found', $this->target));
             $wgOut->addHtml(wfCloseElement('div'));
         }
     }
 }