Extension talk:UserPageViewTracker/Archive

Receiving error: Table doesn't exist
This doesn't seem to be working with the instructions given...

I'm sure I'm making a simple mistake according to the .sql statements I'm supposed to run on my wiki database....

What I really don't understand is the statement:

CREATE VIEW ``user_page_hits` AS .....

...since that table doesn't exist, right?? Anything to steer me to the write course of installation would be great

PS It would be great to reference a screenshot of what the resultant page might be. Thanks --Dmccormick 06:30, 5 November 2007 (UTC)


 * Did you create the table User_Page_Views? It's mentioned in the SQL UserPageViews.sql
 * I'll work on the screenshot - it may be difficult as the one I've got is our internal corporate wiki which may have confidential data. --Kimon 13:35, 5 November 2007 (UTC)


 * I just noticed that the SQL script had an extra quote (`). Try it again --Kimon 13:37, 5 November 2007 (UTC)
 * I got the same error. I needed to make adjustments for the prefix. Now, the function getQueryInfo around line 145 looks like this:

function getQueryInfo { global $wgDBprefix; list ($userpagehits) = wfGetDB(DB_SLAVE)->tableNamesN($wgDBprefix.'user_page_hits'); $conds = array;
 * And again on about line 165, just before return array(

$table .= "last from ".$wgDBprefix."user_page_hits) p) results";
 * The insertion of DB_SLAVE in wfGetDB in the third line of my forst code block follows a fix needed for 1.14.0 given by Fungiblename for the Extension:UserSnoop on the Talk Page --skarred 4:35 PM, 7 March 2009 (UTC)

Windows Install
Will this work with a Windows install? I ran the scripts in phpMyAdmin and added the file but got an error. Can you help out

Detected bug in an extension! Hook wfUserPageViewTracker failed to return a value; should return true to continue hook processing or false to abort.

Backtrace:


 * 0 D:\xampplite\htdocs\mw\includes\Parser.php(386): wfRunHooks('ParserAfterTidy', Array)
 * 1 D:\xampplite\htdocs\mw\includes\Article.php(3017): Parser->parse(' '''MediaWi...', Object(Title), Object(ParserOptions), true, true, 1)
 * 2 D:\xampplite\htdocs\mw\includes\Article.php(831): Article->outputWikiText(' '''MediaWi...')
 * 3 D:\xampplite\htdocs\mw\includes\Wiki.php(383): Article->view
 * 4 D:\xampplite\htdocs\mw\includes\Wiki.php(48): MediaWiki->performAction(Object(OutputPage), Object(Article), Object(Title), Object(User), Object(WebRequest))
 * 5 D:\xampplite\htdocs\mw\index.php(89): MediaWiki->initialize(Object(Title), Object(OutputPage), Object(User), Object(WebRequest))
 * 1) 6 {main}

I also tried it in our CentOS box which is running MW 1.11 and am posting the backtrace from there... Might there be some step we are missing?

Internal error

Detected bug in an extension! Hook wfUserPageViewTracker failed to return a value; should return true to continue hook processing or false to abort.

Backtrace:


 * 1) 0 /var/www/html/tskb/includes/Parser.php(386): wfRunHooks('ParserAfterTidy', Array)
 * 2) 1 /var/www/html/tskb/includes/SkinTemplate.php(1196): Parser->parse('You must have c...', Object(Title), Object(ParserOptions), true)
 * 3) 2 /var/www/html/tskb/includes/templates/Userlogin.php(32): QuickTemplate->msgWiki('loginprompt')
 * 4) 3 /var/www/html/tskb/includes/OutputPage.php(457): UserloginTemplate->execute
 * 5) 4 /var/www/html/tskb/includes/SpecialUserlogin.php(714): OutputPage->addTemplate(Object(UserloginTemplate))
 * 6) 5 /var/www/html/tskb/includes/SpecialUserlogin.php(103): LoginForm->mainLoginForm('')
 * 7) 6 /var/www/html/tskb/includes/SpecialUserlogin.php(17): LoginForm->execute
 * 8) 7 /var/www/html/tskb/includes/SpecialPage.php(653): wfSpecialUserlogin(NULL, Object(SpecialPage))
 * 9) 8 /var/www/html/tskb/includes/SpecialPage.php(459): SpecialPage->execute(NULL)
 * 10) 9 /var/www/html/tskb/includes/Wiki.php(201): SpecialPage::executePath(Object(Title))
 * 11) 10 /var/www/html/tskb/includes/Wiki.php(45): MediaWiki->initializeSpecialCases(Object(Title), Object(OutputPage), Object(WebRequest))
 * 12) 11 /var/www/html/tskb/index.php(89): MediaWiki->initialize(Object(Title), Object(OutputPage), Object(User), Object(WebRequest))
 * 13) 12 {main}

