mb_regex_encoding(SOURCE_ENCODING);
$readings = get_readings($pages);
}
-
$list = $matches = array();
-
- // Shrink URI for read
- if ($cmd == 'read') {
- $href = $script . '?';
- } else {
- $href = $script . '?cmd=' . $cmd . '&page=';
- }
uasort($pages, 'strnatcmp');
foreach($pages as $file=>$page) {
- $r_page = pagename_urlencode($page);
$s_page = htmlsc($page, ENT_QUOTES);
- $str = ' <li><a href="' . $href . $r_page . '">' .
+ // Shrink URI for read
+ if ($cmd == 'read') {
+ $href = get_page_uri($page);
+ } else {
+ $href = $script . '?cmd=' . $cmd . '&page=' . rawurlencode($page);
+ }
+ $str = ' <li><a href="' . $href . '">' .
$s_page . '</a> ' . get_pg_passage($page);
if ($withfilename) {
$s_file = htmlsc($file);
*/
function get_page_uri($page, $uri_type = PKWK_URI_RELATIVE)
{
- global $defaultpage;
+ global $defaultpage, $pkwk_page_uri_handler;
if ($page === $defaultpage) {
return get_base_uri($uri_type);
}
- return get_base_uri($uri_type) . '?' . pagename_urlencode($page);
+ return get_base_uri($uri_type) . $pkwk_page_uri_handler->get_page_uri_fragment($page);
}
// Get absolute-URI of this script
return $utf8u;
}
+class PukiWikiStandardPageURIHandler {
+ function get_page_uri_fragment($page) {
+ return '?' . pagename_urlencode($page);
+ }
+
+ function get_page_from_query_string($query_string) {
+ $arg = $query_string;
+ $arg = preg_replace("#^([^&]*)&.*$#", "$1", $arg);
+ if ($arg == '') {
+ return null;
+ }
+ if (strpos($arg, '=') !== false) {
+ // Found '/?key=value'
+ return null;
+ }
+ $arg = urldecode($arg);
+ $arg = strip_bracket($arg);
+ $arg = input_filter($arg);
+ return $arg;
+ }
+}
+
//// Compat ////
// is_a -- Returns TRUE if the object is of this class or has this class as one of its parents
if (! isset($vars['cmd']) && ! isset($vars['plugin'])) {
$get['cmd'] = $post['cmd'] = $vars['cmd'] = 'read';
-
- $arg = preg_replace("#^([^&]*)&.*$#", "$1", $arg);
- if ($arg == '') $arg = $defaultpage;
- if (strpos($arg, '=') !== false) $arg = $defaultpage; // Found '/?key=value'
- $arg = urldecode($arg);
- $arg = strip_bracket($arg);
- $arg = input_filter($arg);
+ $arg = $pkwk_page_uri_handler->get_page_from_query_string($arg);
+ if (!$arg) {
+ $arg = $defaultpage;
+ }
$get['page'] = $post['page'] = $vars['page'] = $arg;
}
$logging_updates_log_dir = '/var/log/pukiwiki';
/////////////////////////////////////////////////
+// Page-URI mapping handler
+$pkwk_page_uri_handler = new PukiWikiStandardPageURIHandler();
+
+/////////////////////////////////////////////////
// User-Agent settings
//
// If you want to ignore embedded browsers for rich-content-wikisite,