Chris@76: 'EditHoliday', Chris@76: 'holidays' => 'ModifyHolidays', Chris@76: 'settings' => 'ModifyCalendarSettings' Chris@76: ); Chris@76: Chris@76: $_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'holidays'; Chris@76: Chris@76: // Set up the two tabs here... Chris@76: $context[$context['admin_menu_name']]['tab_data'] = array( Chris@76: 'title' => $txt['manage_calendar'], Chris@76: 'help' => 'calendar', Chris@76: 'description' => $txt['calendar_settings_desc'], Chris@76: 'tabs' => array( Chris@76: 'holidays' => array( Chris@76: 'description' => $txt['manage_holidays_desc'], Chris@76: ), Chris@76: 'settings' => array( Chris@76: 'description' => $txt['calendar_settings_desc'], Chris@76: ), Chris@76: ), Chris@76: ); Chris@76: Chris@76: $subActions[$_REQUEST['sa']](); Chris@76: } Chris@76: Chris@76: // The function that handles adding, and deleting holiday data Chris@76: function ModifyHolidays() Chris@76: { Chris@76: global $sourcedir, $scripturl, $txt, $context; Chris@76: Chris@76: // Submitting something... Chris@76: if (isset($_REQUEST['delete']) && !empty($_REQUEST['holiday'])) Chris@76: { Chris@76: checkSession(); Chris@76: Chris@76: foreach ($_REQUEST['holiday'] as $id => $value) Chris@76: $_REQUEST['holiday'][$id] = (int) $id; Chris@76: Chris@76: // Now the IDs are "safe" do the delete... Chris@76: require_once($sourcedir . '/Subs-Calendar.php'); Chris@76: removeHolidays($_REQUEST['holiday']); Chris@76: } Chris@76: Chris@76: $listOptions = array( Chris@76: 'id' => 'holiday_list', Chris@76: 'title' => $txt['current_holidays'], Chris@76: 'items_per_page' => 20, Chris@76: 'base_href' => $scripturl . '?action=admin;area=managecalendar;sa=holidays', Chris@76: 'default_sort_col' => 'name', Chris@76: 'get_items' => array( Chris@76: 'file' => $sourcedir . '/Subs-Calendar.php', Chris@76: 'function' => 'list_getHolidays', Chris@76: ), Chris@76: 'get_count' => array( Chris@76: 'file' => $sourcedir . '/Subs-Calendar.php', Chris@76: 'function' => 'list_getNumHolidays', Chris@76: ), Chris@76: 'no_items_label' => $txt['holidays_no_entries'], Chris@76: 'columns' => array( Chris@76: 'name' => array( Chris@76: 'header' => array( Chris@76: 'value' => $txt['holidays_title'], Chris@76: ), Chris@76: 'data' => array( Chris@76: 'sprintf' => array( Chris@76: 'format' => '%2$s', Chris@76: 'params' => array( Chris@76: 'id_holiday' => false, Chris@76: 'title' => false, Chris@76: ), Chris@76: ), Chris@76: ), Chris@76: 'sort' => array( Chris@76: 'default' => 'title', Chris@76: 'reverse' => 'title DESC', Chris@76: ) Chris@76: ), Chris@76: 'date' => array( Chris@76: 'header' => array( Chris@76: 'value' => $txt['date'], Chris@76: ), Chris@76: 'data' => array( Chris@76: 'function' => create_function('$rowData', ' Chris@76: global $txt; Chris@76: Chris@76: // Recurring every year or just a single year? Chris@76: $year = $rowData[\'year\'] == \'0004\' ? sprintf(\'(%1$s)\', $txt[\'every_year\']) : $rowData[\'year\']; Chris@76: Chris@76: // Construct the date. Chris@76: return sprintf(\'%1$d %2$s %3$s\', $rowData[\'day\'], $txt[\'months\'][(int) $rowData[\'month\']], $year); Chris@76: '), Chris@76: 'class' => 'windowbg', Chris@76: ), Chris@76: 'sort' => array( Chris@76: 'default' => 'event_date', Chris@76: 'reverse' => 'event_date DESC', Chris@76: ), Chris@76: ), Chris@76: 'check' => array( Chris@76: 'header' => array( Chris@76: 'value' => '', Chris@76: ), Chris@76: 'data' => array( Chris@76: 'sprintf' => array( Chris@76: 'format' => '', Chris@76: 'params' => array( Chris@76: 'id_holiday' => false, Chris@76: ), Chris@76: ), Chris@76: 'style' => 'text-align: center', Chris@76: ), Chris@76: ), Chris@76: ), Chris@76: 'form' => array( Chris@76: 'href' => $scripturl . '?action=admin;area=managecalendar;sa=holidays', Chris@76: ), Chris@76: 'additional_rows' => array( Chris@76: array( Chris@76: 'position' => 'below_table_data', Chris@76: 'value' => ' Chris@76: [' . $txt['holidays_add'] . '] Chris@76: ', Chris@76: 'style' => 'text-align: right;', Chris@76: ), Chris@76: ), Chris@76: ); Chris@76: Chris@76: require_once($sourcedir . '/Subs-List.php'); Chris@76: createList($listOptions); Chris@76: Chris@76: //loadTemplate('ManageCalendar'); Chris@76: $context['page_title'] = $txt['manage_holidays']; Chris@76: Chris@76: // Since the list is the only thing to show, use the default list template. Chris@76: $context['default_list'] = 'holiday_list'; Chris@76: $context['sub_template'] = 'show_list'; Chris@76: } Chris@76: Chris@76: // This function is used for adding/editing a specific holiday Chris@76: function EditHoliday() Chris@76: { Chris@76: global $txt, $context, $scripturl, $smcFunc; Chris@76: Chris@76: loadTemplate('ManageCalendar'); Chris@76: Chris@76: $context['is_new'] = !isset($_REQUEST['holiday']); Chris@76: $context['page_title'] = $context['is_new'] ? $txt['holidays_add'] : $txt['holidays_edit']; Chris@76: $context['sub_template'] = 'edit_holiday'; Chris@76: Chris@76: // Cast this for safety... Chris@76: if (isset($_REQUEST['holiday'])) Chris@76: $_REQUEST['holiday'] = (int) $_REQUEST['holiday']; Chris@76: Chris@76: // Submitting? Chris@76: if (isset($_POST[$context['session_var']]) && (isset($_REQUEST['delete']) || $_REQUEST['title'] != '')) Chris@76: { Chris@76: checkSession(); Chris@76: Chris@76: // Not too long good sir? Chris@76: $_REQUEST['title'] = $smcFunc['substr']($_REQUEST['title'], 0, 60); Chris@76: $_REQUEST['holiday'] = isset($_REQUEST['holiday']) ? (int) $_REQUEST['holiday'] : 0; Chris@76: Chris@76: if (isset($_REQUEST['delete'])) Chris@76: $smcFunc['db_query']('', ' Chris@76: DELETE FROM {db_prefix}calendar_holidays Chris@76: WHERE id_holiday = {int:selected_holiday}', Chris@76: array( Chris@76: 'selected_holiday' => $_REQUEST['holiday'], Chris@76: ) Chris@76: ); Chris@76: else Chris@76: { Chris@76: $date = strftime($_REQUEST['year'] <= 4 ? '0004-%m-%d' : '%Y-%m-%d', mktime(0, 0, 0, $_REQUEST['month'], $_REQUEST['day'], $_REQUEST['year'])); Chris@76: if (isset($_REQUEST['edit'])) Chris@76: $smcFunc['db_query']('', ' Chris@76: UPDATE {db_prefix}calendar_holidays Chris@76: SET event_date = {date:holiday_date}, title = {string:holiday_title} Chris@76: WHERE id_holiday = {int:selected_holiday}', Chris@76: array( Chris@76: 'holiday_date' => $date, Chris@76: 'selected_holiday' => $_REQUEST['holiday'], Chris@76: 'holiday_title' => $_REQUEST['title'], Chris@76: ) Chris@76: ); Chris@76: else Chris@76: $smcFunc['db_insert']('', Chris@76: '{db_prefix}calendar_holidays', Chris@76: array( Chris@76: 'event_date' => 'date', 'title' => 'string-60', Chris@76: ), Chris@76: array( Chris@76: $date, $_REQUEST['title'], Chris@76: ), Chris@76: array('id_holiday') Chris@76: ); Chris@76: } Chris@76: Chris@76: updateSettings(array( Chris@76: 'calendar_updated' => time(), Chris@76: )); Chris@76: Chris@76: redirectexit('action=admin;area=managecalendar;sa=holidays'); Chris@76: } Chris@76: Chris@76: // Default states... Chris@76: if ($context['is_new']) Chris@76: $context['holiday'] = array( Chris@76: 'id' => 0, Chris@76: 'day' => date('d'), Chris@76: 'month' => date('m'), Chris@76: 'year' => '0000', Chris@76: 'title' => '' Chris@76: ); Chris@76: // If it's not new load the data. Chris@76: else Chris@76: { Chris@76: $request = $smcFunc['db_query']('', ' Chris@76: SELECT id_holiday, YEAR(event_date) AS year, MONTH(event_date) AS month, DAYOFMONTH(event_date) AS day, title Chris@76: FROM {db_prefix}calendar_holidays Chris@76: WHERE id_holiday = {int:selected_holiday} Chris@76: LIMIT 1', Chris@76: array( Chris@76: 'selected_holiday' => $_REQUEST['holiday'], Chris@76: ) Chris@76: ); Chris@76: while ($row = $smcFunc['db_fetch_assoc']($request)) Chris@76: $context['holiday'] = array( Chris@76: 'id' => $row['id_holiday'], Chris@76: 'day' => $row['day'], Chris@76: 'month' => $row['month'], Chris@76: 'year' => $row['year'] <= 4 ? 0 : $row['year'], Chris@76: 'title' => $row['title'] Chris@76: ); Chris@76: $smcFunc['db_free_result']($request); Chris@76: } Chris@76: Chris@76: // Last day for the drop down? Chris@76: $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'])); Chris@76: } Chris@76: Chris@76: function ModifyCalendarSettings($return_config = false) Chris@76: { Chris@76: global $modSettings, $context, $settings, $txt, $boarddir, $sourcedir, $scripturl, $smcFunc; Chris@76: Chris@76: // Load the boards list. Chris@76: $boards = array(''); Chris@76: $request = $smcFunc['db_query']('order_by_board_order', ' Chris@76: SELECT b.id_board, b.name AS board_name, c.name AS cat_name Chris@76: FROM {db_prefix}boards AS b Chris@76: LEFT JOIN {db_prefix}categories AS c ON (c.id_cat = b.id_cat)', Chris@76: array( Chris@76: ) Chris@76: ); Chris@76: while ($row = $smcFunc['db_fetch_assoc']($request)) Chris@76: $boards[$row['id_board']] = $row['cat_name'] . ' - ' . $row['board_name']; Chris@76: $smcFunc['db_free_result']($request); Chris@76: Chris@76: // Look, all the calendar settings - of which there are many! Chris@76: $config_vars = array( Chris@76: // All the permissions: Chris@76: array('permissions', 'calendar_view', 'help' => 'cal_enabled'), Chris@76: array('permissions', 'calendar_post'), Chris@76: array('permissions', 'calendar_edit_own'), Chris@76: array('permissions', 'calendar_edit_any'), Chris@76: '', Chris@76: // How many days to show on board index, and where to display events etc? Chris@76: array('int', 'cal_days_for_index'), Chris@76: 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'])), Chris@76: 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'])), Chris@76: 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'])), Chris@76: '', Chris@76: // Linking events etc... Chris@76: array('select', 'cal_defaultboard', $boards), Chris@76: array('check', 'cal_daysaslink'), Chris@76: array('check', 'cal_allow_unlinked'), Chris@76: array('check', 'cal_showInTopic'), Chris@76: '', Chris@76: // Dates of calendar... Chris@76: array('int', 'cal_minyear'), Chris@76: array('int', 'cal_maxyear'), Chris@76: '', Chris@76: // Calendar spanning... Chris@76: array('check', 'cal_allowspan'), Chris@76: array('int', 'cal_maxspan'), Chris@76: ); Chris@76: Chris@76: if ($return_config) Chris@76: return $config_vars; Chris@76: Chris@76: // Get the settings template fired up. Chris@76: require_once($sourcedir . '/ManageServer.php'); Chris@76: Chris@76: // Some important context stuff Chris@76: $context['page_title'] = $txt['calendar_settings']; Chris@76: $context['sub_template'] = 'show_settings'; Chris@76: Chris@76: // Get the final touches in place. Chris@76: $context['post_url'] = $scripturl . '?action=admin;area=managecalendar;save;sa=settings'; Chris@76: $context['settings_title'] = $txt['calendar_settings']; Chris@76: Chris@76: // Saving the settings? Chris@76: if (isset($_GET['save'])) Chris@76: { Chris@76: checkSession(); Chris@76: saveDBSettings($config_vars); Chris@76: Chris@76: // Update the stats in case. Chris@76: updateSettings(array( Chris@76: 'calendar_updated' => time(), Chris@76: )); Chris@76: Chris@76: redirectexit('action=admin;area=managecalendar;sa=settings'); Chris@76: } Chris@76: Chris@76: // Prepare the settings... Chris@76: prepareDBSettingContext($config_vars); Chris@76: } Chris@76: Chris@76: ?>