Extension:FileSync.php

From Organic Design wiki
Revision as of 10:55, 2 August 2007 by Nad (talk | contribs) (comment and structure)

<?php

  1. Extension:FileSync
Info.svg These are the MediaWiki extensions we're using and/or developing. Please refer to the information on the mediawiki.org wiki for installation and usage details. Extensions here which have no corresponding mediawiki article are either not ready for use or have been superseded. You can also browse our extension code in our local Subversion repository or our GitHub mirror.

Template:Php

  1. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  2. - Author: User:NadCategory:Extensions created with Template:Extension
  3. - Started: 2007-08-02

if (!defined('MEDIAWIKI')) die('Not an entry point.');

define('FILESYNC_VERSION','0.0.0, 2007-08-02');

$wgFileSyncMagic = "filesync"; $wgExtensionFunctions[] = 'wfSetupFileSync'; $wgHooks['LanguageGetMagic'][] = 'wfFileSyncLanguageGetMagic';

$wgExtensionCredits['parserhook'][] = array( 'name' => 'FileSync', 'author' => 'User:Nad', 'description' => 'A template which can be added to an article to make it synchronise with a file', 'url' => 'http://www.organicdesign.co.nz/Extension:FileSync', 'version' => FILESYNC_VERSION );

class FileSync {

var $args; var $paths;

# Constructor - add hooks and initialise class function FileSync() { global $wgHooks,$wgParser,$wgFileSyncMagic; $wgParser->setFunctionHook($wgFileSyncMagic,array($this,'magicFilesync')); $wgHooks['ArticleSaveComplete'][] = $this; $this->args = array(); $this->paths = array(); }

# Process the filesync-magic function magicFilesync(&$parser) {

# Populate $argv with both named and numeric parameters foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^(.+?)\\s*=\\s*(.+)$/',$arg,$match)) $this->args[$match[1]] = $match[2]; else $this->paths[] = $arg; }

# Check if file has changed, # if so, update article revision with an edit summary and add a site-notice msg

return ; }

# Update any associated files with the new content # - templates are expanded so that filepaths are known function onArticleSaveComplete(&$article,&$user,&$text) { $parser = new Parser; $opt = ParserOptions::newFromUser($user); $title = $article->getTitle(); $content = $parser->preprocess($text,$title,$opt);

# Write the new content to the file (add a msg to site-notice if possible)

return true; }

# Needed in some versions to prevent Special:Version from breaking function __toString() { return 'FileSync'; }

	}
  1. Called from $wgExtensionFunctions array when initialising extensions

function wfSetupFileSync() { global $wgFileSync; $wgFileSync = new FileSync(); }

  1. Needed in MediaWiki >1.8.0 for magic word hooks to work properly

function wfFileSyncLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgFileSyncMagic; $magicWords[$wgFileSyncMagic] = array(0,$wgFileSyncMagic); return true; } ?>