diff --git a/README.md b/README.md index 0e1a720..9af6e12 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ ##### Changelog: +##### 09.05.2017 - обновление модуля - версия 1.2.2 - добавлена проверка актуальности календарей при изменении количества документов в рубрике после создания календаря + ##### 06.05.2017 - обновление модуля - версия 1.2.1 - оптимизация запросов БД для публичной части модуля ##### 05.05.2017 - обновление модуля - версия 1.2 - исправление ошибок, добавлено редактирование календарей, скрипты вынесены в секцию
diff --git a/unicalendar/class.unicalendar.php b/unicalendar/class.unicalendar.php index d227394..98afc32 100644 --- a/unicalendar/class.unicalendar.php +++ b/unicalendar/class.unicalendar.php @@ -56,7 +56,7 @@ class Unicalendar * @param string $tpl_dir - путь к папке с шаблонами модуля */ function unicalendarList($tpl_dir) - { + { global $AVE_DB, $AVE_Template; $unicalendars = array(); @@ -99,9 +99,11 @@ class Unicalendar { $AVE_Template->assign('alert', htmlspecialchars(stripslashes($_REQUEST['alert']))); } + $AVE_Template->assign('unicalendars', $unicalendars); $AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=new&sub=save&cp=' . SESSION); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_unicalendar_list.tpl')); + } /** @@ -177,8 +179,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'].","; } $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/"; @@ -192,25 +205,36 @@ class Unicalendar fclose($df); } - // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! + // Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '2'){ $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."' AND $udoc_id + WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND ".$udoc_id." "); $results = array(); while ($row = $sql->FetchAssocArray()) { array_push($results, $row); } - //получаем данные всех документов из заданной рубрики циклом, формируем строку JSON + //получаем данные выбранных документов из заданной рубрики циклом, формируем строку JSON 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'].","; } $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); @@ -269,7 +293,7 @@ class Unicalendar $sql = $AVE_DB->Query(" SELECT Id FROM " . PREFIX . "_documents - WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND $udoc_id + WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND ".$udoc_id." "); $check_docs = array(); while ($row = $sql->FetchAssocArray()) @@ -284,7 +308,6 @@ class Unicalendar } - /** * Сохранение календаря после редактирования * @param int $unicalendar_id - идентификатор календаря @@ -349,8 +372,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'].","; } $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/"; @@ -369,7 +403,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."' AND $udoc_id + WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND ".$udoc_id." "); $results = array(); while ($row = $sql->FetchAssocArray()) @@ -380,9 +414,20 @@ 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'].","; } $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); @@ -439,6 +484,27 @@ class Unicalendar echo "