/**
  * Make a wiki link, the following formats are supported:
  *
  * [[Page Title]]
  * [[Page Title|Presentation Text]]
  * [[Page Title#Anchor]]
  * [[Page Title#Anchor|Presentation Text]]
  * [[#Anchor|Presentation Text]] (link to anchor on same wiki page)
  */
 static function makeLink(&$nt, $a_wiki_id, $text = '', $query = '', $trail = '', $prefix = '', $a_offline = false)
 {
     global $ilCtrl;
     //wfProfileIn( __METHOD__ );
     if (!is_object($nt)) {
         # Fail gracefully
         $retVal = "<!-- ERROR -->{$prefix}{$text}{$trail}";
     } else {
         //var_dump($trail);
         //var_dump($nt);
         // remove anchor from text, define anchor
         $anc = "";
         if ($nt->mFragment != "") {
             if (substr($text, strlen($text) - strlen("#" . $nt->mFragment)) == "#" . $nt->mFragment) {
                 $text = substr($text, 0, strlen($text) - strlen("#" . $nt->mFragment));
                 $anc = "#" . $nt->mFragment;
             } else {
                 $anc = "#" . $nt->mFragment;
             }
         }
         # Separate the link trail from the rest of the link
         // outcommented due to bug #14590
         //			list( $inside, $trail ) = ilWikiUtil::splitTrail( $trail );
         $retVal = '***' . $text . "***" . $trail;
         $url_title = ilWikiUtil::makeUrlTitle($nt->mTextform);
         $db_title = ilWikiUtil::makeDbTitle($nt->mTextform);
         if ($db_title != "") {
             $pg_exists = ilWikiPage::_wikiPageExists($a_wiki_id, $db_title);
         } else {
             // links on same page (only anchor used)
             $pg_exists = true;
         }
         //var_dump($nt);
         //var_dump($inside);
         //var_dump($trail);
         $wiki_link_class = !$pg_exists ? ' class="ilc_link_IntLink ilWikiPageMissing" ' : ' class="ilc_link_IntLink" ';
         if (!$a_offline) {
             if ($url_title != "") {
                 $ilCtrl->setParameterByClass("ilobjwikigui", "page", $url_title);
                 $retVal = '<a ' . $wiki_link_class . ' href="' . $ilCtrl->getLinkTargetByClass("ilobjwikigui", "gotoPage") . $anc . '">' . $text . '</a>' . $trail;
                 $ilCtrl->setParameterByClass("ilobjwikigui", "page", $_GET["page"]);
             } else {
                 $retVal = '<a ' . $wiki_link_class . ' href="' . $anc . '">' . $text . '</a>' . $trail;
             }
         } else {
             if ($pg_exists) {
                 if ($db_title != "") {
                     $pg_id = ilWikiPage::getIdForPageTitle($a_wiki_id, $db_title);
                     $retVal = '<a ' . $wiki_link_class . ' href="' . "wpg_" . $pg_id . ".html" . $anc . '">' . $text . '</a>' . $trail;
                 } else {
                     $retVal = '<a ' . $wiki_link_class . ' href="' . $anc . '">' . $text . '</a>' . $trail;
                 }
             } else {
                 $retVal = $text . $trail;
             }
         }
         //$ilCtrl->debug("ilWikiUtil::makeLink:-$inside-$trail-");
         /*			if ( $nt->isExternal() ) {
         				$nr = array_push( $this->mInterwikiLinkHolders['texts'], $prefix.$text.$inside );
         				$this->mInterwikiLinkHolders['titles'][] = $nt;
         				$retVal = '<!--IWLINK '. ($nr-1) ."-->{$trail}";
         			} else {
         				$nr = array_push( $this->mLinkHolders['namespaces'], $nt->getNamespace() );
         				$this->mLinkHolders['dbkeys'][] = $nt->getDBkey();
         				$this->mLinkHolders['queries'][] = $query;
         				$this->mLinkHolders['texts'][] = $prefix.$text.$inside;
         				$this->mLinkHolders['titles'][] = $nt;
         
         				$retVal = '<!--LINK '. ($nr-1) ."-->{$trail}";
         			}
         */
     }
     //wfProfileOut( __METHOD__ );
     //echo "<br>".$retVal; exit;
     return $retVal;
 }