You're probably doing something like
global $wgOut;
$oldOut = $wgOut;
$wgOut->disable();
// do API call
$wgOut = $oldOut;
If that doesn't work, try to replace the second line with $oldOut =
clone $wgOut;
Aha! That did the trick. I take it 'clone' does a deep copy?
I did some experimenting and you don't need to save $wgRequest, but you do
need to save $wgTitle. $wgTitle doesn't need to be cloned, but $wgOut does.
Once you clone $wgOut, you don't need to disable it. (But it probably can't
hurt, maybe it might make things more efficient?)
Perhaps this could be added to the Edit API as a temporary workaround until
the 'FIXME' part gets fixed?
At any rate it's working now, so thanks very much for your help! Again, here
is the working code in full:
$o = clone $wgOut;
//$wgOut->disable(); // not necessary with clone
$t = $wgTitle;
$req = new FauxRequest(array(
'action' => 'edit',
'bot' => true,
'token' => $p['edittoken'],
'title' => $p['title'],
'summary' => $this->strSummary,
'text' => $newContent,
'basetimestamp' => $p['starttimestamp']
), true);
$processor = new ApiMain($req, true);
$processor->execute();
$wgTitle = $t;
$wgOut = $o;
Cheers,
Adam.