MediaWiki:Empfehlungen.class.php

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen

<source lang="php"> <?php

class Empfehlungen { private $empfNs; private $empfArray = array(); private $empfUsers = array();

function __construct() { global $wgEmpfSubpath;

// "erlaubte" Namensräume auslesen if( wfEmptyMsg('empfehlungen-namespaces') ) { $empfNs = array('Artikel'); // Durchfallwert, falls MediaWiki:Empfehlungen-namespaces leer oder nicht vorhanden } else { $message = wfMsg( 'empfehlungen-namespaces' ); preg_match_all('/(\d+)\s*\|\s*(.+)/', $message, $namespaces); foreach($namespaces[1] as $key => $value) { $empfNs[$value] = trim($namespaces[2][$key]); } } $this->empfNs = $empfNs;

$dbr = wfGetDB( DB_SLAVE ); $empfehlungen = array(); // Alle Seiten im Kamelnamensraum, die auf /$wgEmpfSubpath enden auslesen $empfehlungsseiten = $dbr->select( 'page', array( 'page_id', 'page_title' ), "page_namespace = 2 AND page_title LIKE '%/".$wgEmpfSubpath."'", __METHOD__ ); foreach( $empfehlungsseiten as $row ) { $empfehlungsseite = Title::makeTitle( 2, $row->page_title ); $user = $empfehlungsseite->getBaseText();

// existiert überhaupt ein zugehöriges Kamelkonto (man kennt ja seine Pappenheimer)? //if(User::idFromName($user) == NULL) continue;

$userlink = Linker::linkKnown( $empfehlungsseite, $user ); $this->empfUsers[] = $user; // Jetzt von jeder Empfehlungsseite die links auslesen $empf = $dbr->select( 'pagelinks', array( 'pl_namespace', 'pl_title' ), "pl_from = {$row->page_id}", __METHOD__ ); foreach( $empf as $empfehlung ) { if(!isset($empfNs[$empfehlung->pl_namespace])) continue; $title = Title::makeTitle( $empfehlung->pl_namespace, $empfehlung->pl_title ); // Empfehlungen nicht existierender Seiten rausschmeißen if(!$title->exists()) continue; // der (eindeutige) Index dient der alphabetischen Sortierung nach Titel + Namensraum $index = $title->getText().$title->getNsText(); $link = Linker::linkKnown( $title ); if( !isset($empfArray[$index]) ) { $empfArray[$index]['link'] = Linker::link( $title ); $empfArray[$index]['ns'] = $title->getNamespace(); } $empfArray[$index]['users'][] = $userlink; } } $this->empfArray = $empfArray; }

function getEmpfNs() { return $this->empfNs; }

function getEmpfArray() { return $this->empfArray; }

function getEmpfUsers() { return $this->empfUsers; } } </source>