1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
include.php
См. документацию.
1<?
3
4require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/vote/vote_tools.php");
5require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/vote/classes/mysql/channel.php");
7
8if (!defined("VOTE_CACHE_TIME"))
9 define("VOTE_CACHE_TIME", 3600);
10
11define("VOTE_DEFAULT_DIAGRAM_TYPE", "histogram");
12
13$GLOBALS["VOTE_CACHE"] = array(
14 "CHANNEL" => array(),
15 "VOTE" => array(),
16 "QUESTION" => array());
17$GLOBALS["VOTE_CACHE_VOTING"] = array();
18$GLOBALS["aVotePermissions"] = array(
19 "reference_id" => array(0, 1, 2, /*3, */4),
20 "reference" => array(GetMessage("VOTE_DENIED"), GetMessage("VOTE_READ"), GetMessage("VOTE_WRITE"), /*GetMessage("VOTE_EDIT_MY_OWN"), */GetMessage("VOTE_EDIT")));
21
22CModule::AddAutoloadClasses("vote", array(
23 "CVoteAnswer" => "classes/mysql/answer.php",
24 "CVoteEvent" => "classes/mysql/event.php",
25 "CVoteQuestion" => "classes/mysql/question.php",
26 "CVoteUser" => "classes/mysql/user.php",
27 "CVote" => "classes/mysql/vote.php",
28 "CVoteCacheManager" => "classes/general/functions.php",
29 "CVoteNotifySchema" => "classes/general/im.php",
30 "bitrix\\vote\\answertable" => "lib/answer.php",
31 "bitrix\\vote\\answer" => "lib/answer.php",
32 "bitrix\\vote\\attachtable" => "lib/attach.php",
33 "bitrix\\vote\\attach" => "lib/attach.php",
34 "bitrix\\vote\\attachment\\attach" => "lib/attachment/attach.php",
35 "bitrix\\vote\\attachment\\blogpostconnector" => "lib/attachment/blogpostconnector.php",
36 "bitrix\\vote\\attachment\\connector" => "lib/attachment/connector.php",
37 "bitrix\\vote\\attachment\\controller" => "lib/attachment/controller.php",
38 "bitrix\\vote\\attachment\\defaultconnector" => "lib/attachment/defaultconnector.php",
39 "bitrix\\vote\\attachment\\forummessageconnector" => "lib/attachment/forummessageconnector.php",
40 "bitrix\\vote\\attachment\\storable" => "lib/attachment/storable.php",
41 "bitrix\\vote\\base\\baseobject" => "lib/base/baseobject.php",
42 "bitrix\\vote\\base\\controller" => "lib/base/controller.php",
43 "bitrix\\vote\\base\\diag" => "lib/base/diag.php",
44 "bitrix\\vote\\channeltable" => "lib/channel.php",
45 "bitrix\\vote\\channelgrouptable" => "lib/channel.php",
46 "bitrix\\vote\\channelsitetable" => "lib/channel.php",
47 "bitrix\\vote\\channel" => "lib/channel.php",
48 "bitrix\\vote\\dbresult" => "lib/dbresult.php",
49 "bitrix\\vote\\voteeventtable" => "lib/event.php",
50 "bitrix\\vote\\eventtable" => "lib/event.php",
51 "bitrix\\vote\\eventquestiontable" => "lib/event.php",
52 "bitrix\\vote\\eventanswertable" => "lib/event.php",
53 "bitrix\\vote\\event" => "lib/event.php",
54 "bitrix\\vote\\questiontable" => "lib/question.php",
55 "bitrix\\vote\\question" => "lib/question.php",
56 "bitrix\\vote\\uf\\manager" => "lib/uf/manager.php",
57 "bitrix\\vote\\uf\\voteusertype" => "lib/uf/voteusertype.php",
58 "bitrix\\vote\\usertable" => "lib/user.php",
59 "bitrix\\vote\\user" => "lib/user.php",
60 "bitrix\\vote\\votetable" => "lib/vote.php",
61 "bitrix\\vote\\vote" => "lib/vote.php"
62));
63
65
66function VoteVoteEditFromArray($CHANNEL_ID, $VOTE_ID = false, $arFields = array(), $params = array())
67{
68 $CHANNEL_ID = intval($CHANNEL_ID);
69 if ($CHANNEL_ID <= 0 || empty($arFields)):
70 return false;
71 elseif (CVote::UserGroupPermission($CHANNEL_ID) <= 0):
72 return false;
73 endif;
74 $aMsg = array();
75 $params = (is_array($params) ? $params : array());
76 $params["UNIQUE_TYPE"] = (is_set($params, "UNIQUE_TYPE") ? intval($params["UNIQUE_TYPE"]) : 20);
77
78 $arVote = array();
79 $arQuestions = array();
80
81 $arFieldsQuestions = array();
82 $arFieldsVote = array(
83 "CHANNEL_ID" => $CHANNEL_ID,
84 "AUTHOR_ID" => $GLOBALS["USER"]->GetID(),
85 "UNIQUE_TYPE" => $params["UNIQUE_TYPE"],
86 "DELAY" => $params["DELAY"] ?: 10,
87 "DELAY_TYPE" => $params['DELAY_TYPE'] ?: "D");
88 if (!empty($arFields["DATE_START"]))
89 $arFieldsVote["DATE_START"] = $arFields["DATE_START"];
90 if (!empty($arFields["DATE_END"]))
91 $arFieldsVote["DATE_END"] = $arFields["DATE_END"];
92 if (!empty($arFields["TITLE"]))
93 $arFieldsVote["TITLE"] = $arFields["TITLE"];
94 if (isset($arFields["ACTIVE"]))
95 $arFieldsVote["ACTIVE"] = $arFields["ACTIVE"];
96 if (isset($arFields["NOTIFY"]))
97 $arFieldsVote["NOTIFY"] = $arFields["NOTIFY"];
98 if (isset($arFields["URL"]))
99 $arFieldsVote["URL"] = $arFields["URL"];
100/************** Fatal errors ***************************************/
101 if (!CVote::CheckFields("UPDATE", $arFieldsVote)):
102 $e = $GLOBALS['APPLICATION']->GetException();
103 $aMsg[] = array(
104 "id" => "VOTE_ID",
105 "text" => $e->GetString());
106 elseif (intval($VOTE_ID) > 0):
107 $db_res = CVote::GetByID($VOTE_ID);
108 if (!($db_res && $res = $db_res->Fetch())):
109 $aMsg[] = array(
110 "id" => "VOTE_ID",
111 "text" => GetMessage("VOTE_VOTE_NOT_FOUND", array("#ID#", $VOTE_ID)));
112 elseif ($res["CHANNEL_ID"] != $CHANNEL_ID):
113 $aMsg[] = array(
114 "id" => "CHANNEL_ID",
115 "text" => GetMessage("VOTE_CHANNEL_ID_ERR"));
116 else:
117 $arVote = $res;
118 $db_res = CVoteQuestion::GetList($arVote["ID"], "s_id");
119 if ($db_res && $res = $db_res->Fetch()):
120 do { $arQuestions[$res["ID"]] = $res + array("ANSWERS" => array()); } while ($res = $db_res->Fetch());
121 endif;
122 $db_res = CVoteAnswer::GetListEx(array("ID" => "ASC"), array("VOTE_ID" => $arVote["ID"]));
123 if ($db_res && $res = $db_res->Fetch()):
124 do { $arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } while ($res = $db_res->Fetch());
125 endif;
126 endif;
127 endif;
128 if (!empty($aMsg)):
129 $e = new CAdminException(array_reverse($aMsg));
130 $GLOBALS["APPLICATION"]->ThrowException($e);
131 return false;
132 endif;
133/************** Fatal errors/***************************************/
134 if (!empty($arFieldsVote["TITLE"]) && !empty($arVote["TITLE"]))
135 {
136 $q = reset($arQuestions);
137 if ($arVote["TITLE"] == mb_substr($q["QUESTION"], 0, mb_strlen($arVote["TITLE"])))
138 unset($arFieldsVote["TITLE"]);
139 }
140/************** Check Data *****************************************/
141 // Questions
142 $arFields["QUESTIONS"] = (is_array($arFields["QUESTIONS"]) ? $arFields["QUESTIONS"] : array());
143 $iQuestions = 0;
144 foreach ($arFields["QUESTIONS"] as $key => $arQuestion)
145 {
146 if ($arQuestion["DEL"] != "Y")
147 {
148 $arQuestion["ID"] = intval($arQuestion["ID"]);
149 $arQuestion = array(
150 "ID" => $arQuestion["ID"] > 0 && is_set($arQuestions, $arQuestion["ID"]) ? $arQuestion["ID"] : false,
151 "QUESTION" => trim($arQuestion["QUESTION"]),
152 "QUESTION_TYPE" => trim($arQuestion["QUESTION_TYPE"]),
153 "ANSWERS" => (is_array($arQuestion["ANSWERS"]) ? $arQuestion["ANSWERS"] : array()));
154
155 $arAnswers = ($arQuestion["ID"] > 0 ? $arQuestions[$arQuestion["ID"]]["ANSWERS"] : array());
156 foreach ($arQuestion["ANSWERS"] as $keya => $arAnswer)
157 {
158 $arAnswer["ID"] = intval($arAnswer["ID"]);
159 $arAnswer["MESSAGE"] = trim($arAnswer["MESSAGE"]);
160 if (!empty($arAnswer["MESSAGE"]) && $arAnswer["DEL"] != "Y")
161 {
162 $arQuestion["ANSWERS"][$keya] = array(
163 "MESSAGE" => $arAnswer["MESSAGE"],
164 "MESSAGE_TYPE" => $arAnswer["MESSAGE_TYPE"],
165 "FIELD_TYPE" => $arAnswer["FIELD_TYPE"]);
166 if ($arAnswer["ID"] > 0 && is_set($arAnswers, $arAnswer["ID"]))
167 {
168 $arQuestion["ANSWERS"][$keya]["ID"] = $arAnswer["ID"];
169 unset($arAnswers[$arAnswer["ID"]]);
170 }
171 }
172 }
173 }
174
175 if ($arQuestion["DEL"] == "Y" || empty($arQuestion["QUESTION"]) || empty($arQuestion["ANSWERS"]))
176 {
177 if ($arQuestion["DEL"] != "Y" && !(empty($arQuestion["QUESTION"]) && empty($arQuestion["ANSWERS"])))
178 {
179 $aMsg[] = array(
180 "id" => "QUESTION_".$key,
181 "text" => (empty($arQuestion["QUESTION"]) ?
182 GetMessage("VOTE_QUESTION_EMPTY", array("#NUMBER#" => $key)) :
183 GetMessage("VOTE_ANSWERS_EMPTY", array("#QUESTION#" => htmlspecialcharsbx($arQuestion["QUESTION"])))));
184 }
185 continue;
186 }
187 if ($arQuestion["ID"] > 0)
188 {
189 unset($arQuestions[$arQuestion["ID"]]);
190 foreach($arAnswers as $arAnswer)
191 {
192 $arQuestion["ANSWERS"][] = ($arAnswer + array("DEL" => "Y"));
193 }
194 }
195 $iQuestions++;
196 $arFieldsQuestions[$key] = $arQuestion;
197 }
198 foreach ($arQuestions as $arQuestion)
199 {
200 $arFieldsQuestions[] = ($arQuestion + array("DEL" => "Y"));
201 }
202
203 if (!empty($aMsg)):
204 $e = new CAdminException(array_reverse($aMsg));
205 $GLOBALS["APPLICATION"]->ThrowException($e);
206 return false;
207 elseif (empty($arFieldsQuestions) && $VOTE_ID <= 0):
208 return true;
209 elseif ($params["bOnlyCheck"] == "Y"):
210 return true;
211 endif;
212/************** Check Data/*****************************************/
213/************** Main actions with return ***************************/
214 if (empty($arFieldsVote["TITLE"]))
215 {
216 $q = reset($arFieldsQuestions);
217 $arFieldsVote["TITLE"] = null;
218 do {
219 if ($q["DEL"] != "Y")
220 {
221 $arFieldsVote["TITLE"] = $q["QUESTION"];
222 break;
223 }
224 } while ($q = next($arFieldsQuestions));
225 reset($arFieldsQuestions);
226 }
227 if (empty($arVote))
228 {
229 $arVote["ID"] = intval(CVote::Add($arFieldsVote));
230 }
231 else
232 {
233 CVote::Update($VOTE_ID, $arFieldsVote);
234 }
235
236 if ($iQuestions > 0 && $arVote["ID"] > 0)
237 {
238 $iQuestions = 0;
239 foreach ($arFieldsQuestions as $arQuestion)
240 {
241 if ($arQuestion["DEL"] == "Y"):
242 CVoteQuestion::Delete($arQuestion["ID"]);
243 continue;
244 elseif ($arQuestion["ID"] > 0):
245 $arQuestion["C_SORT"] = ($iQuestions + 1) * 10;
246 CVoteQuestion::Update($arQuestion["ID"], $arQuestion);
247 else:
248 $arQuestion["C_SORT"] = ($iQuestions + 1) * 10;
249 $arQuestion["VOTE_ID"] = $arVote["ID"];
250 $arQuestion["ID"] = intval(CVoteQuestion::Add($arQuestion));
251 if ($arQuestion["ID"] <= 0):
252 continue;
253 endif;
254 endif;
255 $iQuestions++;
256 $iAnswers = 0;
257 foreach ($arQuestion["ANSWERS"] as $arAnswer)
258 {
259 if ($arAnswer["DEL"] == "Y"):
260 CVoteAnswer::Delete($arAnswer["ID"]);
261 continue;
262 endif;
263
264 if ($arAnswer["ID"] > 0):
265 $arAnswer["C_SORT"] = ($iAnswers + 1)* 10;
266 CVoteAnswer::Update($arAnswer["ID"], $arAnswer);
267 else:
268 $arAnswer["QUESTION_ID"] = $arQuestion["ID"];
269 $arAnswer["C_SORT"] = ($iAnswers + 1)* 10;
270 $arAnswer["ID"] = intval(CVoteAnswer::Add($arAnswer));
271 if ($arAnswer["ID"] <= 0):
272 continue;
273 endif;
274 endif;
275
276 $iAnswers++;
277 }
278 if ($iAnswers <= 0)
279 {
280 CVoteQuestion::Delete($arQuestion["ID"]);
281 $iQuestions--;
282 }
283 }
284 }
285
286 if (intval($arVote["ID"]) <= 0)
287 {
288 return false;
289 }
290 elseif ($iQuestions <= 0)
291 {
292 CVote::Delete($arVote["ID"]);
293 return 0;
294 }
295 return $arVote["ID"];
296/************** Actions/********************************************/
297/* $arFields = array(
298 "ID" => 345,
299 "TITLE" => "test",
300 "...",
301 "QUESTIONS" => array(
302 array(
303 "ID" => 348,
304 "QUESTION" => "test",
305 "ANSWERS" => array(
306 array(
307 "ID" => 340,
308 "MESSAGE" => "test"),
309 array(
310 "ID" => 0,
311 "MESSAGE" => "test"),
312 array(
313 "ID" => 350,
314 "DEL" => "Y",
315 "MESSAGE" => "test")
316 )
317 ),
318 array(
319 "ID" => 351,
320 "DEL" => "Y",
321 "QUESTION" => "test",
322 "ANSWERS" => array(
323 array(
324 "ID" => 0,
325 "MESSAGE" => "test"),
326 array(
327 "ID" => 478,
328 "DEL" => "Y",
329 "MESSAGE" => "test")
330 )
331 ),
332 array(
333 "ID" => 0,
334 "QUESTION" => "test",
335 "ANSWERS" => array(
336 array(
337 "ID" => 0,
338 "MESSAGE" => "test"),
339 )
340 ),
341 )
342 );
343*/
344
345
346}
347?>
$db_res
Определения options_user_settings.php:8
global $APPLICATION
Определения include.php:80
static GetListEx($arOrder=array("ID"=> "ASC"), $arFilter=array())
Определения answer.php:299
static Add($arFields)
Определения answer.php:103
static Delete($ID, $QUESTION_ID=false, $VOTE_ID=false)
Определения answer.php:197
static Update($ID, $arFields)
Определения answer.php:151
static Delete($ID)
Определения vote.php:245
static UserGroupPermission($CHANNEL_ID)
Определения vote.php:484
static GetByID($ID)
Определения vote.php:354
static CheckFields($ACTION, &$arFields, $ID=0)
Определения vote.php:19
static GetList($VOTE_ID, $by='s_c_sort', $order='asc', $arFilter=[])
Определения question.php:268
static Update($ID, $arFields, $strUploadDir=false)
Определения question.php:155
static Add($arFields, $strUploadDir=false)
Определения question.php:108
static Delete($ID, $VOTE_ID=false)
Определения question.php:406
Определения functions.php:9
$arFields
Определения dblapprove.php:5
</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
global $MESS
Определения bill.php:2
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
endif
Определения csv_new_setup.php:990
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$GLOBALS['_____370096793']
Определения update_client.php:1
VoteVoteEditFromArray($CHANNEL_ID, $VOTE_ID=false, $arFields=array(), $params=array())
Определения include.php:66
global $voteCache
Определения include.php:2