Seditio Source code viewer
Root | Root
./Seditio-Developer/Seditio.178/system/core/polls/polls.functions.php
<?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'");
}

?>
Presented with Sourceer