diff --git a/e107_plugins/poll/poll_class.php b/e107_plugins/poll/poll_class.php index 04e8443b8..3f69406e2 100644 --- a/e107_plugins/poll/poll_class.php +++ b/e107_plugins/poll/poll_class.php @@ -16,24 +16,28 @@ if (!defined('e107_INIT')) { exit; } -include_lan(e_PLUGIN."poll/languages/".e_LANGUAGE.".php"); -define("POLLCLASS", TRUE); -define("POLL_MODE_COOKIE", 0); -define("POLL_MODE_IP", 1); -define("POLL_MODE_USERID", 2); +include_lan(e_PLUGIN.'poll/languages/'.e_LANGUAGE.'.php'); +define('POLLCLASS', TRUE); +define('POLL_MODE_COOKIE', 0); +define('POLL_MODE_IP', 1); +define('POLL_MODE_USERID', 2); class poll { - var $pollRow; var $pollmode; + /* + function delete_poll + parameter in: $existing - existing poll id to be deleted + parameter out: language text string on succesful delete, nothing on failed deletion + */ function delete_poll($existing) { global $sql, $admin_log; if ($sql -> db_Delete("polls", " poll_id='".intval($existing)."' ")) { - if(function_exists("admin_purge_related")) + if (function_exists("admin_purge_related")) { admin_purge_related("poll", $existing); } @@ -42,43 +46,42 @@ class poll } } + /* + function submit_poll + $mode = 1 :: poll is main poll + $mode = 2 :: poll is forum poll + returns message + */ function submit_poll($mode=1) { - - /* - $mode = 1 :: poll is main poll - $mode = 2 :: poll is forum poll - */ - global $tp, $sql, $admin_log; - - $poll_title = $tp->toDB($_POST['poll_title']); - $poll_comment= $tp -> toDB($_POST['poll_comment']); - $multipleChoice = intval($_POST['multipleChoice']); - $showResults = intval($_POST['showResults']); - $pollUserclass =intval($_POST['pollUserclass']); - $storageMethod = intval($_POST['storageMethod']); - $active_start = (!$_POST['startmonth'] || !$_POST['startday'] || !$_POST['startyear'] ? 0 : mktime (0, 0, 0, $_POST['startmonth'], $_POST['startday'], $_POST['startyear'])); - $active_end = (!$_POST['endmonth'] || !$_POST['endday'] || !$_POST['endyear'] ? 0 : mktime (0, 0, 0, $_POST['endmonth'], $_POST['endday'], $_POST['endyear'])); - $poll_options = ""; + $poll_title = $tp->toDB($_POST['poll_title']); + $poll_comment = $tp -> toDB($_POST['poll_comment']); + $multipleChoice = intval($_POST['multipleChoice']); + $showResults = intval($_POST['showResults']); + $pollUserclass = intval($_POST['pollUserclass']); + $storageMethod = intval($_POST['storageMethod']); + $active_start = (!$_POST['startmonth'] || !$_POST['startday'] || !$_POST['startyear'] ? 0 : mktime (0, 0, 0, $_POST['startmonth'], $_POST['startday'], $_POST['startyear'])); + $active_end = (!$_POST['endmonth'] || !$_POST['endday'] || !$_POST['endyear'] ? 0 : mktime (0, 0, 0, $_POST['endmonth'], $_POST['endday'], $_POST['endyear'])); + $poll_options = ''; $_POST['poll_option'] = array_filter($_POST['poll_option']); - foreach($_POST['poll_option'] as $key => $value) + foreach ($_POST['poll_option'] as $key => $value) { $poll_options .= $tp->toDB($value).chr(1); } - if(POLLACTION == "edit" || vartrue($_POST['poll_id'])) + if (POLLACTION == 'edit' || vartrue($_POST['poll_id'])) { - $sql -> db_Update("polls", "poll_title='{$poll_title}', - poll_options='{$poll_options}', - poll_comment='{$poll_comment}', - poll_type={$mode}, - poll_allow_multiple={$multipleChoice}, - poll_result_type={$showResults}, - poll_vote_userclass={$pollUserclass}, - poll_storage_method={$storageMethod} - WHERE poll_id=".intval(POLLID)); + $sql -> db_Update("polls", "poll_title='{$poll_title}', + poll_options='{$poll_options}', + poll_comment='{$poll_comment}', + poll_type={$mode}, + poll_allow_multiple={$multipleChoice}, + poll_result_type={$showResults}, + poll_vote_userclass={$pollUserclass}, + poll_storage_method={$storageMethod} + WHERE poll_id=".intval(POLLID)); /* update poll results - bugtracker #1124 .... */ $sql -> db_Select("polls", "poll_votes", "poll_id='".intval(POLLID)."' "); @@ -87,11 +90,11 @@ class poll $opt = count($poll_option) - count($voteA); - if($opt) + if ($opt) { for($a=0; $a<=$opt; $a++) { - $foo['poll_votes'] .= "0".chr(1); + $foo['poll_votes'] .= '0'.chr(1); } $sql -> db_Update("polls", "poll_votes='".$foo['poll_votes']."' WHERE poll_id='".intval(POLLID)."' "); } @@ -101,19 +104,19 @@ class poll } else { - $votes = ""; + $votes = ''; for($a=1; $a<=count($_POST['poll_option']); $a++) { - $votes .= "0".chr(1); + $votes .= '0'.chr(1); } - if($mode == 1) + if ($mode == 1) { /* deactivate other polls */ - if($sql -> db_Select("polls", "*", "poll_type=1 AND poll_vote_userclass!=255")) + if ($sql -> db_Select("polls", "*", "poll_type=1 AND poll_vote_userclass!=255")) { $deacArray = $sql -> db_getList(); - foreach($deacArray as $deacpoll) + foreach ($deacArray as $deacpoll) { $sql -> db_Update("polls", "poll_end_datestamp='".time()."', poll_vote_userclass='255' WHERE poll_id=".$deacpoll['poll_id']); } @@ -129,7 +132,6 @@ class poll return $message; } - function get_poll($query) { global $sql, $e107; @@ -138,54 +140,54 @@ class poll $pollArray = $sql -> db_Fetch(); if (!check_class($pollArray['poll_vote_userclass'])) { - $POLLMODE = "disallowed"; + $POLLMODE = 'disallowed'; } else { switch($pollArray['poll_storage_method']) { case POLL_MODE_COOKIE: - $userid = ""; - $cookiename = "poll_".$pollArray['poll_id']; - if(isset($_COOKIE[$cookiename])) + $userid = ''; + $cookiename = 'poll_'.$pollArray['poll_id']; + if (isset($_COOKIE[$cookiename])) { - $POLLMODE = "voted"; + $POLLMODE = 'voted'; } else { - $POLLMODE = "notvoted"; + $POLLMODE = 'notvoted'; } break; case POLL_MODE_IP: $userid = $e107->getip(); - $voted_ids = explode("^", substr($pollArray['poll_ip'], 0, -1)); + $voted_ids = explode('^', substr($pollArray['poll_ip'], 0, -1)); if (in_array($userid, $voted_ids)) { - $POLLMODE = "voted"; + $POLLMODE = 'voted'; } else { - $POLLMODE = "notvoted"; + $POLLMODE = 'notvoted'; } break; case POLL_MODE_USERID: - if(!USER) + if (!USER) { - $POLLMODE = "disallowed"; + $POLLMODE = 'disallowed'; } else { $userid = USERID; - $voted_ids = explode("^", substr($pollArray['poll_ip'], 0, -1)); + $voted_ids = explode('^', substr($pollArray['poll_ip'], 0, -1)); if (in_array($userid, $voted_ids)) { - $POLLMODE = "voted"; + $POLLMODE = 'voted'; } else { - $POLLMODE = "notvoted"; + $POLLMODE = 'notvoted'; } } break; @@ -196,48 +198,48 @@ class poll { return FALSE; } - if(isset($_POST['pollvote']) && $POLLMODE == "notvoted" && ($POLLMODE != "disallowed")) + if (isset($_POST['pollvote']) && $POLLMODE == 'notvoted' && ($POLLMODE != 'disallowed')) { - if ($_POST['votea']) - { + if ($_POST['votea']) + { // $sql -> db_Select("polls", "*", "poll_vote_userclass!=255 AND poll_type=1 ORDER BY poll_datestamp DESC LIMIT 0,1"); - $row = $pollArray; - extract($row); - $votes = explode(chr(1), $poll_votes); - if(is_array($_POST['votea'])) + $row = $pollArray; + extract($row); + $votes = explode(chr(1), $poll_votes); + if (is_array($_POST['votea'])) + { + /* multiple choice vote */ + foreach ($_POST['votea'] as $vote) { - /* multiple choice vote */ - foreach($_POST['votea'] as $vote) - { - $vote = intval($vote); - $votes[($vote-1)] ++; - } + $vote = intval($vote); + $votes[($vote-1)] ++; } - else + } + else + { + $votes[($_POST['votea']-1)] ++; + } + $optionArray = explode(chr(1), $pollArray['poll_options']); + $optionArray = array_slice($optionArray, 0, -1); + foreach ($optionArray as $k=>$v) + { + if (!$votes[$k]) { - $votes[($_POST['votea']-1)] ++; + $votes[$k] = 0; } - $optionArray = explode(chr(1), $pollArray['poll_options']); - $optionArray = array_slice($optionArray, 0, -1); - foreach($optionArray as $k=>$v) - { - if(!$votes[$k]) - { - $votes[$k] = 0; - } - } - $votep = implode(chr(1), $votes); - $pollArray['poll_votes'] = $votep; + } + $votep = implode(chr(1), $votes); + $pollArray['poll_votes'] = $votep; - $sql->db_Update("polls", "poll_votes = '$votep', poll_ip='".$poll_ip.$userid."^' WHERE poll_id=".$poll_id); - echo " + $sql->db_Update("polls", "poll_votes = '$votep', poll_ip='".$poll_ip.$userid."^' WHERE poll_id=".$poll_id); + echo " "; - $POLLMODE = "voted"; + $POLLMODE = 'voted'; } } @@ -251,36 +253,36 @@ class poll global $POLLSTYLE, $sql, $tp, $ns; switch ($POLLMODE) { - case "query" : // Show poll, register any vote - if ($this->get_poll($pollArray) === FALSE) - { - return ''; // No display if no poll - } - $pollArray = $this->pollRow; - $POLLMODE = $this->pollmode; - break; - case 'results' : - if ($sql->db_Select_gen($pollArray)) - { - $pollArray = $sql -> db_Fetch(); - } - break; + case 'query' : // Show poll, register any vote + if ($this->get_poll($pollArray) === FALSE) + { + return ''; // No display if no poll + } + $pollArray = $this->pollRow; + $POLLMODE = $this->pollmode; + break; + case 'results' : + if ($sql->db_Select_gen($pollArray)) + { + $pollArray = $sql -> db_Fetch(); + } + break; } - $barl = (file_exists(THEME."images/barl.png") ? THEME_ABS."images/barl.png" : e_PLUGIN_ABS."poll/images/barl.png"); - $barr = (file_exists(THEME."images/barr.png") ? THEME_ABS."images/barr.png" : e_PLUGIN_ABS."poll/images/barr.png"); - $bar = (file_exists(THEME."images/bar.png") ? THEME_ABS."images/bar.png" : e_PLUGIN_ABS."poll/images/bar.png"); + $barl = (file_exists(THEME.'images/barl.png') ? THEME_ABS.'images/barl.png' : e_PLUGIN_ABS.'poll/images/barl.png'); + $barr = (file_exists(THEME.'images/barr.png') ? THEME_ABS.'images/barr.png' : e_PLUGIN_ABS.'poll/images/barr.png'); + $bar = (file_exists(THEME.'images/bar.png') ? THEME_ABS.'images/bar.png' : e_PLUGIN_ABS.'poll/images/bar.png'); - if($type == "preview") + if ($type == 'preview') { $optionArray = $pollArray['poll_option']; $voteArray = array(); $voteArray = array_pad($voteArray, count($optionArray), 0); $pollArray['poll_allow_multiple'] = $pollArray['multipleChoice']; } - else if($type == "forum") + else if ($type == 'forum') { - if(isset($_POST['fpreview'])) + if (isset($_POST['fpreview'])) { $pollArray['poll_allow_multiple'] = $pollArray['multipleChoice']; $optionArray = $pollArray['poll_option']; @@ -302,40 +304,38 @@ class poll } $voteTotal = array_sum($voteArray); - $percentage = array(); - - if(count($voteArray)) + if (count($voteArray)) { - foreach($voteArray as $votes) - { - if ($voteTotal > 0) + foreach ($voteArray as $votes) { - $percentage[] = round(($votes/$voteTotal) * 100, 2); + if ($voteTotal > 0) + { + $percentage[] = round(($votes/$voteTotal) * 100, 2); + } + else + { + $percentage[] = 0; + } } - else - { - $percentage[] = 0; - } - } } /* get template */ - if (file_exists(THEME."poll_template.php")) + if (file_exists(THEME.'poll_template.php')) { - require(THEME."poll_template.php"); + require(THEME.'poll_template.php'); } - else if(!isset($POLL_NOTVOTED_START)) + else if (!isset($POLL_NOTVOTED_START)) { - require(e_PLUGIN."poll/templates/poll_template.php"); + require(e_PLUGIN.'poll/templates/poll_template.php'); } $preview = FALSE; - if ($type == "preview") + if ($type == 'preview') { - $POLLMODE = "notvoted"; + $POLLMODE = 'notvoted'; } - elseif($type == "forum") + elseif ($type == 'forum') { $preview = TRUE; } @@ -346,46 +346,51 @@ class poll $comment_total = $sql->db_Count("comments", "(*)", "WHERE `comment_item_id`='".intval($pollArray['poll_id'])."' AND `comment_type`=4"); } - $QUESTION = $tp -> toHTML($pollArray['poll_title'], TRUE,"emotes_off, defs"); + $QUESTION = $tp -> toHTML($pollArray['poll_title'], TRUE, "emotes_off, defs"); $VOTE_TOTAL = POLLAN_31.": ".$voteTotal; $COMMENTS = ($pollArray['poll_comment'] ? " ".POLLAN_27.": ".$comment_total."" : ""); - $OLDPOLLS = ($type == "menu" ? "".POLLAN_28."" : ""); - $AUTHOR = POLLAN_35." ".($type == "preview" || $type == "forum" ? USERNAME : "".$pollArray['user_name'].""); + $poll_count = $sql->db_Count("polls", "(*)", "WHERE poll_id <= '".$pollArray['poll_id']."'"); + $OLDPOLLS = ''; + if ($poll_count > 1) + { + $OLDPOLLS = ($type == 'menu' ? "".POLLAN_28."" : ""); + } + $AUTHOR = POLLAN_35." ".($type == 'preview' || $type == 'forum' ? USERNAME : "".$pollArray['user_name'].""); switch ($POLLMODE) { - case "notvoted": + case 'notvoted': $text = "
"; - break; + break; - case "voted": - case 'results' : - if($pollArray['poll_result_type'] && !strstr(e_SELF, "comment.php")) + case 'voted': + case 'results' : + if ($pollArray['poll_result_type'] && !strstr(e_SELF, "comment.php")) { $text = "\n$text\n |