https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114823

Revision: 114823
Author:   kaldari
Date:     2012-04-10 17:02:14 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
now doing fetch offsets based on timestamp and page id - for the case where 
there are multiple pages per timestamp

Modified Paths:
--------------
    trunk/extensions/PageTriage/api/ApiPageTriageList.php
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
    
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js

Modified: trunk/extensions/PageTriage/api/ApiPageTriageList.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageList.php       2012-04-10 
14:23:23 UTC (rev 114822)
+++ trunk/extensions/PageTriage/api/ApiPageTriageList.php       2012-04-10 
17:02:14 UTC (rev 114823)
@@ -47,10 +47,10 @@
                $options['LIMIT'] = $opts['limit'] + 1;
                
                if ( strtolower( $opts['dir'] ) === 'oldestfirst' ) {
-                       $options['ORDER BY'] = 'ptrp_timestamp ASC';
+                       $options['ORDER BY'] = 'ptrp_timestamp ASC, 
ptrp_page_id ASC';
                        $offsetOperator = ' > ';
                } else {
-                       $options['ORDER BY'] = 'ptrp_timestamp DESC';
+                       $options['ORDER BY'] = 'ptrp_timestamp DESC, 
ptrp_page_id DESC';
                        $offsetOperator = ' < ';
                }
 
@@ -74,9 +74,16 @@
                if ( array_key_exists( 'namespace', $opts ) ) {
                        $conds['page_namespace'] = $opts['namespace'];
                }
-               // Offset the list
+               // Offset the list by timestamp
                if ( array_key_exists( 'offset', $opts ) && is_numeric( 
$opts['offset'] ) && $opts['offset'] > 0 ) {
-                       $conds[] = 'ptrp_timestamp' . $offsetOperator . 
$opts['offset'];
+                       // Offset the list by page ID as well (in case multiple 
pages have the same timestamp)
+                       if ( array_key_exists( 'pageoffset', $opts ) && 
is_numeric( $opts['pageoffset'] ) && $opts['pageoffset'] > 0 ) {
+                               $conds[] = '( ptrp_timestamp' . $offsetOperator 
. $opts['offset'] . ') OR ' .
+                                       '( ptrp_timestamp = ' . $opts['offset'] 
.' AND ' . 
+                                       'ptrp_page_id ' . $offsetOperator . 
$opts['pageoffset'] . ')';
+                       } else {
+                               $conds[] = 'ptrp_timestamp' . $offsetOperator . 
$opts['offset'];
+                       }
                }
 
                $tagConds = self::buildTagQuery( $opts );
@@ -167,6 +174,9 @@
                        'offset' => array(
                                ApiBase::PARAM_TYPE => 'integer',
                        ),
+                       'pageoffset' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
+                       ),
                        'dir' => array(
                                ApiBase::PARAM_TYPE => 'string',
                        ),
@@ -200,6 +210,7 @@
                        'showdeleted' => 'Whether to include "proposed for 
deleted" or not', // default is not to show deleted
                        'limit' => 'The maximum number of results to return',
                        'offset' => 'Timestamp to start from',
+                       'pageoffset' => 'Page ID to start from (requires offset 
param to be passed as well)',
                        'dir' => 'The direction the list should be sorted in - 
oldestfirst or newestfirst',
                        'namespace' => 'What namespace to pull pages from',
                        'no_category' => 'Whether to show only pages with no 
category',

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-04-10 14:23:23 UTC (rev 114822)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listControlNav.js
   2012-04-10 17:02:14 UTC (rev 114823)
@@ -69,12 +69,14 @@
                        $( '#mwe-pt-sort-newest' ).click( function() {
                                _this.model.setParam( 'dir', 'newestfirst' );
                                _this.model.setParam( 'offset', 0 );
+                               _this.model.setParam( 'pageoffset', 0 );
                                _this.model.fetch();
                                return false;
                        } );
                        $( '#mwe-pt-sort-oldest' ).click( function() {
                                _this.model.setParam( 'dir', 'oldestfirst' );
                                _this.model.setParam( 'offset', 0 );
+                               _this.model.setParam( 'pageoffset', 0 );
                                _this.model.fetch();
                                return false;
                        } );

Modified: 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
===================================================================
--- 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
 2012-04-10 14:23:23 UTC (rev 114822)
+++ 
trunk/extensions/PageTriage/modules/ext.pageTriage.views/ext.pageTriage.listView.js
 2012-04-10 17:02:14 UTC (rev 114823)
@@ -67,6 +67,7 @@
                        } else {
                                articles.apiParams.offset = 0;
                        }
+                       articles.apiParams.pageoffset = 
lastArticle[0].attributes.pageid;
                        articles.fetch( {
                                add: true,
                                success: function() {
@@ -92,6 +93,7 @@
                        } else {
                                articles.apiParams.offset = 0;
                        }
+                       articles.apiParams.pageoffset = 
lastArticle[0].attributes.pageid;
                        articles.fetch( {
                                add: true,
                                success: function() {


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to