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: ?>