public static function Add($arFields) { global $DB; if (!CForumPoints2Post::CheckFields("ADD", $arFields)) { return false; } $arInsert = $DB->PrepareInsert("b_forum_points2post", $arFields); $strSql = "INSERT INTO b_forum_points2post(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = intVal($DB->LastID()); return $ID; }
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; }
$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) { $arFields = array("POINTS" => 1000, "FROM_USER_ID" => 1, "TO_USER_ID" => 1); $ID = CForumUserPoints::Add($arFields); } // Forum group $arGroup = array("PUBLIC" => 0, "PARTNER" => 0, "COMMENTS" => 0);
/** * <p>Изменяет параметры записи с кодом ID в таблице соответствий между количеством сообщений пользователя на форуме и количеством баллов за одно сообщение на значения, указанные в массиве arFields.</p> * * * * * @param int $ID Код изменяемой записи. * * * * @param array $arFields Массив новых значений параметров записи. * * * * @return int <p>Функция возвращает код записи или false в случае ошибки.</p> * * @static * @link http://dev.1c-bitrix.ru/api_help/forum/developer/cforumpoints2post/cforumpoints2post__update.bddc55bb.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if ($ID<=0) return False; if (!CForumPoints2Post::CheckFields("UPDATE", $arFields, $ID)) return false; $strUpdate = $DB->PrepareUpdate("b_forum_points2post", $arFields); $strSql = "UPDATE b_forum_points2post SET ".$strUpdate." WHERE ID = ".$ID; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); return $ID; }
@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") {