1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
ratings_components.php
См. документацию.
1<?php
2
3require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/blog/general/ratings_components.php");
4
6{
7 public static function CalcPost($arConfigs)
8 {
10 $helper = $connection->getSqlHelper();
11
13
14 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$helper->forSql($arConfigs['COMPLEX_NAME'])."'";
15 $connection->queryExecute($strSql);
16
17 $strSql = "
18 INSERT INTO b_rating_component_results (RATING_ID, MODULE_ID, RATING_TYPE, NAME, COMPLEX_NAME, ENTITY_ID, ENTITY_TYPE_ID, CURRENT_VALUE)
19 SELECT
20 '".intval($arConfigs['RATING_ID'])."' as RATING_ID,
21 '".$helper->forSql($arConfigs['MODULE_ID'])."' as MODULE_ID,
22 '".$helper->forSql($arConfigs['RATING_TYPE'])."' as RATING_TYPE,
23 '".$helper->forSql($arConfigs['NAME'])."' as NAME,
24 '".$helper->forSql($arConfigs['COMPLEX_NAME'])."' as COMPLEX_NAME,
25 FT.AUTHOR_ID as ENTITY_ID,
26 '".$helper->forSql($arConfigs['ENTITY_ID'])."' as ENTITY_TYPE_ID,
27 SUM(RVE.VALUE) * ".floatval($arConfigs['CONFIG']['COEFFICIENT'])." as CURRENT_VALUE
28 FROM
29 b_rating_voting RV LEFT JOIN b_blog_post FT ON RV.ENTITY_ID = FT.ID,
30 b_rating_vote RVE
31 WHERE
32 RV.ENTITY_TYPE_ID = 'BLOG_POST' AND FT.AUTHOR_ID > 0
33 AND RVE.RATING_VOTING_ID = RV.ID".
34 ((int)$arConfigs['CONFIG']['LIMIT'] > 0 ? " AND RVE.CREATED > ".$helper->addDaysToDateTime(-1 * (int)$arConfigs['CONFIG']['LIMIT']) : "")."
35 GROUP BY AUTHOR_ID
36 ";
37 $connection->queryExecute($strSql);
38
39 return true;
40 }
41
42 public static function CalcComment($arConfigs)
43 {
45 $helper = $connection->getSqlHelper();
46
48
49 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$helper->forSql($arConfigs['COMPLEX_NAME'])."'";
50 $connection->queryExecute($strSql);
51
52 $strSql = "
53 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'])."' as RATING_ID,
56 '".$helper->forSql($arConfigs['MODULE_ID'])."' as MODULE_ID,
57 '".$helper->forSql($arConfigs['RATING_TYPE'])."' as RATING_TYPE,
58 '".$helper->forSql($arConfigs['NAME'])."' as NAME,
59 '".$helper->forSql($arConfigs['COMPLEX_NAME'])."' as COMPLEX_NAME,
60 FM.AUTHOR_ID as ENTITY_ID,
61 '".$helper->forSql($arConfigs['ENTITY_ID'])."' as ENTITY_TYPE_ID,
62 SUM(RVE.VALUE) * ".floatval($arConfigs['CONFIG']['COEFFICIENT'])." as CURRENT_VALUE
63 FROM
64 b_rating_voting RV LEFT JOIN b_blog_comment FM ON RV.ENTITY_ID = FM.ID,
65 b_rating_vote RVE
66 WHERE
67 RV.ENTITY_TYPE_ID = 'BLOG_COMMENT' AND FM.AUTHOR_ID > 0
68 AND RVE.RATING_VOTING_ID = RV.ID".
69 ((int)$arConfigs['CONFIG']['LIMIT'] > 0 ? " AND RVE.CREATED > ".$helper->addDaysToDateTime(-1 * (int)$arConfigs['CONFIG']['LIMIT']) : "")."
70 GROUP BY AUTHOR_ID
71 ";
72 $connection->queryExecute($strSql);
73
74 return true;
75 }
76
77 public static function CalcActivity($arConfigs)
78 {
80 $helper = $connection->getSqlHelper();
81
83
84 $strSql = "DELETE FROM b_rating_component_results WHERE RATING_ID = '".intval($arConfigs['RATING_ID'])."' AND COMPLEX_NAME = '".$helper->forSql($arConfigs['COMPLEX_NAME'])."'";
85 $connection->queryExecute($strSql);
86
87 $daysDepth = $helper->addDaysToDateTime(-30);
88
89 $sqlAllPost = '';
90 if (isset($arConfigs['CONFIG']['ALL_POST_COEF']) && $arConfigs['CONFIG']['ALL_POST_COEF'] != 0)
91 {
92 $sqlAllPost = "
93 SELECT
94 AUTHOR_ID as ENTITY_ID,
95 COUNT(*) * ".floatval($arConfigs['CONFIG']['ALL_POST_COEF'])." as CURRENT_VALUE
96 FROM b_blog_post
97 WHERE DATE_PUBLISH < {$daysDepth}
98 AND PUBLISH_STATUS = '".BLOG_PUBLISH_STATUS_PUBLISH."'
99 GROUP BY AUTHOR_ID
100 UNION ALL
101 ";
102 }
103 $sqlAllComment = '';
104 if (isset($arConfigs['CONFIG']['ALL_COMMENT_COEF']) && $arConfigs['CONFIG']['ALL_COMMENT_COEF'] != 0)
105 {
106 $sqlAllComment = "
107 SELECT
108 AUTHOR_ID as ENTITY_ID,
109 COUNT(*) * ".floatval($arConfigs['CONFIG']['ALL_COMMENT_COEF'])." as CURRENT_VALUE
110 FROM b_blog_comment
111 WHERE DATE_CREATE < {$daysDepth}
112 AND PUBLISH_STATUS = '".BLOG_PUBLISH_STATUS_PUBLISH."'
113 GROUP BY AUTHOR_ID
114 UNION ALL
115 ";
116 }
117 $strSql = "
118 INSERT INTO b_rating_component_results (RATING_ID, MODULE_ID, RATING_TYPE, NAME, COMPLEX_NAME, ENTITY_ID, ENTITY_TYPE_ID, CURRENT_VALUE)
119 SELECT
120 '".intval($arConfigs['RATING_ID'])."' as RATING_ID,
121 '".$helper->forSql($arConfigs['MODULE_ID'])."' as MODULE_ID,
122 '".$helper->forSql($arConfigs['RATING_TYPE'])."' as RATING_TYPE,
123 '".$helper->forSql($arConfigs['NAME'])."' as NAME,
124 '".$helper->forSql($arConfigs['COMPLEX_NAME'])."' as COMPLEX_NAME,
125 ENTITY_ID,
126 '".$helper->forSql($arConfigs['ENTITY_ID'])."' as ENTITY_TYPE_ID,
127 SUM(CURRENT_VALUE) as CURRENT_VALUE
128 FROM (
129 ".$sqlAllPost."
130 SELECT
131 AUTHOR_ID as ENTITY_ID,
132
133 SUM(case when ". $helper->formatDate('YYYY-MM-DD', 'DATE_PUBLISH'). " > ". $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-1)). " then 1 else 0 end) * ".(float)$arConfigs['CONFIG']['TODAY_POST_COEF']." +
134 SUM(case when ". $helper->formatDate('YYYY-MM-DD', 'DATE_PUBLISH'). " > ". $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-7)). " then 1 else 0 end) * ".(float)$arConfigs['CONFIG']['WEEK_POST_COEF']." +
135 COUNT(*) * ".(float)$arConfigs['CONFIG']['MONTH_POST_COEF']." as CURRENT_VALUE
136 FROM b_blog_post
137 WHERE DATE_PUBLISH > {$daysDepth}
138 AND PUBLISH_STATUS = '".BLOG_PUBLISH_STATUS_PUBLISH."'
139 GROUP BY AUTHOR_ID
140
141 UNION ALL
142 ".$sqlAllComment."
143 SELECT
144 AUTHOR_ID as ENTITY_ID,
145 SUM(case when ". $helper->formatDate('YYYY-MM-DD', 'DATE_CREATE'). " > ". $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-1)). " then 1 else 0 end) * ".(float)$arConfigs['CONFIG']['TODAY_COMMENT_COEF']." +
146 SUM(case when ". $helper->formatDate('YYYY-MM-DD', 'DATE_CREATE'). " > ". $helper->formatDate('YYYY-MM-DD', $helper->addDaysToDateTime(-7)). " then 1 else 0 end) * ".(float)$arConfigs['CONFIG']['WEEK_COMMENT_COEF']." +
147 COUNT(*) * ".(float)$arConfigs['CONFIG']['MONTH_COMMENT_COEF']." as CURRENT_VALUE
148 FROM b_blog_comment
149 WHERE DATE_CREATE > {$daysDepth}
150 AND PUBLISH_STATUS = '".BLOG_PUBLISH_STATUS_PUBLISH."'
151 GROUP BY AUTHOR_ID
152 ) q
153 WHERE ENTITY_ID > 0
154 GROUP BY ENTITY_ID
155 ";
156
157 $connection->queryExecute($strSql);
158
159 return true;
160 }
161}
$connection
Определения actionsdefinitions.php:38
const BLOG_PUBLISH_STATUS_PUBLISH
Определения include.php:47
const BX_ROOT
Определения bx_root.php:3
static getInstance()
Определения application.php:98
static CalcPost($arConfigs)
Определения ratings_components.php:7
static CalcComment($arConfigs)
Определения ratings_components.php:42
static CalcActivity($arConfigs)
Определения ratings_components.php:77
static AddComponentResults($arComponentConfigs)
Определения ratings.php:2772
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9