';
$pData = str_replace( $matches[0], $content, $pData );
}
return $pData;
}
function parseData( $pParseHash, &$pCommonObject ) {
global $gBitSystem, $gLibertySystem, $gBitUser, $page;
$data = $pParseHash['data'];
$contentId = $pParseHash['content_id'];
// this is used for setting the links when section editing is enabled
$section_count = 1;
if( $gBitSystem->isPackageActive( 'wiki' ) ) {
// force wiki page to load
global $gLibertySystem;
$gLibertySystem->getContentClassName( 'bitpage' );
}
// only strip out html if needed
if( $gBitSystem->isFeatureActive( 'content_allow_html' ) || $gBitSystem->isFeatureActive( 'content_force_allow_html' )) {
// we allow html unconditionally with this parser
} else {
// we are parsing this page and we either have no way of checking permissions or we have no need for html
$data = htmlspecialchars( $data, ENT_NOQUOTES, 'UTF-8' );
}
// Extract [link] sections (to be re-inserted later)
$noparsedlinks = [];
// This section matches [...].
// Added handling for [[foo] sections. -rlpowell
preg_match_all("/(?parseHtmlchar( $data );
//$data = strip_tags($data);
// BiDi markers
$bidiCount = 0;
$bidiCount = preg_match_all("/(\{l2r\})/", $data, $pages);
$bidiCount += preg_match_all("/(\{r2l\})/", $data, $pages);
$data = preg_replace("/\{l2r\}/", "
", $data);
$data = preg_replace("/\{r2l\}/", "
", $data);
$data = preg_replace("/\{lm\}/", "", $data);
$data = preg_replace("/\{rm\}/", "", $data);
// Parse MediaWiki-style pipe syntax tables.
if(( strpos( $data, "{|" ) === 0 || strpos( $data, "\n{|" ) !== false ) && strpos( $data, "\n|}" ) !== false ) {
$data = $this->parseMediawikiTables($data);
}
// ============================================= this should go - xing
// Replace dynamic variables
// Dynamic variables are similar to dynamic content but they are editable
// from the page directly, intended for short data, not long text but text
// will work too
// Now won't match HTML-style '%nn' letter codes.
/*
if (preg_match_all("/%([^% 0-9][^% 0-9][^% ]*)%/",$data,$dvars)) {
// remove repeated elements
$dvars = array_unique($dvars[1]);
// Now replace each dynamic variable by a pair composed of the
// variable value and a text field to edit the variable. Each
foreach($dvars as $dvar) {
$query = "select `data` from `".BIT_DB_PREFIX."liberty_dynamic_variables` where `name`=?";
$result = $this->mDb->query($query,Array($dvar));
if($result->numRows()) {
$value = $result->fetchRow();
$value = $value["data"];
} else {
//Default value is null
$value = "NaV";
}
// Now build 2 divs
$id = 'dyn_'.$dvar;
if( $gBitUser->hasPermission( 'p_wiki_edit_dynvar' ) ) {
$span1 = "$value";
$span2 = "";
} else {
$span1 = "$value";
$span2 = '';
}
$html = $span1.$span2;
//It's important to replace only once
$dvar_preg = preg_quote( $dvar );
$data = preg_replace("+%$dvar_preg%+",$html,$data,1);
//Further replacements only with the value
$data = str_replace("%$dvar%",$value,$data);
}
//At the end put an update button
//
$data='';
}
*/
// Replace boxes - add a new line that we can have something like: ^!heading^ without the need for a \n after the initial ^ - \n will be removed below
$data = preg_replace("/\^([^\^]+)\^/", "
';
$data = str_replace($tables[0][$i], $repl, $data);
}
}
}
// Now tokenize the expression and process the tokens
// Use tab and newline as tokenizing characters as well ////
$lines = explode("\n", $data);
$data = '';
$listbeg = [];
$divdepth = [];
$inTable = 0;
// loop: process all lines
foreach ($lines as $line) {
// bitweaver now ignores leading space because it is *VERY* disturbing to unaware users - spiderr
// unless 'feature_wiki_preserve_leading_blanks is set'. This is used for sites that have
// migrated from TikiWiki and have lots of pages whose formatting depends on the presevation of leading spaces
if (!$gBitSystem->isFeatureActive('wiki_preserve_leading_blanks')) {
$line = trim( $line );
}
// check if we are inside a table, if so, ignore monospaced and do
// not insert
$inTable += substr_count($line, "
isFeatureActive('wiki_monosp') && $inTable == 0) {
// This is not list item -- must close lists currently opened
while (count($listbeg))
$data .= array_shift($listbeg);
// If the first character is space then
// change spaces for
$line = '' . str_replace(' ', ' ', substr($line, 1)). '';
}
// Title bars
$line = preg_replace( "/\-\=([^=]+)\=\-/", "
')
array_unshift($listbeg, '' . array_shift($listbeg));
} elseif ($litype == '+') {
// Must append paragraph for list item of given depth...
$listlevel = $this->howManyAtStart($line, $litype);
// Close lists down to requested level
while ($listlevel < count($listbeg))
$data .= array_shift($listbeg);
if (count($listbeg)) {
if (substr(current($listbeg), 0, 5) != '') {
array_unshift($listbeg, '' . array_shift($listbeg));
$liclose = '
';
} else
$liclose = ' ';
} else
$liclose = '';
$line = $liclose . substr($line, count($listbeg));
} else {
// This is not list item -- must close lists currently opened
while (count($listbeg))
$data .= array_shift($listbeg);
// Get count of (possible) header signs at start
$hdrlevel = $this->howManyAtStart($line, '!');
// If 1st char on line is '!' and its count less than 6 (max in HTML)
if ($litype == '!' && $hdrlevel > 0 && $hdrlevel <= 6) {
// OK. Parse headers here...
$aclose = '';
$edit_link = '';
$addremove = 0;
// Close lower level divs if opened
for (;current($divdepth) >= $hdrlevel; array_shift($divdepth)) {
$data .= '';
}
// May be spesial signs present after '!'s?
$divstate = substr($line, $hdrlevel, 1);
if ($divstate == '+' || $divstate == '-') {
// OK. Must insert flipper after HEADER, and then open new div...
$thisid = 'id' . microtime() * 1000000;
$aclose = '[' . ($divstate == '-' ? '+' : '-') . ']';
$aclose .= '