diff --git a/README.md b/README.md index f30a156..c301485 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ ##### Changelog: +##### 14.05.2017 - обновление модуля - версия 1.2.3 - изменен алгоритм проверки актуальности календарей + ##### 09.05.2017 - обновление модуля - версия 1.2.2 - добавлена проверка актуальности календарей при изменении количества документов в рубрике после создания календаря ##### 06.05.2017 - обновление модуля - версия 1.2.1 - оптимизация запросов БД для публичной части модуля diff --git a/unicalendar/class.unicalendar.php b/unicalendar/class.unicalendar.php index a239897..87e1b49 100644 --- a/unicalendar/class.unicalendar.php +++ b/unicalendar/class.unicalendar.php @@ -142,7 +142,7 @@ class Unicalendar $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_unicalendar - WHERE id = id + WHERE id = '".$AVE_DB->InsertId()."' "); $unicalendars = array(); while ($row = $sql->FetchAssocArray()) @@ -165,7 +165,7 @@ class Unicalendar $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_meta_description FROM " . PREFIX . "_documents - WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' + WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $results = array(); while ($row = $sql->FetchAssocArray()) @@ -176,17 +176,19 @@ class Unicalendar foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; - $rubric_count .= $v['Id'].","; + $rubric_count .= $v['Id']." OR Id="; } $js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; - // считаем количество документов в категории на момент создания календаря и записываем значение в БД - $rubric_count = count(explode(",", chop($rubric_count, ' ,'))); + // Получаем Id документов в категории на момент создания календаря и записываем значение в БД + $rubric_count ='Id='.$rubric_count; + $rubric_count = chop($rubric_count, ' OR Id='); + $AVE_DB->Query(" UPDATE " . PREFIX . "_module_unicalendar SET - uca_rub_doc_count = '" . $rubric_count . "' + uca_doc_id = '" . $rubric_count . "' WHERE id = '" . $uca_id . "' "); @@ -222,16 +224,6 @@ class Unicalendar } $js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; - // считаем количество выбранных документов в категории на момент создания календаря и записываем значение в БД - $rubric_count = count(explode(",", chop($rubric_count, ' ,'))); - $AVE_DB->Query(" - UPDATE - " . PREFIX . "_module_unicalendar - SET - uca_rub_doc_count = '" . $rubric_count . "' - WHERE id = '" . $uca_id . "' - "); - // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); @@ -369,19 +361,21 @@ class Unicalendar foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; - $rubric_count .= $v['Id'].","; + $rubric_count .= $v['Id']." OR Id="; } $js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; - // считаем количество документов в категории на момент создания календаря и записываем значение в БД - $rubric_count = count(explode(",", chop($rubric_count, ' ,'))); + // Получаем Id документов в категории на момент создания календаря и записываем значение в БД + $rubric_count ='Id='.$rubric_count; + $rubric_count = chop($rubric_count, ' OR Id='); + $AVE_DB->Query(" UPDATE " . PREFIX . "_module_unicalendar SET - uca_rub_doc_count = '" . $rubric_count . "' + uca_doc_id = '" . $rubric_count . "' WHERE id = '" . $unicalendar_id . "' - "); + "); // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; @@ -415,16 +409,6 @@ class Unicalendar } $js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; - // считаем количество выбранных документов в категории на момент создания календаря и записываем значение в БД - $rubric_count = count(explode(",", chop($rubric_count, ' ,'))); - $AVE_DB->Query(" - UPDATE - " . PREFIX . "_module_unicalendar - SET - uca_rub_doc_count = '" . $rubric_count . "' - WHERE id = '" . $unicalendar_id . "' - "); - // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); @@ -481,13 +465,13 @@ class Unicalendar echo ""."".$v['Id'].""."".$v['document_title'].""."".$v['document_published'] = pretty_date(strftime(TIME_FORMAT, $v['document_published'])).""; } } - if (isset($_POST['all_doc'])) // если пришел запрос-проверка актуальности календаря (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404) + if (isset($_POST['check_rel'])) // если пришел запрос-проверка актуальности календаря (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404) { global $AVE_DB; $sql = $AVE_DB->Query(" SELECT Id FROM " . PREFIX . "_documents - WHERE rubric_id = '" . $_POST['r_id'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' ".$_POST['udoc_id']." + WHERE rubric_id = '" . $_POST['r_id'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $all_doc_rub = array(); while ($row = $sql->FetchAssocArray()) @@ -498,9 +482,7 @@ class Unicalendar { $doc_count .= $v['Id'].","; } - $doc_count = count(explode(",", chop($doc_count, ' ,'))); - echo $doc_count; - $sql->Close(); + echo $doc_count = chop($doc_count, ' ,'); } exit; } diff --git a/unicalendar/lang/ru.txt b/unicalendar/lang/ru.txt index 9e5831b..1f57a20 100644 --- a/unicalendar/lang/ru.txt +++ b/unicalendar/lang/ru.txt @@ -53,5 +53,8 @@ UCA_DATE_INF = "Дата создания" UCA_SELECT_ALL_INF = "Выбрать/Снять все чекбоксы" UCA_RELEV = "Актуальность" UCA_ALERT_RELEV_YES = "Ок - данные календаря актуальны" -UCA_ALERT_RELEV_BAD = "Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент, это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните календарь!" -UCA_ALERT_RELEV_WAR = "Предупреждение - события в календаре неактуальны! На момент создания календаря документов в рубрике было меньше, чем на текущий момент. Для устранения - пересохраните календарь." \ No newline at end of file +UCA_ALERT_RELEV_BAD = "Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент, это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!
ОТЧЕТ:
В рубрике :
" +UCA_ALERT_RELEV_WAR = "Предупреждение - события в календаре неактуальны! На момент создания календаря документов в рубрике было меньше, чем на текущий момент. Для устранения - пересохраните календарь." +UCA_ALERT_RELEV_BAD_SD = "Внимание - события в календаре неактуальны! На момент создания календаря был(и) выбран(ы) документ(ы), которые(ых) на текущий момент не существует в рубрике. Это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!
ОТЧЕТ:
В рубрике :
" +UCA_ALERT_RELEV_BAD_SE = ",
документ(ы) с
Id = " +UCA_ALERT_RELEV_BAD_SF = "  не найден(ы) !" \ No newline at end of file diff --git a/unicalendar/module.php b/unicalendar/module.php index 4ccd3c3..8ff5982 100644 --- a/unicalendar/module.php +++ b/unicalendar/module.php @@ -14,7 +14,7 @@ if (defined('ACP')) { $modul['ModuleName'] = 'Универсальный календарь событий'; $modul['ModuleSysName'] = 'unicalendar'; - $modul['ModuleVersion'] = '1.2.2'; + $modul['ModuleVersion'] = '1.2.3'; $modul['ModuleDescription'] = '
Модуль позволяет создавать различные календари событий.
Для вывода календаря используйте системный тег [mod_unicalendar:XXX]'; $modul['ModuleAutor'] = 'Repellent'; $modul['ModuleCopyright'] = '© AVE.cms Team 2017'; diff --git a/unicalendar/sql.php b/unicalendar/sql.php index 98fd24c..9817c31 100644 --- a/unicalendar/sql.php +++ b/unicalendar/sql.php @@ -26,7 +26,6 @@ $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_unicalendar` ( `uca_rubric_id` varchar(10) NOT NULL, `uca_rubric_title` varchar(255) NOT NULL, `uca_doc_id` varchar(1024) NOT NULL, - `uca_rub_doc_count` int(10) NOT NULL, `uca_link` varchar(10) NOT NULL, `uca_day` varchar(10) NOT NULL, `uca_scroll` varchar(10) NOT NULL, @@ -57,9 +56,9 @@ $module_sql_update[] = " DROP IF EXISTS `uca_user_link`, DROP IF EXISTS `uca_user_time` "; - // Обновление таблицы в версии модуля v1.2.2 + // Обновление таблицы в версии модуля v1.2.3 $module_sql_update[] = " ALTER TABLE `CPPREFIX_module_unicalendar` - ADD IF NOT EXISTS `uca_rub_doc_count` int(10) NOT NULL - AFTER `uca_doc_id`"; + DROP IF EXISTS `uca_rub_doc_count` + "; ?> \ No newline at end of file diff --git a/unicalendar/templates/admin_unicalendar_edit.tpl b/unicalendar/templates/admin_unicalendar_edit.tpl index 9e9d8cf..a67dae4 100644 --- a/unicalendar/templates/admin_unicalendar_edit.tpl +++ b/unicalendar/templates/admin_unicalendar_edit.tpl @@ -218,12 +218,22 @@ {/foreach} \ No newline at end of file