1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
im_convert.php
См. документацию.
1<?
3{
4 public static $convertPerStep = 0;
5 public static $nextConvertPerStep = 0;
6 public static $converted = 0;
7
8 public function __construct()
9 {
10 }
11
12 public static function RecentList()
13 {
14 global $DB, $USER;
15
16 $arRecent = CUserOptions::GetOption('im', 'recentList2', null);
17 if (is_null($arRecent))
18 {
19 $arResult = CUserOptions::GetOption('im', 'recentList', null);
20 if (!is_null($arResult))
21 {
22 unset($arResult[$GLOBALS['USER']->GetID()]);
23 foreach ($arResult as $key => $value)
24 $arRecent[IM_MESSAGE_PRIVATE][$key] = $value;
25 }
26 else
27 {
28 $arRecent = Array();
29 }
30 }
31 if (!empty($arRecent))
32 {
33 if (isset($arRecent[IM_MESSAGE_PRIVATE]) && !empty($arRecent[IM_MESSAGE_PRIVATE]))
34 {
35 $arUsers = Array();
36 $arInsert = Array();
37 $CIMMessage = new CIMMessage(false, array(
38 'HIDE_LINK' => 'Y'
39 ));
40 $arMessages = $CIMMessage->GetLastSendMessage(Array(
41 'TO_USER_ID' => array_keys($arRecent[IM_MESSAGE_PRIVATE]),
42 'ORDER' => 'ASC',
43 'LIMIT' => 30,
44 'USE_TIME_ZONE' => 'N'
45 ));
46 foreach ($arMessages as $userId => $arMessage)
47 {
48 $arUsers[] = $userId;
49 $arInsert[$userId] = Array(
50 'USER_ID' => $USER->GetId(),
51 'ITEM_TYPE' => IM_MESSAGE_PRIVATE,
52 'ITEM_ID' => $userId,
53 'ITEM_MID' => $arMessage['id'],
54 );
55 }
56 if (!empty($arUsers))
57 {
58 $strSql = "SELECT ITEM_ID FROM b_im_recent WHERE USER_ID = ".$USER->GetId()." AND ITEM_TYPE = '".IM_MESSAGE_PRIVATE."' AND ITEM_ID IN (".implode(',', $arUsers).")";
59 $dbRes = $DB->Query($strSql);
60 while ($arRes = $dbRes->Fetch())
61 unset($arInsert[$arRes['ITEM_ID']]);
62 }
63
64 foreach ($arInsert as $arAdd)
65 $DB->Add('b_im_recent', $arAdd);
66 }
67
68 $massageType = null;
69 if(isset($arRecent[IM_MESSAGE_CHAT]) && !empty($arRecent[IM_MESSAGE_CHAT]))
70 $massageType = IM_MESSAGE_CHAT;
71 elseif(isset($arRecent[IM_MESSAGE_OPEN_LINE]) && !empty($arRecent[IM_MESSAGE_OPEN_LINE]))
72 $massageType = IM_MESSAGE_OPEN_LINE;
73
74 if (!empty($massageType))
75 {
76 $arChats = Array();
77 $arInsert = Array();
78
79 $CIMChat = new CIMChat(false, array(
80 'HIDE_LINK' => 'Y'
81 ));
82 $arMessagesGroup = $CIMChat->GetLastSendMessage(Array(
83 'ID' => array_keys($arRecent[$massageType]),
84 'ORDER' => 'ASC',
85 'LIMIT' => 30,
86 'USE_TIME_ZONE' => 'N'
87 ));
88 foreach ($arMessagesGroup as $chatId => $arMessage)
89 {
90 $arChats[] = $chatId;
91 $arInsert[$chatId] = Array(
92 'USER_ID' => $USER->GetId(),
93 'ITEM_TYPE' => $massageType,
94 'ITEM_ID' => $chatId,
95 'ITEM_MID' => $arMessage['id'],
96 );
97 }
98
99 if (!empty($arChats))
100 {
101 $strSql = "
102 SELECT
103 ITEM_ID
104 FROM
105 b_im_recent
106 WHERE
107 USER_ID = ".$USER->GetId()."
108 AND ITEM_TYPE = '".$massageType."'
109 AND ITEM_ID IN (".implode(',', $arChats).")
110 ";
111 $dbRes = $DB->Query($strSql);
112 while ($arRes = $dbRes->Fetch())
113 unset($arInsert[$arRes['ITEM_ID']]);
114 }
115
116 foreach ($arInsert as $arAdd)
117 $DB->Add('b_im_recent', $arAdd);
118 }
119 CUserOptions::SetOption('im', 'recentList2', Array());
120 }
121 else
122 {
123 CUserOptions::SetOption('im', 'recentList2', Array());
124 }
125
126 return true;
127 }
128
129 public static function DeliveredMessage($step = 100, $maxExecutionTime = 10)
130 {
131 if (!CModule::IncludeModule("socialnetwork"))
132 return false;
133
134 $step = intval($step)>0? intval($step): 100;
135 $startConvertTime = microtime(true);
136
137 $step = intval($step);
139 array("ID" => "ID"),
140 array(
141 "!DATE_VIEW" => "",
142 "TO_DELETED" => "N",
143 "MESSAGE_TYPE" => "P"
144 ),
145 false,
146 array("nTopCount" => $step),
147 array("ID", "FROM_USER_ID", "TO_USER_ID", "MESSAGE", "DATE_CREATE")
148 );
149
150 while($arMessage = $dbMessage->Fetch())
151 {
152 $ar = Array(
153 "FROM_USER_ID" => intval($arMessage["FROM_USER_ID"]),
154 "TO_USER_ID" => intval($arMessage["TO_USER_ID"]),
155 "MESSAGE" => $arMessage["MESSAGE"],
156 "MESSAGE_DATE" => $arMessage["DATE_CREATE"],
157 "IMPORT_ID" => $arMessage["ID"],
158 "CONVERT" => 'Y',
159 );
161 CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y", "FROM_DELETED" => "Y"));
162
163 self::$converted++;
164 self::$convertPerStep++;
165
166 if($maxExecutionTime > 0 && (microtime(true) - $startConvertTime > $maxExecutionTime))
167 break;
168 }
169 if ($maxExecutionTime > (2*(microtime(true) - $startConvertTime)))
170 self::$nextConvertPerStep = $step*2;
171 else
172 self::$nextConvertPerStep = $step;
173
174 return true;
175 }
176
177 public static function UndeliveredMessageAgent()
178 {
179 if (!CModule::IncludeModule("socialnetwork"))
180 return false;
181
182 $activateNewAgent = false;
183
185 array("ID" => "ASC"),
186 array(
187 "DATE_VIEW" => "",
188 "TO_DELETED" => "N",
189 "MESSAGE_TYPE" => "P"
190 ),
191 false,
192 array("nTopCount" => '500'),
193 array("ID", "FROM_USER_ID", "TO_USER_ID", "MESSAGE", "DATE_CREATE")
194 );
195 while ($arMessage = $dbMessage->Fetch())
196 {
197 $ar = Array(
198 "FROM_USER_ID" => intval($arMessage["FROM_USER_ID"]),
199 "TO_USER_ID" => intval($arMessage["TO_USER_ID"]),
200 "MESSAGE" => $arMessage["MESSAGE"],
201 "MESSAGE_DATE" => $arMessage["DATE_CREATE"],
202 );
204 CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y", "FROM_DELETED" => "Y"));
205 $activateNewAgent = true;
206 }
207
208 return $activateNewAgent? "CIMConvert::UndeliveredMessageAgent();": "";
209 }
210
211 public static function ConvertCount()
212 {
213 global $DB;
214
215 if (!$DB->TableExists('b_sonet_messages'))
216 {
217 return 0;
218 }
219
220 $strSql = "SELECT COUNT('x') CNT FROM b_sonet_messages WHERE DATE_VIEW IS NOT NULL AND TO_DELETED = 'N' AND MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'";
221 $res = $DB->Query($strSql);
222
223 if ($row = $res->Fetch())
224 {
225 return intval($row['CNT']);
226 }
227
228 return 0;
229 }
230}
231
232?>
$arResult
Определения generate_coupon.php:16
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения im_convert.php:3
static $nextConvertPerStep
Определения im_convert.php:5
__construct()
Определения im_convert.php:8
static RecentList()
Определения im_convert.php:12
static ConvertCount()
Определения im_convert.php:211
static UndeliveredMessageAgent()
Определения im_convert.php:177
static DeliveredMessage($step=100, $maxExecutionTime=10)
Определения im_convert.php:129
static $converted
Определения im_convert.php:6
static $convertPerStep
Определения im_convert.php:4
Определения im_message.php:14
static Add($arFields)
Определения im_message.php:28
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения messages.php:125
static Update($ID, $arFields)
Определения messages.php:80
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$dbMessage
Определения group_wiki_post_comment.php:12
const IM_MESSAGE_CHAT
Определения include.php:23
const IM_MESSAGE_PRIVATE
Определения include.php:22
const IM_MESSAGE_OPEN_LINE
Определения include.php:26
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$arRes
Определения options.php:104
$GLOBALS['_____370096793']
Определения update_client.php:1
$dbRes
Определения yandex_detail.php:168
$maxExecutionTime
Определения yandex_setup.php:647