Размер:
AAA
Цвет: CCC
Изображения: Вкл.Выкл.
Обычная версия сайта

Архив

Редакция журнала «Вестник МГТУ» поддерживает политику открытого доступа «Open Access», что позволяет пользователям бесплатно и неограниченно использовать тексты научных статей (читать, загружать, копировать, распространять) при условии указания авторства.

Издание "Вестник МГТУ" доступно на условиях лицензии Creative Commons «Attribution» («Атрибуция») 3.0 Непортированная.

', $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 .= '

' . h_title($row['name_ru']) . '

'; if (!empty($row['doi'])) { $doi = (string)$row['doi']; $info .= '

DOI: '; $info .= $h($doi); $info .= ''; $info .= '

'; } /* * find_ref.php должен использовать $row['doi'] и добавлять * сформированный HTML в переменную $info. */ require("find_ref.php"); $ref = isset($ref) ? $ref : ''; $button = isset($button) ? $button : ''; if ($pdf) { /* Безопасное обновление счётчика просмотров. */ $stmt = $mysqli->prepare( 'UPDATE art SET views = views + 1 WHERE id_st = ?' ); if ($stmt) { $stmt->bind_param('i', $artId); $artId = (int)$art; $stmt->execute(); $stmt->close(); } $info .= '

Аннотация

'; $info .= '

'; } else { $info .= '

' . 'PDFЧитать '; $info .= ' ' . $ref . '

'; $info .= '
'; $info .= '

Аннотация. '; $info .= h_title($row['annot_ru']); $info .= '

'; /* Ключевые слова. */ $id_st1 = (int)$row['id_st']; $kw_text = $getOne( 'SELECT keyword FROM keyw WHERE id_kw = ? LIMIT 1', $id_st1 ); if ($kw_text && isset($kw_text['keyword'])) { $info .= '

Ключевые слова: '; $info .= $h($kw_text['keyword']) . '

'; } /* Данные выпуска. */ $yr = (int)$row['id_y']; $y_info = $getOne( 'SELECT * FROM years WHERE id_y = ? LIMIT 1', $yr ); if (!$y_info) { $y_info = array( 'year' => '', 'tom' => '', 'vip' => '' ); } $matches = array(); preg_match( '/[\/_](\d+)_(\d+)[\._]/', (string)$row['link'], $matches ); if (!empty($row['pages'])) { $pages = $row['pages']; } elseif (isset($matches[1], $matches[2])) { $pages = $matches[1] . '-' . $matches[2]; } else { $pages = ''; } $bibl_rec = ' // Вестник МГТУ. ' . $y_info['year'] . '. Т. ' . $y_info['tom'] . ', № ' . $y_info['vip'] . '. C. ' . $pages . '.'; $info .= '

Печатная ссылка: '; 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 . '

'; $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 '

' . 'PDFСкачать номер

'; } echo '

Том ' . $h($row['tom']) . ', ' . $h($row['year']) . ' год, ' . $h($row['vip']) . ' выпуск'; if (!empty($row['part'])) { echo ', ' . $h($row['part']) . ' часть'; } echo '

'; if (!empty($sod['doi'])) { echo '

DOI: ' . $h($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 '
  • ' . $h($typeRow['type_r']) . '
    '; $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 '

    ' . $h($article['avtors_ru']) . '
    '; echo '' . h_title($article['name_ru']) . ''; if (!empty($article['pages'])) { echo '
    С. ' . $h($article['pages']); } echo '

    '; } } } ?>