I am having an interesting problem with paging the results of a query. The pager is visible to all users except those who are assigned the built-in 'administrator' role. I have tried the code on two separate Drupal installs and the result is the same: the administrator cannot see the pager. The markup is not visible in the page source.

I have tried my solution using both EntityFieldQuery and db_select, but the problem persists. Here is the code for the EntityFieldQuery version:

    function build_area_table() {
      $header = array(
        'area_name' => array(
          'data' => 'Area',
          'type' => 'property',
          'specifier' => 'title',
          'sort' => 'asc',
        ),
        'level_range' => array(
          'data' => 'Level range',
          'type' => 'field',
          'specifier' => array('field' => 'field_area_level_range', 'column' => 'value'),
          'sort' => 'desc',
        ),
      );
    
      $query = new EntityFieldQuery();
      $query = $query->pager(5); # I have more than 5 rows being returned
      $query = $query->entityCondition('entity_type', 'node')
        ->propertyCondition('type', 'area')
        ->propertyCondition('status', 1)
        ->tableSort($header);
    
      $result = $query->execute();
    
      $nodes = null;
      // $result['node'] contains a list of nids where the title matches
      if (!empty($result['node'])) {
        // You could use node_load_multiple() instead of entity_load() for nodes
        $nodes = node_load_multiple(array_keys($result['node']));
      }
    
      // do something to output your results here.
      $td = array();
      foreach ($nodes as $area) {
        $td[] = array(
          'area_name' => array(
            'data' => l($area->title, 'node/'. $area->nid),
            'class' => array('area-name'),
            ),
            'level_range' => array(
              'data' => $area->field_area_level_range['und'][0]['safe_value'],
              'class' => array('level-range'),
            ),
        );
      }
    
      $areaTable = array(
        'area-table' => array(
          '#theme' => 'table',
          '#header' => $header,
          '#rows' => $td,
          '#empty' => 'No areas to display.',
        ),
        'area-pager' => array(
          '#markup' => theme('pager')
        ),
      );
      
      return $areaTable;
    }

The table is rendered using Drupal 'render' in the template page. Does anyone have any ideas as to what the problem may be? I have read some posts regarding changing the pager ID, but any changes I make do not seem to have any effect.

EDIT: I am **not** using the Views module, which seems cause a conflict with pagers as reported by many other people.

Thanks!