public static function Update($ID, $arFields) { global $DB, $CACHE_MANAGER; $ID = IntVal($ID); if ($ID <= 0) { return False; } if (!CBlogSmile::CheckFields("UPDATE", $arFields)) { return false; } $strUpdate = $DB->PrepareUpdate("b_blog_smile", $arFields); $strSql = "UPDATE b_blog_smile SET " . $strUpdate . " WHERE ID = " . $ID; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_blog_smile_lang WHERE SMILE_ID = " . $ID . ""); for ($i = 0; $i < count($arFields["LANG"]); $i++) { $arInsert = $DB->PrepareInsert("b_blog_smile_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_blog_smile_lang(SMILE_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } $CACHE_MANAGER->Clean("b_blog_smile"); BXClearCache(true, "/blog/smiles/"); return $ID; }
function blogTextParser($strLang = False, $pathToSmile = false) { $this->CTextParser(); global $CACHE_MANAGER; if ($strLang===False) $strLang = LANGUAGE_ID; if(strlen($pathToSmile) <= 0) $pathToSmile = "/bitrix/images/blog/smile/"; $this->pathToSmile = $pathToSmile; $this->imageWidth = COption::GetOptionString("blog", "image_max_width", 600); $this->imageHeight = COption::GetOptionString("blog", "image_max_height", 1000); $this->showedImages = array(); $this->ajaxPage = $GLOBALS["APPLICATION"]->GetCurPageParam("", array("bxajaxid", "logout")); $this->blogImageSizeEvents = GetModuleEvents("blog", "BlogImageSize", true); $this->arUserfields = array(); $arSmiles = array(); $this->smiles = array(); if($CACHE_MANAGER->Read(60*60*24*365, "b_blog_smile")) { $arSmiles = $CACHE_MANAGER->Get("b_blog_smile"); } else { $db_res = CBlogSmile::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" => $tok, "IMAGE" => stripslashes($res["IMAGE"]), "DESCRIPTION" => stripslashes($res["NAME"])); $tok = strtok(" "); } } function sortlen($a, $b) { if (strlen($a["TYPING"]) == strlen($b["TYPING"])) return 0; return (strlen($a["TYPING"]) > strlen($b["TYPING"])) ? -1 : 1; } if(!empty($arSmiles)) { foreach ($arSmiles as $LID => $arSmilesLID) { uasort($arSmilesLID, 'sortlen'); $arSmiles[$LID] = $arSmilesLID; } } $CACHE_MANAGER->Set("b_blog_smile", $arSmiles); } $this->smiles = $arSmiles[$strLang]; }
$Vars = $cache->GetVars(); foreach ($Vars["arResult"] as $k => $v) { if (!array_key_exists($k, $arResult)) { $arResult[$k] = $v; } } CBitrixComponentTemplate::ApplyCachedData($Vars["templateCachedData"]); $cache->Output(); } else { if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); } $arResult["CommentsResult"] = array(); $arSelectFields = array("ID", "SMILE_TYPE", "TYPING", "IMAGE", "DESCRIPTION", "CLICKABLE", "SORT", "IMAGE_WIDTH", "IMAGE_HEIGHT", "LANG_NAME"); $arSmiles = array(); $res = CBlogSmile::GetList(array("SORT" => "ASC", "ID" => "DESC"), array("SMILE_TYPE" => "S", "LANG_LID" => LANGUAGE_ID), false, false, $arSelectFields); while ($arr = $res->GetNext()) { list($type) = explode(" ", $arr["TYPING"]); $arr["TYPE"] = str_replace("'", "\\'", $type); $arr["TYPE"] = str_replace("\\", "\\\\", $arr["TYPE"]); $arSmiles[] = $arr; } $arResult["Smiles"] = $arSmiles; if (IntVal($arParams["ID"]) > 0) { $arOrder = array("ID" => "ASC", "DATE_CREATE" => "ASC"); $arFilter = array("POST_ID" => $arParams["ID"]); if ($arResult["Perm"] < BLOG_PERMS_MODERATE || !$arResult["IDEA_MODERATOR"]) { $arFilter["PUBLISH_STATUS"] = BLOG_PUBLISH_STATUS_PUBLISH; } $arSelectedFields = array("ID", "BLOG_ID", "POST_ID", "PARENT_ID", "AUTHOR_ID", "AUTHOR_NAME", "AUTHOR_EMAIL", "AUTHOR_IP", "AUTHOR_IP1", "TITLE", "POST_TEXT", "DATE_CREATE", "PUBLISH_STATUS"); $dbComment = CBlogComment::GetList($arOrder, array_merge($extFilter, $arFilter), false, false, $arSelectedFields);
function InstallDB($install_wizard = true) { global $DB, $DBType, $APPLICATION, $install_smiles; if (!$DB->Query("SELECT 'x' FROM b_blog_user_group", true)) { $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/blog/install/".$DBType."/install.sql"); COption::SetOptionString("blog", "socNetNewPerms", "Y"); } if (empty($errors)) { $errors = $this->InstallUserFields(); } if (!empty($errors)) { $APPLICATION->ThrowException(implode("", $errors)); return false; } RegisterModule("blog"); RegisterModuleDependences("search", "OnReindex", "blog", "CBlogSearch", "OnSearchReindex"); RegisterModuleDependences("main", "OnUserDelete", "blog", "CBlogUser", "Delete"); RegisterModuleDependences("main", "OnSiteDelete", "blog", "CBlogSitePath", "DeleteBySiteID"); RegisterModuleDependences("socialnetwork", "OnSocNetGroupDelete", "blog", "CBlogSoNetPost", "OnGroupDelete"); RegisterModuleDependences("socialnetwork", "OnSocNetFeaturesAdd", "blog", "CBlogSearch", "SetSoNetFeatureIndexSearch"); RegisterModuleDependences("socialnetwork", "OnSocNetFeaturesUpdate", "blog", "CBlogSearch", "SetSoNetFeatureIndexSearch"); RegisterModuleDependences("socialnetwork", "OnSocNetFeaturesPermsAdd", "blog", "CBlogSearch", "SetSoNetFeaturePermIndexSearch"); RegisterModuleDependences("socialnetwork", "OnSocNetFeaturesPermsUpdate", "blog", "CBlogSearch", "SetSoNetFeaturePermIndexSearch"); RegisterModuleDependences("main", "OnAfterAddRating", "blog", "CRatingsComponentsBlog", "OnAfterAddRating", 200); RegisterModuleDependences("main", "OnAfterUpdateRating", "blog", "CRatingsComponentsBlog", "OnAfterUpdateRating", 200); RegisterModuleDependences("main", "OnSetRatingsConfigs", "blog", "CRatingsComponentsBlog", "OnSetRatingConfigs", 200); RegisterModuleDependences("main", "OnGetRatingsConfigs", "blog", "CRatingsComponentsBlog", "OnGetRatingConfigs", 200); RegisterModuleDependences("main", "OnGetRatingsObjects", "blog", "CRatingsComponentsBlog", "OnGetRatingObject", 200); RegisterModuleDependences("main", "OnGetRatingContentOwner", "blog", "CRatingsComponentsBlog", "OnGetRatingContentOwner", 200); RegisterModuleDependences("im", "OnGetNotifySchema", "blog", "CBlogNotifySchema", "OnGetNotifySchema"); RegisterModuleDependences("main", "OnAfterRegisterModule", "main", "blog", "installUserFields", 100, "/modules/blog/install/index.php"); // check UF RegisterModuleDependences('conversion', 'OnGetCounterTypes' , 'blog', '\Bitrix\Blog\Internals\ConversionHandlers', 'onGetCounterTypes'); RegisterModuleDependences('conversion', 'OnGetRateTypes' , 'blog', '\Bitrix\Blog\Internals\ConversionHandlers', 'onGetRateTypes'); RegisterModuleDependences('blog', 'OnPostAdd', 'blog', '\Bitrix\Blog\Internals\ConversionHandlers', 'onPostAdd'); CModule::IncludeModule("blog"); if (CModule::IncludeModule("search")) CSearch::ReIndexModule("blog"); if($install_smiles == "Y" || $install_wizard) { $dbSmile = CBlogSmile::GetList(); if(!($dbSmile->Fetch())) { $arSmile = Array( Array( "TYPING" => ":D :-D", "IMAGE" => "icon_biggrin.png", "FICON_SMILE" => "FICON_BIGGRIN", "SORT" => "120", ), Array( "TYPING" => ":) :-)", "IMAGE" => "icon_smile.png", "FICON_SMILE" => "FICON_SMILE", "SORT" => "100", ), Array( "TYPING" => ":( :-(", "IMAGE" => "icon_sad.png", "FICON_SMILE" => "FICON_SAD", "SORT" => "140", ), Array( "TYPING" => ":o :-o :shock:", "IMAGE" => "icon_eek.png", "FICON_SMILE" => "FICON_EEK", "SORT" => "180", ), Array( "TYPING" => "8) 8-)", "IMAGE" => "icon_cool.png", "FICON_SMILE" => "FICON_COOL", "SORT" => "130", ), Array( "TYPING" => ":{} :-{}", "IMAGE" => "icon_kiss.png", "FICON_SMILE" => "FICON_KISS", "SORT" => "200", ), Array( "TYPING" => ":oops:", "IMAGE" => "icon_redface.png", "FICON_SMILE" => "FICON_REDFACE", "SORT" => "190", ), Array( "TYPING" => ":cry: :~(", "IMAGE" => "icon_cry.png", "FICON_SMILE" => "FICON_CRY", "SORT" => "160", ), Array( "TYPING" => ":evil: >:-<", "IMAGE" => "icon_evil.png", "FICON_SMILE" => "FICON_EVIL", "SORT" => "170", ), Array( "TYPING" => ";) ;-)", "IMAGE" => "icon_wink.png", "FICON_SMILE" => "FICON_WINK", "SORT" => "110", ), Array( "TYPING" => ":!:", "IMAGE" => "icon_exclaim.png", "FICON_SMILE" => "FICON_EXCLAIM", "SORT" => "220", ), Array( "TYPING" => ":?:", "IMAGE" => "icon_question.png", "FICON_SMILE" => "FICON_QUESTION", "SORT" => "210", ), Array( "TYPING" => ":idea:", "IMAGE" => "icon_idea.png", "FICON_SMILE" => "FICON_IDEA", "SORT" => "230", ), Array( "TYPING" => ":| :-|", "IMAGE" => "icon_neutral.png", "FICON_SMILE" => "FICON_NEUTRAL", "SORT" => "150", ), ); $arLang = Array(); $dbLangs = CLanguage::GetList(($b = ""), ($o = ""), array("ACTIVE" => "Y")); while ($arLangs = $dbLangs->Fetch()) { IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/blog/install/smiles.php", $arLangs["LID"]); foreach($arSmile as $key => $val) { $arSmile[$key]["LANG"][] = Array("LID" => $arLangs["LID"], "NAME" => GetMessage($val["FICON_SMILE"])); } } foreach($arSmile as $val) { $val["SMILE_TYPE"] = "S"; $val["CLICKABLE"] = "Y"; $val["IMAGE_WIDTH"] = 16; $val["IMAGE_HEIGHT"] = 16; $id = CBlogSmile::Add($val); } } } return true; }
</b> </td> <td class="blogtablebody"> <table cellspacing=0 cellpadding=0 border=0> <tr> <td width=100%><textarea name="POST_MESSAGE" style="width:100%" rows=15 id=MESSAGE><?php echo htmlspecialchars($POST_MESSAGE); ?> </textarea></td> <td valign=middle> <table style="border:1px solid gray;margin-left:10px" cellspacing=5 cellpadding=0 border=0> <?php $arSelectFields = array("ID", "SMILE_TYPE", "TYPING", "IMAGE", "DESCRIPTION", "CLICKABLE", "SORT", "IMAGE_WIDTH", "IMAGE_HEIGHT", "LANG_NAME"); $total = 0; $arSmiles = array(); $res = CBlogSmile::GetList($arOrder = array("SORT" => "ASC", "ID" => "DESC"), $arFilter = array("SMILE_TYPE" => "S", "CLICKABLE" => "Y", "LANG_LID" => LANGUAGE_ID), $arGroupBy = false, $arNavStartParams = false, $arSelectFields); while ($arr = $res->Fetch()) { $total++; $arSmiles[] = $arr; } $cols = ceil($total / 10); for ($i = 0; $i < count($arSmiles); $i++) { if ($i == 0) { print "<tr>"; } elseif ($i % $cols == 0) { print "\n</tr>\n<tr>"; } list($type) = explode(" ", $arSmiles[$i]['TYPING']); $type = str_replace("'", "\\'", $type); print "\n<td align=center><img src='/bitrix/images/blog/smile/{$arSmiles[$i]['IMAGE']}' width='{$arSmiles[$i]['IMAGE_WIDTH']}' height='{$arSmiles[$i]['IMAGE_HEIGHT']}' title='{$arSmiles[$i]['LANG_NAME']}' OnClick=\"emoticon('{$type}')\" style='cursor:pointer'></td>"; }
?> " border="0" <?php echo IntVal($str_IMAGE_WIDTH) > 0 ? "width=\"" . $str_IMAGE_WIDTH . "\"" : ""; ?> <?php echo IntVal($str_IMAGE_WIDTH) > 0 ? "height=\"" . $str_IMAGE_HEIGHT . "\"" : ""; ?> ><?php } ?> </td> </tr> <?php for ($i = 0; $i < count($arSysLangs); $i++) { $arSmileLang = CBlogSmile::GetLangByID($ID, $arSysLangs[$i]); $str_NAME = htmlspecialcharsbx($arSmileLang["NAME"]); $str_DESCRIPTION = htmlspecialcharsbx($arSmileLang["DESCRIPTION"]); if ($bInitVars) { $str_NAME = htmlspecialcharsbx(${"NAME_" . $arSysLangs[$i]}); $str_DESCRIPTION = htmlspecialcharsbx(${"DESCRIPTION_" . $arSysLangs[$i]}); } ?> <tr class="heading"> <td colspan="2">[<?php echo $arSysLangs[$i]; ?> ] <?php echo $arSysLangNames[$i]; ?> </td>
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if ($arResult["CanUserComment"]) { $arResult["Smiles"] = CBlogSmile::GetSmilesList(); $arResult["SmilesCount"] = count($arSmileTmp["Smiles"]); $cache = new CPHPCache(); $cache_id = "blog_form_comments" . serialize($arParams["COMMENT_PROPERTY"]); $cache_path = "/blog/form/comments"; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $Vars = $cache->GetVars(); $arResult["COMMENT_PROPERTIES"] = $Vars["comment_props"]; $cache->Output(); } else { if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); } $arResult["COMMENT_PROPERTIES"] = array("SHOW" => "N"); if (!empty($arParams["COMMENT_PROPERTY"])) { $arPostFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("BLOG_COMMENT", 0, LANGUAGE_ID); if (count($arParams["COMMENT_PROPERTY"]) > 0) { foreach ($arPostFields as $FIELD_NAME => $arPostField) { if (!in_array($FIELD_NAME, $arParams["COMMENT_PROPERTY"])) { continue; } $arPostField["EDIT_FORM_LABEL"] = strLen($arPostField["EDIT_FORM_LABEL"]) > 0 ? $arPostField["EDIT_FORM_LABEL"] : $arPostField["FIELD_NAME"]; $arPostField["~EDIT_FORM_LABEL"] = $arPostField["EDIT_FORM_LABEL"]; $arPostField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arPostField["EDIT_FORM_LABEL"]); $arResult["COMMENT_PROPERTIES"]["DATA"][$FIELD_NAME] = $arPostField;
$dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); // установке параметров списка $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("PAGES"))); // заголовок списка $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("SMILE_ID"), "sort" => "ID", "default" => true), array("id" => "SORT", "content" => GetMessage("SMILE_SORT"), "sort" => "SORT", "default" => true), array("id" => "SMILE_TYPE", "content" => GetMessage('SMILE_TYPE'), "sort" => "SMILE_TYPE", "default" => true), array("id" => "NAME", "content" => GetMessage("BLOG_NAME"), "sort" => "", "default" => true), array("id" => "TYPING", "content" => GetMessage("BLOG_TYPING"), "sort" => "", "default" => true), array("id" => "ICON", "content" => GetMessage("BLOG_SMILE_ICON"), "sort" => "", "default" => true))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); // построение списка while ($arBlog = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arBlog); $row->AddField("ID", '<a href="/bitrix/admin/blog_smile_edit.php?ID=' . $f_ID . '&lang=' . LANGUAGE_ID . '" title="' . GetMessage("BLOG_EDIT_DESCR") . '">' . $f_ID . '</a>'); $row->AddField("SORT", $f_SORT); $row->AddField("SMILE_TYPE", $f_SMILE_TYPE == "I" ? GetMessage("SMILE_TYPE_ICON") : GetMessage("SMILE_TYPE_SMILE")); $fieldShow = ""; if (in_array("NAME", $arVisibleColumns)) { $arSmileLang = CBlogSmile::GetLangByID($f_ID, LANG); $fieldShow .= htmlspecialcharsbx($arSmileLang["NAME"]); } $row->AddField("NAME", $fieldShow); $row->AddField("TYPING", $f_TYPING); $row->AddField("ICON", "<img src=\"/bitrix/images/blog/" . ($f_SMILE_TYPE == "I" ? "icon" : "smile") . "/" . $f_IMAGE . "\" border=\"0\" " . (IntVal($f_IMAGE_WIDTH) > 0 ? "width=\"" . $f_IMAGE_WIDTH . "\"" : "") . " " . (IntVal($f_IMAGE_WIDTH) > 0 ? "height=\"" . $f_IMAGE_HEIGHT . "\"" : "") . ">"); $arActions = array(); if ($blogModulePermissions >= "R") { $arActions[] = array("ICON" => "edit", "TEXT" => GetMessage("BLOG_EDIT_DESCR"), "ACTION" => $lAdmin->ActionRedirect("blog_smile_edit.php?ID=" . $f_ID . "&lang=" . LANG), "DEFAULT" => true); } if ($blogModulePermissions >= "W") { $arActions[] = array("SEPARATOR" => true); $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("BLOG_DELETE_DESCR"), "ACTION" => "if(confirm('" . GetMessage('SMILE_DEL_CONF') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete")); } $row->AddActions($arActions); }
function GetSmilesList() { $cache = new CPHPCache(); $cache_id = "blog_smiles_" . LANGUAGE_ID; $cache_path = "/blog/smiles/"; $arParams["CACHE_TIME"] = 60 * 60 * 24 * 30; if ($arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path)) { $Vars = $cache->GetVars(); $arSmiles = $Vars["arResult"]; } else { if ($arParams["CACHE_TIME"] > 0) { $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path); } $arSelectFields = array("ID", "SMILE_TYPE", "TYPING", "IMAGE", "DESCRIPTION", "CLICKABLE", "SORT", "IMAGE_WIDTH", "IMAGE_HEIGHT", "LANG_NAME"); $arSmiles = array(); $res = CBlogSmile::GetList(array("SORT" => "ASC", "ID" => "DESC"), array("SMILE_TYPE" => "S", "LANG_LID" => LANGUAGE_ID), false, false, $arSelectFields); while ($arr = $res->GetNext()) { list($type) = explode(" ", $arr["TYPING"]); $arr["TYPE"] = str_replace("'", "\\'", $type); $arr["TYPE"] = str_replace("\\", "\\\\", $arr["TYPE"]); $arSmiles[] = $arr; } if ($arParams["CACHE_TIME"] > 0) { $cache->EndDataCache(array("arResult" => $arSmiles)); } } return $arSmiles; }