<?PHP
/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
https://seditio.org
[BEGIN_SED]
File=polls.php
Version=179
Updated=2022-jul-14
Type=Core
Author=Seditio Team
Description=Polls functions
[END_SED]
==================== */
if (!defined('SED_CODE')) { die('Wrong URL.'); }
function sed_poll_add($part)
{
global $t;
$poll_options = array();
$poll_text = sed_import('poll_text', 'P', 'TXT');
$poll_option_arr = sed_import('poll_option', 'P', 'ARR');
if (is_array($poll_option_arr))
{ foreach ($poll_option_arr as $v) { if (!empty($v)) $poll_options[] = sed_import($v, 'D', 'TXT'); } }
else
{ $poll_options = array(0 => '', 1 => ''); }
$i = 1;
foreach ($poll_options as $nop)
{
$t->assign(array(
"NEW_POLL_OPTION" => sed_textbox('poll_option[]', $nop, 32, 128),
"NEW_POLL_NUM" => $i
));
$i++;
if ($i > 2) $t->parse($part."_NEW_POLL.NEW_POLL_OPTIONS.NEW_POLL_OPTIONS_DELETE");
$t->parse($part."_NEW_POLL.NEW_POLL_OPTIONS");
}
$t->assign(array(
"NEW_POLL_TEXT" => sed_textbox('poll_text', $poll_text, 64, 255)
));
$t->parse($part."_NEW_POLL");
}
function sed_poll_addsave($type, $code)
{
global $cfg, $usr, $L, $sys, $db_polls, $db_polls_options;
$poll_text = sed_import('poll_text', 'P', 'TXT');
$poll_option_arr = sed_import('poll_option', 'P', 'ARR');
foreach ($poll_option_arr as $v)
{ if (!empty($v)) $poll_options[] = sed_import($v, 'D', 'TXT'); }
$sql = sed_sql_query("INSERT INTO $db_polls
(
poll_type,
poll_state,
poll_creationdate,
poll_text,
poll_ownerid,
poll_code
)
VALUES
(
'".sed_sql_prep($type)."',
0,
".(int)$sys['now_offset'].",
'".sed_sql_prep($poll_text)."',
'".(int)$usr['id']."',
'".(int)$code."')"
);
$poll_id = sed_sql_insertid();
foreach ($poll_options as $npo)
{
$sql2 = sed_sql_query("INSERT into $db_polls_options
(
po_pollid,
po_text,
po_count
)
VALUES
(
'".$poll_id."',
'".sed_sql_prep($npo)."',
'0')"
);
}
return($poll_id);
}
function sed_poll_edit($part, $poll_id)
{
global $t, $db_polls, $db_polls_options;
$poll_options = array();
$poll_text = sed_import('poll_text', 'P', 'TXT');
$poll_option_arr = sed_import('poll_option', 'P', 'ARR');
$sql = sed_sql_query("SELECT * FROM $db_polls WHERE poll_id = '".$poll_id."' LIMIT 1");
$row = sed_sql_fetchassoc($sql);
$poll_text = (empty($poll_text)) ? $row['poll_text'] : $poll_text;
$sql = sed_sql_query("SELECT * FROM $db_polls_options WHERE po_pollid = '".$poll_id."' ORDER by po_id ASC");
if (sed_sql_numrows($sql) > 0)
{
while ($row = sed_sql_fetchassoc($sql))
{ $poll_options[$row['po_id']] = $row['po_text']; }
}
if (is_array($poll_option_arr))
{
foreach ($poll_option_arr as $key => $v)
{ if (!empty($v)) $poll_options[$key] = sed_import($v, 'D', 'TXT'); }
}
elseif (count($poll_options) == 0)
{ $poll_options = array(0 => '', 1 => ''); }
$i = 1;
foreach ($poll_options as $key => $nop)
{
$t->assign(array(
"EDIT_POLL_OPTION" => sed_textbox('poll_option['.$key.']', $nop, 32, 128),
"EDIT_POLL_NUM" => $i
));
$i++;
if ($i > 2) $t->parse($part."_EDIT_POLL.EDIT_POLL_OPTIONS.EDIT_POLL_OPTIONS_DELETE");
$t->parse($part."_EDIT_POLL.EDIT_POLL_OPTIONS");
}
$t->assign(array(
"EDIT_POLL_TEXT" => sed_textbox('poll_text', $poll_text, 64, 255)
));
$t->parse($part."_EDIT_POLL");
}
function sed_poll_editsave($poll_id)
{
global $cfg, $usr, $L, $sys, $db_polls, $db_polls_options;
$poll_text = sed_import('poll_text', 'P', 'TXT');
$poll_option_arr = sed_import('poll_option', 'P', 'ARR');
foreach ($poll_option_arr as $key => $v)
{
if (!empty($v)) {
$poll_options[$key] = sed_import($v, 'D', 'TXT');
$poll_options_keys[] = $key; //exists's variants
}
}
$sql = sed_sql_query("UPDATE $db_polls SET poll_text='".sed_sql_prep($poll_text)."' WHERE poll_id='".(int)$poll_id."'");
$sql2 = sed_sql_query("DELETE FROM $db_polls_options WHERE po_pollid='".(int)$poll_id."' AND po_id NOT IN (".implode(',', $poll_options_keys).")");
foreach ($poll_options as $key => $npo)
{
$sql3 = sed_sql_query("INSERT INTO $db_polls_options SET po_id='".$key."', po_pollid='".$poll_id."', po_text = '".sed_sql_prep($npo)."', po_count = 0
ON DUPLICATE KEY UPDATE po_text = '".sed_sql_prep($npo)."'");
}
}
function sed_poll_check()
{
global $error_string, $L;
$poll_options = array();
$poll_text = sed_import('poll_text', 'P', 'TXT');
$poll_option_arr = sed_import('poll_option', 'P', 'ARR');
if (is_array($poll_option_arr))
{
foreach ($poll_option_arr as $v)
{ if (!empty($v)) $poll_options[] = sed_import($v, 'D', 'TXT'); }
}
if (empty($poll_text) || count($poll_options) < 2)
{
$error_string .= $L['polls_emptytitle']."<br />";
}
}
function sed_poll_delete($id)
{
global $db_polls, $db_polls_options, $db_polls_voters, $db_com, $db_forum_topics;
$id = (int) $id;
$num = 0;
if ($id != 0)
{
$sql = sed_sql_query("SELECT poll_id FROM $db_polls WHERE poll_code = '".$id."' LIMIT 1");
if (sed_sql_numrows($sql) > 0)
{
if ($row['poll_type'] == 1 && !empty($row['poll_code'])) // forum poll type
{
//deattach poll from topic
$sql = sed_sql_query("UPDATE $db_forum_topics SET ft_poll = 0 WHERE ft_id = ".(int)$row['poll_code']);
}
}
$sql = sed_sql_query("DELETE FROM $db_polls WHERE poll_id=".$id);
$num = sed_sql_affectedrows();
$sql = sed_sql_query("DELETE FROM $db_polls_options WHERE po_pollid=".$id);
$num = $num + sed_sql_affectedrows();
$sql = sed_sql_query("DELETE FROM $db_polls_voters WHERE pv_pollid=".$id);
$num = $num + sed_sql_affectedrows();
$id2 = "v".$id;
$sql = sed_sql_query("DELETE FROM $db_com WHERE com_code='$id2'");
$num = $num + sed_sql_affectedrows();
}
return $num;
}
function sed_poll_vote($id, $vote)
{
global $db_polls_options, $db_polls_voters, $usr;
$id = (int) $id;
$votecasted = FALSE;
$alreadyvoted = FALSE;
if ($id > 0)
{
if ($usr['id'] > 0)
{ $sql = sed_sql_query("SELECT pv_id FROM $db_polls_voters WHERE pv_pollid='$id' AND (pv_userid='".$usr['id']."' OR pv_userip='".$usr['ip']."') LIMIT 1"); }
else
{ $sql = sed_sql_query("SELECT pv_id FROM $db_polls_voters WHERE pv_pollid='$id' AND pv_userip='".$usr['ip']."' LIMIT 1"); }
$alreadyvoted = (sed_sql_numrows($sql) > 0) ? TRUE : FALSE;
if (sed_sql_numrows($sql) == 0 && $vote > 0)
{
$sql2 = sed_sql_query("UPDATE $db_polls_options SET po_count=po_count+1 WHERE po_pollid='$id' AND po_id='$vote'");
if (sed_sql_affectedrows() == 1)
{
$sql2 = sed_sql_query("INSERT INTO $db_polls_voters (pv_pollid, pv_userid, pv_userip) VALUES (".(int)$id.", ".(int)$usr['id'].", '".$usr['ip']."')");
$votecasted = TRUE;
$alreadyvoted = TRUE;
}
}
}
return(array($alreadyvoted, $votecasted));
}
function sed_poll_reset($id)
{
global $db_polls_options, $db_polls_voters;
$id = (int) $id;
$sql = sed_sql_query("DELETE FROM $db_polls_voters WHERE pv_pollid='$id'");
$num = sed_sql_affectedrows();
$sql = sed_sql_query("UPDATE $db_polls_options SET po_count=0 WHERE po_pollid='$id'");
$num = $num + sed_sql_affectedrows();
return $num;
}
function sed_poll_bump($id)
{
global $db_polls, $sys;
$id = (int) $id;
$sql = sed_sql_query("UPDATE $db_polls SET poll_creationdate='".$sys['now_offset']."' WHERE poll_id='$id'");
}
?>