'[pagename]', 'text' => '', // Text to append 'before' => '', // Add before (ignores after if defined) 'after' => '', // Add after line beginning with this ); } function run($dbi, $argstr, &$request, $basepage) { $args = $this->getArgs($argstr, $request); $pagename = $args['page']; if (empty($args['text'])) if ($request->isPost() and $pagename != _("AppendText")) return HTML($request->redirect(WikiURL($pagename, false, 'absurl'), false)); else return ''; $page = $dbi->getPage($pagename); $message = HTML(); if (!$page->exists()) { // create it? $message->pushContent(sprintf(_("Page could not be updated. %s doesn't exist!\n", $pagename))); return $message; } $current = $page->getCurrentRevision(); $oldtext = $current->getPackedContent(); $text = $args['text']; if (!empty($args['before'])) { $before = preg_quote($args['before']); if (preg_match("/\n${before}/", $oldtext)) { $newtext = preg_replace("/(\n${before})/", "\n${text}\\1", $oldtext); } else { $message->pushContent(sprintf(_("%s not found. Appending at the end.\n", $args['before']))); $newtext = $oldtext . "\n" . $text; } } elseif (!empty($args['after'])) { $after = preg_quote($args['after']); if (preg_match("/\n${after}/", $oldtext)) { $newtext = preg_replace("/(\n${after})/", "\\1\n${text}", $oldtext); } else { $message->pushContent(sprintf(_("%s not found. Appending at the end.\n", $args['after']))); $newtext = $oldtext . "\n" . $text; } } else { // Append at the end $newtext = $oldtext . "\n" . $text; } require_once("lib/loadsave.php"); $meta = $current->_data; $meta['summary'] = sprintf(_("AppendText to %s"), $pagename); if ($page->save($newtext, $current->getVersion() + 1, $meta)) { $message->pushContent(_("Page successfully updated."), HTML::br()); $message->pushContent(_("Go to ")); $message->pushContent(HTML::em(WikiLink($pagename))); } return $message; } }; // $Log: not supported by cvs2svn $ // Revision 1.0 2004/11/23 09:43:35 epasgia // * Initial version. // // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?>