mirror of
https://bitbucket.org/vertlach/voteny.git
synced 2024-05-23 14:58:07 +03:00
Add {{NUMBEROFVOTESPAGE}}
With an optional parameter for the page to check the number of votes for. Partially copied from the {{NUMBEROFVOTES}} and Comments' {{NUMBEROFCOMMENTSPAGE}} Change-Id: Ia19f63fe5894a407ad5826720199b9e24d141951
This commit is contained in:
parent
8126bf0ce3
commit
2eb2ad2057
1
Vote.php
1
Vote.php
|
@ -59,6 +59,7 @@ $wgHooks['ParserFirstCallInit'][] = 'VoteHooks::registerParserHook';
|
||||||
$wgHooks['RenameUserSQL'][] = 'VoteHooks::onUserRename';
|
$wgHooks['RenameUserSQL'][] = 'VoteHooks::onUserRename';
|
||||||
$wgHooks['ParserGetVariableValueSwitch'][] = 'VoteHooks::assignValueToMagicWord';
|
$wgHooks['ParserGetVariableValueSwitch'][] = 'VoteHooks::assignValueToMagicWord';
|
||||||
$wgHooks['MagicWordwgVariableIDs'][] = 'VoteHooks::registerVariableId';
|
$wgHooks['MagicWordwgVariableIDs'][] = 'VoteHooks::registerVariableId';
|
||||||
|
$wgHooks['ParserFirstCallInit'][] = 'VoteHooks::setupNumberOfVotesPageParser';
|
||||||
$wgHooks['LoadExtensionSchemaUpdates'][] = 'VoteHooks::addTable';
|
$wgHooks['LoadExtensionSchemaUpdates'][] = 'VoteHooks::addTable';
|
||||||
|
|
||||||
// ResourceLoader support for MediaWiki 1.17+
|
// ResourceLoader support for MediaWiki 1.17+
|
||||||
|
|
|
@ -126,18 +126,78 @@ class VoteHooks {
|
||||||
// ...and return the value to the user
|
// ...and return the value to the user
|
||||||
$ret = $voteCount;
|
$ret = $voteCount;
|
||||||
}
|
}
|
||||||
|
} elseif ( $magicWordId == 'NUMBEROFVOTESPAGE' ) {
|
||||||
|
$ret = VoteHooks::getNumberOfVotesPage( $parser->getTitle() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the magic word ID for {{NUMBEROFVOTES}}.
|
* Main function to get the number of votes for a specific page
|
||||||
|
* @param Title $title: page to get votes for
|
||||||
|
* @return integer: number of votes for the given page
|
||||||
|
*/
|
||||||
|
public static function getNumberOfVotesPage( Title $title ) {
|
||||||
|
global $wgMemc;
|
||||||
|
$id = $title->getArticleID();
|
||||||
|
|
||||||
|
$key = wfMemcKey( 'vote', 'magic-word-page', $id );
|
||||||
|
$data = $wgMemc->get( $key );
|
||||||
|
|
||||||
|
if ( $data ) {
|
||||||
|
return $data;
|
||||||
|
} else {
|
||||||
|
$dbr = wfGetDB( DB_SLAVE );
|
||||||
|
|
||||||
|
$voteCount = (int)$dbr->selectField(
|
||||||
|
'Vote',
|
||||||
|
'COUNT(*) AS count',
|
||||||
|
array( 'vote_page_id' => $id ),
|
||||||
|
__METHOD__
|
||||||
|
);
|
||||||
|
|
||||||
|
$wgMemc->set( $key, $voteCount, 3600 );
|
||||||
|
|
||||||
|
return $voteCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook for parser function {{NUMBEROFVOTESPAGE:<page>}}
|
||||||
|
* @param Parser $parser
|
||||||
|
* @param string $pagename
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
static function getNumberOfVotesPageParser( $parser, $pagename ) {
|
||||||
|
$title = Title::newFromText( $pagename );
|
||||||
|
|
||||||
|
if ( !$title instanceof Title ) {
|
||||||
|
$title = $parser->getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
return VoteHooks::getNumberOfVotesPage( $title );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the magic word ID for {{NUMBEROFVOTES}} and {{NUMBEROFVOTESPAGE}}
|
||||||
*
|
*
|
||||||
* @param $variableIds Array: array of pre-existing variable IDs
|
* @param $variableIds Array: array of pre-existing variable IDs
|
||||||
* @return Boolean: true
|
* @return Boolean: true
|
||||||
*/
|
*/
|
||||||
public static function registerVariableId( &$variableIds ) {
|
public static function registerVariableId( &$variableIds ) {
|
||||||
$variableIds[] = 'NUMBEROFVOTES';
|
$variableIds[] = 'NUMBEROFVOTES';
|
||||||
|
$variableIds[] = 'NUMBEROFVOTESPAGE';
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook to setup parser function {{NUMBEROFVOTESPAGE:<page>}}
|
||||||
|
* @param Parser $parser
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
static function setupNumberOfVotesPageParser( &$parser ) {
|
||||||
|
$parser->setFunctionHook( 'NUMBEROFVOTESPAGE', 'VoteHooks::getNumberOfVotesPageParser', SFH_NO_HASH );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,4 +7,5 @@ $magicWords = array();
|
||||||
|
|
||||||
$magicWords['en'] = array(
|
$magicWords['en'] = array(
|
||||||
'NUMBEROFVOTES' => array( 0, 'NUMBEROFVOTES' ),
|
'NUMBEROFVOTES' => array( 0, 'NUMBEROFVOTES' ),
|
||||||
|
'NUMBEROFVOTESPAGE' => array( 0, 'NUMBEROFVOTESPAGE' ),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue