Commit fb78f2db authored by Drew Webber's avatar Drew Webber
Browse files

Issue #702778 by Pasqualle, poker10, mcdruid, Fabianx: Multiple pagers on the same page

parent 6af33a4b
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -164,6 +164,21 @@ public function element($element) {
    }
    return $this;
  }

  /**
   * Gets the element ID for this pager query.
   *
   * The element is used to differentiate different pager queries on the same
   * page so that they may be operated independently.
   *
   * @return
   *   Element ID that is used to differentiate between different pager
   *   queries.
   */
  public function getElement() {
    $this->ensureElement();
    return $this->element;
  }
}

/**
+15 −15
Original line number Diff line number Diff line
@@ -2676,32 +2676,32 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
  function testElementNumbers() {
    $_GET['page'] = '3, 2, 1, 0';

    $name = db_select('test', 't')->extend('PagerDefault')
      ->element(2)
    $query = db_select('test', 't')->extend('PagerDefault');
    $query->element(2)
      ->fields('t', array('name'))
      ->orderBy('age')
      ->limit(1)
      ->execute()
      ->fetchField();
      ->limit(1);
    $this->assertEqual(2, $query->getElement());
    $name = $query->execute()->fetchField();
    $this->assertEqual($name, 'Paul', 'Pager query #1 with a specified element ID returned the correct results.');

    // Setting an element smaller than the previous one
    // should not overwrite the pager $maxElement with a smaller value.
    $name = db_select('test', 't')->extend('PagerDefault')
      ->element(1)
    $query = db_select('test', 't')->extend('PagerDefault');
    $query->element(1)
      ->fields('t', array('name'))
      ->orderBy('age')
      ->limit(1)
      ->execute()
      ->fetchField();
      ->limit(1);
    $this->assertEqual(1, $query->getElement());
    $name = $query->execute()->fetchField();
    $this->assertEqual($name, 'George', 'Pager query #2 with a specified element ID returned the correct results.');

    $name = db_select('test', 't')->extend('PagerDefault')
      ->fields('t', array('name'))
    $query = db_select('test', 't')->extend('PagerDefault');
    $query->fields('t', array('name'))
      ->orderBy('age')
      ->limit(1)
      ->execute()
      ->fetchField();
      ->limit(1);
    $this->assertEqual(3, $query->getElement());
    $name = $query->execute()->fetchField();
    $this->assertEqual($name, 'John', 'Pager query #3 with a generated element ID returned the correct results.');

    unset($_GET['page']);