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
|
<?php
// Either copy classTextile.php to your plugin directory, or uncomment the following
// line and edit it to give the location where classTextile.php can be found
#ini_set('include_path', ini_get('include_path') . ':/full/path/to/textile');
if (empty($test)) {
echo compile_plugin();
exit;
}
// -----------------------------------------------------
function extract_section($lines, $section) {
$result = "";
$start_delim = "# --- BEGIN PLUGIN $section ---";
$end_delim = "# --- END PLUGIN $section ---";
$start = array_search($start_delim, $lines) + 1;
$end = array_search($end_delim, $lines);
$content = array_slice($lines, $start, $end-$start);
return join("\n", $content);
}
function compile_plugin($file='') {
global $plugin;
if (empty($file))
$file = $_SERVER['SCRIPT_FILENAME'];
if (!isset($plugin['name'])) {
$plugin['name'] = basename($file, '.php');
}
# Read the contents of this file, and strip line ends
$content = file($file);
for ($i=0; $i < count($content); $i++) {
$content[$i] = rtrim($content[$i]);
}
$plugin['help'] = extract_section($content, 'HELP');
$plugin['code'] = extract_section($content, 'CODE');
@include('classTextile.php');
if (class_exists('Textile')) {
$textile = new Textile();
$plugin['help'] = $textile->TextileThis($plugin['help']);
}
$plugin['md5'] = md5( $plugin['code'] );
// to produce a copy of the plugin for distribution, load this file in a browser.
header('Content-type: text/plain');
$header = <<<EOF
# {$plugin['name']} v{$plugin['version']}
# {$plugin['description']}
# {$plugin['author']}
# {$plugin['author_uri']}
# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................
EOF;
return $header . "\n\n" . trim(chunk_split(base64_encode(serialize($plugin)), 72)). "\n";
}
?>
|