include('include/common.inc.php');
include('nb_specific/common.inc.php');
include('include/library/common.inc.php');
include('nb_specific/security.inc.php');
include('modules/article/article.class.php');
include('include/filters/issuesrus.class.php');
include('include/filters/issueseng.class.php');
include('include/filters/issuescn.class.php');
include('include/filters/transliterate.class.php');
include('include/filters/transliterateifneeded.class.php');
include('include/filters/newlinefilter.class.php');
include('include/filters/annotationfilter.class.php');
include('include/filters/doifilter.class.php');
function GetTxtMonth($month, $per_year, $lang)
{
if ($per_year == 0) return $month;
$month_array = array();
$month_array[1][1] = 'ßíâàðü';
$month_array[1][2] = 'Ôåâðàëü';
$month_array[1][3] = 'Ìàðò';
$month_array[1][4] = 'Àïðåëü';
$month_array[1][5] = 'Ìàé';
$month_array[1][6] = 'Èþíü';
$month_array[1][7] = 'Èþëü';
$month_array[1][8] = 'Àâãóñò';
$month_array[1][9] = 'Ñåíòÿáðü';
$month_array[1][10] = 'Îêòÿáðü';
$month_array[1][11] = 'Íîÿáðü';
$month_array[1][12] = 'Äåêàáðü';
$month_array[2][1] = 'January';
$month_array[2][2] = 'February';
$month_array[2][3] = 'March';
$month_array[2][4] = 'April';
$month_array[2][5] = 'May';
$month_array[2][6] = 'June';
$month_array[2][7] = 'July';
$month_array[2][8] = 'August';
$month_array[2][9] = 'September';
$month_array[2][10] = 'October';
$month_array[2][11] = 'November';
$month_array[2][12] = 'December';
$month_array[3][1] = '一月';
$month_array[3][2] = '二月';
$month_array[3][3] = '行进';
$month_array[3][4] = '四月';
$month_array[3][5] = '可能';
$month_array[3][6] = '六月';
$month_array[3][7] = '七月';
$month_array[3][8] = '八月';
$month_array[3][9] = '九月';
$month_array[3][10] = '十月';
$month_array[3][11] = '十一月';
$month_array[3][12] = '十二月';
$index = (int) (1 + ($month - 1) * 12/$per_year);
if ($index < 13) return $month_array[$lang][$index];
return $month;
}
function GetTxtPeriod($per_year, $lang)
{
if ($lang == 1)
{
$fltr = new CIssuesRusFilter();
}
elseif ($lang == 2)
{
$fltr = new CIssuesEngFilter();
}
else
{
$fltr = new CIssuesCnFilter();
}
return $fltr->Process($per_year);
}
$issuesWhere = '((id_issue < 1024) OR ((id_issue > 1023) AND ((creation_phaze >= 3) OR (partial = 1) OR (creation_phaze = 2 AND year > 2016))))';
global $lang;
$type = preg_replace('/[^A-z]/', '', $_GET['mag']);
if (strpos($type,"eng") === 0)
{
DBConnect();
$mag_info = GetRecordSet('enotabene.emag_mags', array('*'), "str_id_eng_nb='$type'");
if (count($mag_info) > 0)
{
$mag_info = $mag_info[0];
$type = $mag_info['str_id'];
}
}
$month = array_key_exists('month', $_GET) ? intval($_GET['month']) : 0;
$year = array_key_exists('year', $_GET) ? intval($_GET['year']) : 0;
$isAurora = ($host == 'aurora-group') ? 1 : 0;
//print('type = '.$type);
DBConnect();
$mag_info = GetRecordSet('enotabene.emag_mags', array('*'), "str_id='$type'");
$mag_info = $mag_info[0];
$id_mag = $mag_info['id_mag'];
if ($id_mag == 74 && ($year == 2024 || $year == 0))
$id_mag = 47;
if ($id_mag == 74 && !$isAurora)
{
header("location: https://aurora-journals.com/e_PHILHARMONICA/");
die();
}
$magWhere = 'id_mag='.$id_mag;
if ($isAurora && ($id_mag == 74 || $id_mag == 47))
{
$magWhere = '((id_mag = 74 AND year <=2023) OR (id_mag = 47 AND year >2023))';
}
if (!$year)
{
$year = GetSQLValue('enotabene.emag_issues','year',$magWhere.' AND '.$issuesWhere.' ORDER BY year DESC LIMIT 0,1');
$month = GetSQLValue('enotabene.emag_issues','month','year='.$year.' AND '.$magWhere.' AND '.$issuesWhere.' ORDER BY month DESC LIMIT 0,1');
}
if (!$month)
{
$month = GetSQLValue('enotabene.emag_issues','month','year='.$year.' AND '.$magWhere.' AND '.$issuesWhere.' ORDER BY month DESC LIMIT 0,1');
}
$science_nums = GetSQLValue('enotabene.emag_mags', 'science_nums', "id_mag =".$id_mag);
$kvartil = GetSQLValue('enotabene.emag_mags', 'kvartil', "id_mag =".$id_mag);
$partial = GetSQLValue("enotabene.emag_issues", "partial", 'id_mag="'.$id_mag.'" AND year='.$year.' AND month='.$month);
$creation_phaze = GetSQLValue("enotabene.emag_issues", "creation_phaze", 'id_mag="'.$id_mag.'" AND year='.$year.' AND month='.$month);
$science_nums_new_array = GetRecordSet('enotabene.emag_scientific_cipher_of_specialty as s LEFT JOIN enotabene.emag_cipher_by_mags as m ON s.id_cipher = m.id_cipher', array('DISTINCT(s.num)'), 'id_mag='.$id_mag.' ORDER BY s.num');
$science_nums_new_str = "";
for ($i = 0; $i < count($science_nums_new_array); $i++)
{
if ($science_nums_new_str != "")
{
$science_nums_new_str .= ", ";
}
$science_nums_new_str .= $science_nums_new_array[$i]['num'];
}
$mag_info['science_nums_new_str'] = $science_nums_new_str;
DBDisconnect();
ShowTopPart();
if ($month && $year)
{
DBConnect();
if ($type == 'phil' || $type == 'psen')
{
$mag_page_header = new CSimplePage('e_mag_page_header_'.$type.'.tpl');
}
else
{
$mag_page_header = new CSimplePage('e_mag_page_header.tpl');
}
$issues_db = GetRecordSet('enotabene.emag_issues', array('year','month', 'id_issue'), 'id_mag='.$id_mag.' AND '.$issuesWhere.' ORDER BY year, month');
$issues = array();
$years = array();
foreach( $issues_db as $issue)
{
$issues[$issue['year']][$issue['month']] = $issue['id_issue'];
if (!in_array($issue['year'], $years))
{
$years[] = $issue['year'];
}
}
DBDisconnect();
$mag_page_header->AddVar('issues', $issues);
$mag_page_header->AddVar('all_years', $years);
$mag_page_header->AddVar('current_month', $month);
$mag_page_header->AddVar('current_month_txt', (GetTxtMonth($month, $mag_info['issues_in_year'], $lang)));
$mag_page_header->AddVar('current_year', $year);
$mag_page_header->AddVar('period_txt', (GetTxtPeriod($mag_info['issues_in_year'], $lang)));
$mag_page_header->AddVar('mag_info', $mag_info);
$mag_page_header->AddVar('mag_first_year', $mag_info['first_issue_year']);
$mag_page_header->AddVar('science_nums', $science_nums);
$mag_page_header->AddVar('kvartil', $kvartil);
$mag_page_header->Show();
}
else
{
$mag_page_header = new CSimplePage('e_mag_page_header_no_issues.tpl');
$mag_page_header->AddVar('mag_info', $mag_info);
$mag_page_header->AddVar('science_nums', $science_nums);
$mag_page_header->AddVar('kvartil', $kvartil);
$mag_page_header->Show();
$month = 0;
$year = 0;
}
$side_menu_html = '';
$electronic = true;
if ($mag_info['printed'] > 0)
{
$electronic = false;
}
$side_menu_html = RenderSideMenu($type, -1, 0, 0, $mag_info, $lang, $electronic, 0);
DBConnect();
$issues_nb_itemid = GetRecordSet('enotabene.emag_issues', array('year','month', 'id_issue'), 'nb_itemid > 0 AND id_mag='.$id_mag.' AND year='.$year.' AND month ='.$month);
$where = "emag_articles.id_mag=".$id_mag." AND year=".$year.' AND month='.$month.' AND status = 7 ORDER BY page_start ASC, id_article ASC';
if (count($issues_nb_itemid) > 0 )
{
$where = "emag_articles.nb_itemid > 0 AND ".$where;
}
$subscribtionUser = GetESubscribtionUser($id_mag, $year, $month, 0);
DBConnect();
$not_public_articles = GetRecordSet('enotabene.emag_articles', array("*"), "id_mag=".$id_mag." AND year=".$year.' AND month='.$month.' AND status = 10 ORDER BY page_start ASC, id_article ASC');
DBDisconnect();
$tFilter = new CTransliterateFilter();
for($i=0; $i < count($not_public_articles); $i++)
if (strlen($not_public_articles[$i]['authors_eng']) < 2)
{
$not_public_articles[$i]['authors_eng'] = $tFilter->Process($not_public_articles[$i]['authors']);
}
$mag = new CList("enotabene.emag_articles", $where, array('id_article','id_mag','year','month','title','title_eng', 'title_cn','annotation','annotation_eng', 'annotation_cn','review','review_start_date','review_cost','reviewer_decision','authors','authors_eng','page_start','page_end','lang_text','doi','id_rubric','free','is_eng_text_published','edn','nb_itemid'), "e_content/");
$mag->AddHelperQuery("SELECT title AS rubric, title_eng as rubric_eng FROM enotabene.emag_rubrics WHERE id_rubric={id_rubric}");
$mag->AddHelperQuery("SELECT GROUP_CONCAT(keyword SEPARATOR ', ') AS keywords FROM enotabene.emag_keywords WHERE id_article={id_article}");
$mag->AddHelperQuery("SELECT GROUP_CONCAT(keyword SEPARATOR ', ') AS keywords_eng FROM enotabene.emag_keywords_eng WHERE id_article={id_article}");
$mag->AddHelperQuery("SELECT GROUP_CONCAT(keyword SEPARATOR ', ') AS keywords_cn FROM enotabene.emag_keywords_cn WHERE id_article={id_article}");
$mag->AddHelperQuery("SELECT GROUP_CONCAT(link SEPARATOR '
') AS bibliography FROM enotabene.emag_bibliolinks WHERE id_article={id_article}");
$mag->AddHelperQuery("SELECT GROUP_CONCAT(link SEPARATOR '
') AS eng_bibliography FROM enotabene.emag_bibliolinks WHERE id_article={id_article}");
$mag->AddHelperQuery("SELECT id_item as purchased_id FROM nb_library_purchased_items WHERE is_active = 1 AND id_mag={id_mag} AND year={year} AND month={month} AND id_user=".$subscribtionUser);
$mag->AddHelperQuery("SELECT id_item as purchased_id_collection FROM nb_library_purchased_items WHERE is_active = 1 AND id_mag={id_mag} AND year=-1 AND month=-1 AND id_user=".$subscribtionUser);
$mag->AddHelperQuery("SELECT id_item as purchased_id_full FROM nb_library_purchased_items WHERE is_active = 1 AND year=-1 AND month=-1 AND id_user=".$subscribtionUser." AND (((id_mag=-3) AND (DATE_ADD(order_date, INTERVAL 1 YEAR) > NOW())) OR ((id_mag=-4) AND (DATE_ADD(order_date, INTERVAL 1 DAY) > NOW())))");
if (isset($_SESSION['library_id_user']))
$subscribtionUser = $_SESSION['library_id_user'];
$mag->AddHelperQuery("SELECT id_item as purchased_id_article FROM nb_library_purchased_items WHERE is_active = 1 AND year=-1 AND month=-1 AND id_mag=-1 AND id_user=".$subscribtionUser." AND id_article=-{id_article}");
$mag->AddFieldFilter('doi', new CDoiFilter());
$mag->AddConst('not_public_articles', $not_public_articles);
DBConnect();
$articleIDs = GetRecordSet('enotabene.emag_articles', array('id_article'), "id_mag=".$id_mag." AND year=".$year.' AND month='.$month.' AND status = 7');
DBDisconnect();
$articleIDsStr = '';
$articleReviews = array();
$articleReviewsEng = array();
$reviewHistory = array();
$reviewHistoryEng = array();
DBConnect();
if (count($articleIDs)) {
foreach ($articleIDs as $articleID) {
$articleIDsStr .= (!$articleIDsStr ? '' : ',') . $articleID['id_article'];
$articleReviews[$articleID['id_article']] = array();
$reviewHistoryTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$articleID['id_article']." AND status = 1 AND review_cost >= 100 ORDER BY review_start_date ASC");
$reviewHistoryEngTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$articleID['id_article']." AND status = 1 AND review_cost >= 100 AND LENGTH(review_eng) > 5 ORDER BY review_start_date ASC");
if (count($reviewHistoryTmp) == 0 || count($reviewHistoryEngTmp) == 0 )
{
$id_article_original = GetSQLValue('enotabene.emag_articles','id_article_original','id_article='.$articleID['id_article']);
if ($id_article_original > 0)
{
if (count($reviewHistoryTmp) == 0)
{
$reviewHistoryTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$id_article_original." AND status = 1 AND review_cost >= 100 ORDER BY review_start_date ASC");
if (count($reviewHistoryTmp) == 0)
{
$id_article_original_2 = GetSQLValue('enotabene.emag_articles','id_article_original','id_article='.$id_article_original);
if ($id_article_original_2 > 0)
$reviewHistoryTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$id_article_original_2." AND status = 1 AND review_cost >= 100 ORDER BY review_start_date ASC");
}
for($i=0; $i < count($reviewHistoryTmp); $i++)
{
$reviewHistoryTmp[$i]['id_article'] = $articleID['id_article'];
}
}
if (count($reviewHistoryEngTmp) == 0)
{
//$_GET['debug']=1;
$reviewHistoryEngTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$id_article_original." AND status = 1 AND review_cost >= 100 AND LENGTH(review_eng) > 5 ORDER BY review_start_date ASC");
// print("count reviewHistoryEngTmp " .count($reviewHistoryEngTmp));
//print_r($reviewHistoryEngTmp);
if (count($reviewHistoryEngTmp) == 0)
{
$id_article_original_2 = GetSQLValue('enotabene.emag_articles','id_article_original','id_article='.$id_article_original);
if ($id_article_original_2 > 0)
$reviewHistoryEngTmp = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article = ".$id_article_original_2." AND status = 1 AND review_cost >= 100 AND LENGTH(review_eng) > 5 ORDER BY review_start_date ASC");
}
for($i=0; $i < count($reviewHistoryEngTmp); $i++)
{
$reviewHistoryEngTmp[$i]['id_article'] = $articleID['id_article'];
}
}
}
}
$reviewHistory = array_merge($reviewHistory, $reviewHistoryTmp);
$reviewHistoryEng = array_merge($reviewHistoryEng, $reviewHistoryEngTmp);
}
}
//print_r($reviewHistoryEng);
DBDisconnect();
if ($articleIDsStr) {
/*DBConnect();
$reviewHistory = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article IN(".$articleIDsStr.") AND status = 1 AND review_cost >= 100 ORDER BY review_start_date ASC");
$reviewHistoryEng = GetRecordSet('enotabene.emag_review_history', array('id_review_history', 'id_article'), "id_article IN(".$articleIDsStr.") AND status = 1 AND review_cost >= 100 AND LENGTH(review_eng) > 5 ORDER BY review_start_date ASC");
DBDisconnect();
*/
if (count($reviewHistory)){
foreach($reviewHistory as $reviewHistoryObj){
$articleReviews[$reviewHistoryObj['id_article']][$reviewHistoryObj['id_review_history']] = $reviewHistoryObj;
}
}
if (count($articleIDs))
{
foreach ($articleIDs as $articleID)
{
while (count($articleReviews[$articleID['id_article']]) > 3 )
{
array_shift($articleReviews[$articleID['id_article']]);
}
}
}
if (count($reviewHistoryEng)){
foreach($reviewHistoryEng as $reviewHistoryEngObj){
$articleReviewsEng[$reviewHistoryEngObj['id_article']][$reviewHistoryEngObj['id_review_history']] = $reviewHistoryEngObj;
}
}
if (count($articleIDs))
{
foreach ($articleIDs as $articleID)
{
if (isset($articleReviewsEng[$articleID['id_article']]))
while (count($articleReviewsEng[$articleID['id_article']]) > 3 )
{
array_shift($articleReviewsEng[$articleID['id_article']]);
}
}
}
}
$mag->SetRecordCountInPage(100);
$mag->AddConst('side_menu', $side_menu_html);
$mag->AddConst('mag_info', $mag_info);
$mag->AddFieldFilter('bibliography', new CNewlineFilter());
$mag->AddFieldFilter('annotation', new CAnnotationFilter());
$mag->AddFieldFilter('annotation_eng', new CAnnotationFilter());
$mag->AddFieldFilter('annotation_cn', new CAnnotationFilter());
$mag->AddFieldFilter('eng_bibliography', new CTransliterateFilter());
$mag->AddFieldFilter('authors_eng', new CTransliterateIfNeededFilter());
$mag->AddConst('partial', $partial);
$mag->AddConst('creation_phaze', $creation_phaze);
$mag->AddConst('mag_year', $year);
$mag->AddConst('lang', $lang);
$mag->AddConst('articleReviews', $articleReviews);
$mag->AddConst('articleReviewsEng', $articleReviewsEng);
$output_info = GetOutputMagInfo($id_mag, $year, $month);
$editor = $output_info['editor'];
$issn = $output_info['issn'];
$issue_date = $output_info['issue_date'];
$trans = new CTransliterateFilter();
$mag->AddConst('editor', $editor);
$mag->AddConst('editor_eng', $trans->Process($editor));
$mag->AddConst('issue_date', $issue_date);
$mag->AddConst('is_aurora', $isAurora);
$mag->Show();
ShowBottomPart();
?>