URL: http://metabolomics.jp/ */ if( !defined( 'MEDIAWIKI' ) ){ die( 'This file is a MediaWiki extension, see MassBankAPI.php.' ); } $wgExtensionFunctions[] = 'efSetupMassBankAPIFunctions'; $wgExtensionCredits['parserhook'][] = array( 'name' => 'MassBankAPI', 'version' => '0.1', 'author' => 'K, Suwa', 'description' => 'Get mass data from MassBank.jp', 'url' => 'http://metabolomics.jp/wiki/Help:Extension/MassBankAPI', ); $wgHooks['LanguageGetMagic'][] = 'efMassBankAPIFunctionsLanguageGetMagic'; class MassBankAPIFunctions { var $url = 'http://www.massbank.jp/api/services/MassBankAPI?wsdl'; /** * Output Mass Peaks * e.g. {{#massPeak:KO00001}} => Mass Peak * * @param $parser Parser Parent parser * @param $massbankid target id * @return string Parts string */ function massPeak( &$parser, $massbankid ) { $ids = array( $massbankid ); $params = array("ids" => $ids ); $soap = new SoapClient( $this->url ); try { $res = $soap->getPeak( $params ); } catch (SoapFault $e) { return ""; } $ret = $res->return; $peak = ""; for ($i = 0 ; $i < count($ret); $i++) { $peak .= "NUM_PEAK:" . $ret->numPeaks . "
\n"; for ($j = 0 ; $j < count($ret->mzs); $j++) { $mz = $ret->mzs[$j]; $inte = $ret->intensities[$j]; $peak .= "mz:$mz,inte:$inte
\n"; } } return $peak; } /** * Output Mass record * e.g. {{#massRecordInfo:KO00001}} => Mass Record Information * * @param $parser Parser Parent parser * @param $massbankid target id * @return string Parts string */ function massRecordInfo( &$parser, $massbankid ) { $ids = array( $massbankid ); $params = array("ids" => $ids ); $soap = new SoapClient( $this->url ); try { $res = $soap->getRecordInfo( $params ); } catch (SoapFault $e) { return ""; } $ret = $res->return; $info = ""; for ($i = 0 ; $i < count($ret); $i++) { $info .= str_replace("\n", "
\n", $ret->info ); } return $info; } } function efSetupMassBankAPIFunctions() { global $wgParser; $massFunctions = new MassBankAPIFunctions; $wgParser->setFunctionHook( 'masspeak', array( &$massFunctions, 'massPeak' ) ); $wgParser->setFunctionHook( 'massrecordinfo', array( &$massFunctions, 'massRecordInfo' ) ); } function efMassBankAPIFunctionsLanguageGetMagic( &$magicWords, $langCode ) { $magicWords['masspeak'] = array( 0, 'masspeak' ); $magicWords['massrecordinfo'] = array( 0, 'massrecordinfo' ); return true; }