Mercurial > hg > vamp-website
diff forum/Sources/ManageCalendar.php @ 76:e3e11437ecea website
Add forum code
author | Chris Cannam |
---|---|
date | Sun, 07 Jul 2013 11:25:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forum/Sources/ManageCalendar.php Sun Jul 07 11:25:48 2013 +0200 @@ -0,0 +1,350 @@ +<?php + +/** + * Simple Machines Forum (SMF) + * + * @package SMF + * @author Simple Machines http://www.simplemachines.org + * @copyright 2011 Simple Machines + * @license http://www.simplemachines.org/about/smf/license.php BSD + * + * @version 2.0 + */ + +if (!defined('SMF')) + die('Hacking attempt...'); + +// The main controlling function doesn't have much to do... yet. +function ManageCalendar() +{ + global $context, $txt, $scripturl, $modSettings; + + isAllowedTo('admin_forum'); + + // Everything's gonna need this. + loadLanguage('ManageCalendar'); + + // Default text. + $context['explain_text'] = $txt['calendar_desc']; + + // Little short on the ground of functions here... but things can and maybe will change... + $subActions = array( + 'editholiday' => 'EditHoliday', + 'holidays' => 'ModifyHolidays', + 'settings' => 'ModifyCalendarSettings' + ); + + $_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'holidays'; + + // Set up the two tabs here... + $context[$context['admin_menu_name']]['tab_data'] = array( + 'title' => $txt['manage_calendar'], + 'help' => 'calendar', + 'description' => $txt['calendar_settings_desc'], + 'tabs' => array( + 'holidays' => array( + 'description' => $txt['manage_holidays_desc'], + ), + 'settings' => array( + 'description' => $txt['calendar_settings_desc'], + ), + ), + ); + + $subActions[$_REQUEST['sa']](); +} + +// The function that handles adding, and deleting holiday data +function ModifyHolidays() +{ + global $sourcedir, $scripturl, $txt, $context; + + // Submitting something... + if (isset($_REQUEST['delete']) && !empty($_REQUEST['holiday'])) + { + checkSession(); + + foreach ($_REQUEST['holiday'] as $id => $value) + $_REQUEST['holiday'][$id] = (int) $id; + + // Now the IDs are "safe" do the delete... + require_once($sourcedir . '/Subs-Calendar.php'); + removeHolidays($_REQUEST['holiday']); + } + + $listOptions = array( + 'id' => 'holiday_list', + 'title' => $txt['current_holidays'], + 'items_per_page' => 20, + 'base_href' => $scripturl . '?action=admin;area=managecalendar;sa=holidays', + 'default_sort_col' => 'name', + 'get_items' => array( + 'file' => $sourcedir . '/Subs-Calendar.php', + 'function' => 'list_getHolidays', + ), + 'get_count' => array( + 'file' => $sourcedir . '/Subs-Calendar.php', + 'function' => 'list_getNumHolidays', + ), + 'no_items_label' => $txt['holidays_no_entries'], + 'columns' => array( + 'name' => array( + 'header' => array( + 'value' => $txt['holidays_title'], + ), + 'data' => array( + 'sprintf' => array( + 'format' => '<a href="' . $scripturl . '?action=admin;area=managecalendar;sa=editholiday;holiday=%1$d">%2$s</a>', + 'params' => array( + 'id_holiday' => false, + 'title' => false, + ), + ), + ), + 'sort' => array( + 'default' => 'title', + 'reverse' => 'title DESC', + ) + ), + 'date' => array( + 'header' => array( + 'value' => $txt['date'], + ), + 'data' => array( + 'function' => create_function('$rowData', ' + global $txt; + + // Recurring every year or just a single year? + $year = $rowData[\'year\'] == \'0004\' ? sprintf(\'(%1$s)\', $txt[\'every_year\']) : $rowData[\'year\']; + + // Construct the date. + return sprintf(\'%1$d %2$s %3$s\', $rowData[\'day\'], $txt[\'months\'][(int) $rowData[\'month\']], $year); + '), + 'class' => 'windowbg', + ), + 'sort' => array( + 'default' => 'event_date', + 'reverse' => 'event_date DESC', + ), + ), + 'check' => array( + 'header' => array( + 'value' => '<input type="checkbox" onclick="invertAll(this, this.form);" class="input_check" />', + ), + 'data' => array( + 'sprintf' => array( + 'format' => '<input type="checkbox" name="holiday[%1$d]" class="input_check" />', + 'params' => array( + 'id_holiday' => false, + ), + ), + 'style' => 'text-align: center', + ), + ), + ), + 'form' => array( + 'href' => $scripturl . '?action=admin;area=managecalendar;sa=holidays', + ), + 'additional_rows' => array( + array( + 'position' => 'below_table_data', + 'value' => ' + <a href="' . $scripturl . '?action=admin;area=managecalendar;sa=editholiday" style="margin: 0 1em">[' . $txt['holidays_add'] . ']</a> + <input type="submit" name="delete" value="' . $txt['quickmod_delete_selected'] . '" class="button_submit" />', + 'style' => 'text-align: right;', + ), + ), + ); + + require_once($sourcedir . '/Subs-List.php'); + createList($listOptions); + + //loadTemplate('ManageCalendar'); + $context['page_title'] = $txt['manage_holidays']; + + // Since the list is the only thing to show, use the default list template. + $context['default_list'] = 'holiday_list'; + $context['sub_template'] = 'show_list'; +} + +// This function is used for adding/editing a specific holiday +function EditHoliday() +{ + global $txt, $context, $scripturl, $smcFunc; + + loadTemplate('ManageCalendar'); + + $context['is_new'] = !isset($_REQUEST['holiday']); + $context['page_title'] = $context['is_new'] ? $txt['holidays_add'] : $txt['holidays_edit']; + $context['sub_template'] = 'edit_holiday'; + + // Cast this for safety... + if (isset($_REQUEST['holiday'])) + $_REQUEST['holiday'] = (int) $_REQUEST['holiday']; + + // Submitting? + if (isset($_POST[$context['session_var']]) && (isset($_REQUEST['delete']) || $_REQUEST['title'] != '')) + { + checkSession(); + + // Not too long good sir? + $_REQUEST['title'] = $smcFunc['substr']($_REQUEST['title'], 0, 60); + $_REQUEST['holiday'] = isset($_REQUEST['holiday']) ? (int) $_REQUEST['holiday'] : 0; + + if (isset($_REQUEST['delete'])) + $smcFunc['db_query']('', ' + DELETE FROM {db_prefix}calendar_holidays + WHERE id_holiday = {int:selected_holiday}', + array( + 'selected_holiday' => $_REQUEST['holiday'], + ) + ); + else + { + $date = strftime($_REQUEST['year'] <= 4 ? '0004-%m-%d' : '%Y-%m-%d', mktime(0, 0, 0, $_REQUEST['month'], $_REQUEST['day'], $_REQUEST['year'])); + if (isset($_REQUEST['edit'])) + $smcFunc['db_query']('', ' + UPDATE {db_prefix}calendar_holidays + SET event_date = {date:holiday_date}, title = {string:holiday_title} + WHERE id_holiday = {int:selected_holiday}', + array( + 'holiday_date' => $date, + 'selected_holiday' => $_REQUEST['holiday'], + 'holiday_title' => $_REQUEST['title'], + ) + ); + else + $smcFunc['db_insert']('', + '{db_prefix}calendar_holidays', + array( + 'event_date' => 'date', 'title' => 'string-60', + ), + array( + $date, $_REQUEST['title'], + ), + array('id_holiday') + ); + } + + updateSettings(array( + 'calendar_updated' => time(), + )); + + redirectexit('action=admin;area=managecalendar;sa=holidays'); + } + + // Default states... + if ($context['is_new']) + $context['holiday'] = array( + 'id' => 0, + 'day' => date('d'), + 'month' => date('m'), + 'year' => '0000', + 'title' => '' + ); + // If it's not new load the data. + else + { + $request = $smcFunc['db_query']('', ' + SELECT id_holiday, YEAR(event_date) AS year, MONTH(event_date) AS month, DAYOFMONTH(event_date) AS day, title + FROM {db_prefix}calendar_holidays + WHERE id_holiday = {int:selected_holiday} + LIMIT 1', + array( + 'selected_holiday' => $_REQUEST['holiday'], + ) + ); + while ($row = $smcFunc['db_fetch_assoc']($request)) + $context['holiday'] = array( + 'id' => $row['id_holiday'], + 'day' => $row['day'], + 'month' => $row['month'], + 'year' => $row['year'] <= 4 ? 0 : $row['year'], + 'title' => $row['title'] + ); + $smcFunc['db_free_result']($request); + } + + // Last day for the drop down? + $context['holiday']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['holiday']['month'] == 12 ? 1 : $context['holiday']['month'] + 1, 0, $context['holiday']['month'] == 12 ? $context['holiday']['year'] + 1 : $context['holiday']['year'])); +} + +function ModifyCalendarSettings($return_config = false) +{ + global $modSettings, $context, $settings, $txt, $boarddir, $sourcedir, $scripturl, $smcFunc; + + // Load the boards list. + $boards = array(''); + $request = $smcFunc['db_query']('order_by_board_order', ' + SELECT b.id_board, b.name AS board_name, c.name AS cat_name + FROM {db_prefix}boards AS b + LEFT JOIN {db_prefix}categories AS c ON (c.id_cat = b.id_cat)', + array( + ) + ); + while ($row = $smcFunc['db_fetch_assoc']($request)) + $boards[$row['id_board']] = $row['cat_name'] . ' - ' . $row['board_name']; + $smcFunc['db_free_result']($request); + + // Look, all the calendar settings - of which there are many! + $config_vars = array( + // All the permissions: + array('permissions', 'calendar_view', 'help' => 'cal_enabled'), + array('permissions', 'calendar_post'), + array('permissions', 'calendar_edit_own'), + array('permissions', 'calendar_edit_any'), + '', + // How many days to show on board index, and where to display events etc? + array('int', 'cal_days_for_index'), + array('select', 'cal_showholidays', array(0 => $txt['setting_cal_show_never'], 1 => $txt['setting_cal_show_cal'], 3 => $txt['setting_cal_show_index'], 2 => $txt['setting_cal_show_all'])), + array('select', 'cal_showbdays', array(0 => $txt['setting_cal_show_never'], 1 => $txt['setting_cal_show_cal'], 3 => $txt['setting_cal_show_index'], 2 => $txt['setting_cal_show_all'])), + array('select', 'cal_showevents', array(0 => $txt['setting_cal_show_never'], 1 => $txt['setting_cal_show_cal'], 3 => $txt['setting_cal_show_index'], 2 => $txt['setting_cal_show_all'])), + '', + // Linking events etc... + array('select', 'cal_defaultboard', $boards), + array('check', 'cal_daysaslink'), + array('check', 'cal_allow_unlinked'), + array('check', 'cal_showInTopic'), + '', + // Dates of calendar... + array('int', 'cal_minyear'), + array('int', 'cal_maxyear'), + '', + // Calendar spanning... + array('check', 'cal_allowspan'), + array('int', 'cal_maxspan'), + ); + + if ($return_config) + return $config_vars; + + // Get the settings template fired up. + require_once($sourcedir . '/ManageServer.php'); + + // Some important context stuff + $context['page_title'] = $txt['calendar_settings']; + $context['sub_template'] = 'show_settings'; + + // Get the final touches in place. + $context['post_url'] = $scripturl . '?action=admin;area=managecalendar;save;sa=settings'; + $context['settings_title'] = $txt['calendar_settings']; + + // Saving the settings? + if (isset($_GET['save'])) + { + checkSession(); + saveDBSettings($config_vars); + + // Update the stats in case. + updateSettings(array( + 'calendar_updated' => time(), + )); + + redirectexit('action=admin;area=managecalendar;sa=settings'); + } + + // Prepare the settings... + prepareDBSettingContext($config_vars); +} + +?> \ No newline at end of file