Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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);
    }
}
Exemple #4
0
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;
}
Exemple #5
0
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
}
Exemple #6
0
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);
}
Exemple #7
0
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;
}
Exemple #8
0
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;
}
Exemple #9
0
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;
}
Exemple #10
0
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;
}
Exemple #11
0
    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) {
Exemple #12
0
 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;
 }
Exemple #13
0
/*

  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);
Exemple #14
0
function ewiki_page_alias($id, $data, $action)
{
    global $ewiki_plugins;
    return ewiki_page($ewiki_plugins["alias"][$id]);
}