Page MenuHomePhabricator

ApiZeroPortal spams logs with warnings if there are sufficient Zero configurations
Closed, InvalidPublic


ApiZeroPortal makes an internal API query (eew) to prop=revisions, passing it rvprop=content|timestamp and rvlimit=max. Since content is being requested, this makes the module apply lower limits to the query (50 without apihighlimits, 500 with apihighlimits).

It uses generator=allpages&gaplimit=max, which is going to feed the revisions module 500 (without apihighlimits) or 5000 (with apihighlimits) pages at a time.

This means that up to 450 or 4500 of the pages in the result will lack revisions output, since the lowered limit of the revisions module is exceeded. But ApiZeroPortal blindly assumes that every page in the result will have a revisions node, leading to PHP warnings for "Undefined index: revisions" and "Invalid argument supplied for foreach()" for every page node that didn't get a revisions node.

Possible fixes (besides not making internal API queries, which would probably be for the best but I doubt you'll go for):

  • Check whether isset( $page['revisions'] ) before trying to iterate over it.
  • Use gaplimit=50 and rvlimit=50, instead of max. You could detect if the user being used has apihighlimits and increase them both to 500 if you want.