diff --git a/NumberOfComments.body.php b/NumberOfComments.body.php new file mode 100644 index 0000000..2953425 --- /dev/null +++ b/NumberOfComments.body.php @@ -0,0 +1,54 @@ +setFunctionHook( 'NoC', 'NumberOfComments::getNumberOfCommentsParser', SFH_NO_HASH ); + + return true; + } + + static function getNumberOfCommentsMagic( &$parser, &$cache, &$magicWordId, &$ret ) { + $dbr = wfGetDB( DB_SLAVE ); + + $id = $parser->getTitle()->getArticleID(); + $ret = NumberOfComments::getNumberOfComments( $id ); + + return true; + } + + static function getNumberOfCommentsParser( $parser, $page = 'default', $param2 = '', $param3 = '' ) { + + $page = Title::newFromText( $page ); + + if ( $page instanceof Title ) { + $id = $page->getArticleID(); + } else { + $id = $parser->getTitle()->getArticleID(); + } + + return NumberOfComments::getNumberOfComments( $id ); + } + + static function getNumberOfComments( $pageid ) { + $dbr = wfGetDB( DB_SLAVE ); + + $res = $dbr->selectField( + 'Comments', + 'COUNT(*)', + array( 'Comment_Page_ID' => $pageid ) + ); + + if( !$res ){ + return 0; + } else { + return intval( $res ); + } + } +} \ No newline at end of file diff --git a/NumberOfComments.php b/NumberOfComments.php index 8b627b3..98c5cab 100644 --- a/NumberOfComments.php +++ b/NumberOfComments.php @@ -1,50 +1,23 @@ __FILE__, 'name' => 'NumberOfComments', 'author' => 'UltrasonicNXT/Adam Carter', 'url' => 'https://github.com/Brickimedia/NumberOfComments', 'description-msg' => 'numberofcomments-desc', 'version' => 1.0, ); -$wgExtensionMessagesFiles['NumberOfComments'] = dirname(__FILE__) . '/NumberOfComments.i18n.php'; -$wgExtensionMessagesFiles['NumberOfCommentsMagic'] = dirname(__FILE__) . '/NumberOfComments.i18n.magic.php'; +$wgExtensionMessagesFiles['NumberOfComments'] = __DIR__ . '/NumberOfComments.i18n.php'; +$wgExtensionMessagesFiles['NumberOfCommentsMagic'] = __DIR__ . '/NumberOfComments.i18n.magic.php'; -$wgHooks['ParserGetVariableValueSwitch'][] = 'getNumberOfComments'; -$wgHooks['MagicWordwgVariableIDs'][] = 'declareNumberOfComments'; +$wgHooks['ParserGetVariableValueSwitch'][] = 'NumberOfComments::getNumberOfCommentsMagic'; +$wgHooks['MagicWordwgVariableIDs'][] = 'NumberOfComments::declareNumberOfCommentsMagic'; +$wgHooks['ParserFirstCallInit'][] = 'NumberOfComments::setupNumberOfCommentsParser'; -function getNumberOfComments( &$parser, &$cache, &$magicWordId, &$ret ) { - $dbr = wfGetDB( DB_SLAVE ); - - $id = $parser->getTitle()->getArticleID(); - - $res = $dbr->selectField( - 'Comments', - 'COUNT(*)', - array( 'Comment_Page_ID' => $id ) - ); - - $t = $dbr->selectSQLText( - 'Comments', - 'COUNT(*)', - array( 'Comment_Page_ID' => $id ) - ); - - if( !$res ){ - $ret = 0; - } else { - $ret = intval( $res ); - } - - return true; -} +$wgAutoLoadClasses['NumberOfComments'] = __DIR__ . '/NumberOfComments.body.php'; -function declareNumberOfComments( &$customVariableIds ) { - $customVariableIds[] = 'NoC'; - - return true; -} \ No newline at end of file +require_once( __DIR__. '/NumberOfComments.body.php' ); \ No newline at end of file