function ewiki_addpage($id, &$data, $version) { $o = ewiki_make_title($id, $id, 2); #-- output page creation dialog if (empty($_REQUEST["new_id"])) { $o .= ewiki_t('<form action="' . ewiki_script("", $id) . '" method="POST" enctype="multipart/formdata"> ' . '_{name of the new page} <input type="text" name="new_id" size="26" value="">' . '<br />' . '<input type="submit" value="_{create}">' . '<br /><br />' . '<input type="checkbox" name="add_link_from" value="1" checked="checked">' . ' _{link it from} ' . '<input type="text" name="link_from" size="20" value="_{AddedPages}">' . '</form>'); } else { $new_id = trim($_REQUEST["new_id"]); #-- add a link to new page if ($_REQUEST["add_link_from"] && ($from = $_REQUEST["link_from"])) { $row = ewiki_db::GET($from); if ($row && $row["version"]) { if (($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_TEXT) { $row["version"]++; $row["content"] .= "\n* [{$new_id}]"; ewiki_scan_wikiwords($row["content"], $row["refs"], "_STRIP_EMAIL=1"); $row["refs"] = "\n\n" . implode("\n", array_keys($row["refs"])) . "\n\n"; } else { $row = false; } } else { $row = array("id" => $from, "version" => 1, "flags" => EWIKI_DB_F_TEXT, "created" => time(), "lastmodified" => time(), "hits" => 0, "meta" => "", "content" => "\n* [{$new_id}]", "refs" => "\n\n{$new_id}\n\n"); } if ($row) { ewiki_db::WRITE($row); } } #-- call edit <form> $o = ewiki_page($new_id); } return $o; }
function ewiki_announcements($id, $data, $action) { global $ewiki_plugins, $ewiki_config; if (!isset($GLOBALS['ewiki_auth_user'])) { return; } $notifyDates = ewiki_get_uservar("NotifyDates", FALSE); if (!$notifyDates) { $notifyDates = $ewiki_config["DefaultNotify"]; } else { $notifyDates = unserialize($notifyDates); } foreach ($notifyDates as $pageName => $date) { $data = ewiki_db::GET($pageName); if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($pageName, $data, "view")) { continue; } if ($data['lastmodified'] > $date) { $dispDate = $data['lastmodified']; $dispPage = $pageName; break; } } if (!isset($dispPage)) { return; } $notifyDates[$dispPage] = $dispDate; ewiki_set_uservar("NotifyDates", serialize($notifyDates)); $o = ewiki_page('view/' . $dispPage); //page_final plugins have been run, unset them unset($ewiki_plugins["page_final"]); return $o; }
function ewiki_handler_plural(&$id, &$data, &$action) { #-- current page not found, but an alternative exists in DB if (!$data["version"] && ($new_id = ewiki_plural_alternative($id))) { #-- restart ewiki return ewiki_page($id = $new_id); } }
function ewiki_view_post_parent($id, $data, $action) { global $ewiki_plugins; if (!preg_match(EWIKI_POSTID_PARSE_REGEX, $id, $matches) || $action != 'view') { return; } //Authentication for the new page is handled within this call. $o = ewiki_page('view/' . $matches[1]); //page_final plugins have been run, unset them unset($ewiki_plugins["page_final"]); return $o; }
function ewiki_handler_jump(&$id, &$data, &$action) { global $ewiki_config; static $redirect_count = 5; $jump_markup = array("jump", "goto", "redirect", "location"); #-- we only care about "view" action if ($action != "view") { return; } #-- escape from loop if (isset($_REQUEST[EWIKI_UP_REDIRECT_COUNT])) { $redirect_count = $_REQUEST[EWIKI_UP_REDIRECT_COUNT]; } if ($redirect_count-- <= 0) { return ewiki_t("REDIRECTION_LOOP", array("id" => $id)); } #-- search for [jump:...] if ($links = explode("\n", trim($data["refs"]))) { foreach ($links as $link) { if (strlen($link) && strpos($link, ":") && in_array(strtolower(strtok($link, ":")), $jump_markup) && ($dest = trim(strtok("\n")))) { #-- URL $url = ""; if (strpos($dest, "://")) { $url = $dest; } else { $url = ewiki_interwiki($dest, $uu, $uu2); } #-- Location: if (EWIKI_JUMP_HTTP && EWIKI_HTTP_HEADERS && !headers_sent()) { #-- simple PageLink if (empty($url)) { $url = ewiki_script("", $dest, array(EWIKI_UP_REDIRECT_COUNT => $redirect_count), 0, 0, ewiki_script_url()); $url .= defined("SID") ? EWIKI_ADDPARAMDELIM . SID : ""; } header("Location: {$url}"); die; } elseif ($url) { return ""; # the rendering kernel will just show up the [jump:]! # (without the jump: of course) } else { #-- we'll just restart ewiki $data = array(); $id = $dest; return ewiki_page("view/" . $id); } } } } #-search }
function ewiki_page_random(&$id, &$data, $action) { global $ewiki_plugins; $result = ewiki_db::GETALL(array("flags")); while ($row = $result->get()) { if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($row["id"], $uu, "view")) { continue; } if (($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_TEXT) { $pages[] = $row["id"]; } } $pages = array_merge($pages, $ewiki_plugins["page"]); $n = rand(0, count($pages)); $id = $pages[$n]; return ewiki_page($id); }
function ewiki_action_image_append($id, $data, $action) { #-- invalid $id value if (empty($data) || !$data["version"] || EWIKI_DB_F_TEXT != ($data["flags"] & EWIKI_DB_F_TYPE)) { $o = ewiki_t("CANNOTCHANGEPAGE"); } elseif ($fa = $_FILES["imagefile"]) { #-- guess HTTP meta data $meta = array("X-Content-Type" => $fa["type"]); if ($s = $fa["name"]) { $meta["Content-Location"] = $s; $p = 0 or $p = strrpos($s, "/") and $p++ or $p = strrpos($s, '\\') and $p++; $meta["Content-Disposition"] = 'inline; filename="' . urlencode(substr($s, $p)) . '"'; } #-- proceed an image (reject binary, resize if too large) $result = ewiki_binary_save_image($fa["tmp_name"], "", "RETURN", $meta, 0, 1); #-- database rejected file if (!$result) { $o = ewiki_t("BIN_NOIMG"); } else { $loop = 3; while ($loop--) { $data = ewiki_db::GET($id); $data["version"]++; $data["content"] = rtrim($data["content"], "\n") . "\n\n" . "[\"AppendedPicture\"{$result}]\n\n\n"; $result = ewiki_db::WRITE($data); if ($result) { break; } } if ($result) { $o = ewiki_page("view/{$id}"); ewiki_log("image appended to '{$id}'"); } else { $o .= ewiki_t("NO_IMAGEAPPEND"); } } } else { $o .= ewiki_t("BIN_NOIMG"); #"You did not select an image, or something went really wrong during tansmission. Plase go back to the previous page."; } return $o; }
function ewiki_mpi_insert($action = "html", $args, &$iii, &$s) { global $ewiki_config; #-- save environment $save = array("id", "config", "title", "ring", "author"); unset($prevG); $prevG = array(); foreach ($save as $name) { $prevG["{$name}"] = $GLOBALS["ewiki_{$name}"]; } #-- use any params as _config settings $args = $args + $ewiki_config["mpi_insert"]; foreach ($args as $set => $val) { if ($set != "_") { $ewiki_config[$set] = $val; } } #-- render requested page, through sub-request $o = array(); $o[] = ewiki_page($args["id"]); for ($n = 1; $n <= 10; $n++) { if ($id = $args[$n]) { $o[] = ewiki_page($id); } } #-- reset env foreach ($save as $name) { $GLOBALS["ewiki_{$name}"] = $prevG[$name]; } #-- mk table around output $on = count($o); if ($args["table"] || $on >= 2) { $o = implode("</td>\n<td valign=\"top\">", $o); $o = '<table border="' . $args["table"] . '" cellpadding="5" cellspacing="5">' . '<tr><td valign="top">' . $o . '</td></tr></table>'; } else { $o = implode("\n<br /><!-- cut-here --><br />\n", $o); } $o = '<div class="mpi-insert">' . $o . '</div>'; return $o; }
function ewiki_page_delegator($id, $data, $action) { global $ewiki_plugins, $ewiki_config; #-- handlers $handler_o = ""; if ($pf_a = @$ewiki_plugins["delegator"][$id]) { ksort($pf_a); foreach ($pf_a as $pf) { if ($handler_o = $pf($id, $data, $action)) { break; } } } if (isset($handler_o)) { return $handler_o; } //Authentication for the default page is handled inside ewiki_page // this may result in an access denied page. $o = ewiki_page('view/' . $ewiki_config["delegator_default"][$id]); //page_final plugins have been run, unset them unset($ewiki_plugins["page_final"]); return $o; }
function ewiki_page_edit($id, $data, $action) { global $ewiki_links, $ewiki_author, $ewiki_plugins, $ewiki_ring, $ewiki_errmsg; $content = optional_param('content', ''); $version = optional_param('version', ''); $preview = optional_param('preview', false); $save = optional_param('save', false); $hidden_postdata = array(); #-- previous version come back if (@$data["forced_version"]) { $current = ewiki_database("GET", array("id" => $id)); $data["version"] = $current["version"]; unset($current); /// Is this done for somewhere else? $_REQUEST['content'] = $_POST['content'] = $_GET['content'] = null; $_REQUEST['version'] = $_POST['version'] = $_GET['version'] = null; $content = ''; $version = ''; } #-- edit hacks if ($pf_a = @$ewiki_plugins["edit_hook"]) { foreach ($pf_a as $pf) { if ($output = $pf($id, $data, $hidden_postdata)) { return $output; } } } #-- permission checks if (isset($ewiki_ring)) { $ring = $ewiki_ring; } else { $ring = 3; } $flags = @$data["flags"]; if (!($flags & EWIKI_DB_F_WRITEABLE)) { #-- perform auth $edit_ring = EWIKI_PROTECTED_MODE >= 2 ? 2 : NULL; if (EWIKI_PROTECTED_MODE && !ewiki_auth($id, $data, $action, $edit_ring, "FORCE")) { return $ewiki_errmsg; } #-- flag checking if ($flags & EWIKI_DB_F_READONLY and $ring >= 2) { return ewiki_t("CANNOTCHANGEPAGE"); } if ($flags and ($flags & EWIKI_DB_F_TYPE) != EWIKI_DB_F_TEXT and $ring >= 1) { return ewiki_t("CANNOTCHANGEPAGE"); } } #-- "Edit Me" $o = ewiki_make_title($id, ewiki_t("EDITTHISPAGE") . " '{$id}'", 2, $action, "", "_MAY_SPLIT=1"); #-- preview if ($preview) { $o .= $ewiki_plugins["edit_preview"][0]($data); } #-- save if ($save) { #-- normalize to UNIX newlines $content = str_replace("\r\n", "\n", $content); $content = str_replace("\r", "\n", $content); #-- check for concurrent version saving $error = 0; if (@$data["version"] >= 1 && $data["version"] != $version || $version < 1) { $pf = $ewiki_plugins["edit_patch"][0]; if (!$pf || !$pf($id, $data)) { $error = 1; $o .= ewiki_t("ERRVERSIONSAVE") . "<br /><br />"; } } if (!$error) { #-- new pages` flags if (!($set_flags = @$data["flags"] & EWIKI_DB_F_COPYMASK)) { $set_flags = 1; } if (EWIKI_ALLOW_HTML) { $set_flags |= EWIKI_DB_F_HTML; } #-- mk db entry $save = array("id" => $id, "version" => @$data["version"] + 1, "flags" => $set_flags, "content" => $content, "created" => ($uu = @$data["created"]) ? $uu : time(), "meta" => ($uu = @$data["meta"]) ? $uu : "", "hits" => ($uu = @$data["hits"]) ? $uu : "0"); ewiki_data_update($save); #-- edit storage hooks if ($pf_a = @$ewiki_plugins["edit_save"]) { foreach ($pf_a as $pf) { $pf($save, $data); } } #-- save if (!$save || !ewiki_database("WRITE", $save)) { $o .= $ewiki_errmsg ? $ewiki_errmsg : ewiki_t("ERRORSAVING"); } else { #-- prevent double saving, when ewiki_page() is re-called $_REQUEST = $_GET = $_POST = array(); $o = ewiki_t("THANKSFORCONTRIBUTION") . "<br /><br />"; $o .= ewiki_page($id); if (EWIKI_EDIT_REDIRECT) { $url = ewiki_script("", $id, "thankyou=1", 0, 0, EWIKI_HTTP_HEADERS ? ewiki_script_url() : 0); if (EWIKI_HTTP_HEADERS && !headers_sent()) { header("Status: 303 Redirect for GET"); header("Location: {$url}"); #header("URI: $url"); #header("Refresh: 0; URL=$url"); } else { $o .= '<meta http-equiv="Refresh" content="0; URL=' . s($url) . '">'; } } } } //@REWORK // header("Reload-Location: " . ewiki_script("", $id, "", 0, 0, ewiki_script_url()) ); } else { #-- Edit <form> $o .= ewiki_page_edit_form($id, $data, $hidden_postdata); #-- additional forms if ($pf_a = $ewiki_plugins["edit_form_final"]) { foreach ($pf_a as $pf) { $pf($o, $id, $data, $action); } } } return $o; }
if ($wiki->htmlmode == 1) { # Safe HTML include_once $CFG->dirroot . "/mod/wiki/ewiki/plugins/moodle/moodle_rescue_html.php"; $moodle_format = FORMAT_HTML; } if ($wiki->htmlmode == 2) { # HTML Only $moodle_format = FORMAT_HTML; $ewiki_use_editor = 1; $ewiki_config["htmlentities"] = array(); // HTML is allowed $ewiki_config["wiki_link_regex"] = " [!~]?(\n \\#?\\[[^<>\\[\\]\n]+\\] |\n \\^[-" . EWIKI_CHARS_U . EWIKI_CHARS_L . "]{3,} |\n \\b([\\w]{3,}:)*([" . EWIKI_CHARS_U . "]+[" . EWIKI_CHARS_L . "]+){2,}\\#?[\\w\\d]* |\n \\w[-_.+\\w]+@(\\w[-_\\w]+[.])+\\w{2,} ) x"; } global $ewiki_author, $USER; $ewiki_author = fullname($USER); $content = ewiki_page($page); $content2 = ''; ### RESTORE ID from Moodle $_REQUEST["id"] = $moodleID; $id = $moodleID; /// ################# EWIKI Part ########################### } else { $content = ''; $content2 = '<div class="boxaligncenter">' . get_string('nowikicreated', 'wiki') . '</div>'; } # Group wiki, ...: No page and no ewiki_title if (!isset($ewiki_title)) { $ewiki_title = ""; } /// Moodle Log if ($editsave != NULL) {
public function getWiki($page, $title = true) { global $ewiki_db, $ewiki_links, $ewiki_plugins, $ewiki_ring, $ewiki_t, $ewiki_errmsg, $ewiki_data, $ewiki_title, $ewiki_id, $ewiki_action, $ewiki_config, $ewiki_author; // Some settings define("EWIKI_NAME", "BeWelcome Wiki"); define('EWIKI_SCRIPT', 'wiki/'); define("EWIKI_SPLIT_TITLE", 1); define("EWIKI_SCRIPT_URL", PVars::getObj("env")->baseuri . 'wiki/'); # absolute URL define("EWIKI_SCRIPT_BINARY", 0); define("EWIKI_PROTECTED_MODE", 1); define("EWIKI_RESCUE_HTML", 1); define("EWIKI_URLENCODE", 0); define("EWIKI_URLDECODE", 0); define("EWIKI_ALLOW_HTML", 1); define("EWIKI_DESC", "Document and share content about hospitality exchange and travel on bewelcome.org"); # site description define("EWIKI_COPY", "PrimarilyPublicDomain"); # site copyright define("EWIKI_CATEGORY", "Hospitality Exchange"); # site subject define("EWIKI_LOGO_URL", "http://www.bewelcome.org/images/logo_index_top.png"); if (!$title) { define("EWIKI_PRINT_TITLE", 0); } # <h2>WikiPageName</h2> on top // Authentification require_once "erfurtwiki/plugins/auth/auth_perm_ring.php"; $ewiki_perm_rings['rss'] = 3; $model = new MembersModel(); $member = $model->getLoggedInMember(); $Right = new MOD_right(); if ($member && $Right->hasRight('Admin', 'Wiki')) { $ewiki_author = $member->Username; define("EWIKI_AUTH_DEFAULT_RING", 0); // 0 = admin } elseif ($member) { $ewiki_author = $member->Username; define("EWIKI_AUTH_DEFAULT_RING", 2); // 2 = edit allowed } else { $ewiki_author = 'guest'; define("EWIKI_AUTH_DEFAULT_RING", 3); // 3 = read/view/browse-only } $this->defineMarkup($ewiki_config); // More plugins require_once "erfurtwiki/plugins/aview/toc.php"; // Table of contents $ewiki_plugins["view_final"][] = "ewiki_add_title"; require_once "erfurtwiki/plugins/markup/mediawiki.php"; // load our own mediawiki plugin require_once "erfurtwiki/plugins/aview/fpage_copyright.php"; // Copyleft Info require_once "erfurtwiki/plugins/markup/bbcode.php"; // BBcode plugin require_once "erfurtwiki/plugins/markup/smilies.php"; // smilies ;) require_once "erfurtwiki/plugins/markup/rescuehtml.php"; // safe html tags ;) require_once "erfurtwiki/plugins/admin/control.php"; // load some plugins require_once "erfurtwiki/plugins/action/diff.php"; // stupid diff ;) require_once "erfurtwiki/plugins/action/info_qdiff.php"; // quick diff require_once "erfurtwiki/plugins/linking/titlefix.php"; // quick diff // require_once("erfurtwiki/plugins/markup/htmltable.php"); // quick diff // require_once("erfurtwiki/plugins/action/verdiff.php"); // version diff - not needed right now!? // RSS support require_once "erfurtwiki/plugins/lib/feed.php"; // load our own mediawiki plugin require_once "erfurtwiki/plugins/action/rss.php"; // load our own mediawiki plugin // Static pages require_once "erfurtwiki/plugins/page/wikinews.php"; // load some plugins require_once "erfurtwiki/plugins/page/recentchanges.php"; // load some plugins require_once "erfurtwiki/plugins/page/powersearch.php"; // load some plugins require_once "erfurtwiki/plugins/page/wantedpages.php"; // load some plugins require_once "erfurtwiki/plugins/page/orphanedpages.php"; // load some plugins require_once "erfurtwiki/plugins/page/recentchanges.php"; // load some plugins // require_once("erfurtwiki/plugins/aview/control2.php"); // quick diff require_once 'erfurtwiki/ewiki.php'; $ewiki_config["smilies"] = array(":)" => "emoticon_happy.png", ";)" => "emoticon_grin.png", ":D" => "emoticon_smile.png"); $wiki = ewiki_page($page); echo $wiki; }
/* ErfurtWiki - an embedable, fast and user-friendly wiki engine ���������� This is Public Domain (no license, no warranty); but feel free to redistribute it under GPL or anything else you like. http://erfurtwiki.sourceforge.net/ Mario Salzer <mario*erphesfurt�de> and many others(tm) Use it from inside yoursite.php like that: <html><body>... <?php include "ewiki.php"; echo ewiki_page(); ?> */ #-- you could also establish a mysql connection in here, of course: // mysql_connect(":/var/run/mysqld/mysqld.sock", "user", "pw") // and mysql_query("USE mydatabase"); #-------------------------------------------------------- config --- #-- I'm sorry for that, but all the @ annoy me error_reporting(0x0000377 & error_reporting()); # error_reporting(E_ALL^E_NOTICE);
function ewiki_page_alias($id, $data, $action) { global $ewiki_plugins; return ewiki_page($ewiki_plugins["alias"][$id]); }