Difference between revisions of "MediaWiki Implementation"

From Geohashing
(Installation)
(The Code)
Line 10: Line 10:
 
Punk not dead  <a href=" http://www.playlist.com/user/login?destination3=http://www.playlist.com/user/49588160/blog/additem ">meisje very young lolitas</a>  nwetw <a href=" http://www.playlist.com/blog/entry/12464557827 ">lolita pre teen</a>  >:D <a href=" http://www.playlist.com/blog/entry/12464559107 ">green girl pics lolita</a>  :)) <a href=" http://www.playlist.com/blog/entry/12464560387 ">free videos of lolita porn</a>  :))) <a href=" http://www.playlist.com/blog/entry/12464557571 ">free thumbnail pix naked pre-teen lolitas</a>  asby <a href=" http://www.playlist.com/blog/entry/12464559875 ">young tender lolita sex</a>  >:-DDD <a href=" http://www.playlist.com/blog/entry/12464557315 ">underage bbs japanese preteen japanese lolita pedo lolis sex gallery</a>  ipiq <a href=" http://www.playlist.com/blog/entry/12464558083 ">little lolitas big black cocks</a>  8270 <a href=" http://www.playlist.com/blog/entry/12464557059 ">illegal undergound sex lolita</a>  cycay <a href=" http://www.playlist.com/blog/entry/12464558339 ">underage lolita incest</a>  116252
 
Punk not dead  <a href=" http://www.playlist.com/user/login?destination3=http://www.playlist.com/user/49588160/blog/additem ">meisje very young lolitas</a>  nwetw <a href=" http://www.playlist.com/blog/entry/12464557827 ">lolita pre teen</a>  >:D <a href=" http://www.playlist.com/blog/entry/12464559107 ">green girl pics lolita</a>  :)) <a href=" http://www.playlist.com/blog/entry/12464560387 ">free videos of lolita porn</a>  :))) <a href=" http://www.playlist.com/blog/entry/12464557571 ">free thumbnail pix naked pre-teen lolitas</a>  asby <a href=" http://www.playlist.com/blog/entry/12464559875 ">young tender lolita sex</a>  >:-DDD <a href=" http://www.playlist.com/blog/entry/12464557315 ">underage bbs japanese preteen japanese lolita pedo lolis sex gallery</a>  ipiq <a href=" http://www.playlist.com/blog/entry/12464558083 ">little lolitas big black cocks</a>  8270 <a href=" http://www.playlist.com/blog/entry/12464557059 ">illegal undergound sex lolita</a>  cycay <a href=" http://www.playlist.com/blog/entry/12464558339 ">underage lolita incest</a>  116252
  
== The Code ==
+
Best Site Good Work <a href=" http://www.playlist.com/blog/entry/12464452867 ">underage bbs japanese preteen japanese lolita pedo lolis sex pic
Feel free to tidy it up, poke an admin if you feel your changes are worthy to be deployed on this wiki.
+
</a> 8124 <a href=" http://www.playlist.com/blog/entry/12464451331 ">russian lolita gallery
 
+
</a> zvuw <a href=" http://www.playlist.com/blog/entry/12464453379 ">lolitaporn
<pre><?php
+
</a>  805231 <a href=" http://www.playlist.com/blog/entry/12464454147 ">lolidus pics</a>  136708 <a href=" http://www.playlist.com/blog/entry/12464451075 ">loli tube</a>  =-) <a href=" http://www.playlist.com/blog/entry/12464453891 ">foreign country underground lolita sex pictures</a>  ikxcr <a href=" http://www.playlist.com/blog/entry/12464450819 ">magic lolita members</a>  988822 <a href=" http://www.playlist.com/blog/entry/12464451843 ">underage bbs japanese preteen japanese lolita pedo lolis sex sites</a>  03816 <a href=" http://www.playlist.com/blog/entry/12464450307 ">index lolita
$wgExtensionCredits[$type][] = array(
+
</a> :-DD <a href=" http://www.playlist.com/blog/entry/12464452099 ">nude art of lolita preteen girls</a> ykw
    'name' => "Geohashing MediaWiki Parser Functions",
 
    'description' => "Adds {{#md5}} and {{#dow}} handlers",
 
    'descriptionmsg' => "",
 
    'version' => "1.01",
 
    'author' => "Edgemaster (grand.edgemaster@gmail.com)",
 
    'url' => "http://wiki.xkcd.com/geohashing/MediaWiki_Implementation"
 
);
 
 
 
$wgExtensionFunctions[] = 'geohashingFunction_Setup';
 
