|
|
| (15 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| − | <?php
| + | {{svn|extensions|WikiaInfo/WikiaInfo.php}} |
| − | # Extension:WikiaInfo{{Category:Extensions|WikiaInfo}}{{php}}{{Category:Extensions created with Template:SpecialPage}}{{Category:OD2}}{{Category:Extensions:WikiaInfo}}
| |
| − | # - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
| |
| − | # - Author: [http://www.organicdesign.co.nz/nad User:Nad]
| |
| − | # - Started: 2007-08-27
| |
| − |
| |
| − | if (!defined('MEDIAWIKI')) die('Not an entry point.');
| |
| − |
| |
| − | define('WIKIAINFO_VERSION','1.0.0, 2007-08-27');
| |
| − |
| |
| − | $wgExtensionFunctions[] = 'wfSetupWikiaInfo';
| |
| − |
| |
| − | $wgExtensionCredits['specialpage'][] = array(
| |
| − | 'name' => 'Special:WikiaInfo',
| |
| − | 'author' => '[http://www.organicdesign.co.nz/nad User:Nad]',
| |
| − | 'description' => 'List the currently running wikia and the domains pointing to them',
| |
| − | 'url' => 'http://www.organicdesign.co.nz/Extension:WikiaInfo.php',
| |
| − | 'version' => WIKIAINFO_VERSION
| |
| − | );
| |
| − |
| |
| − | require_once "$IP/includes/SpecialPage.php";
| |
| − |
| |
| − | # Define a new class based on the SpecialPage class
| |
| − | class SpecialWikiaInfo extends SpecialPage {
| |
| − |
| |
| − | # Constructor
| |
| − | function SpecialWikiaInfo() {
| |
| − | SpecialPage::SpecialPage('WikiaInfo','sysop',true,false,false,false);
| |
| − | }
| |
| − |
| |
| − | # Override SpecialPage::execute()
| |
| − | function execute() {
| |
| − | global $wgOut;
| |
| − | | |
| − | $this->setHeaders();
| |
| − | | |
| − | # Get list of domain symlinks by inode
| |
| − | $domains = array();
| |
| − | $dir = $GLOBALS['domains'];
| |
| − | $handle = opendir($dir);
| |
| − | while (false !== ($link = readdir($handle))) {
| |
| − | if (!ereg('^\\.',$link)) {
| |
| − | $stat = stat("$dir/$link");
| |
| − | $inode = $stat[1];
| |
| − | if (is_array($domains[$inode])) $domains[$inode][] = $link;
| |
| − | else $domains[$inode] = array($link);
| |
| − | }
| |
| − | }
| |
| − | closedir($handle);
| |
| − | | |
| − | # Loop through settings files associating with domains
| |
| − | $wikia = array();
| |
| − | $dir = $GLOBALS['settings'];
| |
| − | $handle = opendir($dir);
| |
| − | while (false !== ($file = readdir($handle))) {
| |
| − | $stat = stat("$dir/$file");
| |
| − | $inode = $stat[1];
| |
| − | if (!ereg('^\\.',$file)) $wikia[$file] = $domains[$inode];
| |
| − | }
| |
| − | closedir($handle);
| |
| − | ksort($wikia);
| |
| − | | |
| − | # Render the list
| |
| − | foreach ($wikia as $file => $domains) {
| |
| − | $wgOut->addWikiText("=== $file ===\n");
| |
| − | if (is_array($domains)) {
| |
| − | sort($domains);
| |
| − | foreach ($domains as $domain) $wgOut->addWikiText("*[http://$domain $domain]\n");
| |
| − | }
| |
| − | }
| |
| − | | |
| − | }
| |
| − |
| |
| − | }
| |
| − |
| |
| − | # Called from $wgExtensionFunctions array when initialising extensions
| |
| − | function wfSetupWikiaInfo() {
| |
| − | global $wgLanguageCode,$wgMessageCache;
| |
| − | $wgMessageCache->addMessages(array('wikiainfo' => 'Current Wikia Information'));
| |
| − | SpecialPage::addPage(new SpecialWikiaInfo());
| |
| − | }
| |
| − | ?>
| |