Gov.php

Aus wiki
Version vom 6. März 2025, 15:00 Uhr von Sysop (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
<?php

require_once('HttpClient.class.php');

$wgExtensionFunctions[] = "wfGovExtension";

function wfGovExtension() {
        global $wgParser;
        $wgParser->setHook( "gov", "completeGovTable" );
}

function completeGovTable( $text, $args, $parser ) {
        global $wgLanguageCode,$wgParser;

        $objectId = $parser->recursiveTagParse($text);

        if( $objectId == '' ) {
                return '<p>Für diesen Artikel wurde noch keine GOV-Kennung eingetragen.</p>';
        }

        $client = new HttpClient('gov.genealogy.net');
        $client->accept_language=$wgLanguageCode;
        if (!$client->get('/item/wikihtml/'.$objectId)) {
                return '<p>Request failed!</p>';
        } else {
                $content = $client->getContent();

                # Links auf Objekte im GOV durch Links im GenWiki ersetzen
                $content = preg_replace('/href="\//','href="http://gov.genealogy.net/',$content);
                $content = preg_replace('/src="\//','src="http://gov.genealogy.net/',$content);
                $content = preg_replace('/http:\/\/gov.genealogy.net\/item\/show\//','/GOV:',$content);

                # den letzten verbleibenden externen GOV-Link als extern markieren
                $content = preg_replace("/href=.\/GOV:$objectId/"," class=\"external free\" href=\"http://gov.genealogy.net/item/show/$objectId",$content);

                # Tabelle mit untergeordneten Objekten hübsch und sortierbar machen
                $content = preg_replace('/<table>/','<table class="wikitable sortable">',$content);

                # Nachsehen, ob es die Umleitung im GOV-Namensraum auf diese Seite schon gibt.
                $redirectTitle = Title::newFromText($objectId,NS_GOV);
                if( $redirectTitle!=NULL && !$redirectTitle->exists() ) {
                        $content .= $wgParser->parse("[[GOV:$objectId|Umleitung fehlt]]",$wgParser->mTitle, $wgParser->mOptions, false, false)->getText();
                }
                return $content;
        }
}
?>