Código PHP:
// Get latest news announcements
// First validate announcement fids:
$announcementsfids = explode(',', $proportal->settings['announcementsfid2']);
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;
}
// Let's add pagination
$annnum = $db->fetch_field($db->simple_select('threads', 'COUNT(*) AS annnum', "fid IN (".$proportal->settings['announcementsfid2'].") AND visible='1' AND closed NOT LIKE 'moved|%'"), 'annnum');
$pagenum = intval($mybb->input['page']);
$totalpage = ceil($annnum / $proportal->settings['numannouncements']);
if($pagenum < 1 || !$pagenum || $pagenum > $totalpage){ $pagenum = 1; }
$multipage = multipage($annnum, $proportal->settings['numannouncements'], $pagenum, $mybb->settings['bburl'].'/portal.php');
$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 ".(($pagenum-1)*$proportal->settings['numannouncements']).", ".$proportal->settings['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, u.avatardimensions
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, ".$proportal->settings['numannouncements']
);
// And get them!
$query = $db->simple_select("forums", "*", "fid IN (".$announcementsfids.")");
while($forumrow = $db->fetch_array($query))
{
$forum[$forumrow['fid']] = $forumrow;
}
// And get them!
if ($mybb->usergroup[gid] == "5")
{
$query = $db("SELECT * FROM forums WHERE fid = '".$announcementsfids."' AND fid <> '17');
while($forumrow = $db->fetch_array($query))
{
$forum[$forumrow['fid']] = $forumrow;
}
}
$l['portal_novedades'] = "Configuración de Modulo novedades";
$l['portal_settings_desc'] = "ID de los foros que NO se mostraran";
$l['portal_settings_grupo1'] = "Invitados";
$l['portal_settings_grupo2'] = "Registrados";
$l['portal_settings_grupo3'] = "SuperModeradores";
$l['portal_settings_grupo4'] = "Administradores";
$l['portal_settings_grupo5'] = "Esperando Activacion";
$l['portal_settings_grupo6'] = "Moderadores";
$l['portal_settings_grupo7'] = "Suspendidos";
$l['portal_settings_grupo11'] = "Privado";
$form_container = new FormContainer($lang->portal_novedades);
$form_container->output_row($lang->portal_settings_grupo1, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo1]', $settings_data['grupo1'], array('id' => 'grupo1')), 'grupo1');
$form_container->output_row($lang->portal_settings_grupo2, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo2]', $settings_data['grupo2'], array('id' => 'grupo2')), 'grupo2');
$form_container->output_row($lang->portal_settings_grupo3, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo3]', $settings_data['grupo3'], array('id' => 'grupo3')), 'grupo3');
$form_container->output_row($lang->portal_settings_grupo4, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo4]', $settings_data['grupo4'], array('id' => 'grupo4')), 'grupo4');
$form_container->output_row($lang->portal_settings_grupo5, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo5]', $settings_data['grupo5'], array('id' => 'grupo5')), 'grupo5');
$form_container->output_row($lang->portal_settings_grupo6, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo6]', $settings_data['grupo6'], array('id' => 'grupo6')), 'grupo6');
$form_container->output_row($lang->portal_settings_grupo7, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo7]', $settings_data['grupo7'], array('id' => 'grupo7')), 'grupo7');
$form_container->output_row($lang->portal_settings_grupo11, $lang->portal_settings_desc, $form->generate_text_box('upsetting[grupo11]', $settings_data['grupo11'], array('id' => 'grupo11')), 'grupo11');
$form_container->end();
//Las variables a utilizar son las de mybb para los grupos de usuarios o funciones asociadas con MyBB, para ahorrarnos algo de código, la funcion db, para los llamados y consultas a los datos de la base de datos, la funcion lang, para que tome los valores del archivo de idiomas del mismo plugin.
global $db, $mybb, $lang;
$lang->load("nombredelplugin", false, true);
$grupos = $lang->portal_settings_grupo1_desc;
if(in_array($mybb->user['usergroup'], array($grupos)))
{
$query = $db("SELECT * FROM forums WHERE fid <> '17'");
while($forumrow = $db->fetch_array($query))
{
$forum[$forumrow['fid']] = $forumrow;
}
}
// Get latest news announcements
// First validate announcement fids:
$announcementsfids = explode(',', $proportal->settings['announcementsfid2']);
if(is_array($announcementsfids2))
{
foreach($announcementsfids2 as $fid)
{
$fid_array[] = intval($fid);
}
$announcementsfids2 = implode(',', $fid_array);
}
// And get them!
$query = $db->simple_select("forums", "*", "fid IN (".$announcementsfids2.")");
while($forumrow = $db->fetch_array($query))
{
$forum[$forumrow['fid']] = $forumrow;
}
// Let's add pagination
$annnum = $db->fetch_field($db->simple_select('threads', 'COUNT(*) AS annnum', "fid IN (".$proportal->settings['announcementsfid2'].") AND visible='1' AND closed NOT LIKE 'moved|%'"), 'annnum');
$pagenum = intval($mybb->input['page']);
$totalpage = ceil($annnum / $proportal->settings['numannouncements']);
if($pagenum < 1 || !$pagenum || $pagenum > $totalpage){ $pagenum = 1; }
$multipage = multipage($annnum, $proportal->settings['numannouncements'], $pagenum, $mybb->settings['bburl'].'/portal.php');
$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 (".$announcementsfids2.") AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
ORDER BY t.dateline DESC
LIMIT ".(($pagenum-1)*$proportal->settings['numannouncements']).", ".$proportal->settings['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, u.avatardimensions
FROM ".TABLE_PREFIX."threads t
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
WHERE t.fid IN (".$announcementsfids2.") AND t.tid IN (0{$tids}) AND t.visible='1' AND t.closed NOT LIKE 'moved|%'
ORDER BY t.dateline DESC
LIMIT 0, ".$proportal->settings['numannouncements']
);
<?php
if (!defined("IN_PORTAL")) {
die("<div style=\"border:1px solid #CC0000; padding:3px; margin:0; font-family:Tahoma; width:250px; font-size:12px;\"><strong>Error:</strong> This file cannot be viewed directly!</div>");
}
// Get forums user cannot view
$unviewable = get_unviewable_forums();
if($unviewable)
{
$unviewwhere = " AND fid NOT IN ($unviewable)";
}
$altbg = alt_trow();
$threadlist = '';
$showlimit = 5;
$query = $db->query("
SELECT p.*, u.username
FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
WHERE p.visible='1' $unviewwhere
ORDER BY p.dateline DESC
LIMIT 0, ".$showlimit
);
while($thread = $db->fetch_array($query))
{
$lastpostdate = my_date($mybb->settings['dateformat'], $thread['dateline']);
$lastposttime = my_date($mybb->settings['timeformat'], $thread['dateline']);
// Don't link to guest's profiles (they have no profile).
if($thread['uid'] == 0)
{
$lastposterlink = $thread['username'];
}
else
{
$lastposterlink = build_profile_link($thread['username'], $thread['uid']);
}
if(my_strlen($thread['subject']) > 20)
{
$thread['subject'] = my_substr($thread['subject'], 0, 20) . "...";
}
$thread['subject'] = htmlspecialchars_uni($parser->parse_badwords($thread['subject']));
$thread['threadlink'] = get_post_link($thread['pid'],$thread['tid']);
$threadlist .= "<tr>
<td class=\"$altbg\">
<strong><a href=\"".$mybb->settings['bburl']."/".$thread['threadlink']."#pid".$thread['pid']."\">$thread[subject]</a></strong>
<span class=\"smalltext\"><br />
$lang->posted_by <em>$lastposterlink</em><br />
$lastpostdate $lastposttime
</span>
</td>
</tr>";
$altbg = alt_trow();
}
if($threadlist)
{
// Show the table only if there are threads
$latestposts = "<table border=\"0\" cellspacing=\"".$theme['borderwidth']."\" cellpadding=\"".$theme['tablespace']."\" class=\"tborder\">
<tr>
<td class=\"thead\"><div class=\"expcolimage\"><img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/{$expcolimage}\" id=\"block_{$result_blocks['id']}_img\" class=\"expander\" alt=\"{$expaltext}\" title=\"{$expaltext}\" /></div><strong>Ultimos Mensajes</strong></td>
</tr>
<tbody style=\"{$expdisplay}\" id=\"block_{$result_blocks['id']}_e\">
{$threadlist}
</tbody>
</table>";
}
else
{
$latestposts = "<table border=\"0\" cellspacing=\"".$theme['borderwidth']."\" cellpadding=\"".$theme['tablespace']."\" class=\"tborder\">
<tr>
<td class=\"thead\"><div class=\"expcolimage\"><img src=\"{$mybb->settings['bburl']}/{$theme['imgdir']}/{$expcolimage}\" id=\"block_{$result_blocks['id']}_img\" class=\"expander\" alt=\"{$expaltext}\" title=\"{$expaltext}\" /></div><strong>Ultimos Mensajes</strong></td>
</tr>
<tbody style=\"{$expdisplay}\" id=\"block_{$result_blocks['id']}_e\">
<tr>
<td class=\"$altbg\">No Post</td>
</tr>
</tbody>
</table>";
}
echo $latestposts;
?>