Files
auth-site/html/forums/admin/modules/forum/announcements.php
T
2018-04-29 02:36:24 -07:00

953 lines
34 KiB
PHP

<?php
/**
* MyBB 1.8
* Copyright 2014 MyBB Group, All Rights Reserved
*
* Website: http://www.mybb.com
* License: http://www.mybb.com/about/license
*
*/
// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}
$page->add_breadcrumb_item($lang->forum_announcements, "index.php?module=forum-announcements");
if($mybb->input['action'] == "add" || !$mybb->input['action'])
{
$sub_tabs['forum_announcements'] = array(
'title' => $lang->forum_announcements,
'link' => "index.php?module=forum-announcements",
'description' => $lang->forum_announcements_desc
);
$sub_tabs['add_announcement'] = array(
'title' => $lang->add_announcement,
'link' => "index.php?module=forum-announcements&amp;action=add",
'description' => $lang->add_announcement_desc
);
}
else if($mybb->input['action'] == "edit")
{
$sub_tabs['forum_announcements'] = array(
'title' => $lang->forum_announcements,
'link' => "index.php?module=forum-announcements",
'description' => $lang->forum_announcements_desc
);
$sub_tabs['update_announcement'] = array(
'title' => $lang->update_announcement,
'link' => "index.php?module=forum-announcements&amp;action=add",
'description' => $lang->update_announcement_desc
);
}
$plugins->run_hooks("admin_forum_announcements_begin");
if($mybb->input['action'] == "add")
{
$plugins->run_hooks("admin_forum_announcements_add");
if($mybb->request_method == "post")
{
if(!trim($mybb->input['title']))
{
$errors[] = $lang->error_missing_title;
}
if(!trim($mybb->input['message']))
{
$errors[] = $lang->error_missing_message;
}
if(!trim($mybb->input['fid']))
{
$errors[] = $lang->error_missing_forum;
}
if(!checkdate($mybb->get_input('starttime_month', MyBB::INPUT_INT), $mybb->get_input('starttime_day', MyBB::INPUT_INT), $mybb->get_input('starttime_year', MyBB::INPUT_INT)))
{
$errors[] = $lang->error_invalid_start_date;
}
// End before startdate?
$startdate = @explode(" ", $mybb->input['starttime_time']);
$startdate = @explode(":", $startdate[0]);
$enddate = @explode(" ", $mybb->input['endtime_time']);
$enddate = @explode(":", $enddate[0]);
if(stristr($mybb->input['starttime_time'], "pm"))
{
$startdate[0] = 12+$startdate[0];
if($startdate[0] >= 24)
{
$startdate[0] = "00";
}
}
if(stristr($mybb->input['endtime_time'], "pm"))
{
$enddate[0] = 12+$enddate[0];
if($enddate[0] >= 24)
{
$enddate[0] = "00";
}
}
$startdate = gmmktime((int)$startdate[0], (int)$startdate[1], 0, $mybb->get_input('starttime_month', MyBB::INPUT_INT), $mybb->get_input('starttime_day', MyBB::INPUT_INT), $mybb->get_input('starttime_year', MyBB::INPUT_INT));
if($mybb->input['endtime_type'] != "2")
{
$enddate = gmmktime((int)$enddate[0], (int)$enddate[1], 0, $mybb->get_input('endtime_month', MyBB::INPUT_INT), $mybb->get_input('endtime_day', MyBB::INPUT_INT), $mybb->get_input('endtime_year', MyBB::INPUT_INT));
if(!checkdate($mybb->get_input('endtime_month', MyBB::INPUT_INT), $mybb->get_input('endtime_day', MyBB::INPUT_INT), $mybb->get_input('endtime_year', MyBB::INPUT_INT)))
{
$errors[] = $lang->error_invalid_end_date;
}
if($enddate <= $startdate)
{
$errors[] = $lang->error_end_before_start;
}
}
if(!$errors)
{
if(isset($mybb->input['preview']))
{
$parser_options = array();
$parser_options['allow_html'] = $mybb->get_input('allowhtml', MyBB::INPUT_INT);
$parser_options['allow_mycode'] = $mybb->get_input('allowmycode', MyBB::INPUT_INT);
$parser_options['allow_smilies'] = $mybb->get_input('allowsmilies', MyBB::INPUT_INT);
$parser_options['allow_imgcode'] = 1;
$parser_options['allow_videocode'] = 1;
$parser_options['me_username'] = htmlspecialchars_uni($mybb->user['username']);
$parser_options['filter_badwords'] = 1;
// Set up the message parser if it doesn't already exist.
if(!is_object($parser))
{
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;
}
$preview['message'] = $parser->parse_message($mybb->input['message'], $parser_options);
$preview['subject'] = htmlspecialchars_uni($mybb->input['title']);
}
else
{
$months = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
if(!in_array($mybb->input['starttime_month'], $months))
{
$mybb->input['starttime_month'] = 1;
}
if($mybb->input['endtime_type'] == "2")
{
$enddate = '0';
}
else
{
if(!in_array($mybb->input['endtime_month'], $months))
{
$mybb->input['endtime_month'] = 1;
}
}
$insert_announcement = array(
"fid" => $mybb->input['fid'],
"uid" => $mybb->user['uid'],
"subject" => $db->escape_string($mybb->input['title']),
"message" => $db->escape_string($mybb->input['message']),
"startdate" => $startdate,
"enddate" => $enddate,
"allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT),
"allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT),
"allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT)
);
$aid = $db->insert_query("announcements", $insert_announcement);
$plugins->run_hooks("admin_forum_announcements_add_commit");
// Log admin action
log_admin_action($aid, $mybb->input['title']);
$cache->update_forumsdisplay();
flash_message($lang->success_added_announcement, 'success');
admin_redirect("index.php?module=forum-announcements");
}
}
}
$page->add_breadcrumb_item($lang->add_an_announcement);
$page->output_header($lang->add_an_announcement);
$page->output_nav_tabs($sub_tabs, "add_announcement");
$form = new Form("index.php?module=forum-announcements&amp;action=add", "post");
if($errors)
{
$page->output_inline_error($errors);
}
$default_options = array(
'starttime_time',
'starttime_day',
'starttime_month',
'starttime_year',
'endtime_type',
'endtime_time',
'endtime_day',
'endtime_month',
'endtime_year',
'title',
'message',
'fid',
'allowhtml',
'allowmycode',
'allowsmilies'
);
foreach($default_options as $option)
{
if(!isset($mybb->input[$option]))
{
$mybb->input[$option] = '';
}
}
if($mybb->input['endtime_type'] == "1")
{
$endtime_checked[1] = "checked=\"checked\"";
$endtime_checked[2] = "";
}
else
{
$endtime_checked[1] = "";
$endtime_checked[2] = "checked=\"checked\"";
}
if(!$mybb->input['starttime_time'])
{
$mybb->input['starttime_time'] = gmdate($mybb->settings['timeformat'], TIME_NOW);
}
if(!$mybb->input['endtime_time'])
{
$mybb->input['endtime_time'] = gmdate($mybb->settings['timeformat'], TIME_NOW);
}
if($mybb->input['starttime_day'])
{
$startday = $mybb->get_input('starttime_day', MyBB::INPUT_INT);
}
else
{
$startday = gmdate("j", TIME_NOW);
}
if($mybb->input['endtime_day'])
{
$endday = $mybb->get_input('endtime_day', MyBB::INPUT_INT);
}
else
{
$endday = gmdate("j", TIME_NOW);
}
$startdateday = $enddateday = $startdatemonth = $enddatemonth = '';
// Days
for($i = 1; $i <= 31; ++$i)
{
if($startday == $i)
{
$startdateday .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
}
else
{
$startdateday .= "<option value=\"$i\">$i</option>\n";
}
if($endday == $i)
{
$enddateday .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
}
else
{
$enddateday .= "<option value=\"$i\">$i</option>\n";
}
}
// Months
for($i = 1; $i <= 12; ++$i)
{
$endmonthsel[$i] = $startmonthsel[$i] = '';
}
if($mybb->input['starttime_month'])
{
$startmonth = $mybb->get_input('starttime_month', MyBB::INPUT_INT);
$startmonthsel[$startmonth] = "selected=\"selected\"";
}
else
{
$startmonth = gmdate("m", TIME_NOW);
$startmonthsel[$startmonth] = "selected=\"selected\"";
}
if($mybb->input['endtime_month'])
{
$endmonth = $mybb->get_input('endtime_month', MyBB::INPUT_INT);
$endmonthsel[$endmonth] = "selected=\"selected\"";
}
else
{
$endmonth = gmdate("m", TIME_NOW);
$endmonthsel[$endmonth] = "selected=\"selected\"";
}
$startdatemonth .= "<option value=\"01\" {$startmonthsel['01']}>{$lang->january}</option>\n";
$enddatemonth .= "<option value=\"01\" {$endmonthsel['01']}>{$lang->january}</option>\n";
$startdatemonth .= "<option value=\"02\" {$startmonthsel['02']}>{$lang->february}</option>\n";
$enddatemonth .= "<option value=\"02\" {$endmonthsel['02']}>{$lang->february}</option>\n";
$startdatemonth .= "<option value=\"03\" {$startmonthsel['03']}>{$lang->march}</option>\n";
$enddatemonth .= "<option value=\"03\" {$endmonthsel['03']}>{$lang->march}</option>\n";
$startdatemonth .= "<option value=\"04\" {$startmonthsel['04']}>{$lang->april}</option>\n";
$enddatemonth .= "<option value=\"04\" {$endmonthsel['04']}>{$lang->april}</option>\n";
$startdatemonth .= "<option value=\"05\" {$startmonthsel['05']}>{$lang->may}</option>\n";
$enddatemonth .= "<option value=\"05\" {$endmonthsel['05']}>{$lang->may}</option>\n";
$startdatemonth .= "<option value=\"06\" {$startmonthsel['06']}>{$lang->june}</option>\n";
$enddatemonth .= "<option value=\"06\" {$endmonthsel['06']}>{$lang->june}</option>\n";
$startdatemonth .= "<option value=\"07\" {$startmonthsel['07']}>{$lang->july}</option>\n";
$enddatemonth .= "<option value=\"07\" {$endmonthsel['07']}>{$lang->july}</option>\n";
$startdatemonth .= "<option value=\"08\" {$startmonthsel['08']}>{$lang->august}</option>\n";
$enddatemonth .= "<option value=\"08\" {$endmonthsel['08']}>{$lang->august}</option>\n";
$startdatemonth .= "<option value=\"09\" {$startmonthsel['09']}>{$lang->september}</option>\n";
$enddatemonth .= "<option value=\"09\" {$endmonthsel['09']}>{$lang->september}</option>\n";
$startdatemonth .= "<option value=\"10\" {$startmonthsel['10']}>{$lang->october}</option>\n";
$enddatemonth .= "<option value=\"10\" {$endmonthsel['10']}>{$lang->october}</option>\n";
$startdatemonth .= "<option value=\"11\" {$startmonthsel['11']}>{$lang->november}</option>\n";
$enddatemonth .= "<option value=\"11\" {$endmonthsel['11']}>{$lang->november}</option>\n";
$startdatemonth .= "<option value=\"12\" {$startmonthsel['12']}>{$lang->december}</option>\n";
$enddatemonth .= "<option value=\"12\" {$endmonthsel['12']}>{$lang->december}</option>\n";
if($mybb->input['starttime_year'])
{
$startdateyear = $mybb->get_input('starttime_year', MyBB::INPUT_INT);
}
else
{
$startdateyear = gmdate("Y", TIME_NOW);
}
if($mybb->input['endtime_year'])
{
$enddateyear = $mybb->get_input('endtime_year', MyBB::INPUT_INT);
}
else
{
$enddateyear = gmdate("Y", TIME_NOW) + 1;
}
if(isset($preview))
{
$form_container = new FormContainer($lang->announcement_preview);
$form_container->output_row($preview['subject'], "", $preview['message'], 'preview');
$form_container->end();
}
$form_container = new FormContainer($lang->add_an_announcement);
$form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
$form_container->output_row($lang->start_date." <em>*</em>", $lang->start_date_desc, "<select name=\"starttime_day\">\n{$startdateday}</select>\n &nbsp; \n<select name=\"starttime_month\">\n{$startdatemonth}</select>\n &nbsp; \n<input type=\"text\" name=\"starttime_year\" value=\"{$startdateyear}\" size=\"4\" maxlength=\"4\" />\n - {$lang->time} ".$form->generate_text_box('starttime_time', $mybb->input['starttime_time'], array('id' => 'starttime_time', 'style' => 'width: 50px;')));
$actions = "<script type=\"text/javascript\">
function checkAction(id)
{
var checked = '';
$('.'+id+'s_check').each(function(e, val)
{
if($(this).prop('checked') == true)
{
checked = $(this).val();
}
});
$('.'+id+'s').each(function(e)
{
$(this).hide();
});
if($('#'+id+'_'+checked))
{
$('#'+id+'_'+checked).show();
}
}
</script>
<dl style=\"margin-top: 0; margin-bottom: 0; width: 100%;\">
<dt><label style=\"display: block;\"><input type=\"radio\" name=\"endtime_type\" value=\"1\" {$endtime_checked[1]} class=\"endtimes_check\" onclick=\"checkAction('endtime');\" style=\"vertical-align: middle;\" /> <strong>{$lang->set_time}</strong></label></dt>
<dd style=\"margin-top: 4px;\" id=\"endtime_1\" class=\"endtimes\">
<table cellpadding=\"4\">
<tr>
<td><select name=\"endtime_day\">\n{$enddateday}</select>\n &nbsp; \n<select name=\"endtime_month\">\n{$enddatemonth}</select>\n &nbsp; \n<input type=\"text\" name=\"endtime_year\" value=\"{$enddateyear}\" class=\"text_input\" size=\"4\" maxlength=\"4\" />\n - {$lang->time} ".$form->generate_text_box('endtime_time', $mybb->input['endtime_time'], array('id' => 'endtime_time', 'style' => 'width: 50px;'))."</td>
</tr>
</table>
</dd>
<dt><label style=\"display: block;\"><input type=\"radio\" name=\"endtime_type\" value=\"2\" {$endtime_checked[2]} class=\"endtimes_check\" onclick=\"checkAction('endtime');\" style=\"vertical-align: middle;\" /> <strong>{$lang->never}</strong></label></dt>
</dl>
<script type=\"text/javascript\">
checkAction('endtime');
</script>";
$form_container->output_row($lang->end_date." <em>*</em>", $lang->end_date_desc, $actions);
$form_container->output_row($lang->message." <em>*</em>", "", $form->generate_text_area('message', $mybb->input['message'], array('id' => 'message')), 'message');
$form_container->output_row($lang->forums_to_appear_in." <em>*</em>", $lang->forums_to_appear_in_desc, $form->generate_forum_select('fid', $mybb->input['fid'], array('size' => 5, 'main_option' => $lang->all_forums)));
$form_container->output_row($lang->allow_html." <em>*</em>", "", $form->generate_yes_no_radio('allowhtml', $mybb->input['allowhtml'], array('style' => 'width: 2em;')));
$form_container->output_row($lang->allow_mycode." <em>*</em>", "", $form->generate_yes_no_radio('allowmycode', $mybb->input['allowmycode'], array('style' => 'width: 2em;')));
$form_container->output_row($lang->allow_smilies." <em>*</em>", "", $form->generate_yes_no_radio('allowsmilies', $mybb->input['allowsmilies'], array('style' => 'width: 2em;')));
$form_container->end();
$buttons[] = $form->generate_submit_button($lang->save_announcement);
$buttons[] = $form->generate_submit_button($lang->preview_announcement, array('name' => 'preview'));
$form->output_submit_wrapper($buttons);
$form->end();
$page->output_footer();
}
if($mybb->input['action'] == "edit")
{
if(!trim($mybb->input['aid']))
{
flash_message($lang->error_invalid_announcement, 'error');
admin_redirect("index.php?module=forum-announcements");
}
$plugins->run_hooks("admin_forum_announcements_edit");
if($mybb->request_method == "post")
{
if(!trim($mybb->input['title']))
{
$errors[] = $lang->error_missing_title;
}
if(!trim($mybb->input['message']))
{
$errors[] = $lang->error_missing_message;
}
if(!trim($mybb->input['fid']))
{
$errors[] = $lang->error_missing_forum;
}
if(!checkdate($mybb->get_input('starttime_month', MyBB::INPUT_INT), $mybb->get_input('starttime_day', MyBB::INPUT_INT), $mybb->get_input('starttime_year', MyBB::INPUT_INT)))
{
$errors[] = $lang->error_invalid_start_date;
}
// End before startdate?
$startdate = @explode(" ", $mybb->input['starttime_time']);
$startdate = @explode(":", $startdate[0]);
$enddate = @explode(" ", $mybb->input['endtime_time']);
$enddate = @explode(":", $enddate[0]);
if(stristr($mybb->input['starttime_time'], "pm"))
{
$startdate[0] = 12+$startdate[0];
if($startdate[0] >= 24)
{
$startdate[0] = "00";
}
}
if(stristr($mybb->input['endtime_time'], "pm"))
{
$enddate[0] = 12+$enddate[0];
if($enddate[0] >= 24)
{
$enddate[0] = "00";
}
}
$startdate = gmmktime((int)$startdate[0], (int)$startdate[1], 0, $mybb->get_input('starttime_month', MyBB::INPUT_INT), $mybb->get_input('starttime_day', MyBB::INPUT_INT), $mybb->get_input('starttime_year', MyBB::INPUT_INT));
if($mybb->input['endtime_type'] != "2")
{
$enddate = gmmktime((int)$enddate[0], (int)$enddate[1], 0, $mybb->get_input('endtime_month', MyBB::INPUT_INT), $mybb->get_input('endtime_day', MyBB::INPUT_INT), $mybb->get_input('endtime_year', MyBB::INPUT_INT));
if(!checkdate($mybb->get_input('endtime_month', MyBB::INPUT_INT), $mybb->get_input('endtime_day', MyBB::INPUT_INT), $mybb->get_input('endtime_year', MyBB::INPUT_INT)))
{
$errors[] = $lang->error_invalid_end_date;
}
if($enddate <= $startdate)
{
$errors[] = $lang->error_end_before_start;
}
}
if(!$errors)
{
if(isset($mybb->input['preview']))
{
$parser_options = array();
$parser_options['allow_html'] = $mybb->get_input('allowhtml', MyBB::INPUT_INT);
$parser_options['allow_mycode'] = $mybb->get_input('allowmycode', MyBB::INPUT_INT);
$parser_options['allow_smilies'] = $mybb->get_input('allowsmilies', MyBB::INPUT_INT);
$parser_options['allow_imgcode'] = 1;
$parser_options['allow_videocode'] = 1;
$parser_options['me_username'] = htmlspecialchars_uni($mybb->user['username']);
$parser_options['filter_badwords'] = 1;
// Set up the message parser if it doesn't already exist.
if(!is_object($parser))
{
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;
}
$preview = array();
$preview['message'] = $parser->parse_message($mybb->input['message'], $parser_options);
$preview['subject'] = htmlspecialchars_uni($mybb->input['title']);
}
else
{
$months = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
if(!in_array($mybb->input['starttime_month'], $months))
{
$mybb->input['starttime_month'] = 1;
}
if($mybb->input['endtime_type'] == "2")
{
$enddate = '0';
}
else
{
if(!in_array($mybb->input['endtime_month'], $months))
{
$mybb->input['endtime_month'] = 1;
}
}
$update_announcement = array(
"fid" => $mybb->input['fid'],
"subject" => $db->escape_string($mybb->input['title']),
"message" => $db->escape_string($mybb->input['message']),
"startdate" => $startdate,
"enddate" => $enddate,
"allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT),
"allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT),
"allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT)
);
$plugins->run_hooks("admin_forum_announcements_edit_commit");
$db->update_query("announcements", $update_announcement, "aid='{$mybb->input['aid']}'");
// Log admin action
log_admin_action($mybb->input['aid'], $mybb->input['title']);
$cache->update_forumsdisplay();
flash_message($lang->success_updated_announcement, 'success');
admin_redirect("index.php?module=forum-announcements");
}
}
}
$page->add_breadcrumb_item($lang->update_an_announcement);
$page->output_header($lang->update_an_announcement);
$page->output_nav_tabs($sub_tabs, "update_announcement");
$form = new Form("index.php?module=forum-announcements&amp;action=edit", "post");
echo $form->generate_hidden_field("aid", $mybb->input['aid']);
if($errors || isset($mybb->input['preview']))
{
// Only show errors if we have any
if($errors)
{
$page->output_inline_error($errors);
}
// Gather start and end date data
$startday = $mybb->input['starttime_day'];
$start_time = $mybb->input['starttime_time'];
$startmonth = $mybb->input['starttime_month'];
$startmonthsel[$startmonth] = 'selected="selected"';
$startdateyear = $mybb->input['starttime_year'];
if($mybb->input['endtime_type'] == 1)
{
// Set time
$endtime_checked[1] = 'checked="checked"';
$endtime_checked[2] = '';
$endday = $mybb->input['endtime_day'];
$endtime = $mybb->input['endtime_time'];
$endmonth = $mybb->input['endtime_month'];
$endmonthsel[$endmonth] = 'selected';
$enddateyear = $mybb->input['endtime_year'];
}
else
{
// Never
$endtime_checked[1] = '';
$endtime_checked[2] = 'checked="checked"';
$endday = $startday;
$endmonth = $startmonth;
$endmonthsel[$endmonth] = 'selected';
$enddateyear = $startdateyear + 1;
}
}
elseif(!isset($mybb->input['preview']))
{
$query = $db->simple_select("announcements", "*", "aid='{$mybb->input['aid']}'");
$announcement = $db->fetch_array($query);
if(!$announcement)
{
flash_message($lang->error_invalid_announcement, 'error');
admin_redirect("index.php?module=forum-announcements");
}
$mybb->input['starttime_time'] = gmdate( $mybb->settings['timeformat'], $announcement['startdate']);
$startday = gmdate("j", $announcement['startdate']);
$startmonth = gmdate("m", $announcement['startdate']);
$startmonthsel[$startmonth] = "selected=\"selected\"";
$startdateyear = gmdate("Y", $announcement['startdate']);
$mybb->input['title'] = $announcement['subject'];
$mybb->input['message'] = $announcement['message'];
$mybb->input['allowhtml'] = $announcement['allowhtml'];
$mybb->input['allowsmilies'] = $announcement['allowsmilies'];
$mybb->input['allowmycode'] = $announcement['allowmycode'];
$mybb->input['fid'] = $announcement['fid'];
if($announcement['enddate'])
{
$endtime_checked[1] = "checked=\"checked\"";
$endtime_checked[2] = "";
$mybb->input['endtime_time'] = gmdate( $mybb->settings['timeformat'],$announcement['enddate']);
$endday = gmdate("j", $announcement['enddate']);
$endmonth = gmdate("m", $announcement['enddate']);
$endmonthsel[$endmonth] = "selected";
$enddateyear = gmdate("Y", $announcement['enddate']);
}
else
{
$endtime_checked[1] = "";
$endtime_checked[2] = "checked=\"checked\"";
$mybb->input['endtime_time'] = $mybb->input['starttime_time'];
$endday = $startday;
$endmonth = $startmonth;
$enddateyear = $startdateyear+1;
}
}
for($i = 1; $i <= 31; ++$i)
{
if($startday == $i)
{
$startdateday .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
}
else
{
$startdateday .= "<option value=\"$i\">$i</option>\n";
}
if($endday == $i)
{
$enddateday .= "<option value=\"$i\" selected=\"selected\">$i</option>\n";
}
else
{
$enddateday .= "<option value=\"$i\">$i</option>\n";
}
}
$startdatemonth .= "<option value=\"01\" {$startmonthsel['01']}>{$lang->january}</option>\n";
$enddatemonth .= "<option value=\"01\" {$endmonthsel['01']}>{$lang->january}</option>\n";
$startdatemonth .= "<option value=\"02\" {$startmonthsel['02']}>{$lang->february}</option>\n";
$enddatemonth .= "<option value=\"02\" {$endmonthsel['02']}>{$lang->february}</option>\n";
$startdatemonth .= "<option value=\"03\" {$startmonthsel['03']}>{$lang->march}</option>\n";
$enddatemonth .= "<option value=\"03\" {$endmonthsel['03']}>{$lang->march}</option>\n";
$startdatemonth .= "<option value=\"04\" {$startmonthsel['04']}>{$lang->april}</option>\n";
$enddatemonth .= "<option value=\"04\" {$endmonthsel['04']}>{$lang->april}</option>\n";
$startdatemonth .= "<option value=\"05\" {$startmonthsel['05']}>{$lang->may}</option>\n";
$enddatemonth .= "<option value=\"05\" {$endmonthsel['05']}>{$lang->may}</option>\n";
$startdatemonth .= "<option value=\"06\" {$startmonthsel['06']}>{$lang->june}</option>\n";
$enddatemonth .= "<option value=\"06\" {$endmonthsel['06']}>{$lang->june}</option>\n";
$startdatemonth .= "<option value=\"07\" {$startmonthsel['07']}>{$lang->july}</option>\n";
$enddatemonth .= "<option value=\"07\" {$endmonthsel['07']}>{$lang->july}</option>\n";
$startdatemonth .= "<option value=\"08\" {$startmonthsel['08']}>{$lang->august}</option>\n";
$enddatemonth .= "<option value=\"08\" {$endmonthsel['08']}>{$lang->august}</option>\n";
$startdatemonth .= "<option value=\"09\" {$startmonthsel['09']}>{$lang->september}</option>\n";
$enddatemonth .= "<option value=\"09\" {$endmonthsel['09']}>{$lang->september}</option>\n";
$startdatemonth .= "<option value=\"10\" {$startmonthsel['10']}>{$lang->october}</option>\n";
$enddatemonth .= "<option value=\"10\" {$endmonthsel['10']}>{$lang->october}</option>\n";
$startdatemonth .= "<option value=\"11\" {$startmonthsel['11']}>{$lang->november}</option>\n";
$enddatemonth .= "<option value=\"11\" {$endmonthsel['11']}>{$lang->november}</option>\n";
$startdatemonth .= "<option value=\"12\" {$startmonthsel['12']}>{$lang->december}</option>\n";
$enddatemonth .= "<option value=\"12\" {$endmonthsel['12']}>{$lang->december}</option>\n";
if(isset($preview))
{
$form_container = new FormContainer($lang->announcement_preview);
$form_container->output_row($preview['subject'], "", $preview['message'], 'preview');
$form_container->end();
}
$form_container = new FormContainer($lang->add_an_announcement);
$form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
$form_container->output_row($lang->start_date." <em>*</em>", $lang->start_date_desc, "<select name=\"starttime_day\">\n{$startdateday}</select>\n &nbsp; \n<select name=\"starttime_month\">\n{$startdatemonth}</select>\n &nbsp; \n<input type=\"text\" name=\"starttime_year\" value=\"{$startdateyear}\" size=\"4\" maxlength=\"4\" class=\"text_input\" />\n - {$lang->time} ".$form->generate_text_box('starttime_time', $mybb->input['starttime_time'], array('id' => 'starttime_time', 'style' => 'width: 50px;')));
$actions = "<script type=\"text/javascript\">
function checkAction(id)
{
var checked = '';
$('.'+id+'s_check').each(function(e, val)
{
if($(this).prop('checked') == true)
{
checked = $(this).val();
}
});
$('.'+id+'s').each(function(e)
{
$(this).hide();
});
if($('#'+id+'_'+checked))
{
$('#'+id+'_'+checked).show();
}
}
</script>
<dl style=\"margin-top: 0; margin-bottom: 0; width: 100%;\">
<dt><label style=\"display: block;\"><input type=\"radio\" name=\"endtime_type\" value=\"1\" {$endtime_checked[1]} class=\"endtimes_check\" onclick=\"checkAction('endtime');\" style=\"vertical-align: middle;\" /> <strong>{$lang->set_time}</strong></label></dt>
<dd style=\"margin-top: 4px;\" id=\"endtime_1\" class=\"endtimes\">
<table cellpadding=\"4\">
<tr>
<td><select name=\"endtime_day\">\n{$enddateday}</select>\n &nbsp; \n<select name=\"endtime_month\">\n{$enddatemonth}</select>\n &nbsp; \n<input type=\"text\" name=\"endtime_year\" value=\"{$enddateyear}\" size=\"4\" maxlength=\"4\" />\n - {$lang->time} ".$form->generate_text_box('endtime_time', $mybb->input['endtime_time'], array('id' => 'endtime_time', 'style' => 'width: 50px;'))."</td>
</tr>
</table>
</dd>
<dt><label style=\"display: block;\"><input type=\"radio\" name=\"endtime_type\" value=\"2\" {$endtime_checked[2]} class=\"endtimes_check\" onclick=\"checkAction('endtime');\" style=\"vertical-align: middle;\" /> <strong>{$lang->never}</strong></label></dt>
</dl>
<script type=\"text/javascript\">
checkAction('endtime');
</script>";
$form_container->output_row($lang->end_date." <em>*</em>", $lang->end_date_desc, $actions);
$form_container->output_row($lang->message." <em>*</em>", "", $form->generate_text_area('message', $mybb->input['message'], array('id' => 'message')), 'message');
$form_container->output_row($lang->forums_to_appear_in." <em>*</em>", $lang->forums_to_appear_in_desc, $form->generate_forum_select('fid', $mybb->input['fid'], array('size' => 5, 'main_option' => $lang->all_forums)));
$form_container->output_row($lang->allow_html." <em>*</em>", "", $form->generate_yes_no_radio('allowhtml', $mybb->input['allowhtml'], array('style' => 'width: 2em;')));
$form_container->output_row($lang->allow_mycode." <em>*</em>", "", $form->generate_yes_no_radio('allowmycode', $mybb->input['allowmycode'], array('style' => 'width: 2em;')));
$form_container->output_row($lang->allow_smilies." <em>*</em>", "", $form->generate_yes_no_radio('allowsmilies', $mybb->input['allowsmilies'], array('style' => 'width: 2em;')));
$form_container->end();
$buttons[] = $form->generate_submit_button($lang->save_announcement);
$buttons[] = $form->generate_submit_button($lang->preview_announcement, array('name' => 'preview'));
$form->output_submit_wrapper($buttons);
$form->end();
$page->output_footer();
}
if($mybb->input['action'] == "delete")
{
$query = $db->simple_select("announcements", "*", "aid='{$mybb->input['aid']}'");
$announcement = $db->fetch_array($query);
// Does the announcement not exist?
if(!$announcement['aid'])
{
flash_message($lang->error_invalid_announcement, 'error');
admin_redirect("index.php?module=forum-announcements");
}
// User clicked no
if($mybb->input['no'])
{
admin_redirect("index.php?module=forum-announcements");
}
$plugins->run_hooks("admin_forum_announcements_delete");
if($mybb->request_method == "post")
{
$db->delete_query("announcements", "aid='{$announcement['aid']}'");
$plugins->run_hooks("admin_forum_announcements_delete_commit");
// Log admin action
log_admin_action($announcement['aid'], $announcement['subject']);
$cache->update_forumsdisplay();
flash_message($lang->success_announcement_deleted, 'success');
admin_redirect("index.php?module=forum-announcements");
}
else
{
$page->output_confirm_action("index.php?module=forum-announcements&amp;action=delete&amp;aid={$announcement['aid']}", $lang->confirm_announcement_deletion);
}
}
if(!$mybb->input['action'])
{
$plugins->run_hooks("admin_forum_announcements_start");
$page->output_header($lang->forum_announcements);
$page->output_nav_tabs($sub_tabs, "forum_announcements");
// Fetch announcements into their proper arrays
$global_announcements = $announcements = array();
$query = $db->simple_select("announcements", "aid, fid, subject, enddate");
while($announcement = $db->fetch_array($query))
{
if($announcement['fid'] == -1)
{
$global_announcements[$announcement['aid']] = $announcement;
continue;
}
$announcements[$announcement['fid']][$announcement['aid']] = $announcement;
}
if(!empty($global_announcements))
{
$table = new Table;
$table->construct_header($lang->announcement);
$table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 150));
// Get the global announcements
foreach($global_announcements as $aid => $announcement)
{
if($announcement['enddate'] < TIME_NOW && $announcement['enddate'] != 0)
{
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_off.png\" alt=\"(Expired)\" title=\"Expired Announcement\" style=\"vertical-align: middle;\" /> ";
}
else
{
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_on.png\" alt=\"(Active)\" title=\"Active Announcement\" style=\"vertical-align: middle;\" /> ";
}
$table->construct_cell($icon."<a href=\"index.php?module=forum-announcements&amp;action=edit&amp;aid={$aid}\">".htmlspecialchars_uni($announcement['subject'])."</a>");
$table->construct_cell("<a href=\"index.php?module=forum-announcements&amp;action=edit&amp;aid={$aid}\">{$lang->edit}</a>", array("class" => "align_center", "width" => 75));
$table->construct_cell("<a href=\"index.php?module=forum-announcements&amp;action=delete&amp;aid={$aid}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_announcement_deletion}')\">{$lang->delete}</a>", array("class" => "align_center", "width" => 75));
$table->construct_row();
}
$table->output($lang->global_announcements);
}
$table = new Table;
$table->construct_header($lang->announcement);
$table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200));
fetch_forum_announcements($table);
if($table->num_rows() == 0)
{
$table->construct_cell($lang->no_forums, array("colspan" => "3"));
$table->construct_row();
}
$table->output($lang->forum_announcements);
$page->output_footer();
}
/**
* @param DefaultTable $table
* @param int $pid
* @param int $depth
*/
function fetch_forum_announcements(&$table, $pid=0, $depth=1)
{
global $mybb, $db, $lang, $announcements, $page;
static $forums_by_parent;
if(!is_array($forums_by_parent))
{
$forum_cache = cache_forums();
foreach($forum_cache as $forum)
{
$forums_by_parent[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum;
}
}
if(!is_array($forums_by_parent[$pid]))
{
return;
}
foreach($forums_by_parent[$pid] as $children)
{
foreach($children as $forum)
{
$forum['name'] = htmlspecialchars_uni($forum['name']);
if($forum['active'] == 0)
{
$forum['name'] = "<em>".$forum['name']."</em>";
}
if($forum['type'] == "c")
{
$forum['name'] = "<strong>".$forum['name']."</strong>";
}
$table->construct_cell("<div style=\"padding-left: ".(40*($depth-1))."px;\">{$forum['name']}</div>");
$table->construct_cell("<a href=\"index.php?module=forum-announcements&amp;action=add&amp;fid={$forum['fid']}\">{$lang->add_announcement}</a>", array("class" => "align_center", "colspan" => 2));
$table->construct_row();
if(isset($announcements[$forum['fid']]))
{
foreach($announcements[$forum['fid']] as $aid => $announcement)
{
if($announcement['enddate'] < TIME_NOW && $announcement['enddate'] != 0)
{
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_off.png\" alt=\"(Expired)\" title=\"Expired Announcement\" style=\"vertical-align: middle;\" /> ";
}
else
{
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_on.png\" alt=\"(Active)\" title=\"Active Announcement\" style=\"vertical-align: middle;\" /> ";
}
$table->construct_cell("<div style=\"padding-left: ".(40*$depth)."px;\">{$icon}<a href=\"index.php?module=forum-announcements&amp;action=edit&amp;aid={$aid}\">".htmlspecialchars_uni($announcement['subject'])."</a></div>");
$table->construct_cell("<a href=\"index.php?module=forum-announcements&amp;action=edit&amp;aid={$aid}\">{$lang->edit}</a>", array("class" => "align_center"));
$table->construct_cell("<a href=\"index.php?module=forum-announcements&amp;action=delete&amp;aid={$aid}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_announcement_deletion}')\">{$lang->delete}</a>", array("class" => "align_center"));
$table->construct_row();
}
}
// Build the list for any sub forums of this forum
if(isset($forums_by_parent[$forum['fid']]))
{
fetch_forum_announcements($table, $forum['fid'], $depth+1);
}
}
}
}