Move mod/probe to src/Module/Probe
[friendica.git/.git] / src / Module / Diagnostic / Babel.php
1 <?php
2
3 namespace Friendica\Module\Diagnostic;
4
5 use Friendica\BaseModule;
6 use Friendica\Content\Text;
7 use Friendica\Core\L10n;
8 use Friendica\Core\Renderer;
9 use Friendica\Model\Item;
10
11 /**
12  * Translates input text into different formats (HTML, BBCode, Markdown)
13  */
14 class Babel extends BaseModule
15 {
16         public static function content()
17         {
18                 function visible_whitespace($s)
19                 {
20                         $s = str_replace(' ', '&nbsp;', $s);
21
22                         return str_replace(["\r\n", "\n", "\r"], '<br />', $s);
23                 }
24
25                 $results = [];
26                 if (!empty($_REQUEST['text'])) {
27                         switch (defaults($_REQUEST, 'type', 'bbcode')) {
28                                 case 'bbcode':
29                                         $bbcode = trim($_REQUEST['text']);
30                                         $results[] = [
31                                                 'title'   => L10n::t('Source input'),
32                                                 'content' => visible_whitespace($bbcode)
33                                         ];
34
35                                         $plain = Text\BBCode::toPlaintext($bbcode, false);
36                                         $results[] = [
37                                                 'title'   => L10n::t('BBCode::toPlaintext'),
38                                                 'content' => visible_whitespace($plain)
39                                         ];
40
41                                         $html = Text\BBCode::convert($bbcode);
42                                         $results[] = [
43                                                 'title'   => L10n::t('BBCode::convert (raw HTML)'),
44                                                 'content' => visible_whitespace(htmlspecialchars($html))
45                                         ];
46
47                                         $results[] = [
48                                                 'title'   => L10n::t('BBCode::convert'),
49                                                 'content' => $html
50                                         ];
51
52                                         $bbcode2 = Text\HTML::toBBCode($html);
53                                         $results[] = [
54                                                 'title'   => L10n::t('BBCode::convert => HTML::toBBCode'),
55                                                 'content' => visible_whitespace($bbcode2)
56                                         ];
57
58                                         $markdown = Text\BBCode::toMarkdown($bbcode);
59                                         $results[] = [
60                                                 'title'   => L10n::t('BBCode::toMarkdown'),
61                                                 'content' => visible_whitespace($markdown)
62                                         ];
63
64                                         $html2 = Text\Markdown::convert($markdown);
65                                         $results[] = [
66                                                 'title'   => L10n::t('BBCode::toMarkdown => Markdown::convert'),
67                                                 'content' => $html2
68                                         ];
69
70                                         $bbcode3 = Text\Markdown::toBBCode($markdown);
71                                         $results[] = [
72                                                 'title'   => L10n::t('BBCode::toMarkdown => Markdown::toBBCode'),
73                                                 'content' => visible_whitespace($bbcode3)
74                                         ];
75
76                                         $bbcode4 = Text\HTML::toBBCode($html2);
77                                         $results[] = [
78                                                 'title'   => L10n::t('BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode'),
79                                                 'content' => visible_whitespace($bbcode4)
80                                         ];
81
82                                         $item = [
83                                                 'body' => $bbcode,
84                                                 'tag'  => '',
85                                         ];
86
87                                         Item::setHashtags($item);
88                                         $results[] = [
89                                                 'title'   => L10n::t('Item Body'),
90                                                 'content' => visible_whitespace($item['body'])
91                                         ];
92                                         $results[] = [
93                                                 'title'   => L10n::t('Item Tags'),
94                                                 'content' => $item['tag']
95                                         ];
96                                         break;
97                                 case 'markdown':
98                                         $markdown = trim($_REQUEST['text']);
99                                         $results[] = [
100                                                 'title'   => L10n::t('Source input (Diaspora format)'),
101                                                 'content' => '<pre>' . $markdown . '</pre>'
102                                         ];
103
104                                         $html = Text\Markdown::convert($markdown);
105                                         $results[] = [
106                                                 'title'   => L10n::t('Markdown::convert (raw HTML)'),
107                                                 'content' => visible_whitespace(htmlspecialchars($html))
108                                         ];
109
110                                         $results[] = [
111                                                 'title'   => L10n::t('Markdown::convert'),
112                                                 'content' => $html
113                                         ];
114
115                                         $bbcode = Text\Markdown::toBBCode($markdown);
116                                         $results[] = [
117                                                 'title'   => L10n::t('Markdown::toBBCode'),
118                                                 'content' => '<pre>' . $bbcode . '</pre>'
119                                         ];
120                                         break;
121                                 case 'html' :
122                                         $html = trim($_REQUEST['text']);
123                                         $results[] = [
124                                                 'title'   => L10n::t('Raw HTML input'),
125                                                 'content' => htmlspecialchars($html)
126                                         ];
127
128                                         $results[] = [
129                                                 'title'   => L10n::t('HTML Input'),
130                                                 'content' => $html
131                                         ];
132
133                                         $bbcode = Text\HTML::toBBCode($html);
134                                         $results[] = [
135                                                 'title'   => L10n::t('HTML::toBBCode'),
136                                                 'content' => visible_whitespace($bbcode)
137                                         ];
138
139                                         $html2 = Text\BBCode::convert($bbcode);
140                                         $results[] = [
141                                                 'title'   => L10n::t('HTML::toBBCode => BBCode::convert'),
142                                                 'content' => $html2
143                                         ];
144
145                                         $results[] = [
146                                                 'title'   => L10n::t('HTML::toBBCode => BBCode::convert (raw HTML)'),
147                                                 'content' => htmlspecialchars($html2)
148                                         ];
149
150                                         $markdown = Text\HTML::toMarkdown($html);
151                                         $results[] = [
152                                                 'title'   => L10n::t('HTML::toMarkdown'),
153                                                 'content' => visible_whitespace($markdown)
154                                         ];
155
156                                         $text = Text\HTML::toPlaintext($html);
157                                         $results[] = [
158                                                 'title'   => L10n::t('HTML::toPlaintext'),
159                                                 'content' => '<pre>' . $text . '</pre>'
160                                         ];
161                         }
162                 }
163
164                 $tpl = Renderer::getMarkupTemplate('babel.tpl');
165                 $o = Renderer::replaceMacros($tpl, [
166                         '$text'          => ['text', L10n::t('Source text'), defaults($_REQUEST, 'text', ''), ''],
167                         '$type_bbcode'   => ['type', L10n::t('BBCode'), 'bbcode', '', defaults($_REQUEST, 'type', 'bbcode') == 'bbcode'],
168                         '$type_markdown' => ['type', L10n::t('Markdown'), 'markdown', '', defaults($_REQUEST, 'type', 'bbcode') == 'markdown'],
169                         '$type_html'     => ['type', L10n::t('HTML'), 'html', '', defaults($_REQUEST, 'type', 'bbcode') == 'html'],
170                         '$results'       => $results
171                 ]);
172
173                 return $o;
174         }
175 }