/** * @global \CUser $USER * @global \CMain $APPLICATION * @global \CDatabase $DB */ require_once(__DIR__."/../include/prolog_admin_before.php"); ClearVars(); if(!$USER->CanDoOperation('edit_ratings')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); IncludeModuleLangFile(__FILE__); if (isset($_POST["CLEAR_DATA"]) && $_POST["CLEAR_DATA"] == 'Y' && $USER->IsAdmin() && check_bitrix_sessid()) { \Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_CLEAR_DATA"]=array("MESSAGE"=>GetMessage("RATING_SETTINGS_FRM_RATING_CLEAR_DATA_OK"), "TYPE"=>"OK"); CRatings::ClearData(); LocalRedirect("rating_settings.php?lang=".LANG); } // set default values $bTypeChange = isset($_POST["ACTION"]) && $_POST["ACTION"] == 'type_changed' ? true : false; $ratingId = isset($_POST["RATING_ID"]) ? intval($_POST["RATING_ID"]) : 0; $message = null; $sRatingWeightType = isset($_POST["RATING_WEIGHT_TYPE"]) && $_POST["RATING_WEIGHT_TYPE"] == 'auto' ? 'auto' : 'manual'; $sRatingAuthrorityWeight = isset($_POST["RATING_AUTHORITY_WEIGHT"]) && $_POST["RATING_AUTHORITY_WEIGHT"] == 'N' ? 'N' : 'Y'; $ratingNormalization = isset($_POST["RATING_NORMALIZATION"]) ? intval($_POST["RATING_NORMALIZATION"]) : 1000; $sRatingNormalizationType = isset($_POST["RATING_NORMALIZATION_TYPE"]) && $_POST["RATING_NORMALIZATION_TYPE"] == 'auto' ? 'auto' : 'manual'; $ratingCountVote = isset($_POST["RATING_COUNT_VOTE"]) ? intval($_POST["RATING_COUNT_VOTE"]) : 10; $ratingStartValue = isset($_POST["RATING_START_AUTHORITY"]) ? intval($_POST["RATING_START_AUTHORITY"]) : 3; $communityLastVisit = isset($_POST["RATING_COMMUNITY_LAST_VISIT"]) && intval($_POST["RATING_COMMUNITY_LAST_VISIT"]) > 0 ? intval($_POST["RATING_COMMUNITY_LAST_VISIT"]) : 90; $ratingAuthorityDefault = isset($_POST["RATING_AUTHORITY_DEFAULT"]) ? intval($_POST["RATING_AUTHORITY_DEFAULT"]) : 0; $sRatingSelfVote = isset($_POST["RATING_SELF_VOTE"]) && $_POST["RATING_SELF_VOTE"] == 'Y' ? 'Y' : 'N'; $sRatingAssignType = isset($_POST["RATING_ASSIGN_TYPE"]) && $_POST["RATING_ASSIGN_TYPE"] == 'auto' ? 'auto' : 'manual'; $ratingAssignRatingGroupAdd = isset($_POST["RATING_ASSIGN_RATING_GROUP_ADD"]) ? intval($_POST["RATING_ASSIGN_RATING_GROUP_ADD"]) : 1; $ratingAssignRatingGroupDelete = isset($_POST["RATING_ASSIGN_RATING_GROUP_DELETE"]) ? intval($_POST["RATING_ASSIGN_RATING_GROUP_DELETE"]) : 1; $ratingAssignAuthorityGroupAdd = isset($_POST["RATING_ASSIGN_AUTHORITY_GROUP_ADD"]) ? intval($_POST["RATING_ASSIGN_AUTHORITY_GROUP_ADD"]) : 2; $ratingAssignAuthorityGroupDelete = isset($_POST["RATING_ASSIGN_AUTHORITY_GROUP_DELETE"]) ? intval($_POST["RATING_ASSIGN_AUTHORITY_GROUP_DELETE"]) : 2; $dbSites = CSite::GetList('', '', Array("ACTIVE" => "Y")); $arSites = array(); $aSubTabs = array(); while ($site = $dbSites->Fetch()) { $site["ID"] = htmlspecialcharsbx($site["ID"]); $site["NAME"] = htmlspecialcharsbx($site["NAME"]); $arSites[] = $site; $aSubTabs[] = array("DIV" => "opt_site_".$site["ID"], "TAB" => "(".$site["ID"].") ".$site["NAME"], 'TITLE' => ''); } foreach ($arSites as $site) { $arRatingVoteShow[$site['ID']] = isset($_POST["RATING_VOTE_SHOW"][$site['ID']]) && $_POST["RATING_VOTE_SHOW"][$site['ID']] == 'Y' ? 'Y' : 'N'; $arRatingVoteType[$site['ID']] = isset($_POST["RATING_VOTE_TYPE"][$site['ID']]) && $_POST["RATING_VOTE_TYPE"][$site['ID']] == 'like' ? 'like' : 'standart'; $arRatingVoteTemplate[$site['ID']] = isset($_POST["RATING_VOTE_TEMPLATE"][$site['ID']]) && in_array($_POST["RATING_VOTE_TEMPLATE"][$site['ID']], Array('like', 'like_graphic', 'standart', 'standart_text'))? $_POST["RATING_VOTE_TEMPLATE"][$site['ID']] : ($arRatingVoteType == 'like'?'like': 'standart'); $arRatingTextLikeY[$site['ID']] = $_POST["RATING_TEXT_LIKE_Y"][$site['ID']] ?? GetMessage('RATING_SETTINGS_FRM_BUTTON_LIKE_Y_DEFAULT'); $arRatingTextLikeN[$site['ID']] = $_POST["RATING_TEXT_LIKE_N"][$site['ID']] ?? GetMessage('RATING_SETTINGS_FRM_BUTTON_LIKE_N_DEFAULT'); $arRatingTextLikeD[$site['ID']] = $_POST["RATING_TEXT_LIKE_D"][$site['ID']] ?? GetMessage('RATING_SETTINGS_FRM_BUTTON_LIKE_D_DEFAULT'); } if (isset($_POST["RATING_ASSIGN_RATING_GROUP"])) $ratingAssignRatingGroup = intval($_POST["RATING_ASSIGN_RATING_GROUP"]); else { $ratingAssignRatingGroup = COption::GetOptionString("main", "rating_assign_rating_group", null); if ($ratingAssignRatingGroup == null) { $rsGroup = $DB->Query("SELECT * FROM b_group WHERE STRING_ID='RATING_VOTE'", true); $arGroup = $rsGroup->Fetch(); $ratingAssignRatingGroup = intval($arGroup['ID']); COption::SetOptionString("main", "rating_assign_rating_group", $ratingAssignRatingGroup); } } if (isset($_POST["RATING_ASSIGN_AUTHORITY_GROUP"])) $ratingAssignAuthorityGroup = intval($_POST["RATING_ASSIGN_AUTHORITY_GROUP"]); else { $ratingAssignAuthorityGroup = COption::GetOptionString("main", "rating_assign_authority_group", null); if ($ratingAssignAuthorityGroup == null) { $rsGroup = $DB->Query("SELECT * FROM b_group WHERE STRING_ID='RATING_VOTE_AUTHORITY'", true); $arGroup = $rsGroup->Fetch(); $ratingAssignAuthorityGroup = intval($arGroup['ID']); COption::SetOptionString("main", "rating_assign_authority_group", $ratingAssignAuthorityGroup); } } if ($ratingAssignRatingGroup == 0 && $ratingAssignAuthorityGroup == 0) COption::SetOptionString("main", "rating_assign_type", 'manual'); // save settings if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST['save']<>"" && check_bitrix_sessid()) { if ($sRatingWeightType == 'auto') { COption::SetOptionString("main", "rating_normalization_type", $sRatingNormalizationType); COption::SetOptionString("main", "rating_normalization", $ratingNormalization); COption::SetOptionString("main", "rating_count_vote", $ratingCountVote); COption::SetOptionString("main", "rating_authority_weight_formula", $sRatingAuthrorityWeight); COption::SetOptionString("main", "rating_community_last_visit", $communityLastVisit); } if ($sRatingWeightType == 'manual') { CRatings::SetWeight($_POST['CONFIG']); } if ($sRatingAssignType == 'auto') { COption::SetOptionString("main", "rating_assign_rating_group_add", $ratingAssignRatingGroupAdd); COption::SetOptionString("main", "rating_assign_rating_group_delete", $ratingAssignRatingGroupDelete); COption::SetOptionString("main", "rating_assign_authority_group_add", $ratingAssignAuthorityGroupAdd); COption::SetOptionString("main", "rating_assign_authority_group_delete", $ratingAssignAuthorityGroupDelete); COption::SetOptionString("main", "rating_assign_rating_group", $ratingAssignRatingGroup); COption::SetOptionString("main", "rating_assign_authority_group", $ratingAssignAuthorityGroup); } COption::SetOptionString("main", "rating_self_vote", $sRatingSelfVote); COption::SetOptionString("main", "rating_assign_type", $sRatingAssignType); COption::SetOptionString("main", "rating_weight_type", $sRatingWeightType); COption::SetOptionString("main", "rating_start_authority", $ratingStartValue); foreach ($arSites as $site) { COption::SetOptionString("main", "rating_vote_show", $arRatingVoteShow[$site['ID']], false, $site['ID']); COption::SetOptionString("main", "rating_vote_template", $arRatingVoteTemplate[$site['ID']], false, $site['ID']); COption::SetOptionString("main", "rating_vote_type", $arRatingVoteType[$site['ID']], false, $site['ID']); if ($arRatingVoteType[$site['ID']] == 'like') { COption::SetOptionString("main", "rating_text_like_y", $arRatingTextLikeY[$site['ID']], false, $site['ID']); COption::SetOptionString("main", "rating_text_like_n", $arRatingTextLikeN[$site['ID']], false, $site['ID']); COption::SetOptionString("main", "rating_text_like_d", $arRatingTextLikeD[$site['ID']], false, $site['ID']); } } CRatings::SetAuthorityRating($ratingId); CRatings::SetVoteGroup($_POST['RATING_VOTE_GROUP_ID'], 'R'); CRatings::SetVoteGroup($_POST['RATING_VOTE_AUTHORITY_GROUP_ID'], 'A'); if ($ratingAuthorityDefault > 0) { $arParams = array(); if ($ratingAuthorityDefault == 1) $arParams['DEFAULT_CONFIG_NEW_USER'] = 'Y'; if ($ratingAuthorityDefault == 2) $arParams['DEFAULT_USER_ACTIVE'] = 'Y'; if ($ratingAuthorityDefault == 3) { $arParams['DEFAULT_USER_ACTIVE'] = 'Y'; $arParams['DEFAULT_CONFIG_NEW_USER'] = 'Y'; } CRatings::SetAuthorityDefaultValue($arParams); } \Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_SUCCESS"]=array("MESSAGE"=>GetMessage("RATING_CONFIG_SUCCESS"), "TYPE"=>"OK"); } // if you changed the type of calculation or choose a different rating for the calculation of the authority, change the default values if(!$bTypeChange) { $ratingId = CRatings::GetAuthorityRating(); $sRatingWeightType = COption::GetOptionString("main", "rating_weight_type", "auto"); if ($sRatingWeightType == 'auto') { $sRatingNormalizationType = COption::GetOptionString("main", "rating_normalization_type", "auto"); $ratingNormalization = COption::GetOptionString("main", "rating_normalization", 1000); $ratingCountVote = COption::GetOptionString("main", "rating_count_vote", 10); $sRatingAuthrorityWeight = COption::GetOptionString("main", "rating_authority_weight_formula", "Y"); $communityLastVisit = COption::GetOptionString("main", "rating_community_last_visit", "90"); } $ratingStartValue = COption::GetOptionString("main", "rating_start_authority", 3); $ratingAssignRatingGroupAdd = COption::GetOptionString("main", "rating_assign_rating_group_add", 1); $ratingAssignRatingGroupDelete = COption::GetOptionString("main", "rating_assign_rating_group_delete", 1); $ratingAssignAuthorityGroupAdd = COption::GetOptionString("main", "rating_assign_authority_group_add", 2); $ratingAssignAuthorityGroupDelete = COption::GetOptionString("main", "rating_assign_authority_group_delete", 2); $ratingAssignRatingGroup = COption::GetOptionString("main", "rating_assign_rating_group", 0); $ratingAssignAuthorityGroup = COption::GetOptionString("main", "rating_assign_authority_group", 0); $sRatingAssignType = COption::GetOptionString("main", "rating_assign_type", 'manual'); $sRatingSelfVote = COption::GetOptionString("main", "rating_self_vote", 'N'); foreach ($arSites as $site) { $arRatingVoteShow[$site['ID']] = COption::GetOptionString("main", "rating_vote_show", "N", $site['ID']); $arRatingVoteType[$site['ID']] = COption::GetOptionString("main", "rating_vote_type", "standart", $site['ID']); $arRatingVoteTemplate[$site['ID']] = COption::GetOptionString("main", "rating_vote_template", $arRatingVoteType[$site['ID']] == 'like'?'like': 'standart', $site['ID']); $arRatingTextLikeY[$site['ID']] = COption::GetOptionString("main", "rating_text_like_y", GetMessage("RATING_SETTINGS_FRM_BUTTON_LIKE_Y_DEFAULT"), $site['ID']); $arRatingTextLikeN[$site['ID']] = COption::GetOptionString("main", "rating_text_like_n", GetMessage("RATING_SETTINGS_FRM_BUTTON_LIKE_N_DEFAULT"), $site['ID']); $arRatingTextLikeD[$site['ID']] = COption::GetOptionString("main", "rating_text_like_d", GetMessage("RATING_SETTINGS_FRM_BUTTON_LIKE_D_DEFAULT"), $site['ID']); } } $APPLICATION->SetTitle(GetMessage("MAIN_RATING_SETTINGS")); $APPLICATION->SetAdditionalCSS("/bitrix/themes/.default/ratings.css"); require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); // displaying a message on the action taken if ( isset(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_SUCCESS"]) && is_array(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_SUCCESS"]) ) { CAdminMessage::ShowMessage(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_SUCCESS"]); \Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_SUCCESS"]=false; } if ( isset(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_CLEAR_DATA"]) && is_array(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_CLEAR_DATA"]) ) { CAdminMessage::ShowMessage(\Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_CLEAR_DATA"]); \Bitrix\Main\Application::getInstance()->getSession()["SESS_ADMIN"]["RATING_CONFIG_CLEAR_DATA"]=false; } if ($message) echo $message->Show(); $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("RATING_SETTINGS_TAB_WEIGHT"), "TITLE"=>''), array("DIV" => "edit2", "TAB" => GetMessage("RATING_SETTINGS_TAB_MAIN"), "TITLE"=>''), array("DIV" => "edit3", "TAB" => GetMessage("RATING_SETTINGS_TAB_START_VALUE"), "TITLE"=>''), ); $editTab = new CAdminTabControl("editTab", $aTabs, true, true); ?>