/////////////////////////////////////////////////
// PukiWiki - Yet another WikiWikiWeb clone.
//
-// $Id: include.inc.php,v 1.9 2004/07/31 03:09:20 henoheno Exp $
+// $Id: include.inc.php,v 1.15 2004/08/10 11:38:21 henoheno Exp $
//
-/*
- include.inc.php
- ¥Ú¡¼¥¸¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë
-*/
+define('INCLUDE_MAX', 4); // °ìÅ٤˥¤¥ó¥¯¥ë¡¼¥É¤Ç¤¤ë¥Ú¡¼¥¸¤ÎºÇÂç¿ô
+// ¥Ú¡¼¥¸¤ò(²Äǽ¤Ê¤é¤ÐºÆµ¢Åª¤Ë)¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë
function plugin_include_convert()
{
- global $script,$vars,$get,$post,$hr,$WikiName,$BracketName;
- global $_msg_include_restrict;
- static $include_list = array(); //½èÍýºÑ¥Ú¡¼¥¸Ì¾¤ÎÇÛÎó
+ global $script, $vars, $get, $post, $menubar, $_msg_include_restrict;
+ static $included = array();
+ static $count = 1;
- if (func_num_args() == 0)
- {
- return;
- }
-
- $include_list[$vars['page']] = TRUE;
+ if (func_num_args() == 0) return '#include(): No argument<br />';
+ // Get an argument
list($page) = func_get_args();
$page = strip_bracket($page);
+ $s_page = htmlspecialchars($page);
+ $r_page = rawurlencode($page);
+ $link = "<a href=\"$script?$r_page\">$s_page</a>"; // Read link
- if (!is_page($page) or isset($include_list[$page]))
- {
- return '';
+ // Loop yourself
+ $root = isset($vars['page']) ? $vars['page'] : '';
+ $included[$root] = TRUE;
+
+ // I'm stuffed
+ if (isset($included[$page])) {
+ return "#include(): Included already: $link<br />";
+ } if (! is_page($page)) {
+ return "#include(): No such page: $s_page<br />";
+ } if ($count > INCLUDE_MAX) {
+ return "#include(): Limit exceeded: $link<br />";
+ } else {
+ ++$count;
}
- $include_list[$page] = TRUE;
- $_page = $vars['page'];
- $get['page'] = $post['page'] = $vars['page'] = $page;
+ // One page, only one time, at a time
+ $included[$page] = TRUE;
- // include¤Î¤È¤¤Ï¡¢Ç§¾Ú²èÌ̤ò¤¤¤Á¤¤¤Á½Ð¤µ¤º¡¢¸å»ÏËö¤â¤³¤Á¤é¤Ç¤Ä¤±¤ë
+ // Include A page, that probably includes another pages
+ $get['page'] = $post['page'] = $vars['page'] = $page;
if (check_readable($page, false, false)) {
$body = convert_html(get_source($page));
} else {
- $body = str_replace('$1',$page,$_msg_include_restrict);
+ $body = str_replace('$1', $page, $_msg_include_restrict);
}
+ $get['page'] = $post['page'] = $vars['page'] = $root;
- $get['page'] = $post['page'] = $vars['page'] = $_page;
-
- $s_page = htmlspecialchars($page);
- $r_page = rawurlencode($page);
+ // Add a title with edit link, before included document
$link = "<a href=\"$script?cmd=edit&page=$r_page\">$s_page</a>";
- if ($page == 'MenuBar')
- {
- $body = <<<EOD
-<span align="center"><h5 class="side_label">$link</h5></span>
-<small>$body</small>
-EOD;
- }
- else
- {
- $body = "<h1>$link</h1>\n$body\n";
+
+ if ($page == $menubar) {
+ $body = "<span align=\"center\"><h5 class=\"side_label\">$link</h5></span>" .
+ "<small>$body</small>";
+ } else {
+ $body = "<h1>$link</h1>\n" .
+ "$body\n";
}
return $body;