Posted on: 03/24/04 08:44am
By: THEMike
/**
* This function tells Geeklog that we support the "What's New" api
* @return array with main title and subtitle, populated intellegently
* @author Mike Jervis (mike AT *censored*ingbrit DOT com)
*/
function plugin_whatsnewsupported_journal() {
global $_CONF, $LANG01;
$hours = $_CONF['newcommentsinterval'] / 60 / 60;
return array("JOURNAL $LANG01[83]","last $hours hours");
}
/**
* This function provides the content of our "What's New" feed for the
* new "What's New" API in geeklog 1.3.9 or better
* @return array of items (links to journal entries)
* @author Mike Jervis (mike AT *censored*ingbrit DOT com)
*/
function plugin_getwhatsnew_journal() {
global $_TABLES, $_CONF, $LANG01;
$sql = "SELECT DISTINCT count( * ) AS dups, type, "
."{$_TABLES['journal_entry']}.je_summary, {$_TABLES['comments']}.sid, "
."{$_TABLES['comments']}.title, "
."{$_TABLES['journal_entry']}.je_jrn_id, max( {$_TABLES['comments']}.date )"
." AS lastdate FROM {$_TABLES['comments']} LEFT JOIN "
."{$_TABLES['journal_entry']} ON ( ( {$_TABLES['journal_entry']}.je_id "
."= {$_TABLES['comments']}.sid ) AND ( {$_TABLES['journal_entry']}."
."je_public = 1 ) ) WHERE ( {$_TABLES['comments']}.date >= ( DATE_SUB( "
."NOW( ) , INTERVAL {$_CONF['newcommentsinterval']} SECOND ) ) ) "
."AND {$_TABLES['comments']}.type='journal' GROUP BY "
."{$_TABLES['comments']}.sid ORDER BY lastdate DESC LIMIT 15 ";
$result = DB_query( $sql );
$nrows = DB_numRows( $result );
if( $nrows == 0 )
{
$retval .= $LANG01[86] . '
' . LB;
} else {
$items = array();
for( $i = 0; $i
{
$item = DB_fetchArray( $result );
$str = "
."&type=entry&je_id={$item['sid']}#comments">";
if( $item['je_summary'] != '' )
{
$str .= stripslashes( $item['je_summary'] );
} else {
$str .= stripslashes( $item['title'] );
}
if( $item['dups'] > 1 ) { $str .= "[+{$item['dups']}]"; }
$str .= '';
$items[] = $str;
}
return $items;
}
}
Posted on: 03/24/04 08:46am
By: THEMike
Posted on: 03/24/04 09:03am
By: Blaine
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; }
Posted on: 03/24/04 10:21am
By: THEMike
/** * This function tells Geeklog that we support the "What's New" api * @return array with main title and subtitle, populated intellegently * @author Mike Jervis (mike AT *censored*ingbrit DOT com) */ function plugin_whatsnewsupported_journal() { global $_CONF, $LANG01; $hours = $_CONF['newcommentsinterval'] / 60 / 60; return array("JOURNAL $LANG01[83]","last $hours hours"); } /** * This function provides the content of our "What's New" feed for the * new "What's New" API in geeklog 1.3.9 or better * @return array of items (links to journal entries) * @author Mike Jervis (mike AT *censored*ingbrit DOT com) */ function plugin_getwhatsnew_journal() { global $_TABLES, $_CONF, $LANG01; $sql = "SELECT DISTINCT count( * ) AS dups, type, " ."{$_TABLES['journal_entry']}.je_summary, {$_TABLES['comments']}.sid, " ."{$_TABLES['comments']}.title, " ."{$_TABLES['journal_entry']}.je_jrn_id, max( {$_TABLES['comments']}.date )" ." AS lastdate FROM {$_TABLES['comments']} LEFT JOIN " ."{$_TABLES['journal_entry']} ON ( ( {$_TABLES['journal_entry']}.je_id " ."= {$_TABLES['comments']}.sid ) AND ( {$_TABLES['journal_entry']}." ."je_public = 1 ) ) WHERE ( {$_TABLES['comments']}.date >= ( DATE_SUB( " ."NOW( ) , INTERVAL {$_CONF['newcommentsinterval']} SECOND ) ) ) " ."AND {$_TABLES['comments']}.type='journal' GROUP BY " ."{$_TABLES['comments']}.sid ORDER BY lastdate DESC LIMIT 15 "; $result = DB_query( $sql ); $nrows = DB_numRows( $result ); if( $nrows == 0 ) { $retval .= $LANG01[86] . '<br>' . LB; } else { $items = array(); for( $i = 0; $i < $nrows; $i++ ) { $item = DB_fetchArray( $result ); $str = "<a href="{$_CONF['site_url']}/journal/index.php?mode=read" ."&type=entry&je_id={$item['sid']}#comments">"; if( $item['je_summary'] != '' ) { $str .= stripslashes( $item['je_summary'] ); } else { $str .= stripslashes( $item['title'] ); } if( $item['dups'] > 1 ) { $str .= "[+{$item['dups']}]"; } $str .= '</a>'; $items[] = $str; } return $items; } }