public function executeDiff() { $this->setPage(); // $this->revision is revision2 $this->forward403Unless($this->canView); $this->forward404If($this->page->isNew()); $this->forward404If($this->revision->isNew()); // Source revision $c = new Criteria(); $c->add(nahoWikiRevisionPeer::PAGE_ID, $this->page->getId()); $c->add(nahoWikiRevisionPeer::REVISION, $this->getRequestParameter('oldRevision')); $this->revision1 = nahoWikiRevisionPeer::doSelectOne($c); $this->forward404Unless($this->revision1); // Dest revision $this->revision2 = $this->revision; // Make diff $lines1 = explode("\n", $this->revision1->getContent()); $lines2 = explode("\n", $this->revision2->getContent()); $diff = new Text_Diff('auto', array($lines1, $lines2)); switch ($this->getRequestParameter('mode', 'inline')) { case 'unified': $renderer = new Text_Diff_Renderer_unified(); break; case 'context': $renderer = new Text_Diff_Renderer_context(); break; case 'inline': default: $renderer = new Text_Diff_Renderer_inline(); break; } $this->diff = $renderer->render($diff); // Direct download if ($this->getRequestParameter('raw')) { $this->getResponse()->setContentType('text/plain'); $this->renderText($this->diff); return sfView::NONE; } return sfView::SUCCESS; }