Files
invbrain.neuroinf.jp/etc/dumpPubMedPDF.php
T
2020-01-06 13:03:45 +09:00

118 lines
3.1 KiB
PHP

<?php
require_once __DIR__.'/common.inc.php';
MyDumpTool::makeDirectory('public/modules');
MyDumpTool::makeDirectory('public/modules/PubMedPDF');
// MyDumpTool::makeDirectory('public/modules/PubMedPDF/detail');
dumpPubMedPDF();
function dumpPubMedPDF()
{
global $xoopsDB;
$prefix = $xoopsDB->prefix();
// module
$module = MyDumpTool::getModule('PubMedPDF');
// paper
$paper = [];
$authorIdMap = [];
$journalIdMap = [];
$sql = <<< SQL
SELECT
*
FROM `${prefix}_pmid_id`
ORDER BY `id` ASC
SQL;
if (!($res = $xoopsDB->query($sql))) {
var_dump($xoopsDB);
exit();
}
while ($row = $xoopsDB->fetchArray($res)) {
MyDumpTool::decode($row);
MyDumpTool::convertToInt($row, ['id', 'PMID', 'Journal', 'Year']);
$authors = array_map('trim', explode(',', rtrim(trim($row['Author']), ',')));
$authorIds = [];
foreach ($authors as $_author) {
$authorId = (int) substr($_author, 1, -1);
$authorIds[] = $authorId;
$authorIdMap[$authorId][] = $row['id'];
}
$journalIdMap[$row['Journal']][] = $row['id'];
$paper[] = [
'id' => $row['id'],
'pmid' => $row['PMID'],
'journal_id' => $row['Journal'],
'year' => $row['Year'],
'volume' => $row['Volume'],
'page' => $row['Page'],
'author_ids' => $authorIds,
'title' => $row['Title'],
];
$paperDetail = [
'id' => $row['id'],
'abstract' => $row['Abstract'],
'reg_user' => $row['R_usr'],
'reg_date' => $row['R_date'],
];
//MyDumpTool::saveJson('public/modules/PubMedPDF/detail/'.$row['id'].'.json', $paperDetail);
}
$xoopsDB->freeRecordSet($res);
// author
$author = [];
$sql = <<< SQL
SELECT
*
FROM `${prefix}_pmid_author`
ORDER BY `Author` ASC
SQL;
if (!($res = $xoopsDB->query($sql))) {
var_dump($xoopsDB);
exit();
}
while ($row = $xoopsDB->fetchArray($res)) {
MyDumpTool::decode($row);
MyDumpTool::convertToInt($row, ['id']);
$author[] = [
'id' => $row['id'],
'name' => $row['Author'],
'count' => count($authorIdMap[$row['id']]),
];
}
$xoopsDB->freeRecordSet($res);
// journal
$journal = [];
$sql = <<< SQL
SELECT
*
FROM `${prefix}_pmid_journal`
ORDER BY `Journal` ASC
SQL;
if (!($res = $xoopsDB->query($sql))) {
var_dump($xoopsDB);
exit();
}
while ($row = $xoopsDB->fetchArray($res)) {
MyDumpTool::decode($row);
MyDumpTool::convertToInt($row, ['id']);
$journal[] = [
'id' => $row['id'],
'name' => $row['Journal'],
'count' => count($journalIdMap[$row['id']]),
];
}
$xoopsDB->freeRecordSet($res);
$data = [
'name' => $module['name'],
'author' => $author,
'journal' => $journal,
'paper' => $paper,
];
MyDumpTool::saveJson('public/modules/PubMedPDF/index.json', $data);
}