Comments/znilListAllComments.php

182 righe
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;
}