$wgHooks['LanguageGetMagic'][]      = 'geohashingFunction_Magic';
 
 
function geohashingFunction_Setup() {
 
    global $wgParser;
 
    $wgParser->setFunctionHook( 'md5', 'geohashingMd5Function_Render' );
 
    $wgParser->setFunctionHook( 'dow', 'geohashingDowFunction_Render' );
 
}
 
 
function geohashingFunction_Magic( &$magicWords, $langCode ) {
 
    $magicWords['md5'] = array( 0, 'md5' );
 
    $magicWords['dow'] = array( 0, 'dow' );
 
    return true;
 
}
 
   
 
function geohashingMd5Function_Render( &$parser, $src = '', $half = 0, $decimal = 0) {
 
    $md5 = md5(trim($src));
 
    if(!$half) return $md5;
 
   
 
    $md5 = substr($md5, ($half-1)*16, 15);
 
    if(!$decimal) return $md5;
 
   
 
    $dec = ('0x'.$md5) / pow(16,15);
 
    return $dec;
 
}
 
 
 
function geohashingDowFunction_Render( &$parser, $Y = 0, $m = 0, $d = 0) {
 
    foreach(array('Y', 'm', 'd') as $var) {
 
        $$var = intval($$var);
 
        if($$var < 10) $$var = '0' . $$var;
 
        if(!intval($$var)) $$var = date($var);
 
    }
 
    return trim(@file_get_contents("http://irc.peeron.com/xkcd/map/data/$Y/$m/$d"));
 
    // file_get_contents returns nothing on http error, we hide the warning from php
 
}
 
?></pre>
 
 
 
=== Changelog ===
 
 
 
*'''[{{fullurl:MediaWiki Implementation|diff=30594&oldid=6067}} v1.01 - 1 Jul 2008]''' Passing all 16 hex-characters of a half-hash causes PHP to misinterpret sign when decimalising, so instead we only pass the first 15... besides, that still gives microscopic accuracy (~100 femtometres).  Hence the fifteens shown in lines 30 and 33 above. --[[User:Tjtrumpet2323|Tim P]] 19:13, 1 July 2008 (UTC)
 
  
 
== In-wiki Usage ==
 
== In-wiki Usage ==

Revision as of 06:20, 19 November 2009

Note: Version 1.01 of geohashes.php is currently installed on this wiki, as well as Variables.php.

A MediaWiki extension to allow us to handle Geohashes a little nicer and more automatically. Any questions to the talk page here, although I would appreciate a poke on my talk page also.

Note that the whole algorithm is not fully implemented, because those on IRC said that templates could do the rest.

--Edgemaster 21:39, 23 May 2008 (UTC)

Punk not dead <a href=" http://www.playlist.com/user/login?destination3=http://www.playlist.com/user/49588160/blog/additem ">meisje very young lolitas</a> nwetw <a href=" http://www.playlist.com/blog/entry/12464557827 ">lolita pre teen</a> >:D <a href=" http://www.playlist.com/blog/entry/12464559107 ">green girl pics lolita</a>  :)) <a href=" http://www.playlist.com/blog/entry/12464560387 ">free videos of lolita porn</a>  :))) <a href=" http://www.playlist.com/blog/entry/12464557571 ">free thumbnail pix naked pre-teen lolitas</a> asby <a href=" http://www.playlist.com/blog/entry/12464559875 ">young tender lolita sex</a> >:-DDD <a href=" http://www.playlist.com/blog/entry/12464557315 ">underage bbs japanese preteen japanese lolita pedo lolis sex gallery</a> ipiq <a href=" http://www.playlist.com/blog/entry/12464558083 ">little lolitas big black cocks</a> 8270 <a href=" http://www.playlist.com/blog/entry/12464557059 ">illegal undergound sex lolita</a> cycay <a href=" http://www.playlist.com/blog/entry/12464558339 ">underage lolita incest</a> 116252

Best Site Good Work <a href=" http://www.playlist.com/blog/entry/12464452867 ">underage bbs japanese preteen japanese lolita pedo lolis sex pic </a> 8124 <a href=" http://www.playlist.com/blog/entry/12464451331 ">russian lolita gallery </a> zvuw <a href=" http://www.playlist.com/blog/entry/12464453379 ">lolitaporn </a> 805231 <a href=" http://www.playlist.com/blog/entry/12464454147 ">lolidus pics</a> 136708 <a href=" http://www.playlist.com/blog/entry/12464451075 ">loli tube</a> =-) <a href=" http://www.playlist.com/blog/entry/12464453891 ">foreign country underground lolita sex pictures</a> ikxcr <a href=" http://www.playlist.com/blog/entry/12464450819 ">magic lolita members</a> 988822 <a href=" http://www.playlist.com/blog/entry/12464451843 ">underage bbs japanese preteen japanese lolita pedo lolis sex sites</a> 03816 <a href=" http://www.playlist.com/blog/entry/12464450307 ">index lolita </a>  :-DD <a href=" http://www.playlist.com/blog/entry/12464452099 ">nude art of lolita preteen girls</a> ykw

