summaryrefslogtreecommitdiff
path: root/modules/poll
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2012-01-11 23:26:00 -0500
committerwebchick <webchick@24967.no-reply.drupal.org>2012-01-11 23:26:00 -0500
commit371991597778094590ef37a87f4b57a65225797e (patch)
treeaef563f968a3ae2892e8cabea6ee0dc6b9c04b87 /modules/poll
parent6f58aa16f0066d59c9e16a855ab1886d72f8d472 (diff)
downloadbrdo-371991597778094590ef37a87f4b57a65225797e.tar.gz
brdo-371991597778094590ef37a87f4b57a65225797e.tar.bz2
Issue #939880 by amateescu, marcingy: Fixed Poll Module throws PDOException when creating poll content.
Diffstat (limited to 'modules/poll')
-rw-r--r--modules/poll/poll.module5
-rw-r--r--modules/poll/poll.test15
2 files changed, 16 insertions, 4 deletions
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index aebb9f259..48001d099 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -408,6 +408,7 @@ function _poll_choice_form($key, $chid = NULL, $value = '', $votes = 0, $weight
'#maxlength' => 7,
'#parents' => array('choice', $key, 'chvotes'),
'#access' => user_access('administer nodes'),
+ '#element_validate' => array('element_validate_integer'),
);
$form['weight'] = array(
@@ -451,10 +452,8 @@ function poll_node_form_submit(&$form, &$form_state) {
*/
function poll_validate($node, $form) {
if (isset($node->title)) {
- // Check for at least two options and validate amount of votes:
+ // Check for at least two options and validate amount of votes.
$realchoices = 0;
- // Renumber fields
- $node->choice = array_values($node->choice);
foreach ($node->choice as $i => $choice) {
if ($choice['chtext'] != '') {
$realchoices++;
diff --git a/modules/poll/poll.test b/modules/poll/poll.test
index f6f82dfd6..f34964c3f 100644
--- a/modules/poll/poll.test
+++ b/modules/poll/poll.test
@@ -24,8 +24,9 @@ class PollTestCase extends DrupalWebTestCase {
function pollCreate($title, $choices, $preview = TRUE) {
$this->assertTrue(TRUE, 'Create a poll');
+ $admin_user = $this->drupalCreateUser(array('create poll content', 'administer nodes'));
$web_user = $this->drupalCreateUser(array('create poll content', 'access content', 'edit own poll content'));
- $this->drupalLogin($web_user);
+ $this->drupalLogin($admin_user);
// Get the form first to initialize the state of the internal browser.
$this->drupalGet('node/add/poll');
@@ -33,6 +34,18 @@ class PollTestCase extends DrupalWebTestCase {
// Prepare a form with two choices.
list($edit, $index) = $this->_pollGenerateEdit($title, $choices);
+ // Verify that the vote count element only allows non-negative integers.
+ $edit['choice[new:1][chvotes]'] = -1;
+ $edit['choice[new:0][chvotes]'] = $this->randomString(7);
+ $this->drupalPost(NULL, $edit, t('Save'));
+ $this->assertText(t('Negative values are not allowed.'));
+ $this->assertText(t('Vote count for new choice must be an integer.'));
+
+ // Repeat steps for initializing the state of the internal browser.
+ $this->drupalLogin($web_user);
+ $this->drupalGet('node/add/poll');
+ list($edit, $index) = $this->_pollGenerateEdit($title, $choices);
+
// Re-submit the form until all choices are filled in.
if (count($choices) > 2) {
while ($index < count($choices)) {