Архив
', $value ); } /* Проверка идентификаторов: только положительные целые числа. */ $validArt = ($art !== '' && ctype_digit($art) && (int)$art > 0); $validYear = ($id_y !== '' && ctype_digit($id_y) && (int)$id_y > 0); /* Получение одной записи подготовленным запросом. */ $getOne = function ($sql, $id) use ($mysqli) { $stmt = $mysqli->prepare($sql); if (!$stmt) { error_log('show_ru: prepare failed: ' . $mysqli->error); return false; } $stmt->bind_param('i', $id); if (!$stmt->execute()) { error_log('show_ru: execute failed: ' . $stmt->error); $stmt->close(); return false; } $result = $stmt->get_result(); $row = $result ? $result->fetch_assoc() : false; if ($result) { $result->free(); } $stmt->close(); return $row; }; /* Получение нескольких записей подготовленным запросом. */ $getAll = function ($sql, $id) use ($mysqli) { $stmt = $mysqli->prepare($sql); if (!$stmt) { error_log('show_ru: prepare failed: ' . $mysqli->error); return false; } $stmt->bind_param('i', $id); if (!$stmt->execute()) { error_log('show_ru: execute failed: ' . $stmt->error); $stmt->close(); return false; } $result = $stmt->get_result(); $rows = array(); if ($result) { while ($row = $result->fetch_assoc()) { $rows[] = $row; } $result->free(); } $stmt->close(); return $rows; }; /* ========================================================= Просмотр отдельной статьи ========================================================= */ if ($art !== '') { if (!$validArt) { http_response_code(400); exit('Некорректный идентификатор статьи.'); } $info = ''; $row = $getOne( 'SELECT * FROM art WHERE id_st = ? LIMIT 1', (int)$art ); if (!$row) { http_response_code(404); exit('Статья не найдена.'); } $auth = explode(', ', (string)$row['avtors_ru']); $auth_list = ''; $auth_list2 = ''; foreach ($auth as $author) { if ($auth_list !== '') { $auth_list .= ', '; $auth_list2 .= ', '; } $fam = explode(' ', $author); if (isset($fam[1])) { $auth_list2 .= $h($fam[1] . ' ' . $fam[0]); } else { $auth_list2 .= $h($author); } $auth_list .= '' . $h($author) . ''; } if ((string)$art === '2303') { $info .= '';
$info .= 'В связи с технической ошибкой в опубликованную ';
$info .= 'версию статьи были внесены изменения.
';
$info .= 'Обновленная версия статьи:';
$info .= '
';
$info .= ' DOI: ';
$info .= $h($doi);
$info .= '';
$info .= ' ' .
'PDFЧитать ';
$info .= ' ' . $ref . ' Аннотация. ';
$info .= h_title($row['annot_ru']);
$info .= ' Ключевые слова: ';
$info .= $h($kw_text['keyword']) . ' Печатная ссылка: ';
if (count($auth) > 3) {
$info .= h_title($row['name_ru']) . ' / ' .
$auth_list2 . $h($bibl_rec);
} else {
$info .= $h($row['avtors_ru']) . ' ' .
h_title($row['name_ru']) . $h($bibl_rec);
}
$info .= ' Электронная ссылка: ';
$url = 'https://vestnik.mauniver.ru/' .
ltrim((string)$row['link'], '/');
if (count($auth) > 3) {
$info .= h_title($row['name_ru']) . ' / ' .
$auth_list2 . $h($bibl_rec) .
' URL: ' .
$h($url) . '.';
} else {
$info .= $h($row['avtors_ru']) . ' ' .
h_title($row['name_ru']) . $h($bibl_rec) .
' URL: ' .
$h($url) . '.';
}
$info .= ' (';
if (stristr((string)$row['lang'], 'en')) {
$info .= 'на англ.';
} else {
$info .= 'на русск.';
}
if ((int)$row['kolpage'] > 0) {
$info .= ', стр.' . (int)$row['kolpage'];
}
if ((int)$row['ris'] != 0) {
$info .= ', рис. ' . (int)$row['ris'];
}
if ((int)$row['tabl'] != 0) {
$info .= ', табл ' . (int)$row['tabl'];
}
if ((int)$row['nlinks'] != 0) {
$info .= ', ссылок ' . (int)$row['nlinks'];
}
$info .= ', ' . $h($row['fformat']);
if ($row['comprtype'] != 'wo') {
$info .= ', ' . $h($row['comprtype']);
}
$tmp_str = '/usr/web/server_root/science/divs/vestnik/' .
$row['link'];
if (file_exists($tmp_str)) {
$info .= ', ' .
round(filesize($tmp_str) / 1024) . ' КБ';
}
$info .= ')' . $button . ' DOI: ' . $h($sod['doi']) . ' ' . $h($article['avtors_ru']) .
'' . h_title($row['name_ru']) . '
';
if (!empty($row['doi'])) {
$doi = (string)$row['doi'];
$info .= '';
$info .= '
';
}
echo $info;
}
/* =========================================================
Определение последнего выпуска, если id_y не указан
========================================================= */
elseif ($id_y === '') {
$result = $mysqli->query(
'SELECT MAX(id_y) AS id_y FROM years'
);
if ($result) {
$index = $result->fetch_assoc();
$id_y = isset($index['id_y']) ? $index['id_y'] : '';
$result->free();
}
$validYear = (
$id_y !== '' &&
ctype_digit((string)$id_y) &&
(int)$id_y > 0
);
}
/* =========================================================
Просмотр содержания выпуска
========================================================= */
if ($id_y !== '') {
if (!$validYear) {
http_response_code(400);
exit('Некорректный идентификатор выпуска.');
}
$yearId = (int)$id_y;
$row = $getOne(
'SELECT * FROM years WHERE id_y = ? LIMIT 1',
$yearId
);
if (!$row) {
http_response_code(404);
exit('Выпуск не найден.');
}
/* $sod содержит те же данные выпуска, что и $row в исходнике. */
$sod = $row;
if (!empty($sod['link'])) {
echo '';
}
echo 'Том ' . $h($row['tom']) . ', ' .
$h($row['year']) . ' год, ' .
$h($row['vip']) . ' выпуск';
if (!empty($row['part'])) {
echo ', ' . $h($row['part']) . ' часть';
}
echo '
';
if (!empty($sod['doi'])) {
echo '' . $h($sod['spec_ru']) . '
';
/* Список типов статей в выпуске. */
$types = $getAll(
'SELECT DISTINCT type.type_r
FROM type
INNER JOIN art ON type.id_t = art.id_t
WHERE art.id_y = ?
ORDER BY type.id_t',
$yearId
);
$i = 1;
if ($types !== false) {
foreach ($types as $typeRow) {
if ($typeRow['type_r'] != 'Не определён') {
echo '
';
$i++;
}
}
}
/* Статьи выпуска. */
$articles = $getAll(
'SELECT * FROM art WHERE id_y = ? ORDER BY id_st',
$yearId
);
$idt = 0;
$i = 1;
if ($articles !== false) {
foreach ($articles as $article) {
if ((int)$idt != (int)$article['id_t']) {
$idt = (int)$article['id_t'];
$typeRow = $getOne(
'SELECT type_r FROM type WHERE id_t = ? LIMIT 1',
$idt
);
if (
$typeRow &&
$typeRow['type_r'] != 'Не определён'
) {
echo '' .
$h($typeRow['type_r']) . '
';
}
$i++;
}
echo '
';
echo '' .
h_title($article['name_ru']) . '';
if (!empty($article['pages'])) {
echo '
С. ' . $h($article['pages']);
}
echo '
Редакция журнала «Вестник МГТУ» поддерживает политику открытого доступа «Open Access», что позволяет пользователям бесплатно и неограниченно использовать тексты научных статей (читать, загружать, копировать, распространять) при условии указания авторства.
