function savePage() { $request =& $this->request; if ($this->isUnchanged()) { // Allow admin lock/unlock even if // no text changes were made. if ($this->updateLock()) { $dbi = $request->getDbh(); $dbi->touch(); } // Save failed. No changes made. $this->_redirectToBrowsePage(); // user will probably not see the rest of this... include_once 'lib/display.php'; // force browse of current version: $request->setArg('version', false); displayPage($request, 'nochanges'); return true; } if (!$this->user->isAdmin() and $this->isSpam()) { $this->_isSpam = true; return false; /* // Save failed. No changes made. $this->_redirectToBrowsePage(); // user will probably not see the rest of this... include_once('lib/display.php'); // force browse of current version: $request->setArg('version', false); displayPage($request, 'nochanges'); return true; */ } $page =& $this->page; // Include any meta-data from original page version which // has not been explicitly updated. // (Except don't propagate pgsrc_version --- moot for now, // because at present it never gets into the db...) $meta = $this->selected->getMetaData(); unset($meta['pgsrc_version']); $meta = array_merge($meta, $this->meta); // Save new revision $this->_content = $this->getContent(); $newrevision = $page->save($this->_content, $this->version == -1 ? -1 : $this->_currentVersion + 1, $meta); if (!isa($newrevision, 'WikiDB_PageRevision')) { // Save failed. (Concurrent updates). return false; } else { // Save succeded. We store cross references (if there are). $reference_manager =& ReferenceManager::instance(); $reference_manager->extractCrossRef($this->_content, $page->getName(), ReferenceManager::REFERENCE_NATURE_WIKIPAGE, GROUP_ID); // Save succeded. We raise an event. $new = $this->version + 1; $difflink = WikiURL($page->getName(), array('action' => 'diff'), true); $difflink .= "&versions%5b%5d=" . $this->version . "&versions%5b%5d=" . $new; $eM =& EventManager::instance(); $uM =& UserManager::instance(); $user =& $uM->getCurrentUser(); $eM->processEvent("wiki_page_updated", array('group_id' => GROUP_ID, 'wiki_page' => $page->getName(), 'diff_link' => $difflink, 'user' => $user, 'version' => $this->version)); } // New contents successfully saved... $this->updateLock(); // Clean out archived versions of this page. include_once 'lib/ArchiveCleaner.php'; $cleaner = new ArchiveCleaner($GLOBALS['ExpireParams']); $cleaner->cleanPageRevisions($page); /* generate notification emails done in WikiDB::save to catch all direct calls (admin plugins) */ // look at the errorstack $errors = $GLOBALS['ErrorManager']->_postponed_errors; $warnings = $GLOBALS['ErrorManager']->getPostponedErrorsAsHTML(); $GLOBALS['ErrorManager']->_postponed_errors = $errors; $dbi = $request->getDbh(); $dbi->touch(); global $WikiTheme; if (empty($warnings->_content) && !$WikiTheme->getImageURL('signature')) { // Do redirect to browse page if no signature has // been defined. In this case, the user will most // likely not see the rest of the HTML we generate // (below). $this->_redirectToBrowsePage(); } // Force browse of current page version. $request->setArg('version', false); //$request->setArg('action', false); $template = Template('savepage', $this->tokens); $template->replace('CONTENT', $newrevision->getTransformedContent()); if (!empty($warnings->_content)) { $template->replace('WARNINGS', $warnings); } $pagelink = WikiLink($page); GeneratePage($template, fmt("Saved: %s", $pagelink), $newrevision); return true; }
function savePage() { $request =& $this->request; if ($this->isUnchanged()) { // Allow admin lock/unlock even if // no text changes were made. if ($this->updateLock()) { $dbi = $request->getDbh(); $dbi->touch(); } // Save failed. No changes made. $this->_redirectToBrowsePage(); // user will probably not see the rest of this... require_once 'lib/display.php'; // force browse of current version: $request->setArg('action', false); $request->setArg('version', false); displayPage($request, 'nochanges'); return true; } if (!$this->user->isAdmin() and $this->isSpam()) { $this->_isSpam = true; return false; /* // Save failed. No changes made. $this->_redirectToBrowsePage(); // user will probably not see the rest of this... require_once('lib/display.php'); // force browse of current version: $request->setArg('version', false); displayPage($request, 'nochanges'); return true; */ } $page =& $this->page; // Include any meta-data from original page version which // has not been explicitly updated. // (Except don't propagate pgsrc_version --- moot for now, // because at present it never gets into the db...) $meta = $this->selected->getMetaData(); unset($meta['pgsrc_version']); $meta = array_merge($meta, $this->meta); // Save new revision $this->_content = $this->getContent(); $newrevision = $page->save($this->_content, $this->version == -1 ? -1 : $this->_currentVersion + 1, $meta); if (!isa($newrevision, 'WikiDB_PageRevision')) { // Save failed. (Concurrent updates). return false; } // New contents successfully saved... $this->updateLock(); // Clean out archived versions of this page. require_once 'lib/ArchiveCleaner.php'; $cleaner = new ArchiveCleaner($GLOBALS['ExpireParams']); $cleaner->cleanPageRevisions($page); /* generate notification emails done in WikiDB::save to catch all direct calls (admin plugins) */ // look at the errorstack $errors = $GLOBALS['ErrorManager']->_postponed_errors; $warnings = $GLOBALS['ErrorManager']->getPostponedErrorsAsHTML(); $GLOBALS['ErrorManager']->_postponed_errors = $errors; $dbi = $request->getDbh(); $dbi->touch(); global $WikiTheme; if (empty($warnings->_content) && !$WikiTheme->getImageURL('signature')) { // Do redirect to browse page if no signature has // been defined. In this case, the user will most // likely not see the rest of the HTML we generate // (below). $request->setArg('action', false); $this->_redirectToBrowsePage(); } // Force browse of current page version. $request->setArg('version', false); // testme: does preview and more need action=edit? $request->setArg('action', false); $template = Template('savepage', $this->tokens); $template->replace('CONTENT', $newrevision->getTransformedContent()); if (!empty($warnings->_content)) { $template->replace('WARNINGS', $warnings); unset($GLOBALS['ErrorManager']->_postponed_errors); } $pagelink = WikiLink($page); GeneratePage($template, fmt("Saved: %s", $pagelink), $newrevision); return true; }