118 lines
3.1 KiB
PHP
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);
|
|
}
|