4require_once (
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/vote/vote_tools.php");
5require_once (
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/vote/classes/mysql/channel.php");
8if (!defined(
"VOTE_CACHE_TIME"))
9 define(
"VOTE_CACHE_TIME", 3600);
11define(
"VOTE_DEFAULT_DIAGRAM_TYPE",
"histogram");
16 "QUESTION" =>
array());
19 "reference_id" =>
array(0, 1, 2, 4),
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"
68 $CHANNEL_ID = intval($CHANNEL_ID);
69 if ($CHANNEL_ID <= 0 || empty(
$arFields)):
79 $arQuestions =
array();
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");
89 $arFieldsVote[
"DATE_START"] =
$arFields[
"DATE_START"];
91 $arFieldsVote[
"DATE_END"] =
$arFields[
"DATE_END"];
93 $arFieldsVote[
"TITLE"] =
$arFields[
"TITLE"];
95 $arFieldsVote[
"ACTIVE"] =
$arFields[
"ACTIVE"];
97 $arFieldsVote[
"NOTIFY"] =
$arFields[
"NOTIFY"];
102 $e =
$GLOBALS[
'APPLICATION']->GetException();
105 "text" => $e->GetString());
106 elseif (intval($VOTE_ID) > 0):
114 "id" =>
"CHANNEL_ID",
130 $GLOBALS[
"APPLICATION"]->ThrowException($e);
134 if (!empty($arFieldsVote[
"TITLE"]) && !empty($arVote[
"TITLE"]))
136 $q = reset($arQuestions);
137 if ($arVote[
"TITLE"] == mb_substr($q[
"QUESTION"], 0, mb_strlen($arVote[
"TITLE"])))
138 unset($arFieldsVote[
"TITLE"]);
146 if ($arQuestion[
"DEL"] !=
"Y")
148 $arQuestion[
"ID"] = intval($arQuestion[
"ID"]);
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()));
155 $arAnswers = ($arQuestion[
"ID"] > 0 ? $arQuestions[$arQuestion[
"ID"]][
"ANSWERS"] :
array());
156 foreach ($arQuestion[
"ANSWERS"] as $keya => $arAnswer)
158 $arAnswer[
"ID"] = intval($arAnswer[
"ID"]);
159 $arAnswer[
"MESSAGE"] = trim($arAnswer[
"MESSAGE"]);
160 if (!empty($arAnswer[
"MESSAGE"]) && $arAnswer[
"DEL"] !=
"Y")
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"]))
168 $arQuestion[
"ANSWERS"][$keya][
"ID"] = $arAnswer[
"ID"];
169 unset($arAnswers[$arAnswer[
"ID"]]);
175 if ($arQuestion[
"DEL"] ==
"Y" || empty($arQuestion[
"QUESTION"]) || empty($arQuestion[
"ANSWERS"]))
177 if ($arQuestion[
"DEL"] !=
"Y" && !(empty($arQuestion[
"QUESTION"]) && empty($arQuestion[
"ANSWERS"])))
180 "id" =>
"QUESTION_".
$key,
181 "text" => (empty($arQuestion[
"QUESTION"]) ?
187 if ($arQuestion[
"ID"] > 0)
189 unset($arQuestions[$arQuestion[
"ID"]]);
190 foreach($arAnswers as $arAnswer)
192 $arQuestion[
"ANSWERS"][] = ($arAnswer +
array(
"DEL" =>
"Y"));
196 $arFieldsQuestions[
$key] = $arQuestion;
198 foreach ($arQuestions as $arQuestion)
200 $arFieldsQuestions[] = ($arQuestion +
array(
"DEL" =>
"Y"));
205 $GLOBALS[
"APPLICATION"]->ThrowException($e);
207 elseif (empty($arFieldsQuestions) && $VOTE_ID <= 0):
214 if (empty($arFieldsVote[
"TITLE"]))
216 $q = reset($arFieldsQuestions);
217 $arFieldsVote[
"TITLE"] =
null;
219 if ($q[
"DEL"] !=
"Y")
221 $arFieldsVote[
"TITLE"] = $q[
"QUESTION"];
224 }
while ($q = next($arFieldsQuestions));
225 reset($arFieldsQuestions);
229 $arVote[
"ID"] = intval(CVote::Add($arFieldsVote));
233 CVote::Update($VOTE_ID, $arFieldsVote);
236 if ($iQuestions > 0 && $arVote[
"ID"] > 0)
239 foreach ($arFieldsQuestions as $arQuestion)
241 if ($arQuestion[
"DEL"] ==
"Y"):
244 elseif ($arQuestion[
"ID"] > 0):
245 $arQuestion[
"C_SORT"] = ($iQuestions + 1) * 10;
248 $arQuestion[
"C_SORT"] = ($iQuestions + 1) * 10;
249 $arQuestion[
"VOTE_ID"] = $arVote[
"ID"];
251 if ($arQuestion[
"ID"] <= 0):
257 foreach ($arQuestion[
"ANSWERS"] as $arAnswer)
259 if ($arAnswer[
"DEL"] ==
"Y"):
264 if ($arAnswer[
"ID"] > 0):
265 $arAnswer[
"C_SORT"] = ($iAnswers + 1)* 10;
268 $arAnswer[
"QUESTION_ID"] = $arQuestion[
"ID"];
269 $arAnswer[
"C_SORT"] = ($iAnswers + 1)* 10;
271 if ($arAnswer[
"ID"] <= 0):
286 if (intval($arVote[
"ID"]) <= 0)
295 return $arVote[
"ID"];
static GetListEx($arOrder=array("ID"=> "ASC"), $arFilter=array())
static Delete($ID, $QUESTION_ID=false, $VOTE_ID=false)
static Update($ID, $arFields)
static UserGroupPermission($CHANNEL_ID)
static CheckFields($ACTION, &$arFields, $ID=0)
static GetList($VOTE_ID, $by='s_c_sort', $order='asc', $arFilter=[])
static Update($ID, $arFields, $strUploadDir=false)
static Add($arFields, $strUploadDir=false)
static Delete($ID, $VOTE_ID=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']
VoteVoteEditFromArray($CHANNEL_ID, $VOTE_ID=false, $arFields=array(), $params=array())