⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ewiki.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
}#-------------------------------------------------------------------- util ---/*  retrieves "$id/$action" string from URL / QueryString / PathInfo,    change this in conjunction with ewiki_script() to customize your URLs    further whenever desired*/function ewiki_id() {   ($id = @$_REQUEST["id"]) or   ($id = @$_REQUEST["name"]) or   ($id = @$_REQUEST["page"]) or   ($id = @$_REQUEST["file"]) or   (EWIKI_USE_PATH_INFO) and ($id = ltrim(@$_SERVER["PATH_INFO"], "/")) or   (!isset($_REQUEST["id"])) and ($id = trim(strtok($_SERVER["QUERY_STRING"], "&")));   if (!strlen($id) || ($id=="id=")) {      $id = EWIKI_PAGE_INDEX;   }   (EWIKI_URLDECODE) && ($id = urldecode($id));   return($id);}/*  replaces EWIKI_SCRIPT, works more sophisticated, and    bypasses various design flaws    - if only the first parameter is used (old style), it can contain      a complete "action/WikiPage" - but this is ambigutious    - else $asid is the action, and $id contains the WikiPageName    - $ewiki_config["script"] will now be used in favour of the constant    - needs more work on _BINARY, should be a separate function*/## MOODLE-CHANGE: $asid="", Knows the devil why....function ewiki_script($asid="", $id=false, $params="", $bin=0, $html=1, $script=NULL) {   global $ewiki_config, $ewiki_plugins;         #-- get base script url from config vars   if (empty($script)) {      $script = &$ewiki_config[!$bin?"script":"script_binary"];   }   #-- separate $action and $id for old style requests   if ($id === false) {      if (strpos($asid, EWIKI_ACTION_SEP_CHAR) !== false) {         $asid = strtok($asid, EWIKI_ACTION_SEP_CHAR);         $id = strtok("\000");      }      else {         $id = $asid;         $asid = "";      }   }   #-- prepare params   if (is_array($params)) {      $uu = $params;      $params = "";      if ($uu) foreach ($uu as $k=>$v) {         $params .= (strlen($params)?"&":"") . rawurlencode($k) . "=" . rawurlencode($v);      }   }   #-- action= parameter   if (EWIKI_USE_ACTION_PARAM >= 2) {      $params = "action=$asid" . (strlen($params)?"&":"") . $params;      $asid = "";   }   #-- workaround slashes in $id   if (empty($asid) && (strpos($id, EWIKI_ACTION_SEP_CHAR) !== false) && !$bin) {      $asid = "view";   }   /*paranoia*/ $asid = trim($asid, EWIKI_ACTION_SEP_CHAR);   #-- make url   if (EWIKI_URLENCODE) {      $id = urlencode($id);      $asid = urlencode($asid);   }   else {      # only urlencode &, %, ? for example   }   $url = $script;   if ($asid) {      $id = $asid . EWIKI_ACTION_SEP_CHAR . $id;  #= "action/PageName"   }   if (strpos($url, "%s") !== false) {      $url = str_replace("%s", $id, $url);   }   else {      $url .= $id;   }   #-- add url params   if (strlen($params)) {      $url .= (strpos($url,"?")!==false ? "&":"?") . $params;   }
   #-- fin   if ($html) {      //Don't replace & if it's part of encoded character (bug 2209)      $url = preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/","&amp;", $url);   } else {      //This is going to be used in some header or meta redirect, so It cannot use &amp; (bug 2620)      $url = preg_replace('/&amp;/', '&', $url);    }   return($url);}/*  this ewiki_script() wrapper is used to generate URLs to binary    content in the ewiki database*/function ewiki_script_binary($asid, $id=false, $params=array(), $upload=0) {   $upload |= is_string($params) && strlen($params) || count($params);   #-- generate URL directly to the plainly saved data file,   #   see also plugins/binary_store   if (defined("EWIKI_DB_STORE_URL") && !$upload) {      $url = EWIKI_DB_STORE_URL . rawurlencode($id);   }   #-- else get standard URL (thru ewiki.php) from ewiki_script()   else {      $url = ewiki_script($asid, $id, $params, "_BINARY=1");   }   return($url);}/*  this function returns the absolute ewiki_script url, if EWIKI_SCRIPT_URL    is set, else it guesses the value*/function ewiki_script_url() {   global $ewiki_action, $ewiki_id, $ewiki_config;   $scr_template = $ewiki_config["script"];   $scr_current = ewiki_script($ewiki_action, $ewiki_id);   $req_uri = $_SERVER["REQUEST_URI"];   if ($url = $ewiki_config["script_url"]) {      return($url);   }   elseif (strpos($req_uri, $scr_current) !== false) {      $url = str_replace($req_uri, $scr_current, $scr_template);   }   elseif (strpos($req_uri, "?") && (strpos($scr_template, "?") !== false)) {      $url = substr($req_uri, 0, strpos($req_uri, "?"))           . substr($scr_template, strpos($scr_template, "?"));   }   elseif (strpos($req_uri, $sn = $_SERVER["SCRIPT_NAME"])) {      $url = $sn . "?id=";   }   else {      return(NULL);   #-- could not guess it   }    #$url = "http://" . $_SERVER["SERVER_NAME"] . $url;   return($url);}#------------------------------------------------------------ page plugins ---function ewiki_page_links($id, &$data, $action) {   $o = ewiki_make_title($id, ewiki_t("PAGESLINKINGTO", array("title"=>$id)), 1, $action, "", "_MAY_SPLIT=1");   if ($pages = ewiki_get_backlinks($id)) {      $o .= ewiki_list_pages($pages);   } else {      $o .= ewiki_t("This page isn't linked from anywhere else.");   }   return($o);}function ewiki_get_backlinks($id) {   $result = ewiki_database("SEARCH", array("refs" => $id));   $pages = array();   while ($row = $result->get(0, 0x0020)) {      if ( strpos($row["refs"], "\n$id\n") !== false) {         $pages[] = $row["id"];      }   }   return($pages);}function ewiki_get_links($id) {   if ($data = ewiki_database("GET", array("id"=>$id))) {      $refs = explode("\n", trim($data["refs"]));      $r = array();      foreach (ewiki_database("FIND", $refs) as $id=>$exists) {         if ($exists) {            $r[] = $id;         }      }      return($r);   }}function ewiki_list_pages($pages=array(), $limit=EWIKI_LIST_LIMIT,                          $value_as_title=0, $pf_list=false){   global $ewiki_plugins;   $o = "";   $is_num = !empty($pages[0]);   $lines = array();   $n = 0;   foreach ($pages as $id=>$add_text) {      $title = $id;      $params = "";      if (is_array($add_text)) {         list($id, $params, $title, $add_text) = $add_text;      }      elseif ($is_num) {         $id = $title = $add_text;         $add_text = "";      }      elseif ($value_as_title) {         $title = $add_text;         $add_text = "";      }      $lines[] = '<a href="' . ewiki_script("", $id, $params) . '">' . s($title) . '</a> ' . $add_text;      if (($limit > 0)  &&  ($n++ >= $limit)) {         break;      }   }   if ($pf_a = @$ewiki_plugins["list_transform"])   foreach ($pf_a as $pf_transform) {      $pf_transform($lines);   }   if (($pf_list) || ($pf_list = @$ewiki_plugins["list_pages"][0])) {      $o = $pf_list($lines);   }   elseif($lines) {      $o = "&middot; " . implode("<br />\n&middot; ", $lines) . "<br />\n";   }   return($o);}function ewiki_page_ordered_list($orderby="created", $asc=0, $print, $title) {   $o = ewiki_make_title("", $title, 2, ".list", "links", 0);   $sorted = array();   $result = ewiki_database("GETALL", array($orderby));   while ($row = $result->get()) {      $row = ewiki_database("GET", array(         "id" => $row["id"],         ($asc >= 0 ? "version" : "uu") => 1  // version 1 is most accurate for {hits}      ));      #-- text page?      if (EWIKI_DB_F_TEXT == ($row["flags"] & EWIKI_DB_F_TYPE)) {         #-- viewing allowed?         if (!EWIKI_PROTECTED_MODE || !EWIKI_PROTECTED_MODE_HIDING || ewiki_auth($row["id"], $row, "view")) {            $sorted[$row["id"]] = $row[$orderby];         }      }   }   if ($asc != 0) { arsort($sorted); }   else { asort($sorted); }   foreach ($sorted as $name => $value) {       if (empty($value)) { $value = "0"; }   ##### BEGIN MOODLE ADDITION #####      #$sorted[$name] = strftime(str_replace('%n', $value, $print), $value);            if($print=="LASTCHANGED") {        $value=strftime("%c",$value);      }      $sorted[$name] = get_string(strtolower($print),"wiki",$value);   ##### BEGIN MOODLE ADDITION #####   }   $o .= ewiki_list_pages($sorted);      return($o);}function ewiki_page_newest($id=0, $data=0) {   return( ewiki_page_ordered_list("created", 1, "LASTCHANGED", ewiki_t("NEWESTPAGES")) );}function ewiki_page_updates($id=0, $data=0) {   return( ewiki_page_ordered_list("lastmodified", -1, "LASTCHANGED", EWIKI_PAGE_UPDATES) );}function ewiki_page_hits($id=0, $data=0) {   ##### BEGIN MOODLE ADDITION #####   return( ewiki_page_ordered_list("hits", 1, "hits", EWIKI_PAGE_HITS) );}function ewiki_page_versions($id=0, $data=0) {   return( ewiki_page_ordered_list("version", -1, "changes", EWIKI_PAGE_VERSIONS) );   ##### END MOODLE ADDITION #####}function ewiki_page_search($id, &$data, $action) {   global $CFG;   $o = ewiki_make_title($id, $id, 2, $action);   if (! ($q = @$_REQUEST["q"])) {      $o .= '<form action="' . ewiki_script("", $id) . '" method="post">';      $o .= '<fieldset class="invisiblefieldset">';      $o .= '<input name="q" size="30" /><br /><br />';      $o .= '<input type="submit" value="'.$id.'" />';      $o .= '</fieldset>';      $o .= '</form>';   }   else {      $found = array();      if ($CFG->unicodedb) {          $q = preg_replace('/\s*[\W]+\s*/u', ' ', $q);      } else {          $q = preg_replace('/\s*[^\w]+\s*/', ' ', $q);      }      foreach (explode(" ", $q) as $search) {         if (empty($search)) { continue; }         $result = ewiki_database("SEARCH", array("content" => $search));         while ($row = $result->get()) {            #-- show this entry in page listings?            if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($row["id"], $row, "view")) {               continue;            }            $found[] = $row["id"];         }      }      $o .= ewiki_list_pages($found);   }    return($o);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -