protected function parseShortMacroses($v9a0364b9e99bb480dd25e1f0284c8555, array $v87cd8b8808600624d8c590cfc2e6e94b)
 {
     if (strpos($v9a0364b9e99bb480dd25e1f0284c8555, '%') === false) {
         return $v9a0364b9e99bb480dd25e1f0284c8555;
     }
     if (preg_match_all("/%[A-z0-9][A-z0-9_-]{1,}%/m", $v9a0364b9e99bb480dd25e1f0284c8555, $v9c28d32df234037773be184dbdafc274)) {
         $v3b6168bd7ad383c4e2ece12a10bd00db = array_unique($v9c28d32df234037773be184dbdafc274[0]);
         $v57cfc11faf7476ccae9a7fbf83da0c5d = array();
         $vf3243048a04708ab2a053cef9543f555 = array();
         foreach ($v3b6168bd7ad383c4e2ece12a10bd00db as $v264a818e305e0550c3ee63761dd3d911) {
             if (!$this->isExecuteMacrosAllowed(trim($v264a818e305e0550c3ee63761dd3d911, "%"))) {
                 continue;
             }
             $vf5e638cc78dd325906c1298a0c21fb6b = rtrim($v264a818e305e0550c3ee63761dd3d911, '%');
             if (wa_strlen($vf5e638cc78dd325906c1298a0c21fb6b) == 3 && urldecode($vf5e638cc78dd325906c1298a0c21fb6b) !== $vf5e638cc78dd325906c1298a0c21fb6b) {
                 continue;
             }
             $v57cfc11faf7476ccae9a7fbf83da0c5d[] = $v264a818e305e0550c3ee63761dd3d911;
             $vf3243048a04708ab2a053cef9543f555[] = $this->executeShortMacros($v264a818e305e0550c3ee63761dd3d911, $v87cd8b8808600624d8c590cfc2e6e94b);
         }
         $v9a0364b9e99bb480dd25e1f0284c8555 = str_replace($v57cfc11faf7476ccae9a7fbf83da0c5d, $vf3243048a04708ab2a053cef9543f555, $v9a0364b9e99bb480dd25e1f0284c8555);
     }
     return $v9a0364b9e99bb480dd25e1f0284c8555;
 }
 public function getContext($v7057e8409c7c531a1a6e9ac3df4ed549, $va3dbaf37ab12f39c3cd19c0f04a360a0)
 {
     $v9a0364b9e99bb480dd25e1f0284c8555 = $this->prepareContext($v7057e8409c7c531a1a6e9ac3df4ed549, true);
     $v9a0364b9e99bb480dd25e1f0284c8555 = preg_replace("/%content redirect\\((.*)\\)%/im", "::CONTENT_REDIRECT::\\1::", $v9a0364b9e99bb480dd25e1f0284c8555);
     $v9a0364b9e99bb480dd25e1f0284c8555 = preg_replace("/(%|&#037)[A-z0-9]+ [A-z0-9]+\\((.*)\\)(%|&#037)/im", "", $v9a0364b9e99bb480dd25e1f0284c8555);
     $v6920626369b1f05844f5e3d6f93b5f6e = "<b>";
     $v4de1b7a4dc53e4a84c25ffb7cdb580ee = "</b>";
     $v8836d156dbd01a6c0776b086b0ff3b83 = explode(" ", $va3dbaf37ab12f39c3cd19c0f04a360a0);
     $v9a0364b9e99bb480dd25e1f0284c8555 = preg_replace("/([A-zА-я0-9])\\.([A-zА-я0-9])/im", "\\1&#46;\\2", $v9a0364b9e99bb480dd25e1f0284c8555);
     $v5c18ef72771564b7f43c497dc507aeab = str_replace(">", "> ", $v9a0364b9e99bb480dd25e1f0284c8555);
     $v5c18ef72771564b7f43c497dc507aeab = str_replace("<br>", " ", $v5c18ef72771564b7f43c497dc507aeab);
     $v5c18ef72771564b7f43c497dc507aeab = str_replace("&nbsp;", " ", $v5c18ef72771564b7f43c497dc507aeab);
     $v5c18ef72771564b7f43c497dc507aeab = str_replace("\n", " ", $v5c18ef72771564b7f43c497dc507aeab);
     $v5c18ef72771564b7f43c497dc507aeab = strip_tags($v5c18ef72771564b7f43c497dc507aeab);
     if (preg_match_all("/::CONTENT_REDIRECT::(.*)::/i", $v5c18ef72771564b7f43c497dc507aeab, $v3d801aa532c1cec3ee82d87a99fdf63f)) {
         $v7dabf5c198b0bab2eaa42bb03a113e55 = sizeof($v3d801aa532c1cec3ee82d87a99fdf63f[1]);
         for ($v865c0c0b4ab0e063e5caa3387c1a8741 = 0; $v865c0c0b4ab0e063e5caa3387c1a8741 < $v7dabf5c198b0bab2eaa42bb03a113e55; $v865c0c0b4ab0e063e5caa3387c1a8741++) {
             if (is_numeric($v3d801aa532c1cec3ee82d87a99fdf63f[1][$v865c0c0b4ab0e063e5caa3387c1a8741])) {
                 $v4a0dc59dd475d7fbeadc872e24f24dd0 = cmsController::getInstance()->getModule('content')->get_page_url($v3d801aa532c1cec3ee82d87a99fdf63f[1][$v865c0c0b4ab0e063e5caa3387c1a8741]);
                 $v4a0dc59dd475d7fbeadc872e24f24dd0 = umiHierarchy::getInstance()->getPathById($v3d801aa532c1cec3ee82d87a99fdf63f[1][$v865c0c0b4ab0e063e5caa3387c1a8741]);
                 $v4a0dc59dd475d7fbeadc872e24f24dd0 = trim($v4a0dc59dd475d7fbeadc872e24f24dd0, "'");
                 $v9b207167e5381c47682c6b4f58a623fb = str_replace($v3d801aa532c1cec3ee82d87a99fdf63f[0][$v865c0c0b4ab0e063e5caa3387c1a8741], "<p>%search_redirect_text% \"<a href='{$v4a0dc59dd475d7fbeadc872e24f24dd0}'>{$v4a0dc59dd475d7fbeadc872e24f24dd0}</a>\"</p>", $v5c18ef72771564b7f43c497dc507aeab);
             } else {
                 $v4a0dc59dd475d7fbeadc872e24f24dd0 = strip_tags($v3d801aa532c1cec3ee82d87a99fdf63f[1][$v865c0c0b4ab0e063e5caa3387c1a8741]);
                 $v4a0dc59dd475d7fbeadc872e24f24dd0 = trim($v4a0dc59dd475d7fbeadc872e24f24dd0, "'");
                 $v5c18ef72771564b7f43c497dc507aeab = str_replace($v3d801aa532c1cec3ee82d87a99fdf63f[0][$v865c0c0b4ab0e063e5caa3387c1a8741], "<p>%search_redirect_text% <a href=\"" . $v4a0dc59dd475d7fbeadc872e24f24dd0 . "\">" . $v4a0dc59dd475d7fbeadc872e24f24dd0 . "</a></p>", $v5c18ef72771564b7f43c497dc507aeab);
             }
         }
     }
     $v5c18ef72771564b7f43c497dc507aeab .= "\n";
     $vcb114fb1f5594c74601a4d8a142d932d = "";
     $v980da98409d058c365664ff7ea33dd6b = array();
     foreach ($v8836d156dbd01a6c0776b086b0ff3b83 as $v350e6018b5636ab1e90720fed9694ccf) {
         if (wa_strlen($v350e6018b5636ab1e90720fed9694ccf) <= 1) {
             continue;
         }
         $v1798c7d9bd5a5d637ead47154f0d36e3 = $v5c18ef72771564b7f43c497dc507aeab;
         $vf3b462d93b24cb0538f5d864546bc3e0 = language_morph::get_word_base($v350e6018b5636ab1e90720fed9694ccf);
         $vf3b462d93b24cb0538f5d864546bc3e0 = preg_quote($vf3b462d93b24cb0538f5d864546bc3e0, '/');
         $vd6f81d33de1672f67ef047aa89b6848b = "/([^\\.^\\?^!^<^>.]*){$vf3b462d93b24cb0538f5d864546bc3e0}([^\\.^\\?^!^<^>.]*)[!\\.\\?\n]/imu";
         $v1dcb47f8fb7fc589f094bc7707d8ffa7 = "/([^ ^[\\.[ ]*]^!^\\?^\\(^\\).]*)({$vf3b462d93b24cb0538f5d864546bc3e0})([^ ^\\.^!^\\?^\\(^\\).]*)/imu";
         if (preg_match($vd6f81d33de1672f67ef047aa89b6848b, $v1798c7d9bd5a5d637ead47154f0d36e3, $v1798c7d9bd5a5d637ead47154f0d36e3)) {
             $v980da98409d058c365664ff7ea33dd6b[] = $v1798c7d9bd5a5d637ead47154f0d36e3[0];
         }
     }
     $v980da98409d058c365664ff7ea33dd6b = array_unique($v980da98409d058c365664ff7ea33dd6b);
     $vcb114fb1f5594c74601a4d8a142d932d = "";
     foreach ($v980da98409d058c365664ff7ea33dd6b as $v6438c669e0d0de98e6929c2cc0fac474) {
         foreach ($v8836d156dbd01a6c0776b086b0ff3b83 as $v350e6018b5636ab1e90720fed9694ccf) {
             $vf3b462d93b24cb0538f5d864546bc3e0 = language_morph::get_word_base($v350e6018b5636ab1e90720fed9694ccf);
             $vf3b462d93b24cb0538f5d864546bc3e0 = preg_quote($vf3b462d93b24cb0538f5d864546bc3e0, '/');
             $v1dcb47f8fb7fc589f094bc7707d8ffa7 = "/([^ ^.^!^\\?.]*)({$vf3b462d93b24cb0538f5d864546bc3e0})([^ ^.^!^\\?.]*)/imu";
             $v6438c669e0d0de98e6929c2cc0fac474 = preg_replace($v1dcb47f8fb7fc589f094bc7707d8ffa7, $v6920626369b1f05844f5e3d6f93b5f6e . "\\1\\2\\3" . $v4de1b7a4dc53e4a84c25ffb7cdb580ee, $v6438c669e0d0de98e6929c2cc0fac474);
         }
         if ($v6438c669e0d0de98e6929c2cc0fac474) {
             $vcb114fb1f5594c74601a4d8a142d932d .= "<p>" . $v6438c669e0d0de98e6929c2cc0fac474 . "</p>";
         }
     }
     if (!$vcb114fb1f5594c74601a4d8a142d932d) {
         preg_match("/([^\\.^!^\\?.]*)([\\.!\\?]*)/im", $v5c18ef72771564b7f43c497dc507aeab, $vcb114fb1f5594c74601a4d8a142d932d);
         $vcb114fb1f5594c74601a4d8a142d932d = $vcb114fb1f5594c74601a4d8a142d932d[0];
         $vcb114fb1f5594c74601a4d8a142d932d = "<p></p>";
     }
     return $vcb114fb1f5594c74601a4d8a142d932d;
 }
 public function formatMessage($message, $b_split_long_mode = 0)
 {
     static $bb_from;
     static $bb_to;
     $oldResultTMode = $this->isXSLTResultMode(false);
     try {
         list($quote_begin, $quote_end) = $this->loadTemplates('quote/default', 'quote_begin', 'quote_end');
     } catch (publicException $e) {
         $quote_begin = "<div class='quote'>";
         $quote_end = "</div>";
     }
     if (self::isXSLTResultMode()) {
         $quote_begin = "<div class='quote'>";
         $quote_end = "</div>";
     }
     if (!(is_array($bb_from) && is_array($bb_to) && count($bb_from) === count($bb_to))) {
         try {
             list($bb_from, $bb_to) = $this->loadTemplates('bb/default', 'bb_from', 'bb_to');
             if (!(is_array($bb_from) && is_array($bb_to) && count($bb_from) === count($bb_to) && count($bb_to))) {
                 $bb_from = array("[b]", "[i]", "[/b]", "[/i]", "[quote]", "[/quote]", "[u]", "[/u]", "\r\n");
                 $bb_to = array("<strong>", "<em>", "</strong>", "</em>", $quote_begin, $quote_end, "<u>", "</u>", "<br />");
             }
         } catch (publicException $e) {
             $bb_from = array("[b]", "[i]", "[/b]", "[/i]", "[quote]", "[/quote]", "[u]", "[/u]", "\r\n");
             $bb_to = array("<strong>", "<em>", "</strong>", "</em>", $quote_begin, $quote_end, "<u>", "</u>", "<br />");
         }
     }
     $openQuoteCount = substr_count(wa_strtolower($message), "[quote]");
     $closeQuoteCount = substr_count(wa_strtolower($message), "[/quote]");
     if ($openQuoteCount > $closeQuoteCount) {
         $message .= str_repeat("[/quote]", $openQuoteCount - $closeQuoteCount);
     }
     if ($openQuoteCount < $closeQuoteCount) {
         $message = str_repeat("[quote]", $closeQuoteCount - $openQuoteCount) . $message;
     }
     $message = preg_replace("`((http)+(s)?:(//)|(www\\.))((\\w|\\.|\\-|_)+)(/)?([/|#|?|&|=|\\w|\\.|\\-|_]+)?`i", "[url]http\\3://\\5\\6\\8\\9[/url]", $message);
     $message = str_ireplace($bb_from, $bb_to, $message);
     $message = str_ireplace("</h4>", "</h4><p>", $message);
     $message = str_ireplace("</div>", "</p></div>", $message);
     $message = str_replace(".[/url]", "[/url].", $message);
     $message = str_replace(",[/url]", "[/url],", $message);
     $message = str_replace(array("[url][url]", "[/url][/url]"), array("[url]", "[/url]"), $message);
     // split long words
     if ($b_split_long_mode === 0) {
         // default
         $arr_matches = array();
         $b_succ = preg_match_all("/[^\\s^<^>]{70,}/u", $message, $arr_matches);
         if ($b_succ && isset($arr_matches[0]) && is_array($arr_matches[0])) {
             foreach ($arr_matches[0] as $str) {
                 $s = "";
                 if (strpos($str, "[url]") === false) {
                     for ($i = 0; $i < wa_strlen($str); $i++) {
                         $s .= wa_substr($str, $i, 1) . ($i % 30 === 0 ? " " : "");
                     }
                     $message = str_replace($str, $s, $message);
                 }
             }
         }
     } elseif ($b_split_long_mode === 1) {
         // TODU abcdef...asdf
     }
     if (preg_match_all("/\\[url\\]([^А-я^\r^\n^\t]*)\\[\\/url\\]/U", $message, $matches, PREG_SET_ORDER)) {
         for ($i = 0; $i < count($matches); $i++) {
             $s_url = $matches[$i][1];
             $i_length = strlen($s_url);
             if ($i_length > 40) {
                 $i_cutpart = ceil(($i_length - 40) / 2);
                 $i_center = ceil($i_length / 2);
                 $s_url = substr_replace($s_url, "...", $i_center - $i_cutpart, $i_cutpart * 2);
             }
             $message = str_replace($matches[$i][0], "<a href='/go-out.php?url=" . $matches[$i][1] . "' target='_blank' title='Ссылка откроется в новом окне'>" . $s_url . "</a>", $message);
         }
     }
     $message = str_replace("&", "&amp;", $message);
     $message = str_ireplace("[QUOTE][QUOTE]", "", $message);
     if (preg_match_all("/\\[smile:([^\\]]+)\\]/im", $message, $out)) {
         foreach ($out[1] as $smile_path) {
             $s = $smile_path;
             $smile_path = "images/forum/smiles/" . $smile_path . ".gif";
             if (file_exists($smile_path)) {
                 $message = str_replace("[smile:" . $s . "]", "<img src='/{$smile_path}' />", $message);
             }
         }
     }
     $message = preg_replace("/<p>(<br \\/>)+/", "<p>", $message);
     $message = nl2br($message);
     $message = str_replace("<<br />br /><br />", "", $message);
     $message = str_replace("<p<br />>", "<p>", $message);
     $message = str_replace("&amp;quot;", "\"", $message);
     $message = str_replace("&amp;quote;", "\"", $message);
     $message = html_entity_decode($message);
     $message = str_replace("%", "&#37;", $message);
     $message = $this->parseTPLMacroses($message);
     $this->isXSLTResultMode($oldResultTMode);
     return $message;
 }
示例#4
0
function truncStr($v0b9f441f569478ce6777af257c2d5290, $vebb9639568218ed404aa24c55d7510c2 = "50", $v95dcc3576ee8f381b2683b15c126e9de = "...", $v6bd0a84f7fc8978ff8ae76426b1a9034 = false)
{
    $vdccc8c8d061984a56d899361b4934477 = $v0b9f441f569478ce6777af257c2d5290;
    if ($v6bd0a84f7fc8978ff8ae76426b1a9034) {
        $vdccc8c8d061984a56d899361b4934477 = html_entity_decode(strip_tags($vdccc8c8d061984a56d899361b4934477), ENT_QUOTES, "UTF-8");
    }
    if ($vebb9639568218ed404aa24c55d7510c2 <= 0) {
        return '';
    }
    if (wa_strlen($v0b9f441f569478ce6777af257c2d5290) > $vebb9639568218ed404aa24c55d7510c2) {
        $vebb9639568218ed404aa24c55d7510c2 -= wa_strlen($v95dcc3576ee8f381b2683b15c126e9de);
        $vdccc8c8d061984a56d899361b4934477 = wa_substr($vdccc8c8d061984a56d899361b4934477, 0, $vebb9639568218ed404aa24c55d7510c2 + 1);
        $vdccc8c8d061984a56d899361b4934477 = preg_replace('/\\s+([^\\s]+)?$/i', '', $vdccc8c8d061984a56d899361b4934477) . $v95dcc3576ee8f381b2683b15c126e9de;
    }
    return $vdccc8c8d061984a56d899361b4934477;
}