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;
}