aboutsummaryrefslogtreecommitdiffstats
path: root/mod/help.php
blob: 81ecd6ba9cf584516558b73bc3cdc88e28e1f373 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php

/**
 * You can create local site resources in doc/Site.md and either link to doc/Home.md for the standard resources
 * or use our include mechanism to include it on your local page.
 *
 * #include doc/Home.md;
 *
 * The syntax is somewhat strict. 
 *
 */


if(! function_exists('load_doc_file')) {
function load_doc_file($s) {
	$lang = get_app()->language;
	if(! isset($lang))
		$lang = 'en';
	$b = basename($s);
	$d = dirname($s);
	if(file_exists("$d/$lang/$b"))
		return file_get_contents("$d/$lang/$b");
	if(file_exists($s))
		return file_get_contents($s);
	return '';
}}



function help_content(&$a) {
	nav_set_selected('help');

	global $lang;

	$doctype = 'markdown';

	require_once('library/markdown.php');

	$text = '';

	if(argc() > 1) {
		$text = load_doc_file('doc/' . $a->argv[1] . '.md');
		$a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags(argv(1))));
	}
	if(! $text) {
		$text = load_doc_file('doc/' . $a->argv[1] . '.bb');
		if($text)
			$doctype = 'bbcode';
		$a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('_',' ',notags(argv(1))));
	}
	if(! $text) {
		$text = load_doc_file('doc/' . $a->argv[1] . '.html');
		if($text)
			$doctype = 'html';
		$a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags(argv(1))));
	}

	if(! $text) {
		$text = load_doc_file('doc/Site.md');
		$a->page['title'] = t('Help');
	}
	if(! $text) {
		$doctype = 'bbcode';
		$text = load_doc_file('doc/main.bb');
		$a->page['title'] = t('Help');
	}
	
	if(! strlen($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.' )
		));
	}

	$text = preg_replace_callback("/#include (.*?)\;/ism", 'preg_callback_help_include', $text);

	if($doctype === 'html')
		$content = $text;
	if($doctype === 'markdown')	
		$content = Markdown($text);
	if($doctype === 'bbcode') {
		require_once('include/bbcode.php');
		$content = bbcode($text);
	} 

	return replace_macros(get_markup_template("help.tpl"), array(
		'$content' => $content
	));

}


function preg_callback_help_include($matches) {

	if($matches[1])
		return str_replace($matches[0],load_doc_file($matches[1]),$matches[0]);

}