URL: http://metabolomics.jp/ */ if ( !defined( 'MEDIAWIKI' ) ) { die( 'This file is a MediaWiki extension, see JDXFunctions.php.' ); } $wgExtensionFunctions[] = 'efSetupJDXFunctions'; $wgExtensionCredits['parserhook'][] = array( 'name' => 'JDXFunctions', 'version' => '0.1', 'author' => 'K, Suwa', 'description' => 'Parser functions for JDX', 'url' => 'http://metabolomics.jp/wiki/Help:Extension/JDXFunctions', ); $wgHooks['LanguageGetMagic'][] = 'efJDXFunctionsLanguageGetMagic'; class JDXFunctions { /** * Get filesystem path. for version 1.11, use {{filepath:-}} for version 1.12 or later * e.g. {{#jdxfilepath:title}} => "http://www.metabolomics.jp/mediawiki/images/1/11/title" * * @param $parser Parser Parent parser * @param $title page title * @return string URL to file */ function jdxFilePath( &$parser, $title ) { global $wgServer; $img = wfFindFile( $title ); if( !$img ) return ""; return $img->getURL(); } /** * Get jdx file plain size. * e.g. {{#jdxfilesize:title}} => 10000 * * @param $parser Parser Parent parser * @param $title page title * @return string plain file size */ function jdxFileSize( &$parser, $title ) { $img = wfFindFile( $title ); if( !$img ) return 0; $url = $img->getURL(); if( !ereg( ".gz$", $url ) ) return 0; if( strpos( $url, '/../' ) !== false ) return 0; $path = escapeshellarg( $_SERVER['DOCUMENT_ROOT'] . $url ); $size = `/bin/gzip -l $path | tail -1 | awk '{print $2}'`; return $size; } } function efSetupJDXFunctions() { global $wgParser; $jdxFunctions = new JDXFunctions; $wgParser->setFunctionHook( 'jdxfilepath', array( &$jdxFunctions, 'jdxFilePath' ) ); $wgParser->setFunctionHook( 'jdxfilesize', array( &$jdxFunctions, 'jdxFileSize' ) ); } function efJDXFunctionsLanguageGetMagic( &$magicWords, $langCode ) { $magicWords['jdxfilepath'] = array( 0, 'jdxfilepath' ); $magicWords['jdxfilesize'] = array( 0, 'jdxfilesize' ); return true; }