-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathColumns.php
109 lines (91 loc) · 2.88 KB
/
Columns.php
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
101
102
103
104
105
106
107
108
109
<?php
if (!defined("MEDIAWIKI")) {
die(
"This file is an extension to the MediaWiki software and cannot be used standalone.\n"
);
}
//self executing anonymous function to prevent global scope assumptions
call_user_func(function () {
$GLOBALS["wgExtensionCredits"]["parserhook"][] = [
"path" => __FILE__,
"name" => "Columns",
"description" => "Very simple parser function for creating div columns",
"version" => "0.2.0",
"author" => "@toniher",
"url" => "https://mediawiki.org/wiki/User:Toniher",
];
$GLOBALS["wgHooks"]["ParserFirstCallInit"][] = "wfColumnsSetup";
});
function wfColumnsSetup(Parser $parser)
{
$parser->setHook("columns", "wfColumnsRender");
return true;
}
function wfColumnsRender($text, array $args, Parser $parser, PPFrame $frame)
{
$output = $parser->recursiveTagParse($text, $frame);
$columns = 10;
$format = "wiki";
$classmain = "columns";
$class = "column";
if (isset($args["entries"])) {
if (is_numeric($args["entries"])) {
$columns = $args["entries"];
}
}
if (isset($args["format"])) {
$format = $args["format"];
}
if (isset($args["classmain"])) {
$classmain = $args["classmain"];
}
if (isset($args["class"])) {
$class = $args["class"];
}
if ($format == "html") {
$output = str_replace("<ul>", "", $output);
$output = str_replace("</ul>", "", $output);
$output = str_replace("</li>", "", $output);
$output = str_replace("<p>", "", $output);
$output = str_replace("</p>", "", $output);
$listli = explode("<li>", $output);
$final = "";
$iter = 0;
for ($i = 1; $i < count($listli); $i++) {
if ($iter == 0) {
$final .= "<div class='" . $class . "'><ul>";
}
$final .= "<li>" . $listli[$i] . "</li>";
$iter++;
if ($iter == $columns) {
$final .= "</ul></div>";
$iter = 0;
} else {
if ($i == count($listli) - 1) {
$final .= "</ul></div>";
}
}
}
return '<div class="' . $classmain . '">' . $final . "</div>";
} else {
$listli = explode("\*", $output);
$final = "";
$iter = 0;
for ($i = 1; $i < count($listli); $i++) {
if ($iter == 0) {
$final .= "<div class='" . $class . "'>\n";
}
$final .= "* " . $listli[$i];
$iter++;
if ($iter == $columns) {
$final .= "</div>";
$iter = 0;
} else {
if ($i == count($listli) - 1) {
$final .= "</div>";
}
}
}
return '<div class="' . $classmain . '">' . $final . "</div>";
}
}