
catrope at svn
Nov 20, 2009, 4:38 AM
Post #1 of 1
(74 views)
Permalink
|
|
SVN: [59283] trunk/extensions/UsabilityInitiative/ClickTracking
|
|
http://www.mediawiki.org/wiki/Special:Code/MediaWiki/59283 Revision: 59283 Author: catrope Date: 2009-11-20 12:38:26 +0000 (Fri, 20 Nov 2009) Log Message: ----------- * ClickTracking: Add index on action_time * Make table definitions SQLite-compatible * Add a few FIXMEs * Use tabs instead of spaces; this extension desperately needs stylize.php Modified Paths: -------------- trunk/extensions/UsabilityInitiative/ClickTracking/ApiClickTracking.php trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.hooks.php trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql trunk/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql trunk/extensions/UsabilityInitiative/ClickTracking/SpecialClickTracking.php Added Paths: ----------- trunk/extensions/UsabilityInitiative/ClickTracking/patch-action_time.sql Modified: trunk/extensions/UsabilityInitiative/ClickTracking/ApiClickTracking.php =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/ApiClickTracking.php 2009-11-20 10:15:30 UTC (rev 59282) +++ trunk/extensions/UsabilityInitiative/ClickTracking/ApiClickTracking.php 2009-11-20 12:38:26 UTC (rev 59283) @@ -21,6 +21,7 @@ $session_id = $params['token']; // Event ID lookup table + // FIXME: API should already have urldecode()d $event_id = ClickTrackingHooks::getEventIDFromName( urldecode( $eventid_to_lookup ) ); $is_logged_in = $wgUser->isLoggedIn(); Modified: trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.hooks.php =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.hooks.php 2009-11-20 10:15:30 UTC (rev 59282) +++ trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.hooks.php 2009-11-20 12:38:26 UTC (rev 59283) @@ -15,7 +15,7 @@ /* 3 tables for click tracking */ public static function schema() { - global $wgExtNewTables; + global $wgExtNewTables, $wgExtNewIndexes; $wgExtNewTables[] = array( 'click_tracking', @@ -26,6 +26,11 @@ 'click_tracking_events', dirname( __FILE__ ) . '/ClickTrackingEvents.sql' ); + + $wgExtNewIndexes[] = array( + 'click_tracking', 'click_tracking_action_time', + dirname( __FILE__ ) . '/patch-action_time.sql' + ); return true; } Modified: trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql 2009-11-20 10:15:30 UTC (rev 59282) +++ trunk/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql 2009-11-20 12:38:26 UTC (rev 59283) @@ -29,4 +29,6 @@ -- event ID (not unique) event_id integer NOT NULL -) /*$wgDBTableOptions*/; \ No newline at end of file +) /*$wgDBTableOptions*/; + +CREATE INDEX /*i*/click_tracking_action_time ON /*_*/click_tracking (action_time); Modified: trunk/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql 2009-11-20 10:15:30 UTC (rev 59282) +++ trunk/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql 2009-11-20 12:38:26 UTC (rev 59283) @@ -9,8 +9,5 @@ event_name VARBINARY(255) unique, -- day - id INTEGER AUTO_INCREMENT, - - -- keyed on event, sql makes you use the id as a primary key - PRIMARY KEY(id) + id INTEGER AUTO_INCREMENT PRIMARY KEY ) /*$wgDBTableOptions*/; Modified: trunk/extensions/UsabilityInitiative/ClickTracking/SpecialClickTracking.php =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/SpecialClickTracking.php 2009-11-20 10:15:30 UTC (rev 59282) +++ trunk/extensions/UsabilityInitiative/ClickTracking/SpecialClickTracking.php 2009-11-20 12:38:26 UTC (rev 59283) @@ -539,16 +539,19 @@ $time_constraint = $time_constraint_statement; $dbr = wfGetDB( DB_SLAVE ); + + // NOTE: This query is a performance nightmare + // Permission to run it is restricted by default $dbresult = $dbr->select( - array( 'click_tracking', 'click_tracking_events' ), - array( 'count(event_id) as totalevtid', 'event_id', 'event_name' ), - $time_constraint, - __METHOD__, - array( 'GROUP BY' => 'event_id', 'ORDER BY' => 'totalevtid DESC' ), - array( 'click_tracking_events' => - array( 'LEFT JOIN', 'event_id=click_tracking_events.id' ) - ) - ); + array( 'click_tracking', 'click_tracking_events' ), + array( 'count(event_id) as totalevtid', 'event_id', 'event_name' ), + $time_constraint, + __METHOD__, + array( 'GROUP BY' => 'event_id', 'ORDER BY' => 'totalevtid DESC' ), + array( 'click_tracking_events' => + array( 'LEFT JOIN', 'event_id=click_tracking_events.id' ) // FIXME: breaks when table prefixes are used + ) + ); /* $sql = "select count(event_id) as totalevtid, event_id,event_name from click_tracking" . @@ -568,12 +571,12 @@ $dbr = wfGetDB( DB_SLAVE ); $conds = array_merge( - self::getTimeConstraints($minTime,$maxTime), - SpecialClickTracking::buildUserDefConstraints($userDef), - array( 'event_id' => $event_id ) - ); - return wfGetDB( DB_SLAVE )->selectField( - 'click_tracking', 'count(*)', $conds, __METHOD__ ); + self::getTimeConstraints($minTime,$maxTime), + SpecialClickTracking::buildUserDefConstraints($userDef), + array( 'event_id' => $event_id ) + ); + return wfGetDB( DB_SLAVE )->selectField( + 'click_tracking', 'count(*)', $conds, __METHOD__ ); } Added: trunk/extensions/UsabilityInitiative/ClickTracking/patch-action_time.sql =================================================================== --- trunk/extensions/UsabilityInitiative/ClickTracking/patch-action_time.sql (rev 0) +++ trunk/extensions/UsabilityInitiative/ClickTracking/patch-action_time.sql 2009-11-20 12:38:26 UTC (rev 59283) @@ -0,0 +1,6 @@ +-- +-- Add index on click_tracking.action_time +-- + +CREATE INDEX /*i*/click_tracking_action_time ON /*_*/click_tracking (action_time); + Property changes on: trunk/extensions/UsabilityInitiative/ClickTracking/patch-action_time.sql ___________________________________________________________________ Added: svn:eol-style + native _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS [at] lists https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs
|