%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/socialnetwork/classes/general/ |
Current File : //home/bitrix/www/bitrix/modules/socialnetwork/classes/general/functions1.php |
<? IncludeModuleLangFile(__FILE__); class CSocNetTextParser { var $smiles = array(); var $allow_img_ext = "gif|jpg|jpeg|png"; var $path_to_smile = false; var $LAST_ERROR = ""; var $quote_error = 0; var $quote_open = 0; var $quote_closed = 0; var $MaxStringLen = 60; var $arFontSize = array( 1 => 40, //"xx-small" 2 => 60, //"x-small" 3 => 80, //"small" 4 => 100, //"medium" 5 => 120, //"large" 6 => 140, //"x-large" 7 => 160); //"xx-large" function CSocNetTextParser($strLang = False, $pathToSmile = false) { global $DB, $CACHE_MANAGER; if ($strLang===False) $strLang = LANGUAGE_ID; $this->path_to_smile = $pathToSmile; $this->smiles = array(); if($CACHE_MANAGER->Read(604800, "b_sonet_smile")) { $arSmiles = $CACHE_MANAGER->Get("b_sonet_smile"); } else { $db_res = CSocNetSmile::GetList(array("SORT" => "ASC"), array("SMILE_TYPE" => "S"/*, "LANG_LID" => $strLang*/), false, false, Array("LANG_LID", "ID", "IMAGE", "DESCRIPTION", "TYPING", "SMILE_TYPE", "SORT")); while ($res = $db_res->Fetch()) { $tok = strtok($res['TYPING'], " "); while ($tok) { $arSmiles[$res['LANG_LID']][] = array('TYPING' => stripslashes($tok), 'IMAGE' => stripslashes($res['IMAGE']), 'DESCRIPTION'=>stripslashes($res['NAME'])); $tok = strtok(" "); } } $CACHE_MANAGER->Set("b_sonet_smile", $arSmiles); } $this->smiles = $arSmiles[$strLang]; } function convert($text, $bPreview = True, $arImages = array(), $allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N")) //, "KEEP_AMP" => "N" { global $DB; $text = preg_replace("#([?&;])PHPSESSID=([0-9a-zA-Z]{32})#is", "\\1PHPSESSID1=", $text); $this->quote_error = 0; $this->quote_open = 0; $this->quote_closed = 0; if ($allow["HTML"]!="Y") { if ($bPreview) { $text = preg_replace("#^(.+?)<cut[\s]*(/>|>).*?$#is", "\\1", $text); $text = preg_replace("#^(.+?)\[cut[\s]*(/\]|\]).*?$#is", "\\1", $text); } else { $text = preg_replace("#<cut[\s]*(/>|>)#is", "[cut]", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#<a[^>]+href\s*=[\s\"']*((http|https|mailto|ftp)://[-_:A-Za-z0-9@]+(\.[-~,_/=:~A-Za-z0-9@&?=%]+)+)[\s\"']*[^>]*>(.+?)</a[^>]*>#is", "[url=\\1]\\4[/url]", $text); $text = preg_replace("'(^|\s)((http|https|news|ftp)://[-_:A-Za-z0-9@]+(\.[-~,_/=:A-Za-z0-9#@&?=%+]+)+)'is", "[url]\\2[/url]", $text); } if ($allow["BIU"]=="Y") { $text = preg_replace("#<b(\s+[^>]*>|>)(.+?)</b\s*>#is", "[b]\\2[/b]", $text); $text = preg_replace("#<u(\s+[^>]*>|>)(.+?)</u\s*>#is", "[u]\\2[/u]", $text); $text = preg_replace("#<i(\s+[^>]*>|>)(.+?)</i\s*>#is", "[i]\\2[/i]", $text); } if ($allow["IMG"]=="Y") { $text = preg_replace("#<img[^>]+src\s*=[\s\"']*((http|https|mailto|ftp)://[-_:A-Za-z0-9@]+(\.[-~,_/=:A-Za-z0-9@{}&?%]+)+)[\s\"']*[^>]*>#is", "[img]\\1[/img]", $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#<(/?)code(.*?)>#is", "[\\1code]", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1quote]", $text); } if ($allow["FONT"]=="Y") { $text = preg_replace("#<font[^>]+size\s*=[\s\"']*([0-9]+)[\s\"']*[^>]*>(.+?)</font[^>]*>#is", "[size=\\1]\\2[/size]", $text); $text = preg_replace("/<font[^>]+color\s*=[\s\"']*(#[0-9]{6}|[a-zA-Z]+)[\s\"']*[^>]*>(.+?)<\/font[^>]*>/is", "[color=\\1]\\2[/color]", $text); $text = preg_replace("/<font[^>]+face\s*=[\s\"']*([a-zA-Z -]+)[\s\"']*[^>]*>(.+?)<\/font[^>]*>/is", "[font=\\1]\\2[/font]", $text); } if ($allow["LIST"]=="Y") { $text = preg_replace("#<ul(\s+[^>]*>|>)(.+?)</ul(\s+[^>]*>|>)#is", "[list]\\2[/list]", $text); $text = preg_replace("#<li(\s+[^>]*>|>)#is", "[*]", $text); } if (strlen($text)>0) { $text = str_replace("<", "<", $text); $text = str_replace(">", ">", $text); $text = str_replace("\"", """, $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#\[code(\s+[^\]]*\]|\])(.+?)\[/code(\s+[^\]]*\]|\])#ies", "\$this->convert_code_tag('\\2')", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#(\[quote(.*?)\](.*)\[/quote(.*?)\])#ies", "\$this->convert_quote_tag('\\1')", $text); } if ($allow["IMG"]=="Y") { $text = preg_replace("#\[img\](.+?)\[/img\]#ie", "\$this->convert_image_tag('\\1')", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#\[url\](\S+?)\[/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\1', '')", $text); $text = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\2', '')", $text); } if ($allow["BIU"]=="Y") { $text = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $text); $text = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $text); $text = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $text); } if ($allow["LIST"]=="Y") { $text = preg_replace("#\[list\](.+?)\[/list\]#is", "<ul>\\1</ul>", $text); $text = preg_replace("#\[\*\]#", "<li>", $text); } if ($allow["FONT"]=="Y") { while (preg_match("#\[size\s*=\s*([^\]]+)\](.+?)\[/size\]#ies", $text)) { $text = preg_replace("#\[size\s*=\s*([^\]]+)\](.+?)\[/size\]#ies", "\$this->convert_font_attr('size', '\\1', '\\2')", $text); } while (preg_match("#\[font\s*=\s*([^\]]+)\](.*?)\[/font\]#ies", $text)) { $text = preg_replace("#\[font\s*=\s*([^\]]+)\](.*?)\[/font\]#ies", "\$this->convert_font_attr('font', '\\1', '\\2')", $text); } while (preg_match("#\[color\s*=\s*([^\]]+)\](.+?)\[/color\]#ies", $text)) { $text = preg_replace("#\[color\s*=\s*([^\]]+)\](.+?)\[/color\]#ies", "\$this->convert_font_attr('color', '\\1', '\\2')", $text); } } // $text = preg_replace("#(^|\s)((http|https|news|ftp)://[-_:A-Za-z0-9@]+(\.[-_/=:A-Za-z0-9@&?=%]+)+)#ie", "\$this->convert_anchor_tag('\\2', '\\2', '\\1')", $text); $text = preg_replace("#\(c\)#i", "©", $text); $text = preg_replace("#\(tm\)#i", "™", $text); $text = preg_replace("#\(r\)#i", "®", $text); $text = preg_replace("/\n/", "<br />", $text); if (!$bPreview) { $text = preg_replace("#\[cut[\s]*(/\]|\])#is", "<a name=\"cut\"></a>", $text); } if ($this->MaxStringLen>0) { $text = preg_replace("#(^|>)([^<]+)(<|$)#ies", "\$this->part_long_words('\\1', '\\2', '\\3')", $text); } } else { if ($allow["NL2BR"]=="Y") { $text = preg_replace("/\n/", "<br />", $text); } if ($bPreview) { $text = preg_replace("#^(.+?)<cut[\s]*(/>|>).*?$#is", "\\1", $text); $text = preg_replace("#^(.+?)\[cut[\s]*(/\]|\]).*?$#is", "\\1", $text); } else { $text = preg_replace("#<cut[\s]*(/>|>)#is", "[cut]", $text); } if ($allow["IMG"]=="Y") { $text = preg_replace("#\[img\](.+?)\[/img\]#ie", "\$this->convert_image_tag('\\1')", $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#<(/?)code(.*?)>#is", "[\\1code]", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1quote]", $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#\[code(\s+[^\]]*\]|\])(.+?)\[/code(\s+[^\]]*\]|\])#ies", "\$this->convert_code_tag('\\2')", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#(\[quote(.*?)\](.*)\[/quote(.*?)\])#ies", "\$this->convert_quote_tag('\\1')", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#\[url\](\S+?)\[/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\1', '')", $text); $text = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\2', '')", $text); } if (!$bPreview) { $text = preg_replace("#\[cut[\s]*(/\]|\])#is", "<a name=\"cut\"></a>", $text); } } if ($allow["SMILES"]=="Y") { if (count($this->smiles) > 0) { $arPattern = array(); $arReplace = array(); foreach ($this->smiles as $a_id => $row) { $code = preg_quote(str_replace("'", "\\'", $row["TYPING"]), "/"); $image = preg_quote(str_replace("'", "\\'", $row["IMAGE"])); $description = preg_quote(htmlspecialcharsbx($row["DESCRIPTION"], ENT_QUOTES), "/"); $arPattern[] = "/(?<=[^\w&])$code(?=.\W|\W.|\W$)/ei".BX_UTF_PCRE_MODIFIER; $arReplace[] = "\$this->convert_emoticon('$code', '$image', '$description')"; } if (!empty($arPattern)) $text = preg_replace($arPattern, $arReplace, ' '.$text.' '); //foreach ($this->smiles as $a_id => $row) //{ //$code = str_replace("'", "\'", $row["TYPING"]); //$image = $row["IMAGE"]; //$description = htmlspecialcharsbx($row["DESCRIPTION"], ENT_QUOTES); //$code = preg_quote($code, "/"); //$description = preg_quote($description, "/"); //$text = preg_replace("!(?<=[^\w&])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image', '$description')", ' '.$text.' '); //} } } /* while (is_array($arImages) && list($IMAGE_ID, $FILE_ID)=each($arImages)) { $f = CSocNetImage::GetByID($IMAGE_ID); $text = str_replace("[IMG ID=$IMAGE_ID]",CFile::ShowImage($FILE_ID,null,null,"title=\"".htmlspecialcharsbx($f['TITLE'])."\""), $text); $text = str_replace("[img id=$IMAGE_ID]",CFile::ShowImage($FILE_ID,null,null,"title=\"".htmlspecialcharsbx($f['TITLE'])."\""), $text); } */ return $text; } function killAllTags($text) { if (method_exists("CTextParser", "clearAllTags")) return CTextParser::clearAllTags($text); $text = strip_tags($text); $text = preg_replace("#<(/?)quote(.*?)>#is", "", $text); $text = preg_replace("#<(/?)code(.*?)>#is", "", $text); $text = preg_replace("#\[(/?)(b|u|i|list|code|quote|url|img)(.*?)\]#is", "", $text); $text = preg_replace("/^(\r|\n)+?(.*)$/", "\\2", $text); $text = preg_replace("/^<br>+?(.*)$/", "\\2", $text); return $text; } function convert4mail($text) { $text = Trim($text); if (strlen($text)<=0) return ""; $text = preg_replace("#<(/?)code(.*?)>#is", "[\\1code]", $text); $text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1qoute]", $text); $text = preg_replace("#\[code(.*?)\]#is", "\n>================== CODE ===================\n", $text); $text = preg_replace("#\[/code(.*?)\]#is", "\n>===========================================\n", $text); $text = preg_replace("/^(\r|\n)+?(.*)$/", "\\2", $text); $text = preg_replace("#\[b\](.+?)\[/b\]#is", "\\1", $text); $text = preg_replace("#\[i\](.+?)\[/i\]#is", "\\1", $text); $text = preg_replace("#\[u\](.+?)\[/u\]#is", "_\\1_", $text); $text = preg_replace("#\[color(.*?)\](.+?)\[/color\]#is", "\\2", $text); $text = preg_replace("#\[font(.*?)\](.+?)\[/font\]#is", "\\2", $text); $text = preg_replace("#\[quote(.*?)\]#is", "\n>================== QUOTE ==================\n", $text); $text = preg_replace("#\[/quote(.*?)\]#is", "\n>===========================================\n", $text); $text = preg_replace("#\[url\](\S+?)\[/url\]#is", "\\1", $text); $text = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#is", "\\2 ( \\1 )", $text); $text = preg_replace("#\[img\](.+?)\[/img\]#is", "(IMAGE: \\1)", $text); $text = preg_replace("#\[list\]#is", "\n", $text); $text = preg_replace("#\[/list\]#is", "\n", $text); return $text; } function convert_emoticon($code = "", $image = "", $description = "", $servername = "") { if (strlen($code)<=0 || strlen($image)<=0) return; $code = stripslashes($code); $description = stripslashes($description); $image = stripslashes($image); if ($this->path_to_smile !== false) return '<img src="'.$servername.$this->path_to_smile.$image.'" border="0" alt="'.$description.'" />'; return '<img src="'.$servername.'/bitrix/images/socialnetwork/smile/'.$image.'" border="0" alt="'.$description.'" />'; } function convert_code_tag($text = "") { if (strlen($text)<=0) return; $text = stripslashes($text); $text = str_replace(array("<", ">"), array("<", ">"), $text); $text = str_replace(" ", "&nbsp;", $text); $text = preg_replace("# {2}#", " ", $text); $text = preg_replace("#\t#", " ", $text); $text = preg_replace("#^(.*?)$#", " \\1", $text); return "<br /><small><b>".GetMessage("SONET_CODE")."</b></small><table class='sonetcode'><tr><td>".$text."</td></tr></table>"; } function convert_code_tag_rss($text = "") { if (strlen($text)<=0) return; $text = stripslashes($text); $text = str_replace(array("<", ">"), array("<", ">"), $text); $text = str_replace(" ", "&nbsp;", $text); $text = preg_replace("# {2}#", " ", $text); $text = preg_replace("#\t#", " ", $text); $text = preg_replace("#^(.*?)$#", " \\1", $text); return "\n====code====\n".$text."\n===========\n"; } function convert_quote_tag($text = "") { if (strlen($text)<=0) return; $txt = $text; $txt = preg_replace("#\[quote\]#ie", "\$this->convert_open_quote_tag()", $txt); $txt = preg_replace("#\[/quote\]#ie", "\$this->convert_close_quote_tag()", $txt); $txt = preg_replace("/\n/", "<br />", $txt); if (($this->quote_open==$this->quote_closed) && ($this->quote_error==0)) { return $txt; } else { return $text; } } function convert_quote_tag_rss($text = "") { if (strlen($text)<=0) return; $txt = $text; $txt = preg_replace("#\[quote\]#ie", "\$this->convert_open_quote_tag_rss()", $txt); $txt = preg_replace("#\[/quote\]#ie", "\$this->convert_close_quote_tag_rss()", $txt); $txt = preg_replace("/\n/", "<br />", $txt); if (($this->quote_open==$this->quote_closed) && ($this->quote_error==0)) { return $txt; } else { return $text; } } function convert_open_quote_tag() { $this->quote_open++; return '<br /><div class="socnet-quote"><span class="socnet-quote-title">'.GetMessage("SONET_QUOTE").'<br /></span>'; } function convert_open_3_tag_rss() { $this->quote_open++; return "\n====quote====\n"; } function convert_close_quote_tag() { if ($this->quote_open == 0) { $this->quote_error++; return; } $this->quote_closed++; return '</div><br style="clear:both" />'; } function convert_close_quote_tag_rss() { if ($this->quote_open == 0) { $this->quote_error++; return; } $this->quote_closed++; return "\n===========\n"; } function convert_image_tag($url = "") { if (strlen($url)<=0) return; $url = trim($url); $extension = preg_replace("/^.*\.(\S+)$/", "\\1", $url); $extension = strtolower($extension); $extension = preg_quote($extension, "/"); $bErrorIMG = False; if (preg_match("/[?&;]/", $url)) $bErrorIMG = True; if (!$bErrorIMG && !preg_match("/$extension(\||\$)/", $this->allow_img_ext)) $bErrorIMG = True; if (!$bErrorIMG && !preg_match("/^(http|https|ftp|\/)/i", $url)) $bErrorIMG = True; if ($bErrorIMG) { return "[img]".$url."[/img]"; } return "<img src='$url' border='0'>"; } function convert_font_attr($attr, $value = "", $text = "") { if (strlen($text)<=0) return ""; if (strlen($value)<=0) return $text; if ($attr == "size") { $count = count($this->arFontSize); if ($count <= 0) return $text; $value = intVal($value >= $count ? ($count) : $value); return "<span style='font-size:".$this->arFontSize[$value]."%;'>".$text."</span>"; } else if ($attr == 'color') { $value = preg_replace("/[^\w#]/", "" , $value); return '<span style="color:'.$value.'">'.$text.'</span>'; } else if ($attr == 'font') { $value = preg_replace("/[^\w]/", "" , $value); return '<span style="font-family:'.$value.'">'.$text.'</span>'; } } function part_long_words($str1, $str2, $str3) { $str2 = str_replace(chr(1), "", $str2); $str2 = str_replace(chr(2), "", $str2); $str2 = str_replace(chr(3), "", $str2); $str2 = str_replace(chr(4), "", $str2); $str2 = str_replace(chr(5), "", $str2); $str2 = str_replace("&", chr(5), $str2); $str2 = str_replace("<", "<", $str2); $str2 = str_replace(">", ">", $str2); $str2 = str_replace(""", "\"", $str2); $str2 = str_replace(" ", chr(1), $str2); $str2 = str_replace("©", chr(2), $str2); $str2 = str_replace("®", chr(3), $str2); $str2 = str_replace("™", chr(4), $str2); $str2 = preg_replace("/[^ \n\r\t\x01]{".$this->MaxStringLen."}/","\\1<WBR>", $str2); $str2 = str_replace(chr(5), "&", $str2); $str2 = str_replace("<", "<", $str2); $str2 = str_replace(">", ">", $str2); $str2 = str_replace("\"", """, $str2); $str2 = str_replace(chr(1), " ", $str2); $str2 = str_replace(chr(2), "©", $str2); $str2 = str_replace(chr(3), "®", $str2); $str2 = str_replace(chr(4), "™", $str2); $str2 = str_replace("<WBR>", "<WBR>", $str2); return $str1.$str2.$str3; } function convert_anchor_tag($url, $text, $pref="") { $bCutUrl = True; $end = ""; if (preg_match("/([\.,\?]|!)$/", $url, $match)) { $end = $match[1]; $url = preg_replace("/([\.,\?]|!)$/", "", $url); $text = preg_replace("/([\.,\?]|!)$/", "", $text); } if (preg_match("/\[\/(quote|code)/i", $url)) return $url; $url = str_replace("&", "&" , $url); $url = preg_replace("/javascript:/i", "java script: ", $url); if (!preg_match("#^(http|news|https|ftp|aim)://#", $url)) { $url = 'http://'.$url; } if (!preg_match("/^(http|https|news|ftp|aim):\/\/[-_:A-Za-z0-9@.~,_\/=:#&?%+]+$/i", $url)) return $pref.$text." (".$url.")".$end; if (preg_match("/^<img\s+src/i", $text)) $bCutUrl = False; $text = str_replace("&", "&", $text); $text = preg_replace("/javascript:/i", "javascript: ", $text); if ($bCutUrl && strlen($text) < 55) $bCutUrl = False; if ($bCutUrl && !preg_match("/^(http|ftp|https|news):\/\//i", $text)) $bCutUrl = False; if ($bCutUrl) { $stripped = preg_replace("#^(http|ftp|https|news)://(\S+)$#i", "\\2", $text); $uri_type = preg_replace("#^(http|ftp|https|news)://(\S+)$#i", "\\1", $text); $text = $uri_type.'://'.substr($stripped, 0, 30).'...'.substr($stripped, -10); } return $pref."<a href='".$url."' target='_blank'>".$text."</a>".$end; } function convert_to_rss($text, $arImages = Array(), $allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N")) //, "KEEP_AMP" => "N" { global $DB; $text = preg_replace("#([?&;])PHPSESSID=([0-9a-zA-Z]{32})#is", "\\1PHPSESSID1=", $text); $this->quote_error = 0; $this->quote_open = 0; $this->quote_closed = 0; if ($allow["HTML"]!="Y") { $text = preg_replace("#^(.+?)<cut[\s]*(/>|>).*?$#is", "\\1", $text); $text = preg_replace("#^(.+?)\[cut[\s]*(/\]|\]).*?$#is", "\\1", $text); if ($allow["IMG"]=="Y") { $text = preg_replace("#<img[^>]+src\s*=[\s\"']*((http|https|mailto|ftp)://[-_:A-Za-z0-9@]+(\.[-~,_/=:A-Za-z0-9@{}&?%]+)+)[\s\"']*[^>]*>#is", "[img]\\1[/img]", $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#<(/?)code(.*?)>#is", "[\\1code]", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1qoute]", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#<a[^>]+href\s*=[\s\"']*((http|https|mailto|ftp)://[-_:A-Za-z0-9@]+(\.[-_/=:A-Za-z0-9@&?=%]+)+)[\s\"']*[^>]*>(.+?)</a[^>]*>#is", "[url=\\1]\\4[/url]", $text); } if ($allow["BIU"]=="Y") { $text = preg_replace("#<b(\s+[^>]*>|>)(.+?)</b\s*>#is", "[b]\\2[/b]", $text); $text = preg_replace("#<u(\s+[^>]*>|>)(.+?)</u\s*>#is", "[u]\\2[/u]", $text); $text = preg_replace("#<i(\s+[^>]*>|>)(.+?)</i\s*>#is", "[i]\\2[/i]", $text); } if ($allow["FONT"]=="Y") { $text = preg_replace("#<font[^>]+size\s*=[\s\"']*([0-9]+)[\s\"']*[^>]*>(.+?)</font[^>]*>#is", "[size=\\1]\\2[/size]", $text); $text = preg_replace("/<font[^>]+color\s*=[\s\"']*(#[0-9]{6}|[a-zA-Z]+)[\s\"']*[^>]*>(.+?)<\/font[^>]*>/is", "[color=\\1]\\2[/color]", $text); $text = preg_replace("/<font[^>]+face\s*=[\s\"']*([a-zA-Z -]+)[\s\"']*[^>]*>(.+?)<\/font[^>]*>/is", "[font=\\1]\\2[/font]", $text); } if ($allow["LIST"]=="Y") { $text = preg_replace("#<ul(\s+[^>]*>|>)(.+?)</ul(\s+[^>]*>|>)#is", "[list]\\2[/list]", $text); $text = preg_replace("#<li(\s+[^>]*>|>)#is", "[*]", $text); } $text = preg_replace("'(^|\s)((http|https|news|ftp)://[-_:A-Za-z0-9@]+(\.[-_/=:A-Za-z0-9#@&?=%+]+)+)'is", "\\1[url]\\2[/url]", $text); // $text = htmlspecialcharsEx($text); if (strlen($text)>0) { $text = str_replace("<", "<", $text); $text = str_replace(">", ">", $text); $text = str_replace("\"", """, $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#\[code(\s+[^\]]*\]|\])(.+?)\[/code(\s+[^\]]*\]|\])#ies", "\$this->convert_code_tag_rss('\\2')", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#(\[quote(.*?)\](.*)\[/quote(.*?)\])#ies", "\$this->convert_quote_tag_rss('\\1')", $text); } if ($allow["IMG"]=="Y") { $text = preg_replace("#\[img\](.+?)\[/img\]#ies", "\$this->convert_image_tag('\\1')", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#\[url\](\S+?)\[/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\1', '')", $text); $text = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\2', '')", $text); } if ($allow["BIU"]=="Y") { $text = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $text); $text = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $text); $text = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $text); } if ($allow["LIST"]=="Y") { $text = preg_replace("#\[list\](.+?)\[/list\]#is", "<ul>\\1</ul>", $text); $text = preg_replace("#\[\*\]#", "<li>", $text); } if ($allow["FONT"]=="Y") { while (preg_match("#\[size\s*=\s*([^\]]+)\](.+?)\[/size\]#ies", $text)) { $text = preg_replace("#\[size\s*=\s*([^\]]+)\](.+?)\[/size\]#ies", "\$this->convert_font_attr('size', '\\1', '\\2')", $text); } while (preg_match("#\[font\s*=\s*([^\]]+)\](.*?)\[/font\]#ies", $text)) { $text = preg_replace("#\[font\s*=\s*([^\]]+)\](.*?)\[/font\]#ies", "\$this->convert_font_attr('font', '\\1', '\\2')", $text); } while (preg_match("#\[color\s*=\s*([^\]]+)\](.+?)\[/color\]#ies", $text)) { $text = preg_replace("#\[color\s*=\s*([^\]]+)\](.+?)\[/color\]#ies", "\$this->convert_font_attr('color', '\\1', '\\2')", $text); } } // $text = preg_replace("#(^|\s)((http|https|news|ftp)://[-_:A-Za-z0-9@]+(\.[-_/=:A-Za-z0-9@&?=%]+)+)#ie", "\$this->convert_anchor_tag('\\2', '\\2', '\\1')", $text); $text = preg_replace("#\(c\)#i", "©", $text); $text = preg_replace("#\(tm\)#i", "™", $text); $text = preg_replace("#\(r\)#i", "®", $text); $text = str_replace("\n", "<br />", $text); if ($this->MaxStringLen>0) { $text = preg_replace("#(^|>)([^<]+)(<|$)#ies", "\$this->part_long_words('\\1', '\\2', '\\3')", $text); } } else { if ($allow["NL2BR"]=="Y") { $text = str_replace("\n", "<br />", $text); } if ($bPreview) { $text = preg_replace("#^(.+?)<cut[\s]*(/>|>).*?$#is", "\\1", $text); $text = preg_replace("#^(.+?)\[cut[\s]*(/\]|\]).*?$#is", "\\1", $text); } else { $text = preg_replace("#<cut[\s]*(/>|>)#is", "[cut]", $text); } /* if ($allow["CODE"]=="Y") { $text = preg_replace("#<(/?)code(.*?)>#is", "[\\1code]", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1quote]", $text); } if ($allow["CODE"]=="Y") { $text = preg_replace("#\[code(\s+[^\]]*\]|\])(.+?)\[/code(\s+[^\]]*\]|\])#ies", "\$this->convert_code_tag('\\2')", $text); } if ($allow["QUOTE"]=="Y") { $text = preg_replace("#(\[quote(.*?)\](.*)\[/quote(.*?)\])#ies", "\$this->convert_quote_tag('\\1')", $text); } */ if ($allow["IMG"]=="Y") { $text = preg_replace("#\[img\](.+?)\[/img\]#ie", "\$this->convert_image_tag('\\1')", $text); } if ($allow["ANCHOR"]=="Y") { $text = preg_replace("#\[url\](\S+?)\[/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\1', '')", $text); $text = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie", "\$this->convert_anchor_tag('\\1', '\\2', '')", $text); } if (!$bPreview) { $text = preg_replace("#\[cut[\s]*(/\]|\])#is", "<a name=\"cut\"></a>", $text); } } $dbSite = CSite::GetByID(SITE_ID); $arSite = $dbSite->Fetch(); $serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]); if (strlen($serverName) <=0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME)>0) $serverName = SITE_SERVER_NAME; else $serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); } if ($allow["SMILES"]=="Y") { if (count($this->smiles) > 0) { $siteUrl = "http://".$serverName; foreach ($this->smiles as $a_id => $row) { $code = str_replace("'", "\'", $row["TYPING"]); $image = $row["IMAGE"]; $description = htmlspecialcharsbx($row["DESCRIPTION"], ENT_QUOTES); $code = preg_quote($code, "/"); $description = preg_quote($description, "/"); $text = preg_replace("!(?<=[^\w&])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image', '$description', '$siteUrl')", ' '.$text.' '); } } } return $text; } } class CSocNetTools { function InitImage($imageID, $imageSize, $defaultImage, $defaultImageSize, $imageUrl, $showImageUrl, $urlParams=false) { $imageFile = false; $imageImg = ""; $imageSize = intval($imageSize); if($imageSize <= 0) $imageSize = 100; $defaultImageSize = intval($defaultImageSize); if($defaultImageSize <= 0) $defaultImageSize = 100; $imageUrl = trim($imageUrl); $imageID = intval($imageID); if($imageID > 0) { $imageFile = CFile::GetFileArray($imageID); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet( $imageFile, array("width" => $imageSize, "height" => $imageSize), BX_RESIZE_IMAGE_PROPORTIONAL, false ); $imageImg = CFile::ShowImage($arFileTmp["src"], $imageSize, $imageSize, "border=0", "", ($imageUrl == '')); } } if($imageImg == '') $imageImg = "<img src=\"".$defaultImage."\" width=\"".$defaultImageSize."\" height=\"".$defaultImageSize."\" border=\"0\" alt=\"\" />"; if($imageUrl <> '' && $showImageUrl) $imageImg = "<a href=\"".$imageUrl."\"".($urlParams !== false? ' '.$urlParams:'').">".$imageImg."</a>"; return array("FILE" => $imageFile, "IMG" => $imageImg); } function htmlspecialcharsExArray($array) { $res = Array(); if(!empty($array) && is_array($array)) { foreach($array as $k => $v) { if(is_array($v)) { foreach($v as $k1 => $v1) { $res[$k1] = htmlspecialcharsex($v1); $res['~'.$k1] = $v1; } } else { $res[$k] = htmlspecialcharsex($v); $res['~'.$k] = $v; } } } return $res; } function ResizeImage($aFile, $sizeX, $sizeY) { $result = CFile::ResizeImageGet($aFile, array("width" => $sizeX, "height" => $sizeY)); if(is_array($result)) return $result["src"]; else return false; } function GetDateTimeFormat() { $timestamp = mktime(7,30,45,2,22,2007); return array( "d-m-Y H:i:s" => date("d-m-Y H:i:s", $timestamp),//"22-02-2007 7:30", "m-d-Y H:i:s" => date("m-d-Y H:i:s", $timestamp),//"02-22-2007 7:30", "Y-m-d H:i:s" => date("Y-m-d H:i:s", $timestamp),//"2007-02-22 7:30", "d.m.Y H:i:s" => date("d.m.Y H:i:s", $timestamp),//"22.02.2007 7:30", "m.d.Y H:i:s" => date("m.d.Y H:i:s", $timestamp),//"02.22.2007 7:30", "j M Y H:i:s" => date("j M Y H:i:s", $timestamp),//"22 Feb 2007 7:30", "M j, Y H:i:s" => date("M j, Y H:i:s", $timestamp),//"Feb 22, 2007 7:30", "j F Y H:i:s" => date("j F Y H:i:s", $timestamp),//"22 February 2007 7:30", "F j, Y H:i:s" => date("F j, Y H:i:s", $timestamp),//"February 22, 2007", "d.m.y g:i A" => date("d.m.y g:i A", $timestamp),//"22.02.07 1:30 PM", "d.m.y G:i" => date("d.m.y G:i", $timestamp),//"22.02.07 7:30", "d.m.Y H:i:s" => date("d.m.Y H:i:s", $timestamp),//"22.02.2007 07:30", ); } function Birthday($datetime, $gender, $showYear = "N") { if (StrLen($datetime) <= 0) return false; $arDateTmp = ParseDateTime($datetime, CSite::GetDateFormat('SHORT')); $day = IntVal($arDateTmp["DD"]); $month = IntVal($arDateTmp["MM"]); $year = IntVal($arDateTmp["YYYY"]); $val = $day.' '.ToLower(GetMessage('MONTH_'.$month.'_S')); if (($showYear == 'Y') || ($showYear == 'M' && $gender == 'M')) $val .= ' '.$year; return array( "DATE" => $val, "MONTH" => Str_Pad(IntVal($arDateTmp["MM"]), 2, "0", STR_PAD_LEFT), "DAY" => Str_Pad(IntVal($arDateTmp["DD"]), 2, "0", STR_PAD_LEFT) ); } } ?>