'; $eventCalendar_theme_responsive_css = ''; $moment_js = ''; $jquery_eventCalendar_js = ''; $GLOBALS['user_header']['module_unicalendar_'] = $eventCalendar_css."\n".$eventCalendar_theme_responsive_css."\n".$moment_js."\n".$jquery_eventCalendar_js; // подключаем в секции js файл с данным , согласно Id календаря $data_dir = "/modules/unicalendar/js/data-files"; $filename = BASE_DIR .$data_dir."/data".$id.".js"; if (file_exists($filename)) { $GLOBALS['user_header']['module_unicalendar_' . $id] = ''; } else { echo $uca_file_not_found.$id.".js"; // если не смогли подключить файл -выводим сообщение-подсказку }; global $AVE_Template; $AVE_Template->assign('id', $id); $AVE_Template->display($tpl_dir . 'unicalendar.tpl'); } /** * ФУНКЦИИ АДМИНИСТРАТИВНОЙ ЧАСТИ */ /** * Вывод списка календарей * * @param string $tpl_dir - путь к папке с шаблонами модуля */ function unicalendarList($tpl_dir) { global $AVE_DB, $AVE_Template; $unicalendars = array(); $limit = 20; $start = get_current_page() * $limit - $limit; $sql = $AVE_DB->Query(" SELECT SQL_CALC_FOUND_ROWS u.*, COUNT(u.id) AS uca_count FROM " . PREFIX . "_module_unicalendar AS u GROUP BY u.id ORDER BY u.id ASC LIMIT " . $start . "," . $limit . " "); $sql_num = $AVE_DB->Query("SELECT FOUND_ROWS()"); $num = $sql_num->GetCell(); while($row = $sql->FetchAssocArray()) { array_push($unicalendars, $row); } if ($num > $limit) { $page_nav = "
  • {t}
  • "; $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav); } else { $page_nav = ''; } $AVE_Template->assign('page_nav', $page_nav); if (!empty($_REQUEST['alert'])) { $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')); } /** * Создание календаря * */ function unicalendarNew() { if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') { global $AVE_DB; $cont = true; $alert = ''; if (empty($_POST['uca_title'])) { $alert = '&alert=empty_uca_title'; $cont = false; } if ($cont) { $AVE_DB->Query(" INSERT INTO " . PREFIX . "_module_unicalendar SET id = '', uca_title = '" . $_POST['uca_title'] . "', uca_date_format = '" . $_POST['uca_date_format'] . "', uca_events = '" . $_POST['uca_events'] . "', uca_rubric_id = '" . $_POST['uca_rubric_id'] . "', uca_rubric_title = '" . $_POST['uca_rubric_title'] . "', uca_doc_id = '" . $_POST['uca_doc_id'] . "', uca_link = '" . $_POST['uca_link'] . "', uca_day = '" . $_POST['uca_day'] . "', uca_scroll = '" . $_POST['uca_scroll'] . "', uca_descript = '" . $_POST['uca_descript'] . "', uca_events_limit = '" . $_POST['uca_events_limit'] . "' "); // Получаем обновленные данные календаря require(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.php'); // загружаем файл ленгов для php переменных $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_unicalendar WHERE id = '".$AVE_DB->InsertId()."' "); $unicalendars = array(); while ($row = $sql->FetchAssocArray()) { array_push($unicalendars, $row); } foreach ( $unicalendars as $k=>$v ) { $uca_id = $v['id']; $uca_dfrm = $v['uca_date_format']; $uevents = $v['uca_events']; $urubric_id = $v['uca_rubric_id']; $udoc_id = $v['uca_doc_id']; $uca_day = $v['uca_day']; $uca_scroll = $v['uca_scroll']; $uca_link = $v['uca_link']; $uca_descript = $v['uca_descript']; $uca_events_limit = $v['uca_events_limit']; } // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '1'){ $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $results = array(); while ($row = $sql->FetchAssocArray()) { array_push($results, $row); } //получаем данные всех документов из заданной рубрики циклом, формируем строку JSON foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; $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: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", 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."}}});});"; // Получаем Id документов в категории на момент создания календаря и записываем значение в БД $rubric_count ='Id='.$rubric_count; $rubric_count = chop($rubric_count, ' OR Id='); $AVE_DB->Query(" UPDATE " . PREFIX . "_module_unicalendar SET uca_doc_id = '" . $rubric_count . "' WHERE id = '" . $uca_id . "' "); // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); chmod(BASE_DIR . $fdir, 0777); $df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$uca_id.".js", "w") or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files ! flock($df,2); fwrite($df, $js_data_files); flock($df,3); fclose($df); } // Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '2'){ $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents 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 foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"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: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", 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."}}});});"; // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); chmod(BASE_DIR . $fdir, 0777); $df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$uca_id.".js", "w") or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files ! flock($df,2); fwrite($df, $js_data_files); flock($df,3); fclose($df); } } header('Location:index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1'. $alert); exit; } } /** * Редактирование календаря * @param int $unicalendar_id - идентификатор календаря */ function unicalendarEdit($tpl_dir, $unicalendar_id) { global $AVE_DB, $AVE_Template; $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_unicalendar WHERE id = '" . $unicalendar_id . "' "); $unicalendars = array(); while ($row = $sql->FetchAssocArray()) { array_push($unicalendars, $row); } foreach ( $unicalendars as $k=>$v ) { $uevents = $v['uca_events']; $urubric_id = $v['uca_rubric_id']; $udoc_id = $v['uca_doc_id']; } if($uevents == 2) { $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $unidocs = array(); while ($row = $sql->FetchAssocArray()) { array_push($unidocs, $row); } $AVE_Template->assign('unidocs', $unidocs); $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." "); $check_docs = array(); while ($row = $sql->FetchAssocArray()) { array_push($check_docs, $row); } $AVE_Template->assign('check_docs', $check_docs); } $AVE_Template->assign('unicalendars', $unicalendars); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_unicalendar_edit.tpl')); } /** * Сохранение календаря после редактирования * @param int $unicalendar_id - идентификатор календаря */ function unicalendarEditSave($unicalendar_id) { global $AVE_DB; $AVE_DB->Query(" UPDATE " . PREFIX . "_module_unicalendar SET uca_title = '" . $_POST['uca_title'] . "', uca_date_format = '" . $_POST['uca_date_format'] . "', uca_doc_id = '" . $_POST['uca_doc_id'] . "', uca_events = '" . $_POST['uca_events'] . "', uca_rubric_id = '" . $_POST['uca_rubric_id'] . "', uca_rubric_title = '" . $_POST['uca_rubric_title'] . "', uca_link = '" . $_POST['uca_link'] . "', uca_day = '" . $_POST['uca_day'] . "', uca_scroll = '" . $_POST['uca_scroll'] . "', uca_descript = '" . $_POST['uca_descript'] . "', uca_events_limit = '" . $_POST['uca_events_limit'] . "' WHERE id = '" . $unicalendar_id . "' "); $as = array(); $as->$_POST['uca_title']; $as->$_POST['uca_rubric_title']; echo json_encode($as); // Получаем обновленные данные календаря require(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.php'); // загружаем файл ленгов для php переменных $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_unicalendar WHERE id = '" . $unicalendar_id . "' "); $unicalendars = array(); while ($row = $sql->FetchAssocArray()) { array_push($unicalendars, $row); } foreach ( $unicalendars as $k=>$v ) { $uevents = $v['uca_events']; $uca_dfrm = $v['uca_date_format']; $urubric_id = $v['uca_rubric_id']; $udoc_id = $v['uca_doc_id']; $uca_day = $v['uca_day']; $uca_scroll = $v['uca_scroll']; $uca_link = $v['uca_link']; $uca_descript = $v['uca_descript']; $uca_events_limit = $v['uca_events_limit']; } // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '1'){ $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $results = array(); while ($row = $sql->FetchAssocArray()) { array_push($results, $row); } //получаем данные всех документов из заданной рубрики циклом, формируем строку JSON foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; $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: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", 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."}}});});"; // Получаем Id документов в категории на момент создания календаря и записываем значение в БД $rubric_count ='Id='.$rubric_count; $rubric_count = chop($rubric_count, ' OR Id='); $AVE_DB->Query(" UPDATE " . PREFIX . "_module_unicalendar SET uca_doc_id = '" . $rubric_count . "' WHERE id = '" . $unicalendar_id . "' "); // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); chmod(BASE_DIR . $fdir, 0777); $df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$unicalendar_id.".js", "w") or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files ! flock($df,2); fwrite($df, $js_data_files); flock($df,3); fclose($df); } // Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '2'){ $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents 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 foreach ( $results as $k=>$v ) { $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"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: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", 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."}}});});"; // Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря $fdir = "/modules/unicalendar/js/data-files/"; mkdir(BASE_DIR . $fdir, 0777, true); chmod(BASE_DIR . $fdir, 0777); $df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$unicalendar_id.".js", "w") or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files ! flock($df,2); fwrite($df, $js_data_files); flock($df,3); fclose($df); } exit; } /** * Выбор событий календаря * */ function unicalendarEventsNew() { require_once(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.php'); // загружаем файл ленгов для php переменных if (isset($_POST['c'])) // если пришел запрос вывести все категории, получаем данные и отдаем их в шаблон (выпадающий список) { global $AVE_DB; $sql = $AVE_DB->Query(" SELECT Id, rubric_title FROM " . PREFIX . "_rubrics "); echo ""; while($result = $sql->FetchRow()) { echo ""; }; } if (isset($_POST['a'])) // если пришел запрос вывести все документы (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404), получаем и выводим чекбоксами { global $AVE_DB; $sql = $AVE_DB->Query(" SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description FROM " . PREFIX . "_documents WHERE rubric_id = '" . $_POST['b'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' "); $u_sel_doc = array(); while ($row = $sql->FetchAssocArray()) { array_push($u_sel_doc, $row); } foreach ( $u_sel_doc as $k=>$v ) { echo ""."".$v['Id'].""."".$v['document_title'].""."".$v['document_published'] = pretty_date(strftime(TIME_FORMAT, $v['document_published'])).""."".$v['document_expire'] = pretty_date(strftime(TIME_FORMAT, $v['document_expire'])).""; } } 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."' "); $all_doc_rub = array(); while ($row = $sql->FetchAssocArray()) { array_push($all_doc_rub, $row); } foreach ( $all_doc_rub as $k=>$v ) { $doc_count .= $v['Id'].","; } echo $doc_count = chop($doc_count, ' ,'); } if (isset($_POST['allowed_rub'])) //если пришел запрос "проверяем и запрещаем создавать календарь, если рубрика содержит только один или два документа, Id которых равны либо главной странице либо странице 404 , либо и то и другое" { global $AVE_DB; $sql = $AVE_DB->Query(" SELECT Id FROM " . PREFIX . "_documents WHERE rubric_id = '" . $_POST['allowed_rub_id'] . "' "); $all_doc_rub = array(); while ($row = $sql->FetchAssocArray()) { array_push($all_doc_rub, $row); } foreach ( $all_doc_rub as $k=>$v ) { $doc_count .= $v['Id'].","; } echo $doc_count = chop($doc_count, ' ,'); } exit; } /** * Удаление календаря * * @param int $unicalendar_id - идентификатор календаря */ function unicalendarDelete($unicalendar_id) { global $AVE_DB; $AVE_DB->Query("DELETE FROM " . PREFIX . "_module_unicalendar WHERE id = '" . $unicalendar_id . "'"); // Удаляем js файл с данными из директории /modules/unicalendar/js/data-files/ $data_dir = "/modules/unicalendar/js/data-files"; $filename = BASE_DIR .$data_dir."/data".$unicalendar_id.".js"; if (file_exists($filename)) { unlink($filename); } header('Location:index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp=' . SESSION); exit; } } ?>