1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
ratings_components.php
См. документацию.
1<?php
2
3require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/forum/classes/general/ratings_components.php");
4
6
8{
9 // Calc function
10 public static function CalcUserVoteForumPost($arConfigs)
11 {
13 $helper = $connection->getSqlHelper();
14
16
17 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$helper->forSql($arConfigs['COMPLEX_NAME'])."'";
18 $connection->query($strSql);
19
20 $strSql = "INSERT INTO b_rating_component_results (RATING_ID, MODULE_ID, RATING_TYPE, NAME, COMPLEX_NAME, ENTITY_ID, ENTITY_TYPE_ID, CURRENT_VALUE)
21 SELECT
22 '".intval($arConfigs['RATING_ID'])."' RATING_ID,
23 '".$helper->forSql($arConfigs['MODULE_ID'])."' MODULE_ID,
24 '".$helper->forSql($arConfigs['RATING_TYPE'])."' RATING_TYPE,
25 '".$helper->forSql($arConfigs['NAME'])."' RATING_NAME,
26 '".$helper->forSql($arConfigs['COMPLEX_NAME'])."' COMPLEX_NAME,
27 FM.AUTHOR_ID as ENTITY_ID,
28 '".$helper->forSql($arConfigs['ENTITY_ID'])."' ENTITY_TYPE_ID,
29 SUM(RVE.VALUE)*".floatval($arConfigs['CONFIG']['COEFFICIENT'])." CURRENT_VALUE
30 FROM
31 b_rating_voting RV LEFT JOIN b_forum_message FM ON RV.ENTITY_ID = FM.ID,
32 b_rating_vote RVE
33 WHERE
34 RV.ENTITY_TYPE_ID = 'FORUM_POST' AND FM.AUTHOR_ID > 0
35 AND RVE.RATING_VOTING_ID = RV.ID".(intval($arConfigs['CONFIG']['LIMIT']) > 0 ? " AND RVE.CREATED > " . $helper->addDaysToDateTime(-intval($arConfigs['CONFIG']['LIMIT'])) : "")."
36 GROUP BY AUTHOR_ID";
37
38 $connection->query($strSql);
39
40 return true;
41 }
42
43 public static function CalcUserVoteForumTopic($arConfigs)
44 {
46 $helper = $connection->getSqlHelper();
47
49
50 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$helper->forSql($arConfigs['COMPLEX_NAME'])."'";
51 $connection->Query($strSql);
52
53 $strSql = "INSERT INTO b_rating_component_results (RATING_ID, MODULE_ID, RATING_TYPE, NAME, COMPLEX_NAME, ENTITY_ID, ENTITY_TYPE_ID, CURRENT_VALUE)
54 SELECT
55 '".intval($arConfigs['RATING_ID'])."' RATING_ID,
56 '".$helper->forSql($arConfigs['MODULE_ID'])."' MODULE_ID,
57 '".$helper->forSql($arConfigs['RATING_TYPE'])."' RATING_TYPE,
58 '".$helper->forSql($arConfigs['NAME'])."' RATING_NAME,
59 '".$helper->forSql($arConfigs['COMPLEX_NAME'])."' COMPLEX_NAME,
60 FT.USER_START_ID ENTITY_ID,
61 '".$helper->forSql($arConfigs['ENTITY_ID'])."' ENTITY_TYPE_ID,
62 SUM(RVE.VALUE)*".floatval($arConfigs['CONFIG']['COEFFICIENT'])." CURRENT_VALUE
63 FROM
64 b_rating_voting RV LEFT JOIN b_forum_topic FT ON RV.ENTITY_ID = FT.ID,
65 b_rating_vote RVE
66 WHERE
67 RV.ENTITY_TYPE_ID = 'FORUM_TOPIC' AND FT.USER_START_ID > 0
68 AND RVE.RATING_VOTING_ID = RV.ID".(intval($arConfigs['CONFIG']['LIMIT']) > 0 ? " AND RVE.CREATED > " . $helper->addDaysToDateTime(-intval($arConfigs['CONFIG']['LIMIT'])) : "")."
69 GROUP BY USER_START_ID";
70
71 $connection->query($strSql);
72
73 return true;
74 }
75
76 public static function CalcUserRatingForumActivity($arConfigs)
77 {
78 global $DB;
80 $helper = $connection->getSqlHelper();
81
83
84 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$DB->ForSql($arConfigs['COMPLEX_NAME'])."'";
85 $DB->Query($strSql);
86
87 $sqlAllTopic = '';
88 if (isset($arConfigs['CONFIG']['ALL_TOPIC_COEF']) && $arConfigs['CONFIG']['ALL_TOPIC_COEF'] != 0) {
89 $sqlAllTopic = "
90 SELECT
91 USER_START_ID as ENTITY_ID,
92 COUNT(*)*".floatval($arConfigs['CONFIG']['ALL_TOPIC_COEF'])." as CURRENT_VALUE
93 FROM b_forum_topic
94 WHERE START_DATE < " . $helper->addDaysToDateTime(-30) . "
95 GROUP BY USER_START_ID
96 UNION ALL ";
97 }
98 $sqlAllMessage = '';
99 if (isset($arConfigs['CONFIG']['ALL_POST_COEF']) && $arConfigs['CONFIG']['ALL_POST_COEF'] != 0) {
100 $sqlAllMessage = "
101 SELECT
102 AUTHOR_ID as ENTITY_ID,
103 COUNT(*)*".floatval($arConfigs['CONFIG']['ALL_POST_COEF'])." as CURRENT_VALUE
104 FROM b_forum_message
105 WHERE POST_DATE < " . $helper->addDaysToDateTime(-30) . "
106 GROUP BY AUTHOR_ID
107 UNION ALL ";
108 }
109 $strSql = "INSERT INTO b_rating_component_results (RATING_ID, MODULE_ID, RATING_TYPE, NAME, COMPLEX_NAME, ENTITY_ID, ENTITY_TYPE_ID, CURRENT_VALUE)
110 SELECT
111 '".intval($arConfigs['RATING_ID'])."' as RATING_ID,
112 '".$DB->ForSql($arConfigs['MODULE_ID'])."' as MODULE_ID,
113 '".$DB->ForSql($arConfigs['RATING_TYPE'])."' as RATING_TYPE,
114 '".$DB->ForSql($arConfigs['NAME'])."' as NAME,
115 '".$DB->ForSql($arConfigs['COMPLEX_NAME'])."' as COMPLEX_NAME,
116 ENTITY_ID,
117 '".$DB->ForSql($arConfigs['ENTITY_ID'])."' ENTITY_TYPE_ID,
118 SUM(CURRENT_VALUE) CURRENT_VALUE
119 FROM (
120 ".$sqlAllMessage."
121
122 SELECT
123 AUTHOR_ID as ENTITY_ID,
124 SUM(case when " . $helper->formatDate('YYYY-MM-DD', 'POST_DATE') . " > " . $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-1)) . " then 1 else 0 end)*".floatval($arConfigs['CONFIG']['TODAY_POST_COEF'])." +
125 SUM(case when " . $helper->formatDate('YYYY-MM-DD', 'POST_DATE') . " > " . $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-7)) . " then 1 else 0 end)*".floatval($arConfigs['CONFIG']['WEEK_POST_COEF'])."+
126 COUNT(*)*".floatval($arConfigs['CONFIG']['MONTH_POST_COEF'])." as CURRENT_VALUE
127 FROM b_forum_message
128 WHERE POST_DATE > " . $helper->addDaysToDateTime(-30) . "
129 GROUP BY AUTHOR_ID
130
131 UNION ALL
132 ".$sqlAllTopic."
133
134 SELECT
135 USER_START_ID as ENTITY_ID,
136 SUM(case when " . $helper->formatDate('YYYY-MM-DD', 'START_DATE') . " > " . $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-1)) . " then 1 else 0 end)*".floatval($arConfigs['CONFIG']['TODAY_TOPIC_COEF'])." +
137 SUM(case when " . $helper->formatDate('YYYY-MM-DD', 'START_DATE') . " > " . $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-7)) . " then 1 else 0 end)*".floatval($arConfigs['CONFIG']['WEEK_TOPIC_COEF'])." +
138 COUNT(*)*".floatval($arConfigs['CONFIG']['MONTH_TOPIC_COEF'])." as CURRENT_VALUE
139 FROM b_forum_topic
140 WHERE START_DATE > " . $helper->addDaysToDateTime(-30) . "
141 GROUP BY USER_START_ID
142 ) q
143 WHERE ENTITY_ID > 0
144 GROUP BY ENTITY_ID";
145 $DB->Query($strSql);
146
147 return true;
148 }
149
150 // Exception function
151 public static function ExceptionUserRatingForumActivity()
152 {
153 global $DB;
154 $bIndex1 = $DB->IndexExists("b_forum_topic", array("START_DATE", "USER_START_ID"));
155 $bIndex2 = $DB->IndexExists("b_forum_message", array("POST_DATE", "AUTHOR_ID"));
156
157 if(!$bIndex1 || !$bIndex2)
158 {
159 $arIndex = Array();
160 if (!$bIndex1)
161 $arIndex[] = 'CREATE INDEX IX_FORUM_RATING_1 ON b_forum_topic(START_DATE, USER_START_ID)';
162
163 if (!$bIndex2)
164 $arIndex[] = 'CREATE INDEX IX_FORUM_RATING_2 ON b_forum_message(POST_DATE, AUTHOR_ID)';
165
166 return GetMessage('EXCEPTION_USER_RATING_FORUM_ACTIVITY_TEXT').'<br>1. <b>'.$arIndex[0].'</b>'.(isset($arIndex[1]) ? '<br> 2. <b>'.$arIndex[1].'</b>' : '');
167 }
168 else
169 return false;
170 }
171}
$connection
Определения actionsdefinitions.php:38
const BX_ROOT
Определения bx_root.php:3
static getConnection($name="")
Определения application.php:638
static CalcUserVoteForumPost($arConfigs)
Определения ratings_components.php:10
static CalcUserVoteForumTopic($arConfigs)
Определения ratings_components.php:43
static ExceptionUserRatingForumActivity()
Определения ratings_components.php:151
static CalcUserRatingForumActivity($arConfigs)
Определения ratings_components.php:76
static AddComponentResults($arComponentConfigs)
Определения ratings.php:2772
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397