1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
functions.php
См. документацию.
1<?php
2#############################################
3# Bitrix Site Manager Forum #
4# Copyright (c) 2002-2007 Bitrix #
5# https://www.bitrixsoft.com #
6# mailto:admin@bitrixsoft.com #
7#############################################
9{
10 public static $types = array(
11 "C" => "vote_form_channel_",
12 "V" => "vote_form_vote_",
13 "Q" => "vote_form_question_",
14 "A" => "vote_form_answer_"
15 );
16
17 public static $cacheKey = "/#SITE_ID#/voting.cache/";
18
19 public function cachePath($site_id)
20 {
21 $site_id = (!empty($site_id) ? $site_id : "bx");
22 return str_replace("#SITE_ID#", $site_id, self::$cacheKey);
23 }
24
25 function __construct()
26 {
28
29 AddEventHandler("vote", "onAfterVoteChannelAdd", Array(&$this, "OnAfterVoteChannelChange"));
30 AddEventHandler("vote", "onAfterVoteChannelUpdate", Array(&$this, "OnAfterVoteChannelChange"));
31 AddEventHandler("vote", "onAfterChannelDelete", Array(&$this, "OnAfterVoteChannelChange"));
32
33 AddEventHandler("vote", "onAfterVoteAdd", array(&$this, "OnAfterVoteChange"));
34 AddEventHandler("vote", "onAfterVoteUpdate", array(&$this, "OnAfterVoteChange"));
35 AddEventHandler("vote", "onAfterVoteDelete", array(&$this, "OnAfterVoteChange"));
36
37 $eventManager->addEventHandler("vote", "\\Bitrix\\Vote\\Vote::OnAfterAdd", array($this, "OnVoteChange"));
38 $eventManager->addEventHandler("vote", "\\Bitrix\\Vote\\Vote::OnAfterUpdate", array($this, "OnVoteChange"));
39 $eventManager->addEventHandler("vote", "\\Bitrix\\Vote\\Vote::OnAfterDelete", array($this, "OnVoteChange"));
40
41 AddEventHandler("vote", "onVoteReset", array(&$this, "OnAfterVoteChange"));
42 AddEventHandler("vote", "onAfterVoting", array(&$this, "OnAfterVoteChange"));
43
44 if(defined("BX_COMP_MANAGED_CACHE"))
45 {
46 AddEventHandler("vote", "onAfterVoteQuestionAdd", array(&$this, "OnAfterVoteQuestionAdd"));
47 AddEventHandler("vote", "onBeforeVoteQuestionUpdate", array(&$this, "OnBeforeVoteQuestionUpdate"));
48 AddEventHandler("vote", "onAfterVoteQuestionUpdate", array(&$this, "OnAfterVoteQuestionUpdate"));
49 AddEventHandler("vote", "onAfterVoteQuestionDelete", array(&$this, "OnAfterVoteQuestionDelete"));
50
51 AddEventHandler("vote", "onAfterVoteAnswerAdd", array(&$this, "OnAfterVoteAnswerAdd"));
52 AddEventHandler("vote", "onBeforeVoteAnswerUpdate", array(&$this, "OnBeforeVoteAnswerUpdate"));
53 AddEventHandler("vote", "onAfterVoteAnswerUpdate", array(&$this, "OnAfterVoteAnswerUpdate"));
54 AddEventHandler("vote", "onAfterVoteAnswerDelete", array(&$this, "OnAfterVoteAnswerDelete"));
55 }
56 }
57
58 public static function SetTag($path, $tag, $ID = 0)
59 {
60 global $CACHE_MANAGER;
61 if (! defined("BX_COMP_MANAGED_CACHE"))
62 return false;
63 $CACHE_MANAGER->StartTagCache($path);
64 $tags = is_array($tag) ? $tag : array($tag => $ID);
65 foreach ($tags as $tag => $ID)
66 {
67 if (array_key_exists($tag, self::$types))
68 {
69 $ID = is_array($ID) ? $ID : array($ID);
70 foreach ($ID as $i)
71 $CACHE_MANAGER->RegisterTag(self::$types[$tag].$i);
72 }
73 else
74 {
75 $CACHE_MANAGER->RegisterTag($tag);
76 }
77 }
78 $CACHE_MANAGER->EndTagCache();
79 return true;
80 }
81
82 public static function ClearTag($type, $ID=0)
83 {
84 if (! defined("BX_COMP_MANAGED_CACHE"))
85 return false;
86 global $CACHE_MANAGER;
87 if (array_key_exists($type, self::$types))
88 $CACHE_MANAGER->ClearByTag(self::$types[$type].$ID);
89 else
90 $CACHE_MANAGER->ClearByTag($type);
91 return true;
92 }
93
95 {
96 self::ClearTag("C", $ID);
97 // drop permissions
98 if (VOTE_CACHE_TIME !== false):
99 global $CACHE_MANAGER;
100 $CACHE_MANAGER->CleanDir("b_vote_channel");
101 if (empty($arFields) || array_key_exists("GROUP_ID", $arFields))
102 $CACHE_MANAGER->CleanDir("b_vote_perm");
103 if (empty($arFields) || !empty($arFields["SITE"]))
104 $CACHE_MANAGER->CleanDir("b_vote_channel_2_site");
105 $CACHE_MANAGER->CleanDir("b_vote");
106 endif;
107 }
108 function OnVoteChange(\Bitrix\Main\Entity\Event $event)
109 {
110 $data = $event->getParameter("primary");
111 $this->OnAfterVoteChange($data["ID"]);
112 }
114 {
115 self::ClearTag("V", $ID);
116 if (VOTE_CACHE_TIME !== false):
117 global $CACHE_MANAGER;
118 $CACHE_MANAGER->CleanDir("b_vote");
119 unset($GLOBALS["VOTE_CACHE"]["VOTE"][$ID]);
120 endif;
121 }
122
124 {
125 self::ClearTag("V", $arFields['VOTE_ID']);
126 }
127
129 {
130 if (array_key_exists("VOTE_ID", $arFields))
131 {
133 if ($db_res && ($res = $db_res->Fetch()))
134 self::ClearTag("V", $res["VOTE_ID"]);
135 }
136 }
137
139 {
140 if (array_key_exists("VOTE_ID", $arFields))
141 {
142 self::ClearTag("V", $arFields["VOTE_ID"]);
143 }
144 else
145 {
147 if ($db_res && ($res = $db_res->Fetch()))
148 self::ClearTag("V", $res["VOTE_ID"]);
149 }
150 self::ClearTag("Q", $ID);
151 }
152
153 function OnAfterVoteQuestionDelete($ID, $VOTE_ID)
154 {
155 self::ClearTag("V", $VOTE_ID);
156 }
157
159 {
160 self::ClearTag("Q", $arFields["QUESTION_ID"]);
161 }
162
164 {
165 if (array_key_exists("QUESTION_ID", $arFields))
166 {
167 global $DB;
168 $res = $DB->Query("SELECT QUESTION_ID FROM b_vote_answer WHERE ID=".$ID);
169 if ($row = $res->Fetch())
170 self::ClearTag("Q", $row["QUESTION_ID"]);
171 }
172 }
173
175 {
176 if (array_key_exists("QUESTION_ID", $arFields))
177 {
178 self::ClearTag("Q", $arFields["QUESTION_ID"]);
179 }
180 else
181 {
182 global $DB;
183 $db_res = $DB->Query("SELECT QUESTION_ID FROM b_vote_answer WHERE ID=".$ID);
184 if ($res = $db_res->Fetch())
185 self::ClearTag("Q", $res["QUESTION_ID"]);
186 }
187 }
188
189 function OnAfterVoteAnswerDelete($ID, $QUESTION_ID, $VOTE_ID)
190 {
191 if ($QUESTION_ID != false)
192 self::ClearTag("Q", $QUESTION_ID);
193 if ($VOTE_ID != false)
194 self::ClearTag("V", $VOTE_ID);
195 }
196
197 function onAfterVoting($VOTE_ID, $EVENT_ID)
198 {
199 unset($GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]);
200 unset($GLOBALS["VOTE_CACHE"]["VOTE"][$VOTE_ID]);
201 CVoteCacheManager::ClearTag("V", $VOTE_ID);
202 }
203}
$path
Определения access_edit.php:21
$type
Определения options.php:106
$db_res
Определения options_user_settings.php:8
static getInstance()
Определения eventmanager.php:31
static GetByID($ID)
Определения question.php:247
Определения functions.php:9
__construct()
Определения functions.php:25
OnAfterVoteQuestionAdd($ID, $arFields)
Определения functions.php:123
static ClearTag($type, $ID=0)
Определения functions.php:82
OnAfterVoteAnswerUpdate($ID, $arFields)
Определения functions.php:174
OnAfterVoteAnswerAdd($ID, $arFields)
Определения functions.php:158
cachePath($site_id)
Определения functions.php:19
onAfterVoting($VOTE_ID, $EVENT_ID)
Определения functions.php:197
OnAfterVoteChange($ID)
Определения functions.php:113
static $cacheKey
Определения functions.php:17
static $types
Определения functions.php:10
OnAfterVoteQuestionUpdate($ID, $arFields)
Определения functions.php:138
OnAfterVoteChannelChange($ID, $arFields=array())
Определения functions.php:94
OnVoteChange(\Bitrix\Main\Entity\Event $event)
Определения functions.php:108
OnAfterVoteAnswerDelete($ID, $QUESTION_ID, $VOTE_ID)
Определения functions.php:189
static SetTag($path, $tag, $ID=0)
Определения functions.php:58
OnAfterVoteQuestionDelete($ID, $VOTE_ID)
Определения functions.php:153
OnBeforeVoteAnswerUpdate($ID, $arFields)
Определения functions.php:163
OnBeforeVoteQuestionUpdate(&$ID, &$arFields)
Определения functions.php:128
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$arFields
Определения dblapprove.php:5
$data['IS_AVAILABLE']
Определения .description.php:13
</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
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
endif
Определения csv_new_setup.php:990
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
Определения tools.php:5165
$event
Определения prolog_after.php:141
$i
Определения factura.php:643
$eventManager
Определения include.php:412
$site_id
Определения sonet_set_content_view.php:9
$GLOBALS['_____370096793']
Определения update_client.php:1