Quote by THEMike: hmm Well I thought I'd correctly escaped the HTML parts of the string that is built for posting here, but I guess not. CVS is your best bet then. Silly forum software.
Text Formatted Code
function COM_whatsNewBlock( $help='', $title='' )
{
global $_TABLES, $_CONF, $LANG01, $_USER, $_GROUPS, $page, $newstories;
$retval = COM_startBlock( $title, $help,
COM_getBlockTemplate( 'whats_new_block', 'header' ));
$topicsql = '';
if(( $_CONF['hidenewstories'] == 0 ) || ( $_CONF['hidenewcomments'] == 0 ))
{
$tresult = DB_query( "SELECT tid FROM {$_TABLES['topics']}"
. COM_getPermSQL() );
$trows = DB_numRows( $tresult );
if( $trows > 0 )
{
$tids = array();
for( $i = 0; $i < $trows; $i++ )
{
$T = DB_fetchArray( $tresult );
$tids[] = $T['tid'];
}
if( sizeof( $tids ) > 0 )
{
$topicsql = " AND (tid IN ('" . implode( "','", $tids ) . "'))";
}
}
}
if( $_CONF['hidenewstories'] == 0 )
{
// Find the newest stories
$sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (date >= (date_sub(NOW(), INTERVAL {$_CONF['newstoriesinterval']} SECOND))) AND (date <= NOW()) AND (draft_flag = 0)" . COM_getPermSQL( 'AND' ) . $topicsql;
$result = DB_query( $sql );
$A = DB_fetchArray( $result );
$nrows = $A['count'];
if( empty( $title ))
{
$title = DB_getItem( $_TABLES['blocks'], 'title', "name='whats_new_block'" );
}
// Any late breaking news stories?
$retval .= '<b>' . $LANG01[99] . '</b><br>';
if( $nrows > 0 )
{
$hours = (( $_CONF['newstoriesinterval'] / 60 ) / 60 );
if( $nrows == 1 )
{
$newmsg = '1 ' . $LANG01[81] . ' ' . $hours . ' ' . $LANG01[82];
if ($newstories && ($page < 2))
{
$retval .= $newmsg . '<br>';
}
else
{
$retval .= '<a href="' . $_CONF['site_url']
. '/index.php?display=new">' . $newmsg . '</a><br>';
}
}
else
{
$newmsg = $nrows . ' ' . $LANG01[80] . ' ' . $hours . ' '
. $LANG01[82];
if ($newstories && ($page < 2))
{
$retval .= $newmsg . '<br>';
}
else
{
$retval .= '<a href="' . $_CONF['site_url']
. '/index.php?display=new">' . $newmsg . '</a><br>';
}
}
}
else
{
$retval .= $LANG01[100] . '<br>';
}
$retval .= '<br>';
}
if( $_CONF['hidenewcomments'] == 0 )
{
// Go get the newest comments
$retval .= '<b>' . $LANG01[83] . '</b> <small>' . $LANG01[85] . '</small><br>';
$stwhere = '';
if( !empty( $_USER['uid'] ))
{
$stwhere .= "({$_TABLES['stories']}.owner_id IS NOT NULL AND {$_TABLES['stories']}.perm_owner IS NOT NULL) OR ";
$stwhere .= "({$_TABLES['stories']}.group_id IS NOT NULL AND {$_TABLES['stories']}.perm_group IS NOT NULL) OR ";
$stwhere .= "({$_TABLES['stories']}.perm_members IS NOT NULL)";
}
else
{
$stwhere .= "({$_TABLES['stories']}.perm_anon IS NOT NULL)";
}
$powhere = '';
if( !empty( $_USER['uid'] ))
{
$powhere .= "({$_TABLES['pollquestions']}.owner_id IS NOT NULL AND {$_TABLES['pollquestions']}.perm_owner IS NOT NULL) OR ";
$powhere .= "({$_TABLES['pollquestions']}.group_id IS NOT NULL AND {$_TABLES['pollquestions']}.perm_group IS NOT NULL) OR ";
$powhere .= "({$_TABLES['pollquestions']}.perm_members IS NOT NULL)";
}
else
{
$powhere .= "({$_TABLES['pollquestions']}.perm_anon IS NOT NULL)";
}
$sql = "SELECT DISTINCT count(*) AS dups, type, question, {$_TABLES['stories']}.title, {$_TABLES['stories']}.sid, qid, max({$_TABLES['comments']}.date) as lastdate FROM {$_TABLES['comments']} LEFT JOIN {$_TABLES['stories']} ON (({$_TABLES['stories']}.sid = {$_TABLES['comments']}.sid)" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['stories'] ) . " AND ({$_TABLES['stories']}.draft_flag = 0)" . $topicsql . ") LEFT JOIN {$_TABLES['pollquestions']} ON ((qid = {$_TABLES['comments']}.sid)" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['pollquestions'] ) . ") WHERE ({$_TABLES['comments']}.date >= (DATE_SUB(NOW(), INTERVAL {$_CONF['newcommentsinterval']} SECOND))) AND ((({$stwhere})) OR (({$powhere}))) GROUP BY {$_TABLES['comments']}.sid ORDER BY 7 DESC LIMIT 15";
$result = DB_query( $sql );
$nrows = DB_numRows( $result );
if( $nrows > 0 )
{
$newcomments = array();
for( $x = 1; $x <= $nrows; $x++ )
{
$A = DB_fetchArray( $result );
if(( $A['type'] == 'article' ) || empty( $A['type'] ))
{
$itemlen = strlen( $A['title'] );
$titletouse = stripslashes( $A['title'] );
$urlstart = '<a href="' . COM_buildUrl( $_CONF['site_url']
. '/article.php?story=' . $A['sid'] . '#comments' ) . '"';
}
else if( $A['type'] == 'poll' )
{
$itemlen = strlen( $A['question'] );
$titletouse = $A['question'];
$urlstart = '<a href="' . $_CONF['site_url'] . '/pollbooth.php?qid=' . $A['qid'] . '&aid=-1#comments"';
}
if( $itemlen > 20 )
{
$urlstart .= ' title="' . htmlspecialchars( $titletouse ) . '">';
}
else
{
$urlstart .= '>';
}
// Trim the length if over 20 characters
if( $itemlen > 20 )
{
$titletouse = substr( $titletouse, 0, 17 );
$acomment = str_replace( '$', '$', $titletouse ) . '...';
$acomment = str_replace( ' ', ' ', $acomment );
if( $A['dups'] > 1 )
{
$acomment .= ' [+' . $A['dups'] . ']';
}
}
else
{
$acomment = str_replace( '$', '$', $titletouse );
$acomment = str_replace( ' ', ' ', $acomment );
if( $A['dups'] > 1 )
{
$acomment .= ' [+' . $A['dups'] . ']';
}
}
$newcomments[] = $urlstart . $acomment . '</a>';
}
$retval .= COM_makeList( $newcomments );
}
else
{
$retval .= $LANG01[86] . '<br>' . LB;
}
$retval .= '<br>';
}
if( $_CONF['hidenewlinks'] == 0 )
{
// Get newest links
$retval .= '<b>' . $LANG01[84] . '</b> <small>' . $LANG01[87] . '</small><br>';
$sql = "SELECT lid,title,url FROM {$_TABLES['links']}"
. COM_getPermSQL() . ' ORDER BY lid DESC LIMIT 15';
$foundone = 0;
$now = time();
$desired = $now - $_CONF['newlinksinterval'];
$result = DB_query( $sql );
$nrows = DB_numRows( $result );
if( $nrows > 0 )
{
$newlinks = array();
for( $x = 1; $x <= $nrows; $x++ )
{
$A = DB_fetchArray( $result );
$A['title'] = stripslashes( $A['title'] );
// Need to reparse the date from the link id
$myyear = substr( $A['lid'], 0, 4 );
$mymonth = substr( $A['lid'], 4, 2 );
$myday = substr( $A['lid'], 6, 2 );
$myhour = substr( $A['lid'], 8, 2 );
$mymin = substr( $A['lid'], 10, 2 );
$mysec = substr( $A['lid'], 12, 2 );
$newtime = "{$mymonth}/{$myday}/{$myyear} {$myhour}:{$mymin}:{$mysec}";
$convtime = strtotime( $newtime );
if( $convtime > $desired )
{
$foundone = 1;
// redirect link via portal.php so we can count the clicks
$lcount = $_CONF['site_url']
. '/portal.php?what=link&item=' . $A['lid'];
// Trim the length if over 16 characters
$itemlen = strlen( $A['title'] );
if( $itemlen > 16 )
{
$newlinks [] = '<a href="' . $lcount . '" title="'
. $A['title'] . '">' . substr( $A['title'], 0, 16 )
. '...</a>' . LB;
}
else
{
$newlinks[] = '<a href="' . $lcount . '">'
. substr( $A['title'], 0, $itemlen ) . '</a>' . LB;
}
}
}
}
if( $foundone == 0 )
{
$retval .= $LANG01[88] . '<br>' . LB;
}
else
{
$retval .= COM_makeList( $newlinks );
}
}
if( $_CONF['hidenewplugins'] == 0 )
{
list( $headlines, $bylines, $content ) = PLG_getWhatsNew();
$plugins = sizeof( $headlines );
if( $plugins > 0 )
{
for( $i = 0; $i < $plugins; $i++ )
{
$retval .= '<br>';
$retval .= '<b>' . $headlines[$i] . '</b> <small>'
. $bylines[$i] . '</small><br>';
if( is_array( $content[$i] ))
{
$retval .= COM_makeList( $content[$i] );
}
else
{
$retval .= $content[$i] . '<br>' . LB;
}
}
}
}
$retval .= COM_endBlock( COM_getBlockTemplate( 'whats_new_block', 'footer' ));
return $retval;
}