MediaWiki:Empfehlungen.class.php
<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>