if ($ID > 0) { $res = CForumPoints2Post::Update($ID, $arFields); } else { $res = CForumPoints2Post::Add($arFields); } if (intVal($res) <= 0 && ($e = $GLOBALS["APPLICATION"]->GetException())) { $message = new CAdminMessage($ID > 0 ? GetMessage("FORUM_PPE_EDDOR_UPDATE") : GetMessage("FORUM_PPE_ERROR_ADD"), $e); $bInitVars = True; } elseif (strlen($save) > 0) { LocalRedirect("forum_points2post.php?lang=" . LANG . "&" . GetFilterParams("filter_", false)); } else { $ID = $res; } } if ($ID > 0) { $db_points = CForumPoints2Post::GetList(array(), array("ID" => $ID)); $db_points->ExtractFields("str_", False); } if ($bInitVars) { $DB->InitTableVarsForEdit("b_forum_points2post", "", "str_"); } $sDocTitle = $ID > 0 ? str_replace("#ID#", $ID, GetMessage("FORUM_PPE_TITLE_UPD")) : GetMessage("FORUM_PPE_TITLE_ADD"); $APPLICATION->SetTitle($sDocTitle); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; /*********************************************************************/ /******************** BODY *****************************************/ /*********************************************************************/ ?> <?php $aMenu = array(array("TEXT" => GetMessage("FPPN_2FLIST"), "LINK" => "/bitrix/admin/forum_points2post.php?lang=" . LANG . "&" . GetFilterParams("filter_", false), "ICON" => "btn_list"));
public static function CountUserPoints($USER_ID = 0, $iCnt = false) { $USER_ID = intVal($USER_ID); $iNumUserPosts = intVal($iCnt); $iNumUserPoints = 0; $fPointsPerPost = 0.0; if ($USER_ID <= 0) { return 0; } if ($iCnt === false) { $iNumUserPoints = CForumUser::GetUserPoints($USER_ID); } if ($iNumUserPoints === false || $iCnt != false) { $iNumUserPosts = CForumMessage::GetList(array(), array("AUTHOR_ID" => $USER_ID, "APPROVED" => "Y"), true); $db_res = CForumPoints2Post::GetList(array("MIN_NUM_POSTS" => "DESC"), array("<=MIN_NUM_POSTS" => $iNumUserPosts)); if ($ar_res = $db_res->Fetch()) { $fPointsPerPost = DoubleVal($ar_res["POINTS_PER_POST"]); } $iNumUserPoints = floor($fPointsPerPost * $iNumUserPosts); $iCnt = CForumUserPoints::CountSumPoints($USER_ID); $iNumUserPoints += $iCnt; } return $iNumUserPoints; }
public static function CheckFields($ACTION, &$arFields, $ID = 0) { $aMsg = array(); if (is_set($arFields, "MIN_NUM_POSTS") || $ACTION=="ADD") { $arFields["MIN_NUM_POSTS"] = trim($arFields["MIN_NUM_POSTS"]); if (empty($arFields["MIN_NUM_POSTS"])) { $aMsg[] = array( "id"=>'POINTS2POST[MIN_NUM_POSTS]', "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_EMPTY")); } elseif (strlen($arFields["MIN_NUM_POSTS"]) > 18 || preg_match("/[^0-9]/", $arFields["MIN_NUM_POSTS"])) { $aMsg[] = array( "id"=>'POINTS2POST[MIN_NUM_POSTS]', "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_BAD")); } else { $arFields["MIN_NUM_POSTS"] = intVal($arFields["MIN_NUM_POSTS"]); $db_res = CForumPoints2Post::GetList(array(), array("MIN_NUM_POSTS" => $arFields["MIN_NUM_POSTS"])); if ($db_res && $res = $db_res->GetNext()) { if ($ACTION=="ADD" || $ID == 0 || $ID != $res["ID"]) { $aMsg[] = array( "id"=>'POINTS2POST[MIN_NUM_POSTS]', "text" => GetMessage("FORUM_PE_ERROR_MIN_NUM_POSTS_EXIST")); } } } } if ((is_set($arFields, "POINTS_PER_POST") || $ACTION=="ADD") && DoubleVal($arFields["POINTS_PER_POST"])<=0) $arFields["POINTS_PER_POST"] = 0; else { $arFields["POINTS_PER_POST"] = round(doubleval($arFields["POINTS_PER_POST"]), 4); if (strlen(round($arFields["POINTS_PER_POST"], 0)) > 14 || strlen(strstr($arFields["POINTS_PER_POST"], ".")) > 5 || preg_match("/[^0-9.]/", $arFields["POINTS_PER_POST"])) $aMsg[] = array( "id" => 'POINTS2POST[POINTS_PER_POST]', "text" => GetMessage("FORUM_PE_ERROR_MIN_POINTS_BAD")); } if(!empty($aMsg)) { $e = new CAdminException(array_reverse($aMsg)); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; return True; }
$arFieldsG = array(array("MIN_POINTS" => 0, "CODE" => "visitor", "VOTES" => 1, "LANG" => array()), array("MIN_POINTS" => 5, "CODE" => "resident", "VOTES" => 2, "LANG" => array()), array("MIN_POINTS" => 50, "CODE" => "user", "VOTES" => 4, "LANG" => array()), array("MIN_POINTS" => 200, "CODE" => "honored", "VOTES" => 7, "LANG" => array())); foreach ($arFieldsG as $arFields) { foreach ($arLangs as $lang) { $name = GetMessage("F_POINTS_" . strToUpper($arFields["CODE"])); if ($lang != LANGUAGE_ID) { $arMess[$lang] = __GetMessageArray($lang); if (!empty($arMess[$lang]["F_POINTS_" . strToUpper($arFields["CODE"])])) { $name = $arMess[$lang]["F_POINTS_" . strToUpper($arFields["CODE"])]; } } $arFields["LANG"][$lang] = array("LID" => $lang, "NAME" => $name); } $res = CForumPoints::Add($arFields); } } $db_res = CForumPoints2Post::GetList(); if (!($db_res && ($res = $db_res->Fetch()))) { $arFields = array("MIN_NUM_POSTS" => 1, "POINTS_PER_POST" => "0.5000"); CForumPoints2Post::Add($arFields); $arFields = array("MIN_NUM_POSTS" => 50, "POINTS_PER_POST" => "0.8000"); CForumPoints2Post::Add($arFields); } /* User */ $res = CForumUser::GetByUSER_ID(1); if (empty($res) || !is_array($res)) { $arFields = array("=LAST_VISIT" => $DB->GetNowFunction(), "USER_ID" => 1); $ID = CForumUser::Add($arUserFields); } /* Vote */ $res = CForumUserPoints::GetByID(1, 1); if (!$res) {
@set_time_limit(0); $DB->StartTransaction(); if (!CForumPoints2Post::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("FORUM_PP_ERROR_DELETE"), $ID); } } $DB->Commit(); break; } } } $dbResultList = CForumPoints2Post::GetList(array($by => $order), $arFilter); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); /*******************************************************************/ $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("FORUM_PP_POINTS_PER_MES"))); /*******************************************************************/ $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "MIN_NUM_POSTS", "content" => GetMessage("FORUM_PP_MIN_MES"), "sort" => "MIN_NUM_POSTS", "default" => true, "align" => "right"), array("id" => "POINTS_PER_POST", "content" => GetMessage('FORUM_PP_POINTS'), "sort" => "POINTS_PER_POST", "default" => true, "align" => "right"))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); /*******************************************************************/ while ($arForum = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arForum); $row->AddField("ID", $f_ID); $row->AddInputField("MIN_NUM_POSTS", array("size" => "10")); $row->AddInputField("POINTS_PER_POST", array("size" => "10")); $arActions = array(); if ($forumModulePermissions >= "R") {