function processMatch(&$string, &$match, $area = 'articles') { $html = ''; if (!empty($this->params->message)) { if ($this->params->place_comments) { $html = $this->params->message_start . $this->params->message . $this->params->message_end; } $string = str_replace($match['0'], $html, $string); return true; } if (count($match) < 10) { array_unshift($match, $match['0'], ''); $match['2'] = ''; array_push($match, '', ''); } $p_start = $match['1']; $br1a = $match['2']; $div_start = $match['3']; $br2a = $match['4']; $type = trim($match['5']); $id = trim($match['6']); $br2a = $match['7']; $div_end = $match['8']; $br2b = $match['9']; $p_end = $match['10']; $type = trim($type); $id = trim($id); // The core loadposition tag supports chrome after a comma. Modules Anywhere uses a bar. if ($type == 'loadposition') { $id = str_replace(',', '|', $id); } $chrome = ''; $forcetitle = 0; $ignores = array(); $overrides = array(); $vars = str_replace('\\|', '[:MA_BAR:]', $id); $vars = explode('|', $vars); $id = array_shift($vars); foreach ($vars as $var) { $var = trim(str_replace('[:MA_BAR:]', '|', $var)); if (!$var) { continue; } if (strpos($var, '=') === false) { if ($this->params->override_style) { $chrome = $var; } continue; } if ($type != $this->params->module_tag) { continue; } list($key, $val) = explode('=', $var, 2); $val = str_replace(array('\\{', '\\}'), array('{', '}'), $val); switch ($key) { case 'style': $chrome = $val; break; case 'ignore_access': case 'ignore_state': case 'ignore_assignments': case 'ignore_caching': $ignores[$key] = $val; break; case 'showtitle': $overrides['showtitle'] = $val; $forcetitle = $val; break; default: break; } } if ($type == $this->params->module_tag) { if (!$chrome) { $chrome = $forcetitle ? 'xhtml' : $this->params->style; } // module $html = $this->processModule($id, $chrome, $ignores, $overrides, $area); if ($html == 'MA_IGNORE') { return false; } } else { if (!$chrome) { $chrome = $forcetitle ? 'xhtml' : ''; } // module position $html = $this->processPosition($id, $chrome); } if ($p_start && $p_end) { $p_start = ''; $p_end = ''; } $html = $br1a . $br2a . $html . $br2a . $br2b; if ($div_start) { $extra = trim(preg_replace('#\\{div(.*)\\}#si', '\\1', $div_start)); $div = ''; if ($extra) { $extra = explode('|', $extra); $extras = new stdClass(); foreach ($extra as $e) { if (strpos($e, ':') !== false) { list($key, $val) = explode(':', $e, 2); $extras->{$key} = $val; } } if (isset($extras->class)) { $div .= 'class="' . $extras->class . '"'; } $style = array(); if (isset($extras->width)) { if (is_numeric($extras->width)) { $extras->width .= 'px'; } $style[] = 'width:' . $extras->width; } if (isset($extras->height)) { if (is_numeric($extras->height)) { $extras->height .= 'px'; } $style[] = 'height:' . $extras->height; } if (isset($extras->align)) { $style[] = 'float:' . $extras->align; } else { if (isset($extras->float)) { $style[] = 'float:' . $extras->float; } } if (!empty($style)) { $div .= ' style="' . implode(';', $style) . ';"'; } } $html = trim('<div ' . trim($div)) . '>' . $html . '</div>'; $html = $p_end . $html . $p_start; } else { $html = $p_start . $html . $p_end; } NNText::fixHtmlTagStructure($html); if ($this->params->place_comments) { $html = $this->params->comment_start . $html . $this->params->comment_end; } $string = str_replace($match['0'], $html, $string); unset($match); return $id; }
public function processMatch(&$string, &$art, &$match, &$ignores, $type = 'article') { if ($this->params->message != '') { if ($this->params->place_comments) { return $this->params->comment_start . $this->params->message_start . $this->params->message . $this->params->message_end . $this->params->comment_end; } return ''; } $p1_start = $match['1']; $br1a = $match['2']; //$type = $match['3']; $id = $match['4']; $br1b = $match['5']; $p1_end = $match['6']; $html = $match['7']; $p2_start = $match['8']; $br2a = $match['9']; // end tag $br2b = $match['10']; $p2_end = $match['11']; $html = trim($html); preg_match('#^' . $this->params->breaks_start . '(.*?)' . $this->params->breaks_end . '$#s', trim($html), $text_match); $p1_start = $p1_end || $text_match['1'] ? '' : $p1_start; $p2_end = $p2_start || $text_match['5'] ? '' : $p2_end; if (strpos($string, '{/div}') !== false && preg_match('#^' . $this->params->breaks_start . '(\\{div[^\\}]*\\})' . $this->params->breaks_end . '(.*?)' . $this->params->breaks_start . '(\\{/div\\})' . $this->params->breaks_end . '#s', $html, $div_match)) { if ($div_match['1'] && $div_match['5']) { $div_match['1'] = ''; } if ($div_match['7'] && $div_match['11']) { $div_match['11'] = ''; } $html = $div_match['2'] . $div_match['3'] . $div_match['4'] . $div_match['1'] . $div_match['6'] . $div_match['11'] . $div_match['8'] . $div_match['9'] . $div_match['10']; } $type = $type ?: 'article'; if (strpos($id, ':') !== false) { $type = explode(':', $id, 2); if ($type['0'] == 'k2') { $id = trim($type['1']); } } $html = $this->processArticle($id, $art, $html, $type, $ignores); if ($this->params->place_comments) { $html = $this->params->comment_start . $html . $this->params->comment_end; } // Only add surrounding html if there is something to output (not only comments) if (!preg_match('#^(<\\!--[^>]*-->)*$#', $html)) { $html = $p1_start . $br1a . $br1b . $html . $br2a . $br2b . $p2_end; NNText::fixHtmlTagStructure($html, false); } return $html; }