SellFone 14:52, 3 December 2007 (UTC)


 * MW 1.11 requires the functions to return a value, 1.10 does not. Check this out. --Kimon 18:18, 3 December 2007 (UTC)

SQL Error on CREATE VIEW statement
CREATE VIEW statement doesn't exist in MySQL 4, but exists in MySQL 5 and PostgreSQL. Can sqls in extension be fixed to work on MySQL 4.1? Maybe SUBSELECT can help?

Adding category pages also to the stats
Hi, this is working fine for me with MW 1.11. Only one problem-whenever I visit a page that has a category, the stats shows 2 entries-1 for the page and other for the category page. Actually i hvn't visited the category page. how to solve this?

--202.88.239.42 13:07, 20 December 2007 (UTC)

SQL database error on wiki search
I don't need a special page to get the date (I have a perl SQL cron job that generates the reports) but I'm using the first part listed of this extension to add the hits to a table in my mySQL database. This works fine, but when I use the search on my wiki I get this error (with $wgShowExceptionDetails = true;)

Error in numRows: Duplicate entry '20080201211215-12-0' for key 1 (localhost)

Backtrace:


 * 1) 0 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/Database.php(2326): Database->numRows(Resource id #92)
 * 2) 1 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SearchMySQL.php(192): ResultWrapper->numRows
 * 3) 2 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SpecialSearch.php(192): MySQLSearchResultSet->numRows
 * 4) 3 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SpecialSearch.php(108): SpecialSearch->showResults('fgh')
 * 5) 4 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SpecialSearch.php(40): SpecialSearch->goResult('fgh')
 * 6) 5 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SpecialPage.php(653): wfSpecialSearch(NULL, Object(SpecialPage))
 * 7) 6 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/SpecialPage.php(459): SpecialPage->execute(NULL)
 * 8) 7 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/Wiki.php(201): SpecialPage::executePath(Object(Title))
 * 9) 8 /var/www/vhosts/mydomain.com/httpdocs/wiki/includes/Wiki.php(45): MediaWiki->initializeSpecialCases(Object(Title), Object(OutputPage), Object(WebRequest))
 * 10) 9 /var/www/vhosts/mydomain.com/httpdocs/wiki/index.php(89): MediaWiki->initialize(Object(Title), Object(OutputPage), Object(User), Object(WebRequest))
 * 11) 10 {main}

It looks to me like it's trying to record a hit to the search page while the search page accesses the database, making it angry. Any suggestions?


 * Using $wgShowExceptionDetails, I got the same thing as you. I updated LocalSettings.php to display errors, and I got this (I removed the "undefined variable" lines):




 * Seems wfGetDB needs a value, so I changed the line to:




 * That seems to have fixed it.


 * CSchelin 01:07, 9 November 2010 (UTC)

Added localisation to the timestamps
The times were showing in GMT, so I updated this to display the proper time. I've posted the updated formatRow function below -- it changes the following things:


 * adds "global $wgLocalTZoffset", to bring in the offset amount
 * puts the date formatting right after the beginning of the function, for ease of use
 * adds date/time formatting
 * replaces the "last" bit with the newly formatted date/time

 function formatRow ( $row ) { global $wgLocalTZoffset; $dateForm = "Y-m-d H:i:s"; $userPage = Title::makeTitle( NS_USER, $row->user_name ); $name = $this->getSkin->makeLinkObj( $userPage, htmlspecialchars( $userPage->getText ) ); $pageTitle = Title::makeTitle( $row->page_namespace, $row->page_title ); if($row->page_namespace > 0) { $pageFullName = $pageTitle->getNsText.":".htmlspecialchars($pageTitle->getText ); } else { $pageFullName = htmlspecialchars( $pageTitle->getText); }   $page = $this->getSkin->makeLinkObj( $pageTitle, $pageFullName );

$this->rowCount += 1;

$res = ' '; $res .= "$this->rowCount "; $res .= ' '.$name.' '; if ($row->user_real_name) {       $res .= $row->user_real_name.'  '; }   else {       $res .= '  '; }   $date_yr = substr($row->last,0,4); $date_mn = substr($row->last,4,2); $date_dy = substr($row->last,6,2); $date_hr = substr($row->last,8,2); $date_mi = substr($row->last,10,2); $date_sc = substr($row->last,12,2); $tmp = date($dateForm, mktime($date_hr, $date_mi, $date_sc, $date_mn, $date_dy, $date_yr) + ($wgLocalTZoffset * 60)); $res .= "$page "; $res .= "$row->hits "; $res .= "$tmp "; $res .= " \n"; return $res; }

There's likely a better way of doing this, but this worked for me, so I figured I'd share. CSchelin 17:47, 10 November 2010 (UTC)