'EditHoliday',
'holidays' => 'ModifyHolidays',
'settings' => 'ModifySettings'
);
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'settings';
// Set up the two tabs here...
$context['admin_tabs'] = array(
'title' => &$txt['manage_calendar'],
'help' => 'calendar',
'description' => $txt['calendar_settings_desc'],
'tabs' => array(
'holidays' => array(
'title' => $txt['manage_holidays'],
'description' => $txt['manage_holidays_desc'],
'href' => $scripturl . '?action=managecalendar;sa=holidays',
),
'settings' => array(
'title' => $txt['calendar_settings'],
'description' => $txt['calendar_settings_desc'],
'href' => $scripturl . '?action=managecalendar;sa=settings',
'is_last' => true,
),
),
);
// Select the tab they're at...
if (isset($context['admin_tabs']['tabs'][$_REQUEST['sa']]))
$context['admin_tabs']['tabs'][$_REQUEST['sa']]['is_selected'] = true;
// Some settings may not be enabled, disallow these from the tabs as appropriate.
if (empty($modSettings['cal_enabled']))
unset($context['admin_tabs']['tabs']['holidays']);
$subActions[$_REQUEST['sa']]();
}
// The function that handles adding, and deleting holiday data
function ModifyHolidays()
{
global $txt, $context, $db_prefix, $scripturl;
loadTemplate('ManageCalendar');
$context['page_title'] = $txt['manage_holidays'];
$context['sub_template'] = 'manage_holidays';
// 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...
db_query("
DELETE FROM {$db_prefix}calendar_holidays
WHERE ID_HOLIDAY IN (" . implode(', ', $_REQUEST['holiday']) . ")
LIMIT " . count($_REQUEST['holiday']), __FILE__, __LINE__);
updateStats('calendar');
}
// Total amount of holidays... for pagination.
$request = db_query("
SELECT COUNT(*)
FROM {$db_prefix}calendar_holidays", __FILE__, __LINE__);
list ($context['holidayCount']) = mysql_fetch_row($request);
mysql_free_result($request);
$context['page_index'] = constructPageIndex($scripturl . '?action=managecalendar;sa=holidays', $_REQUEST['start'], $context['holidayCount'], 20);
// Now load up all the holidays into a lovely large array.
$request = db_query("
SELECT ID_HOLIDAY, YEAR(eventDate) AS year, MONTH(eventDate) AS month, DAYOFMONTH(eventDate) AS day, title
FROM {$db_prefix}calendar_holidays
ORDER BY title
LIMIT $_REQUEST[start], 20", __FILE__, __LINE__);
$context['holidays'] = array();
while ($row = mysql_fetch_assoc($request))
$context['holidays'][] = array(
'id' => $row['ID_HOLIDAY'],
'date' => $row['day'] . ' ' . $txt['months'][$row['month']] . ' ' . ($row['year'] == '0004' ? '(' . $txt['every_year'] . ')' : $row['year']),
'title' => $row['title']
);
mysql_free_result($request);
}
// This function is used for adding/editing a specific holiday
function EditHoliday()
{
global $txt, $context, $db_prefix, $scripturl;
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';
$context['admin_tabs']['tabs']['holidays']['is_selected'] = true;
// Submitting?
if (isset($_POST['sc']) && (isset($_REQUEST['delete']) || $_REQUEST['title'] != ''))
{
checkSession();
if (isset($_REQUEST['delete']))
db_query("
DELETE FROM {$db_prefix}calendar_holidays
WHERE ID_HOLIDAY = $_REQUEST[holiday]", __FILE__, __LINE__);
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']))
db_query("
UPDATE {$db_prefix}calendar_holidays
SET eventDate = '$date', title = '$_REQUEST[title]'
WHERE ID_HOLIDAY = $_REQUEST[holiday]", __FILE__, __LINE__);
else
db_query("
INSERT INTO {$db_prefix}calendar_holidays
(eventDate, title)
VALUES
('$date', SUBSTRING('$_REQUEST[title]', 1, 48))", __FILE__, __LINE__);
}
updateStats('calendar');
redirectexit('action=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 = db_query("
SELECT ID_HOLIDAY, YEAR(eventDate) AS year, MONTH(eventDate) AS month, DAYOFMONTH(eventDate) AS day, title
FROM {$db_prefix}calendar_holidays
WHERE ID_HOLIDAY = $_REQUEST[holiday]
LIMIT 1", __FILE__, __LINE__);
while ($row = mysql_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']
);
mysql_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 ModifySettings()
{
global $modSettings, $context, $settings, $db_prefix, $txt, $boarddir, $sourcedir;
loadTemplate('ManageCalendar');
$context['page_title'] = $txt['calendar_settings'];
$context['sub_template'] = 'modify_settings';
// A file we need to show permissions inline.
require_once($sourcedir . '/ManagePermissions.php');
$calendarPermissions = array(
'calendar_view',
'calendar_post',
'calendar_edit_own',
'calendar_edit_any',
);
// A form was submitted.
if (isset($_POST['sc'], $_POST['cal_days_for_index']))
{
checkSession();
// Although the display settings are combined to the user, they are seperate to the database.
$toSet['cal_showholidaysonindex'] = $_POST['cal_showholidays'] == 'index' || $_POST['cal_showholidays'] == 'all' ? '1' : '0';
$toSet['cal_showbdaysonindex'] = $_POST['cal_showbdays'] == 'index' || $_POST['cal_showbdays'] == 'all' ? '1' : '0';
$toSet['cal_showeventsonindex'] = $_POST['cal_showevents'] == 'index' || $_POST['cal_showevents'] == 'all' ? '1' : '0';
$toSet['cal_showholidaysoncalendar'] = $_POST['cal_showholidays'] == 'cal' || $_POST['cal_showholidays'] == 'all' ? '1' : '0';
$toSet['cal_showbdaysoncalendar'] = $_POST['cal_showbdays'] == 'cal' || $_POST['cal_showbdays'] == 'all' ? '1' : '0';
$toSet['cal_showeventsoncalendar'] = $_POST['cal_showevents'] == 'cal' || $_POST['cal_showevents'] == 'all' ? '1' : '0';
updateSettings(array(
'cal_enabled' => isset($_POST['cal_enabled']) ? '1' : '0',
'cal_daysaslink' => isset($_POST['cal_daysaslink']) ? '1' : '0',
'cal_showweeknum' => isset($_POST['cal_showweeknum']) ? '1' : '0',
'cal_days_for_index' => (int) $_POST['cal_days_for_index'],
'cal_showholidaysonindex' => $toSet['cal_showholidaysonindex'],
'cal_showbdaysonindex' => $toSet['cal_showbdaysonindex'],
'cal_showeventsonindex' => $toSet['cal_showeventsonindex'],
'cal_showholidaysoncalendar' => $toSet['cal_showholidaysoncalendar'],
'cal_showbdaysoncalendar' => $toSet['cal_showbdaysoncalendar'],
'cal_showeventsoncalendar' => $toSet['cal_showeventsoncalendar'],
'cal_defaultboard' => (int) $_POST['cal_defaultboard'],
'cal_allow_unlinked' => isset($_POST['cal_allow_unlinked']) ? '1' : '0',
'cal_minyear' => (int) $_POST['cal_minyear'],
'cal_maxyear' => (int) $_POST['cal_maxyear'],
'cal_bdaycolor' => $_POST['cal_bdaycolor'],
'cal_eventcolor' => $_POST['cal_eventcolor'],
'cal_holidaycolor' => $_POST['cal_holidaycolor'],
'cal_allowspan' => isset($_POST['cal_allowspan']) ? '1' : '0',
'cal_maxspan' => (int) $_POST['cal_maxspan'],
'cal_showInTopic' => isset($_POST['cal_showInTopic']) ? '1' : '0',
));
save_inline_permissions($calendarPermissions);
updateStats('calendar');
// Ensure we redirect incase the change in settings means the tabs are outdated.
redirectexit('action=managecalendar;sa=settings');
}
// Load the boards list.
$context['cal_boards'] = array('');
$request = db_query("
SELECT b.ID_BOARD, b.name AS bName, c.name AS cName
FROM {$db_prefix}boards AS b
LEFT JOIN {$db_prefix}categories AS c ON (c.ID_CAT = b.ID_CAT)", __FILE__, __LINE__);
while ($row = mysql_fetch_assoc($request))
$context['cal_boards'][$row['ID_BOARD']] = $row['cName'] . ' - ' . $row['bName'];
mysql_free_result($request);
// Initialize the inline permission settings.
init_inline_permissions($calendarPermissions);
// Setup the display settings, just for better UI ;)
$context['cal_showholidays'] = empty($modSettings['cal_showholidaysonindex']) ? (empty($modSettings['cal_showholidaysoncalendar']) ? 'never' : 'cal') : (empty($modSettings['cal_showholidaysoncalendar']) ? 'index' : 'all');
$context['cal_showbdays'] = empty($modSettings['cal_showbdaysonindex']) ? (empty($modSettings['cal_showbdaysoncalendar']) ? 'never' : 'cal') : (empty($modSettings['cal_showbdaysoncalendar']) ? 'index' : 'all');
$context['cal_showevents'] = empty($modSettings['cal_showeventsonindex']) ? (empty($modSettings['cal_showeventsoncalendar']) ? 'never' : 'cal') : (empty($modSettings['cal_showeventsoncalendar']) ? 'index' : 'all');
}
?>