// Get latest news announcements
// First validate announcement fids:
$announcementsfids = explode(',', $mybb->settings['portal_announcementsfid']);
if(is_array($announcementsfids))
{
    foreach($announcementsfids as $fid)
    {
        $fid_array[] = intval($fid);
    }
    $announcementsfids = implode(',', $fid_array);
}
// And get them!
$query = $db->simple_select("forums", "*", "fid IN (".$announcementsfids.")");
while($forumrow = $db->fetch_array($query))
{
    $forum[$forumrow['fid']] = $forumrow;
}
$pids = '';
$tids = '';
$comma = '';
$query = $db->query("
    SELECT p.pid, p.message, p.tid
    FROM ".TABLE_PREFIX."posts p
    LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
    WHERE t.fid IN (".$announcementsfids.") AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
    ORDER BY t.dateline DESC 
    LIMIT 0, ".$mybb->settings['portal_numannouncements']
);
while($getid = $db->fetch_array($query))
{
    $pids .= ",'{$getid['pid']}'";
    $tids .= ",'{$getid['tid']}'";
    $posts[$getid['tid']] = $getid;
}
$pids = "pid IN(0{$pids})";
// Now lets fetch all of the attachments for these posts
$query = $db->simple_select("attachments", "*", $pids);
while($attachment = $db->fetch_array($query))
{
    $attachcache[$attachment['pid']][$attachment['aid']] = $attachment;
}
if(is_array($forum))
{
    foreach($forum as $fid => $forumrow)
    {
        $forumpermissions[$fid] = forum_permissions($fid);
    }
}
$icon_cache = $cache->read("posticons");
$announcements = '';
$query = $db->query("
    SELECT t.*, t.username AS threadusername, u.username, u.avatar
    FROM ".TABLE_PREFIX."threads t
    LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
    WHERE t.fid IN (".$announcementsfids.") AND t.tid IN (0{$tids}) AND t.visible='1' AND t.closed NOT LIKE 'moved|%'
    ORDER BY t.dateline DESC
    LIMIT 0, ".$mybb->settings['portal_numannouncements']
);
while($announcement = $db->fetch_array($query))
{
    $announcement['message'] = $posts[$announcement['tid']]['message'];
    $announcement['pid'] = $posts[$announcement['tid']]['pid'];
    $announcement['threadlink'] = get_thread_link($announcement['tid']);
    
    if($announcement['uid'] == 0)
    {
        $profilelink = htmlspecialchars_uni($announcement['threadusername']);
    }
    else
    {
        $profilelink = build_profile_link($announcement['username'], $announcement['uid']);
    }
    
    if(!$announcement['username'])
    {
        $announcement['username'] = $announcement['threadusername'];
    }
    $announcement['subject'] = htmlspecialchars_uni($parser->parse_badwords($announcement['subject']));
    if($announcement['icon'] > 0 && $icon_cache[$announcement['icon']])
    {
        $icon = $icon_cache[$announcement['icon']];
        $icon = "<img src=\"{$icon['path']}\" alt=\"{$icon['name']}\" />";
    }
    else
    {
        $icon = " ";
    }
    if($announcement['avatar'] != '')
    {
        $avatar_dimensions = explode("|", $announcement['avatardimensions']);
        if($avatar_dimensions[0] && $avatar_dimensions[1])
        {
            $avatar_width_height = "width=\"{$avatar_dimensions[0]}\" height=\"{$avatar_dimensions[1]}\"";
        }
        if (!stristr($announcement['avatar'], 'http://'))
        {
            $announcement['avatar'] = $mybb->settings['bburl'] . '/' . $announcement['avatar'];
        }        
        $avatar = "<td class=\"trow1\" width=\"1\" align=\"center\" valign=\"top\"><img src=\"{$announcement['avatar']}\" alt=\"\" {$avatar_width_height} /></td>";
    }
    else
    {
        $avatar = '';
    }
    $anndate = my_date($mybb->settings['dateformat'], $announcement['dateline']);
    $anntime = my_date($mybb->settings['timeformat'], $announcement['dateline']);
    if($announcement['replies'])
    {
        eval("\$numcomments = \"".$templates->get("portal_announcement_numcomments")."\";");
    }
    else
    {
        eval("\$numcomments = \"".$templates->get("portal_announcement_numcomments_no")."\";");
        $lastcomment = '';
    }
    
    $plugins->run_hooks("portal_announcement");
    $parser_options = array(
        "allow_html" => $forum[$announcement['fid']]['allowhtml'],
        "allow_mycode" => $forum[$announcement['fid']]['allowmycode'],
        "allow_smilies" => $forum[$announcement['fid']]['allowsmilies'],
        "allow_imgcode" => $forum[$announcement['fid']]['allowimgcode'],
        "filter_badwords" => 1
    );
    if($announcement['smilieoff'] == 1)
    {
        $parser_options['allow_smilies'] = 0;
    }
    $message = $parser->parse_message($announcement['message'], $parser_options);
    
    if(is_array($attachcache[$announcement['pid']]))
    { // This post has 1 or more attachments
        $validationcount = 0;
        $id = $announcement['pid'];
        foreach($attachcache[$id] as $aid => $attachment)
        {
            if($attachment['visible'])
            { // There is an attachment thats visible!
                $attachment['filename'] = htmlspecialchars_uni($attachment['filename']);
                $attachment['filesize'] = get_friendly_size($attachment['filesize']);
                $ext = get_extension($attachment['filename']);
                if($ext == "jpeg" || $ext == "gif" || $ext == "bmp" || $ext == "png" || $ext == "jpg")
                {
                    $isimage = true;
                }
                else
                {
                    $isimage = false;
                }
                $attachment['icon'] = get_attachment_icon($ext);
                // Support for [attachment=id] code
                if(stripos($message, "[attachment=".$attachment['aid']."]") !== false)
                {
                    if($attachment['thumbnail'] != "SMALL" && $attachment['thumbnail'] != '')
                    { // We have a thumbnail to show (and its not the "SMALL" enough image
                    
                        eval("\$attbit = \"".$templates->get("postbit_attachments_thumbnails_thumbnail")."\";");
                    }
                    elseif($attachment['thumbnail'] == "SMALL" && $forumpermissions[$announcement['fid']]['candlattachments'] == 1)
                    {
                        // Image is small enough to show - no thumbnail
                        eval("\$attbit = \"".$templates->get("postbit_attachments_images_image")."\";");
                    }
                    else
                    {
                        // Show standard link to attachment
                        eval("\$attbit = \"".$templates->get("postbit_attachments_attachment")."\";");
                    }
                    $message = preg_replace("#\[attachment=".$attachment['aid']."]#si", $attbit, $message);
                }
                else
                {
                    if($attachment['thumbnail'] != "SMALL" && $attachment['thumbnail'] != '')
                    { // We have a thumbnail to show
                        eval("\$post['thumblist'] .= \"".$templates->get("postbit_attachments_thumbnails_thumbnail")."\";");
                        if($tcount == 5)
                        {
                            $thumblist .= "<br />";
                            $tcount = 0;
                        }
                        ++$tcount;
                    }
                    elseif($attachment['thumbnail'] == "SMALL" && $forumpermissions[$announcement['fid']]['candlattachments'] == 1)
                    {
                        // Image is small enough to show - no thumbnail
                        eval("\$post['imagelist'] .= \"".$templates->get("postbit_attachments_images_image")."\";");
                    }
                    else
                    {
                        eval("\$post['attachmentlist'] .= \"".$templates->get("postbit_attachments_attachment")."\";");
                    }
                }
            }
            else
            {
                $validationcount++;
            }
        }
        if($post['thumblist'])
        {
            eval("\$post['attachedthumbs'] = \"".$templates->get("postbit_attachments_thumbnails")."\";");
        }
        if($post['imagelist'])
        {
            eval("\$post['attachedimages'] = \"".$templates->get("postbit_attachments_images")."\";");
        }
        if($post['attachmentlist'] || $post['thumblist'] || $post['imagelist'])
        {
            eval("\$post['attachments'] = \"".$templates->get("postbit_attachments")."\";");
        }
    }
    eval("\$announcements .= \"".$templates->get("portal_announcement")."\";");
    unset($post);
}
eval("\$portal = \"".$templates->get("portal")."\";");
$plugins->run_hooks("portal_end");
output_page($portal);
?>