1) { $path = ''; for($x = 1; $x < argc(); $x ++) { if(strlen($path)) $path .= '/'; $path .= argv($x); } } if($path) { $title = basename($path); if(! $tocpath) \App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags($title))); $text = load_doc_file('doc/' . $path . '.md'); if(! $text) { $text = load_doc_file('doc/' . $path . '.bb'); if($text) $doctype = 'bbcode'; } if(! $text) { $text = load_doc_file('doc/' . $path . '.html'); if($text) $doctype = 'html'; } } if(($tocpath) && (! $text)) return ''; if($tocpath === false) { if(! $text) { $text = load_doc_file('doc/Site.md'); \App::$page['title'] = t('Help'); } if(! $text) { $doctype = 'bbcode'; $text = load_doc_file('doc/main.bb'); goaway('/help/about/about'); \App::$page['title'] = t('Help'); } if(! $text) { header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); $tpl = get_markup_template("404.tpl"); return replace_macros($tpl, array( '$message' => t('Page not found.') )); } } if($doctype === 'html') $content = parseIdentityAwareHTML($text); if($doctype === 'markdown') { # escape #include tags $text = preg_replace('/#include/ism', '%%include', $text); $content = MarkdownExtra::defaultTransform($text); $content = preg_replace('/%%include/ism', '#include', $content); } if($doctype === 'bbcode') { require_once('include/bbcode.php'); $content = zidify_links(bbcode($text)); // bbcode retargets external content to new windows. This content is internal. $content = str_replace(' target="_blank"', '', $content); } $content = preg_replace_callback("/#include (.*?)\;/ism", 'preg_callback_help_include', $content); return translate_projectname($content); } function preg_callback_help_include($matches) { if($matches[1]) { $include = str_replace($matches[0],load_doc_file($matches[1]),$matches[0]); if(preg_match('/\.bb$/', $matches[1]) || preg_match('/\.txt$/', $matches[1])) { require_once('include/bbcode.php'); $include = zidify_links(bbcode($include)); $include = str_replace(' target="_blank"','',$include); } elseif(preg_match('/\.md$/', $matches[1])) { $include = MarkdownExtra::defaultTransform($include); } return $include; } } function determine_help_language() { require_once('Text/LanguageDetect.php'); $lang_detect = new Text_LanguageDetect(); $lang_detect->setNameMode(2); if($lang_detect->languageExists(argv(1))) { $lang = argv(1); $from_url = true; } else { $lang = \App::$language; if(! isset($lang)) $lang = 'en'; $from_url = false; } return array('language' => $lang, 'from_url' => $from_url); } function load_doc_file($s) { $path = 'doc'; $x = determine_help_language(); $lang = $x['language']; $url_idx = ($x['from_url'] ? 1 : 0); if($x['from_url'] && $lang !== 'en') { $path .= '/' . $lang; } $b = basename($s); for($i=1+$url_idx; $i