1<?php 2/** 3 * MyBB 1.8 4 * Copyright 2014 MyBB Group, All Rights Reserved 5 * 6 * Website: http://www.mybb.com 7 * License: http://www.mybb.com/about/license 8 * 9 */ 10 11define("IN_MYBB", 1); 12define('THIS_SCRIPT', 'announcements.php'); 13 14$templatelist = "announcement,postbit_groupimage,postbit_reputation,postbit_avatar,postbit_online,postbit_offline,postbit_away,postbit_find,postbit_pm,postbit_email,postbit_author_user"; 15$templatelist .= ",forumdisplay_password_wrongpass,forumdisplay_password,postbit_author_guest,postbit_userstar,announcement_quickdelete,postbit,postbit_classic,postbit_www,announcement_edit"; 16 17require_once "./global.php"; 18require_once MYBB_ROOT."inc/functions_post.php"; 19 20// Load global language phrases 21$lang->load("announcements"); 22 23$aid = $mybb->get_input('aid', MyBB::INPUT_INT); 24 25// Get announcement fid 26$query = $db->simple_select("announcements", "fid", "aid='$aid'"); 27$announcement = $db->fetch_array($query); 28 29$plugins->run_hooks("announcements_start"); 30 31if(!$announcement) 32{ 33 error($lang->error_invalidannouncement); 34} 35 36// Get forum info 37$fid = $announcement['fid']; 38if($fid > 0) 39{ 40 $forum = get_forum($fid); 41 42 if(!$forum) 43 { 44 error($lang->error_invalidforum); 45 } 46 47 // Make navigation 48 build_forum_breadcrumb($forum['fid']); 49 50 // Permissions 51 $forumpermissions = forum_permissions($forum['fid']); 52 53 if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0) 54 { 55 error_no_permission(); 56 } 57 58 // Check if this forum is password protected and we have a valid password 59 check_forum_password($forum['fid']); 60} 61add_breadcrumb($lang->nav_announcements); 62 63$archive_url = build_archive_link("announcement", $aid); 64 65// Get announcement info 66$time = TIME_NOW; 67 68$query = $db->query(" 69 SELECT u.*, u.username AS userusername, a.*, f.* 70 FROM ".TABLE_PREFIX."announcements a 71 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid) 72 LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid) 73 WHERE a.startdate<='$time' AND (a.enddate>='$time' OR a.enddate='0') AND a.aid='$aid' 74"); 75 76$announcementarray = $db->fetch_array($query); 77 78if(!$announcementarray) 79{ 80 error($lang->error_invalidannouncement); 81} 82 83// Gather usergroup data from the cache 84// Field => Array Key 85$data_key = array( 86 'title' => 'grouptitle', 87 'usertitle' => 'groupusertitle', 88 'stars' => 'groupstars', 89 'starimage' => 'groupstarimage', 90 'image' => 'groupimage', 91 'namestyle' => 'namestyle', 92 'usereputationsystem' => 'usereputationsystem' 93); 94 95foreach($data_key as $field => $key) 96{ 97 $announcementarray[$key] = $groupscache[$announcementarray['usergroup']][$field]; 98} 99 100$announcementarray['dateline'] = $announcementarray['startdate']; 101$announcementarray['userusername'] = $announcementarray['username']; 102$announcement = build_postbit($announcementarray, 3); 103$announcementarray['subject'] = $parser->parse_badwords($announcementarray['subject']); 104$lang->forum_announcement = $lang->sprintf($lang->forum_announcement, htmlspecialchars_uni($announcementarray['subject'])); 105 106if($announcementarray['startdate'] > $mybb->user['lastvisit']) 107{ 108 $setcookie = true; 109 if(isset($mybb->cookies['mybb']['announcements']) && is_scalar($mybb->cookies['mybb']['announcements'])) 110 { 111 $cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements'])); 112 113 if(isset($cookie[$announcementarray['aid']])) 114 { 115 $setcookie = false; 116 } 117 } 118 119 if($setcookie) 120 { 121 my_set_array_cookie('announcements', $announcementarray['aid'], $announcementarray['startdate'], -1); 122 } 123} 124 125$plugins->run_hooks("announcements_end"); 126 127eval("\$forumannouncement = \"".$templates->get("announcement")."\";"); 128output_page($forumannouncement); 129