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

📄 ewiki.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
function ewiki_page_info($id, &$data, $action) {   global $ewiki_plugins, $ewiki_config, $ewiki_links;   global $CFG, $course;  // MOODLE HACK   $o = ewiki_make_title($id, ewiki_t("INFOABOUTPAGE")." '{$id}'", 2, $action,"", "_MAY_SPLIT=1");    $flagnames = array(      "TEXT", "BIN", "DISABLED", "HTML", "READONLY", "WRITEABLE",      "APPENDONLY", "SYSTEM",   );   $show = array(      "version", "author", "userid", "created",      "lastmodified", "refs",      "flags", "meta", "content"   );   #-- versions to show   $v_start = $data["version"];   if ( ($uu=@$_REQUEST[EWIKI_UP_PAGENUM]) && ($uu<=$v_start) ) {      $v_start = $uu;   }   $v_end = $v_start - $ewiki_config["list_limit"] + 1;   if ( ($uu=@$_REQUEST[EWIKI_UP_PAGEEND]) && ($uu<=$v_start) ) {      $v_end = $uu;   }   $v_end = max($v_end, 1);   #-- go   # the very ($first) entry is rendered more verbosely than the others   for ($v=$v_start,$first=1; ($v>=$v_end); $v--,$first=0) {      $current = ewiki_database("GET", array("id"=>$id, "version"=>$v));      if (!strlen(trim($current["id"])) || !$current["version"] || !strlen(trim($current["content"]))) {         continue;      }      $o .= '<table  class="version-info" cellpadding="2" cellspacing="1">' . "\n";      #-- additional info-actions      $commands = '';      foreach ($ewiki_config["action_links"]["info"] as $thisaction=>$title)      if (@$ewiki_plugins["action"][$thisaction] || @$ewiki_plugins["action_always"][$thisaction]) {   ##### BEGIN MOODLE ADDITION #####         if ($commands) {             $commands .= '&nbsp;&nbsp;';         }         $commands .= '<a href="' .           ewiki_script($thisaction, $id, array("version"=>$current["version"])) .           '">' . get_string($title,"wiki") . '</a>';   ##### END MOODLE ADDITION #####      }      #-- print page database entry      foreach($show as $i) {         $value = @$current[$i];         #-- show database {fields} differently         if ($i == "meta") {            continue;  // MOODLE DOESN'T USE IT            $str = "";            if ($first && $value) { foreach ($value as $n=>$d) {               $str .= s("$n: $d") . "<br />\n";            } }            $value = $str;         }         elseif ($value >= UNIX_MILLENNIUM) {    #-- {lastmodified}, {created}            #### BEGIN MOODLE CHANGE            $value=userdate($value);            #$value = strftime("%c", $value);            #### END MOODLE CHANGE         }         elseif ($i == "content") {            continue;  // MOODLE DOESN'T CARE            $value = strlen(trim($value)) . " bytes";            $i = "content size";         }         elseif ($first && ($i == "refs") && !(EWIKI_PROTECTED_MODE && (EWIKI_PROTECTED_MODE_HIDING>=2))) {            $a = explode("\n", trim($value));            $ewiki_links = ewiki_database("FIND", $a);            ewiki_merge_links($ewiki_links);            foreach ($a as $n=>$link) {               $a[$n] = ewiki_link_regex_callback(array("$link"), "force_noimg");            }            $value = trim(implode(", ", $a));            if (!$value) {                continue;            }         }         elseif (strpos($value, "\n") !== false) {       #-- also for {refs}            $value = str_replace("\n", ", ", trim($value));            if (!$value) {                continue;            }         }         elseif ($i == "version") {            $value = '<a href="' .               ewiki_script("", $id, array("version"=>$value)) . '">' .               $value . '</a> '."($commands)";         }         elseif ($i == "flags") {            continue;  // MOODLE DOESN'T USE IT            $fstr = "";            for ($n = 0; $n < 32; $n++) {              if ($value & (1 << $n)) {                 if (! ($s=$flagnames[$n])) { $s = "UU$n"; }                 $fstr .= $s . " ";              }            }            $value = $fstr;         }         elseif ($i == "author") {            continue;            $ewiki_links=1;            $value = preg_replace_callback("/((\w+:)?([".EWIKI_CHARS_U."]+[".EWIKI_CHARS_L."]+){2,}[\w\d]*)/", "ewiki_link_regex_callback", $value);         }         elseif ($i == "userid") {             $i = 'author';             if ($user = get_record('user', 'id', $value)) {                 if (!isset($course->id)) {                     $course->id = 1;                 }                 $picture = print_user_picture($user->id, $course->id, $user->picture, false, true, true);                 $value = $picture." <a href=\"$CFG->wwwroot/user/view.php?id=$user->id&amp;course=$course->id\">".fullname($user)."</a>";             } else {                 continue;                 //$value = @$current['author'];             }         }   ##### BEGIN MOODLE ADDITION #####         $o .= '<tr class="page-'.$i.'"><td style="vertical-align:top;text-align:right;white-space: nowrap;"><b>' .ewiki_t($i). ':</b></td>' .               '<td>' . $value . "</td></tr>\n";   ##### END MOODLE ADDITION #####      }      $o .= "</table><br /><br />\n";   }   #-- page result split   if ($v >= 1) {      $o .= "<br />\n".get_string('showversions','wiki').' '.ewiki_chunked_page($action, $id, -1, $v, 1, 0, 0) . "\n <br />";   }   return($o);}function ewiki_chunked_page($action, $id, $dir=-1, $start=10, $end=1, $limit=0, $overlap=0.25, $collapse_last=0.67) {   global $ewiki_config;   if (empty($limit)) {      $limit = $ewiki_config["list_limit"];   }   if ($overlap < 1) {      $overlap = (int) ($limit * $overlap);   }   $p = "";   $n = $start;   while ($n) {      $n -= $dir * $overlap;      $e = $n + $dir * ($limit + $overlap) + 1;      if ($dir<0) {         $e = max(1, $e);         if ($e <= $collapse_last * $limit) {            $e = 1;         }      }      else {         $e = min($end, $e);         if ($e >= $collapse_last * $limit) {            $e = $end;         }      }      $o .= ($o?" &middot; ":"")         . '<a href="'.ewiki_script($action, $id, array(EWIKI_UP_PAGENUM=>$n, EWIKI_UP_PAGEEND=>$e))         . '">'. "$n-$e" . '</a>';      if (($n=$e-1) < $end) {         $n = false;      }   }   return('<span class="chunked-result">'. $o .'</span>');}function ewiki_page_edit($id, $data, $action) {   global $ewiki_links, $ewiki_author, $ewiki_plugins, $ewiki_ring, $ewiki_errmsg;   $hidden_postdata = array();   #-- previous version come back   if (@$data["forced_version"]) {      $current = ewiki_database("GET", array("id"=>$id));      $data["version"] = $current["version"];      unset($current);      unset($_REQUEST["content"]);      unset($_REQUEST["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 (isset($_REQUEST["preview"])) {      $o .= $ewiki_plugins["edit_preview"][0]($data);   }   #-- save   if (isset($_REQUEST["save"])) {         #-- normalize to UNIX newlines         $_REQUEST["content"] = str_replace("\015\012", "\012", $_REQUEST["content"]);         $_REQUEST["content"] = str_replace("\015", "\012", $_REQUEST["content"]);         #-- check for concurrent version saving         $error = 0;         if ((@$data["version"] >= 1) && ($data["version"] != @$_REQUEST["version"]) || (@$_REQUEST["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" => $_REQUEST["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);}function ewiki_data_update(&$data, $author="") {   global $USER, $ewiki_links;   #-- add backlinks entry   ewiki_scan_wikiwords($data["content"], $ewiki_links, "_STRIP_EMAIL=1");   $data["refs"] = "\n\n".implode("\n", array_keys($ewiki_links))."\n\n";   $data["lastmodified"] = time();   $data["author"] = ewiki_author($author);   if (isset($USER->id)) {       $data["userid"] = $USER->id;   }}#-- edit <textarea>function ewiki_page_edit_form(&$id, &$data, &$hidden_postdata) {   global $ewiki_plugins, $ewiki_config, $moodle_format;      $o='';         #-- previously edited, or db fetched content   if (@$_REQUEST["content"] || @$_REQUEST["version"]) {

⌨️ 快捷键说明

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