182 lines
5.7 KiB
PHP
182 lines
5.7 KiB
PHP
<?php
|
|
/**
|
|
* Comments of the Day parser hook -- shows the five newest comments that have
|
|
* been sent within the last 24 hours.
|
|
*
|
|
* @file
|
|
* @ingroup Extensions
|
|
* @date 5 August 2011
|
|
*/
|
|
if ( !defined( 'MEDIAWIKI' ) ) {
|
|
die();
|
|
}
|
|
|
|
$wgHooks['ParserFirstCallInit'][] = 'wfCommentsListAll';
|
|
|
|
/**
|
|
* Register the new <commentsAll /> parser hook with the Parser.
|
|
*
|
|
* @param $parser Parser: instance of Parser (not necessarily $wgParser)
|
|
* @return Boolean: true
|
|
*/
|
|
function wfCommentsListAll( &$parser ) {
|
|
$parser->setHook( 'commentsAll', 'getcommentsAll' );
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get comments all --
|
|
*
|
|
* @return String: HTML
|
|
*/
|
|
function getcommentsAll( $input, $args, $parser ) {
|
|
global $wgMemc, $wgUploadPath;
|
|
|
|
$oneDay = 60 * 60 * 24 * 50000;
|
|
|
|
// Try memcached first
|
|
$key = wfMemcKey( 'comments-all', 'standalone-hook' );
|
|
$data = $wgMemc->get( $key );
|
|
|
|
if( $data ) { // success, got it from memcached!
|
|
$commentsAll = $data;
|
|
//$dbr = wfGetDB( DB_SLAVE );
|
|
} elseif ( !$data || $args['nocache'] ) { // just query the DB
|
|
$dbr = wfGetDB( DB_SLAVE );
|
|
|
|
$res = $dbr->select(
|
|
array( 'Comments', 'page' ),
|
|
array(
|
|
'Comment_Username', 'comment_ip', 'comment_text',
|
|
'comment_date', 'Comment_user_id', 'CommentID',
|
|
'IFNULL(Comment_Plus_Count - Comment_Minus_Count,0) AS Comment_Score',
|
|
'Comment_Plus_Count AS CommentVotePlus',
|
|
'Comment_Minus_Count AS CommentVoteMinus',
|
|
'Comment_Parent_ID', 'page_title', 'page_namespace'
|
|
),
|
|
array(
|
|
'comment_page_id = page_id',
|
|
'UNIX_TIMESTAMP(comment_date) > ' . ( time() - ( $oneDay ) )
|
|
),
|
|
__METHOD__,
|
|
array( 'ORDER BY' => '(comment_date) DESC')
|
|
);
|
|
|
|
$commentsAll = array();
|
|
foreach ( $res as $row ) {
|
|
$commentsAll[] = array(
|
|
'username' => $row->Comment_Username,
|
|
'userid' => $row->Comment_user_id,
|
|
'score' => $row->CommentVotePlus,
|
|
'text' => $row->comment_text,
|
|
'id' => $row->CommentID,
|
|
'pagens' => $row->page_namespace,
|
|
'pagetitle' => $row->page_title,
|
|
'date' => $row->comment_date
|
|
);
|
|
}
|
|
|
|
$wgMemc->set( $key, $commentsAll, $oneDay );
|
|
}
|
|
|
|
$comments = '';
|
|
|
|
foreach ( $commentsAll as $commentsAllTemp ) {
|
|
$title2 = Title::makeTitle(
|
|
$commentsAllTemp['pagens'],
|
|
$commentsAllTemp['pagetitle']
|
|
);
|
|
|
|
if( $commentsAllTemp['userid'] != 0 ) {
|
|
$title = Title::makeTitle( NS_USER, $commentsAllTemp['username'] );
|
|
$commentPoster_Display = $commentsAllTemp['username'];
|
|
$commentPoster = '<a href="' . $title->getFullURL() .
|
|
'" title="' . $title->getText() . '" rel="nofollow">' .
|
|
$commentsAllTemp['username'] . '</a>';
|
|
//avatar = new wAvatar( $commentsAllTemp['userid'], 's' );
|
|
$commentIcon = 'extensions/Comments/images/default_s.gif';
|
|
} else {
|
|
$title = Title::makeTitle( NS_USER, $commentsAllTemp['username'] );
|
|
$commentPoster_Display = $commentsAllTemp['username'];
|
|
$commentPoster = '<a href="' . $title->getFullURL() .
|
|
'" title="' . $title->getText() . '" rel="nofollow">' .
|
|
$commentsAllTemp['username'] . '</a>';
|
|
//avatar = new wAvatar( $commentsAllTemp['userid'], 's' );
|
|
$commentIcon = 'extensions/Comments/resources/images/default_s.gif';
|
|
|
|
if ( filter_var($commentPoster_Display, FILTER_VALIDATE_IP) !== false ){
|
|
// Wert ist eine IP-Adresse
|
|
$commentPoster = "Anonym";
|
|
}
|
|
/*
|
|
$commentPoster_Display = wfMsg( 'comment-anon-name' );
|
|
$commentPoster = wfMsg( 'comment-anon-name' );
|
|
$commentIcon = '{$IP}/extensions/Comments/images/default_s.gif';
|
|
*/
|
|
}
|
|
|
|
// $comment_text = substr( $commentsAllTemp['text'], 0, 550 - strlen( $commentPoster_Display ) );
|
|
$comment_text = $commentsAllTemp['text'];
|
|
if( $comment_text != $commentsAllTemp['text'] ) {
|
|
$comment_text .= wfMsg( 'ellipsis' );
|
|
}
|
|
|
|
|
|
$comments .= '<div style="width:90%;">';
|
|
$comments .= '<div style="float:left;width:220px;">';
|
|
$comments .= '<div style="float:left;width:20px;"><img src='. $commentIcon . ' alt="" align="middle" border="0"/></div>';
|
|
$comments .= '<div style="float:left;width:100px;"><span style="font-size: 70%">' . $commentsAllTemp['date'] . '</span> - </div>';
|
|
$comments .= '<div style="float:left;width:100px;"><span class="cod-poster">' . $commentPoster . ': </span></div></div>';
|
|
$comments .= '<div style="float:left;width:60%;">';
|
|
$comments .= '<div style="float:left;"><span class="cod-comment"><a href="' .
|
|
$title2->getFullURL() . '#comment-' . $commentsAllTemp['id'] .
|
|
'" title="' . $title2->getText() . '">' . '<span>' . $comment_text . '</span></a></div>';
|
|
$comments .= '</div><div style="clear:both;"></div></div><hr>';
|
|
|
|
// $comments .= '<div class="cod">';
|
|
// $sign = '';
|
|
// /*if ( $commentsAllTemp['score'] > 0 ) {
|
|
// $sign = '+';
|
|
// } elseif ( $commentsAllTemp['score'] < 0 ) {
|
|
// $sign = '-'; // this *really* shouldn't be happening...
|
|
// }*/
|
|
// $comments .= '<div><span class="cod-score">' . $sign .
|
|
// '</span> <img src='. $commentIcon .
|
|
// '" alt="" align="middle" style="margin-bottom:8px; margin-right: 10px;" border="0"/>
|
|
// <span class="cod-poster"><span style="font-size: 70%">' . $commentsAllTemp['date'] . '</span> - ' . $commentPoster . ': </span>';
|
|
// $comments .= '<span class="cod-comment"><a href="' .
|
|
// $title2->getFullURL() . '#comment-' . $commentsAllTemp['id'] .
|
|
// '" title="' . $title2->getText() . '">' . '<span>' . $comment_text . '</span></div>' .
|
|
// '</a></span>';
|
|
// $comments .= '</div>';
|
|
}
|
|
|
|
$output = '';
|
|
if ( !empty( $comments ) ) {
|
|
$output .= $comments;
|
|
} else {
|
|
$output .= wfMsg( 'comments-no-comments-of-day' );
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|