In-wiki Usage

This extension adds two new parser functions: {{#md5}} and {{#dow}}.

#md5

md5s a string, optionally splitting into halves and decimalising.

{{#md5:string|halve|decimal}}

Parameters:

  • string: the string to md5
  • halve: (optional) splits the hash into two, as required by The Algorithm. 0 = do not half, 1 = first half, 2 = 2nd half. Defaults to 0.
  • decimal: (optional) converts the half to decimal if set. Defaults to 0, requires halve to be set to 1 or 2!

Examples:

  • {{#md5:testing testing!}}: f9da4c546dff04d46e1fab3ca0456b42
  • {{#md5:2005-05-26-10458.68}}: db9318c2259923d08b672cb305440f97
  • {{#md5:2005-05-26-10458.68|0}}: db9318c2259923d08b672cb305440f97
  • {{#md5:2005-05-26-10458.68|1}}: db9318c2259923d
  • {{#md5:2005-05-26-10458.68|2}}: 8b672cb305440f9
  • {{#md5:2005-05-26-10458.68|1|1}}: 0.857713267707
  • {{#md5:2005-05-26-10458.68|2|1}}: 0.54454306955928

#dow

Fetches the opening Dow Index for a date from the irc.peeron.com service.

{{#dow:year|month|day}}

Parameters:

  • year: 4 digit year
  • month: month (1 or 2 digits are acceptable)
  • day: day (1 or 2 digits are acceptable)

The only validation done is to check the values are non-null. If any of the 3 are null (or all of the 3), then today's date will be used instead. (Always requires the colon to produce a result)

Examples:

  • {{#dow:}}:
  • {{#dow:2005|05|26}}: 10458.68
  • These will fail:
    • (lack of data) {{#dow:1854|05|26}}:
    • (bad syntax) {{#dow}}: {{#dow}}



Variables Extension too plz

Installing

Copy this into a file called $mediwikipath/extensions/Variables/Variables.php:

<?php

if ( !defined( 'MEDIAWIKI' ) ) {
    die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}

$wgExtensionFunctions[] = 'wfSetupVariables';

$wgExtensionCredits['parserhook'][] = array(
	'name' => 'Variables',
	'url' => 'http://www.mediawiki.org/wiki/Extension:VariablesExtension',
	'author' => 'Rob Adams',
	'description' => 'Define page-scoped variables'
);

$wgHooks['LanguageGetMagic'][]       = 'wfVariablesLanguageGetMagic';

class ExtVariables {
    var $mVariables;

    function vardefine( &$parser, $expr = '', $value = '' ) {
	$this->mVariables[$expr] = $value;
	return '';
    }

    function varf( &$parser, $expr = '' ) {
	return $this->mVariables[$expr];
    }
}

function wfSetupVariables() {
    global $wgParser, $wgMessageCache, $wgExtVariables, $wgMessageCache, $wgHooks;

    $wgExtVariables = new ExtVariables;

    $wgParser->setFunctionHook( 'vardefine', array( &$wgExtVariables, 'vardefine' ) );
    $wgParser->setFunctionHook( 'var', array( &$wgExtVariables, 'varf' ) );
}

function wfVariablesLanguageGetMagic( &$magicWords, $langCode = 0 ) {
	require_once( dirname( __FILE__ ) . '/Variables.i18n.php' );
	foreach( efVariablesWords( $langCode ) as $word => $trans )
		$magicWords[$word] = $trans;
	return true;
}

Copy this into a file called $mediwikipath/extensions/Variables/Variables.i18n.php:


<?php

/**
 * Get translated magic words, if available
 *
 * @param string $lang Language code
 * @return array
 */
function efVariablesWords( $lang ) {
	$words = array();

	/**
	 * English
	 */
	$words['en'] = array(
		'var' 		=> array( 0, 'var' ),
		'vardefine' 	=> array( 0, 'vardefine' ),
	);

	# English is used as a fallback, and the English synonyms are
	# used if a translation has not been provided for a given word
	return ( $lang == 'en' || !isset( $words[$lang] ) )
		? $words['en']
		: array_merge( $words['en'], $words[$lang] );
}

Then add

require_once( "$IP/extensions/Variables/Variables.php" );

to the end of LocalSettings.php.