} $e = new CAdminException($arError); $message = new CAdminMessage($ID > 0 ? GetMessage("ERROR_EDIT_SMILE") : GetMessage("ERROR_ADD_SMILE"), $e); $bInitVars = true; } /******************************************************************** /Action ********************************************************************/ if ($bInitVars && !empty($arFields)) { $arSmile = $arFields; } elseif ($ID > 0) { $db_res = CForumSmile::GetList(array(), array("ID" => $ID)); if ($db_res && ($arSmile = $db_res->Fetch())) { $arSmile["LANG"] = array(); foreach ($arLang as $key => $val) { $name = CForumSmile::GetLangByID($ID, $key); $arSmile["LANG"][$key] = array("LID" => $key, "NAME" => $name["NAME"]); } } } else { $arSmile = array("SORT" => 150, "TYPE" => "S", "TYPING" => "", "IMAGE" => "", "DESCRIPTION" => "", "LANG" => array()); } foreach ($arSmile as $key => $val) { if ($key == "LANG") { continue; } $arSmile[$key] = htmlspecialcharsbx($val); } foreach ($arSmile["LANG"] as $key => $val) { $arSmile["LANG"][$key] = array("LID" => htmlspecialcharsbx($val["LID"]), "NAME" => htmlspecialcharsbx($val["NAME"])); }
$arResult["MID"] = intVal($arParams["MID"]); $arResult["mode"] = $mode; $arResult["SystemFolder"] = FORUM_SystemFolder; $resFolder = CForumPMFolder::GetList(array(), array("USER_ID" => $USER->GetID())); $arResult["UserFolder"] = array(); if ($resFolder && ($resF = $resFolder->GetNext())) { do { $arResult["UserFolder"][$resF["ID"]] = $resF; } while ($resF = $resFolder->GetNext()); } // ***************************************************************************************** // Info about current user $arResult["CurrUser"]["SHOW_NAME"] = trim($USER->GetFormattedName(false)); $arResult["CurrUser"]["SHOW_NAME"] = empty($arResult["CurrUser"]["SHOW_NAME"]) ? $USER->GetLogin() : $USER->GetFormattedName(false); $arResult["ForumPrintSmilesList"] = ForumPrintSmilesList(3, LANGUAGE_ID); $arResult["SMILES"] = CForumSmile::getSmiles("S", LANGUAGE_ID); $arResult["FolderName"] = $arParams["FID"] <= $arResult["SystemFolder"] ? GetMessage("PM_FOLDER_ID_" . $arParams["FID"]) : $arResult["UserFolder"][$arParams["FID"]]["TITLE"]; // ***************************************************************************************** $arResult["POST_VALUES"] = array(); if (!$bVarsFromForm && ($mode == "edit" || $mode == "reply")) { $arResult["POST_VALUES"] = $arResult["MESSAGE"]; if ($arParams["FID"] != 2) { $arParams["FID"] = intVal($res["FOLDER_ID"]); } if ($mode == "reply") { $arResult["POST_VALUES"]["POST_SUBJ"] = GetMessage("PM_REPLY") . $arResult["POST_VALUES"]["POST_SUBJ"]; $arResult["POST_VALUES"]["~POST_MESSAGE"] = "[QUOTE]" . $arResult["POST_VALUES"]["~POST_MESSAGE"] . "[/QUOTE]"; $arResult["POST_VALUES"]["POST_MESSAGE"] = "[QUOTE]" . $arResult["POST_VALUES"]["POST_MESSAGE"] . "[/QUOTE]"; $arResult["POST_VALUES"]["USER_ID"] = $arResult["POST_VALUES"]["AUTHOR_ID"]; $arResult["POST_VALUES"]["USER_LOGIN"] = htmlspecialcharsEx(GetUserName($arResult["POST_VALUES"]["USER_ID"], $arParams["NAME_TEMPLATE"])); }
function Add($arFields) { global $DB; if (!CForumSmile::CheckFields("ADD", $arFields)) { return false; } if (CACHED_b_forum_smile !== false) { $GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_smile"); } $arInsert = $DB->PrepareInsert("b_forum_smile", $arFields); $strSql = "INSERT INTO b_forum_smile(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = intVal($DB->LastID()); foreach ($arFields["LANG"] as $i => $val) { $arInsert = $DB->PrepareInsert("b_forum_smile_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_forum_smile_lang(SMILE_ID, " . $arInsert[0] . ") VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $ID; }
$arResult["REVIEW_TEXT"] = htmlspecialcharsEx($arResult["~REVIEW_TEXT"]); $arResult["REVIEW_USE_SMILES"] = $arResult["~REVIEW_USE_SMILES"]; $arResult["REVIEW_FILES"] = array(); foreach ($_REQUEST["FILES"] as $key => $val): if (intVal($val) <= 0) return false; $arResult["REVIEW_FILES"][$val] = CFile::GetFileArray($val); endforeach; // Form Info $arResult["SHOW_PANEL_ATTACH_IMG"] = (in_array($arResult["FORUM"]["ALLOW_UPLOAD"], array("A", "F", "Y")) ? "Y" : "N"); $arResult["TRANSLIT"] = (LANGUAGE_ID=="ru" ? "Y" : " N"); if ($arResult["FORUM"]["ALLOW_SMILES"] == "Y"): $arResult["ForumPrintSmilesList"] = ($arResult["FORUM"]["ALLOW_SMILES"] == "Y" ? ForumPrintSmilesList(3, LANGUAGE_ID, $arParams["PATH_TO_SMILE"], $arParams["CACHE_TIME"]) : ""); $arResult["SMILES"] = CForumSmile::GetByType("S", LANGUAGE_ID); endif; $arResult["CAPTCHA_CODE"] = ""; if ($arParams["USE_CAPTCHA"] == "Y" && !$USER->IsAuthorized()) { include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php"); $cpt = new CCaptcha(); $captchaPass = COption::GetOptionString("main", "captcha_password", ""); if (strLen($captchaPass) <= 0) { $captchaPass = randString(10); COption::SetOptionString("main", "captcha_password", $captchaPass); } $cpt->SetCodeCrypt($captchaPass); $arResult["CAPTCHA_CODE"] = htmlspecialcharsbx($cpt->GetCodeCrypt());
function textParser($strLang = False, $pathToSmile = false) { global $DB; static $arSmiles = array(); $strLang = $strLang === false ? LANGUAGE_ID : $strLang; $pathToSmile = $pathToSmile === false ? "/bitrix/images/forum/smile/" : $pathToSmile; $id = md5($pathToSmile . "|" . $pathToSmile); if (!is_set($arSmiles, $id)) { $arCollection = $arPattern = $arReplacement = array(); $db_res = CForumSmile::GetByType("S", $strLang); foreach ($db_res as $key => $val) { $tok = strtok($val["TYPING"], " "); while ($tok) { $row = array("TYPING" => $tok, "IMAGE" => stripslashes($val["IMAGE"]), "DESCRIPTION" => stripslashes($val["NAME"])); $tok = str_replace(array(chr(34), chr(39), "<", ">"), array("\v", "\f", "<", ">"), $tok); $code = preg_quote(str_replace(array("\\"), array("\"), $tok)); $patt = preg_quote($tok, "/"); $image = preg_quote($row["IMAGE"]); $description = preg_quote(htmlspecialcharsbx($row["DESCRIPTION"], ENT_QUOTES), "/"); $arReplacement[] = "\$this->convert_emoticon('{$code}', '{$image}', '{$description}')"; $arPattern[] = "/(?<=[^\\w&]){$patt}(?=.\\W|\\W.|\\W\$)/ei" . BX_UTF_PCRE_MODIFIER; $arCollection[] = $row; $tok = strtok(" "); } } $arSmiles[$id] = array("smiles" => $arCollection, "pattern" => $arPattern, "replace" => $arReplacement); } $this->smiles = $arSmiles[$id]["smiles"]; $this->preg_smiles = array("pattern" => $arSmiles[$id]["pattern"], "replace" => $arSmiles[$id]["replace"]); $this->path_to_smile = ""; }
} } } $dbResultList = CForumSmile::GetList(array($by => $order), $arFilter); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("SMILE_NAV"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("SMILE_ID"), "sort" => "ID", "default" => true), array("id" => "NAME", "content" => GetMessage("FORUM_NAME"), "sort" => "", "default" => true), array("id" => "SORT", "content" => GetMessage("SMILE_SORT"), "sort" => "SORT", "default" => true, "align" => "right"), array("id" => "TYPE", "content" => GetMessage('SMILE_TYPE'), "sort" => "TYPE", "default" => true), array("id" => "TYPING", "content" => GetMessage("FORUM_TYPING"), "sort" => "", "default" => true), array("id" => "ICON", "content" => GetMessage("FORUM_SMILE_ICON"), "sort" => "", "default" => true), array("id" => "IMAGE", "content" => GetMessage("FORUM_IMAGE_FILE"), "sort" => "", "default" => false))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); while ($arForum = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arForum); $row->AddField("ID", $f_ID); $row->AddField("SORT", $f_SORT); $row->AddField("TYPE", $f_TYPE == "I" ? GetMessage("SMILE_TYPE_ICON") : GetMessage("SMILE_TYPE_SMILE")); if (in_array("NAME", $arVisibleColumns)) { $arSmileLang = CForumSmile::GetLangByID($f_ID, LANG); $fieldShow = htmlspecialcharsbx($arSmileLang["NAME"]); $row->AddViewField("NAME", '<a title="' . GetMessage("FORUM_EDIT_DESCR") . '" href="' . "forum_smile_edit.php?ID=" . $f_ID . "&lang=" . LANG . "&" . GetFilterParams("filter_") . '">' . $fieldShow . '</a>'); } $row->AddField("TYPING", $f_TYPING); $row->AddField("ICON", "<img src=\"/bitrix/images/forum/" . ($f_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 . "\"" : "") . ">"); $row->AddField("IMAGE", "/bitrix/images/forum/" . ($f_TYPE == "I" ? "icon" : "smile") . "/" . $f_IMAGE); $arActions = array(); if ($forumModulePermissions >= "R") { $arActions[] = array("ICON" => "edit", "TEXT" => GetMessage("FORUM_EDIT_DESCR"), "ACTION" => $lAdmin->ActionRedirect("forum_smile_edit.php?ID=" . $f_ID . "&lang=" . LANG . "&" . GetFilterParams("filter_") . ""), "DEFAULT" => true); } if ($forumModulePermissions >= "W") { $arActions[] = array("SEPARATOR" => true); $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("FORUM_DELETE_DESCR"), "ACTION" => "if(confirm('" . GetMessage('SMILE_DEL_CONF') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete")); } $row->AddActions($arActions);
public static function GetByType($TYPE, $LANGUAGE_ID) { global $CACHE_MANAGER; $arFields = array(); if (in_array($TYPE, array("S", "I"))) { $arFields["TYPE"] = $TYPE; } if (!empty($LANGUAGE_ID)) { $arFields["LID"] = $LANGUAGE_ID; } $cache_id = "b_forum_smile_" . implode("_", array_keys($arFields)) . "_" . implode("_", $arFields); $result = array(); if (CACHED_b_forum_smile !== false && $CACHE_MANAGER->Read(CACHED_b_forum_smile, $cache_id, "b_forum_smile")) { $result = $CACHE_MANAGER->Get($cache_id); } else { $db_res = CForumSmile::GetListEx(array("SORT" => "ASC"), $arFields); while ($res = $db_res->Fetch()) { $result[] = $res; } if (CACHED_b_forum_smile !== false) { $CACHE_MANAGER->Set($cache_id, $result); } } return $result; }
protected static function getIcon($iconTyping) { if (!is_array(self::$icons)) { $result = array(); $smiles = CForumSmile::GetByType(CSmile::TYPE_ICON, LANGUAGE_ID); foreach ($smiles as $smile) { $result[$smile["TYPING"]] = $smile["IMAGE"]; } self::$icons = $result; } return array_key_exists($iconTyping, self::$icons) ? self::$icons[$iconTyping] : ''; }
/** * @deprecated * @param $num_cols * @param bool $strLang * @return string */ function ForumPrintSmilesList($num_cols, $strLang = false) { $num_cols = intVal($num_cols); $num_cols = $num_cols > 0 ? $num_cols : 3; $strLang = $strLang === false ? LANGUAGE_ID : $strLang; $strPath2Icons = "/bitrix/images/forum/smile/"; $arSmile = CForumSmile::getByType("S", $strLang); $res_str = ""; $ind = 0; foreach ($arSmile as $res) { if ($ind == 0) { $res_str .= "<tr align=\"center\">"; } $res_str .= "<td width=\"" . IntVal(100 / $num_cols) . "%\">"; $strTYPING = strtok($res['TYPING'], " "); $res_str .= "<img src=\"" . $strPath2Icons . $res['IMAGE'] . "\" alt=\"" . $res['NAME'] . "\" title=\"" . $res['NAME'] . "\" border=\"0\""; if (IntVal($res['IMAGE_WIDTH']) > 0) { $res_str .= " width=\"" . $res['IMAGE_WIDTH'] . "\""; } if (IntVal($res['IMAGE_HEIGHT']) > 0) { $res_str .= " height=\"" . $res['IMAGE_HEIGHT'] . "\""; } $res_str .= " class=\"smiles-list\" alt=\"smile" . $strTYPING . "\" onclick=\"if(emoticon){emoticon('" . $strTYPING . "');}\" name=\"smile\" id='" . $strTYPING . "' "; $res_str .= "/> </td>\n"; $ind++; if ($ind >= $num_cols) { $ind = 0; $res_str .= "</tr>"; } } if ($ind < $num_cols) { for ($i = 0; $i < $num_cols - $ind; $i++) { $res_str .= "<td> </td>"; } } return $res_str; }
<div class="forum-reply-header"><?php echo GetMessage("F_HEAD_MESS"); ?> <span class="forum-required-field">*</span></div> <div class="forum-reply-fields"> <div class="forum-reply-field forum-reply-field-text"> <?php $arSmiles = array(); foreach ($arResult["SMILES"] as $arSmile) { $arSmiles[] = array_change_key_case($arSmile, CASE_LOWER) + array('path' => $arSmile["IMAGE"], 'code' => array_shift(explode(" ", str_replace("\\\\", "\\", $arSmile["TYPING"])))); } CModule::IncludeModule("fileman"); $Editor = new CHTMLEditor(); $res = array_merge(array('height' => 200, 'minBodyWidth' => 350, 'normalBodyWidth' => 555, 'bAllowPhp' => false, 'limitPhpAccess' => false, 'showTaskbars' => false, 'showNodeNavi' => false, 'askBeforeUnloadPage' => true, 'bbCode' => true, 'siteId' => SITE_ID, 'autoResize' => true, 'autoResizeOffset' => 40, 'saveOnBlur' => true, 'controlsMap' => array(array('id' => 'Bold', 'compact' => true, 'sort' => 80), array('id' => 'Italic', 'compact' => true, 'sort' => 90), array('id' => 'Underline', 'compact' => true, 'sort' => 100), array('id' => 'Strikeout', 'compact' => true, 'sort' => 110), array('id' => 'RemoveFormat', 'compact' => true, 'sort' => 120), array('id' => 'Color', 'compact' => true, 'sort' => 130), array('id' => 'FontSelector', 'compact' => false, 'sort' => 135), array('id' => 'FontSize', 'compact' => false, 'sort' => 140), array('separator' => true, 'compact' => false, 'sort' => 145), array('id' => 'OrderedList', 'compact' => true, 'sort' => 150), array('id' => 'UnorderedList', 'compact' => true, 'sort' => 160), array('id' => 'AlignList', 'compact' => false, 'sort' => 190), array('separator' => true, 'compact' => false, 'sort' => 200), array('id' => 'InsertLink', 'compact' => true, 'sort' => 210, 'wrap' => 'bx-b-link-' . $arParams["FORM_ID"]), array('id' => 'InsertImage', 'compact' => false, 'sort' => 220), array('id' => 'InsertVideo', 'compact' => true, 'sort' => 230, 'wrap' => 'bx-b-video-' . $arParams["FORM_ID"]), array('id' => 'InsertTable', 'compact' => false, 'sort' => 250), array('id' => 'Code', 'compact' => true, 'sort' => 260), array('id' => 'Quote', 'compact' => true, 'sort' => 270, 'wrap' => 'bx-b-quote-' . $arParams["FORM_ID"]), array('id' => 'Smile', 'compact' => false, 'sort' => 280), array('separator' => true, 'compact' => false, 'sort' => 290), array('id' => 'Fullscreen', 'compact' => false, 'sort' => 310), array('id' => 'BbCode', 'compact' => true, 'sort' => 340), array('id' => 'More', 'compact' => true, 'sort' => 400))), array('name' => "POST_MESSAGE", 'id' => "POST_MESSAGE", 'width' => '100%', 'arSmilesSet' => CForumSmile::getSetsByType("S", LANGUAGE_ID), 'arSmiles' => $arSmiles, 'content' => isset($arResult['POST_VALUES']["~POST_MESSAGE"]) ? $arResult['POST_VALUES']["~POST_MESSAGE"] : $arResult['POST_VALUES']["POST_MESSAGE"], 'iframeCss' => 'body{font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 13px;}' . '.bx-spoiler {border:1px solid #C0C0C0;background-color:#fff4ca;padding: 4px 4px 4px 24px;color:#373737;border-radius:2px;min-height:1em;margin: 0;}' . (is_array($arParams["LHE"]) && isset($arParams["LHE"]["iframeCss"]) ? $arParams["LHE"]["iframeCss"] : ""))); $Editor->Show($res); ?> </div> <div class="forum-reply-field forum-reply-field-settings"> <div class="forum-reply-field-setting"> <input type="checkbox" name="USE_SMILES" id="USE_SMILES" <?php ?> value="Y" <?php echo $arResult["POST_VALUES"]["USE_SMILES"] != "N" ? "checked=\"checked\"" : ""; ?> <?php ?> tabindex="<?php echo $tabIndex++;