Hi Roan,
Would it somehow be possible to build an intermediate solution? E.g.
would
it be feasible to build a dedicated action=query&prop=allchanges&start=...&end=... that just solved that problem?
For revisions, possibly. It wouldn't include log events, though.
I've had a go a modifying the code for allpages.
Basically if this is made conditional: $this->addWhereFld('page_namespace', $params['namespace']);
then all pages can be searched (irrespective of namespace). Has this got a massive impact on efficiency? The maximum number of entries returned is limited anyway, and it shouldn't really matter which namespace they come from. (Of course some things like apfrom no longer work as expected, but for my usecase, it would be ok to be disabled.)
You then introduce new parameters: startid, endid, start, end (for start/end of revid, or start/end of last touched), and amend the query: if (isset ($params['start'])) { $this->addWhere('page_touched>=' . $params['start']); }
Finally you need something like:
$this->addOption('ORDER BY', 'page_touched'); and $this->setContinueEnumParameter('start', $this->keyToTitle($row->page_latest));
With those changes (and a few conditionals) 'allpages' can produce a list of pages that were touched between two dates, or a set of pages that have new revisions between two revision numbers. Not sure yet whether last touched will work as well as the revision timestamp, but at least from the revision number you could easily update an offline set of wiki pages.
Do you think this looks good so far? Should I post the code somewhere so that people can have a look?
Cheers, Bjoern