mirror of
https://github.com/moodle/moodle.git
synced 2025-02-06 08:10:11 +01:00
39fcb981b8
I've left out stuff that didn't seem necessary ... including a lot of the Wiki plugins which were quote large... I'm not sure if this is currently working ... I'm about to try it out.
182 lines
4.3 KiB
PHP
182 lines
4.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
The StaticPages plugin allows you to put some .html or .php files
|
|
into dedicated directories, which then will get available with their
|
|
basename as ewiki pages. The files can be in wiki format (.txt or no
|
|
extension), they can also be in .html format and they may even contain
|
|
php code (.php).
|
|
|
|
Of course it is not possible to provide anything else, than viewing
|
|
those pages (editing is not possible), but it is of course up to you
|
|
to add php code to achieve some interactivity.
|
|
The idea for this plugin was 'borought' from http://geeklog.org/.
|
|
|
|
In your static page .php files you cannot do everything you could
|
|
normally do, there are some restrictions because of the way these static
|
|
pages are processed. You need to use $GLOBALS to access variables other
|
|
than the $ewiki_ ones. To return headers() you must append them to the
|
|
$headers[] or $ewiki_headers[] array.
|
|
|
|
If you define("EWIKI_SPAGES_DIR") then this directory will be read
|
|
initially, but you could also just edit the following list/array of
|
|
directories, or call ewiki_init_spages() yourself.
|
|
*/
|
|
|
|
|
|
#-- specify which dirs to search for page files
|
|
ewiki_init_spages(
|
|
array(
|
|
"spages",
|
|
# "/usr/local/share/wikipages",
|
|
# "C:/Documents/StaticPages/",
|
|
)
|
|
);
|
|
if (defined("EWIKI_SPAGES_DIR")) {
|
|
ewiki_init_spages(EWIKI_SPAGES_DIR);
|
|
}
|
|
|
|
|
|
#-- plugin glue
|
|
# - will be added automatically by _init_spages()
|
|
|
|
|
|
#-- return page
|
|
function ewiki_spage($id, $data, $action) {
|
|
|
|
global $ewiki_spages, $ewiki_plugins;
|
|
|
|
$r = "";
|
|
|
|
#-- filename from $id
|
|
$fn = $ewiki_spages[strtolower($id)];
|
|
|
|
#-- php file
|
|
if (strpos($fn, ".php") || strpos($fn, ".htm")) {
|
|
|
|
#-- start new ob level
|
|
ob_start();
|
|
ob_implicit_flush(0);
|
|
|
|
#-- prepare environment
|
|
global $ewiki_id, $ewiki_title, $ewiki_author, $ewiki_ring,
|
|
$ewiki_t, $ewiki_config, $ewiki_action, $_EWIKI,
|
|
$ewiki_auth_user, $ewiki_headers, $headers;
|
|
$ewiki_headers = array();
|
|
$headers = &$ewiki_headers;
|
|
|
|
#-- execute script
|
|
include($fn);
|
|
|
|
#-- close ob
|
|
$r = ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
#-- add headers
|
|
if ($ewiki_headers) {
|
|
headers(implode("\n", $ewiki_headers));
|
|
}
|
|
}
|
|
|
|
#-- wiki file
|
|
else {
|
|
|
|
$f = fopen($fn, "rb");
|
|
$r = fread($f, 256<<10);
|
|
fclose($f);
|
|
|
|
$r = $ewiki_plugins["render"][0]($r);
|
|
}
|
|
|
|
#-- strip <html> and <head> parts (if any)
|
|
if (($l = strpos(strtolower($r), "<body")) &&
|
|
($w = strpos(strtolower($r), "</body")) )
|
|
{
|
|
$l = strpos($r, ">", $l+1) + 1;
|
|
$w = $w - $l;
|
|
$r = substr($r, $l, $w);
|
|
}
|
|
|
|
#-- return body (means successful handled)
|
|
return($r);
|
|
|
|
}
|
|
|
|
|
|
|
|
#-- return page
|
|
#<old># $ewiki_plugins["handler"][] = "ewiki_handler_spages";
|
|
function ewiki_handler_spages($id, $data, $action) {
|
|
|
|
global $ewiki_spages;
|
|
|
|
#-- compare requested page $id with spages` $id values
|
|
$i0 = strtolower($id);
|
|
foreach ($ewiki_spages as $i1 => $fn) {
|
|
if (strtolower($i1)==$i0) {
|
|
|
|
return(ewiki_spage($id));
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#-- init
|
|
function ewiki_init_spages($dirs, $idprep="") {
|
|
|
|
global $ewiki_spages, $ewiki_plugins;
|
|
|
|
if (!is_array($dirs)) {
|
|
$dirs = array($dirs);
|
|
}
|
|
|
|
#-- go through list of directories
|
|
foreach ($dirs as $dir) {
|
|
|
|
if (empty($dir)) {
|
|
continue;
|
|
}
|
|
|
|
#-- read in one directory
|
|
$dh = opendir($dir);
|
|
while ($fn = readdir($dh)) {
|
|
|
|
#-- skip over . and ..
|
|
if ($fn[0] == ".") { continue; }
|
|
|
|
#-- be recursive
|
|
if ($fn && is_dir("$dir/$fn")) {
|
|
if ($fn != trim($fn, ".")) {
|
|
$fnadd = trim($fn, ".") . ".";
|
|
}
|
|
else {
|
|
$fnadd = "$fn/";
|
|
}
|
|
|
|
ewiki_init_spages(array("$dir/$fn"), "$idprep$fnadd");
|
|
|
|
continue;
|
|
}
|
|
|
|
#-- strip filename extensions
|
|
$id = str_replace(
|
|
array(".html", ".htm", ".php", ".txt", ".wiki", ".src"),
|
|
"",
|
|
basename($fn)
|
|
);
|
|
|
|
#-- register spage file and as page plugin (one for every spage)
|
|
$ewiki_spages[strtolower("$idprep$id")] = "$dir/$fn";
|
|
$ewiki_plugins["page"]["$idprep$id"] = "ewiki_spage";
|
|
|
|
}
|
|
closedir($dh);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|