diff options
author | webchick <webchick@24967.no-reply.drupal.org> | 2012-01-11 23:26:00 -0500 |
---|---|---|
committer | webchick <webchick@24967.no-reply.drupal.org> | 2012-01-11 23:26:00 -0500 |
commit | 371991597778094590ef37a87f4b57a65225797e (patch) | |
tree | aef563f968a3ae2892e8cabea6ee0dc6b9c04b87 /modules/poll | |
parent | 6f58aa16f0066d59c9e16a855ab1886d72f8d472 (diff) | |
download | brdo-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.module | 5 | ||||
-rw-r--r-- | modules/poll/poll.test | 15 |
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)) { |