How to extend TableSort class I have a paged table that extends the TableSort class. The thing is, I would like to add some special parameters to the header links, so I need to extend the TableSort class. The problem is, it is not recognizing my new extended TableSort (MyTableSort) class. This is the code, any help would be greatly appreciated:

&lt;?php
// $Id: RadiosDemo.module $
//This module demonstrates the radios default value problem.

class MyTableSort extends TableSort {
/**
* Compose a URL query parameter array for table sorting links.
*
* @return
*   A URL query parameter array that consists of all components of the current
*   page request except for those pertaining to table sorting.
*/
  public function tablesort_get_query_parameters() {
    return drupal_get_query_parameters($_GET, array('q', 'sort', 'order', 'nid'));
  }
}

/**
* Implementation of hook_menu().
*/
function RadiosDemo_menu() {

  // Added a link to navigate to the demo node display page
  $items['RadiosDemo/Problem'] = array(
    'title' =&gt; 'Demo of Pager Problem',
    'page callback' =&gt; 'RadiosDemo_displaynodes',
    'access callback' =&gt; TRUE,
    'type' =&gt; MENU_NORMAL_ITEM,
  );

  return $items;
}

/**
 * Function which will display all the nids in a paged table
 */
function RadiosDemo_displaynodes() {

  $headers = array(
    array('data' =&gt; 'nid', 'field' =&gt; 'nid', 'sort' =&gt; 'ASC'),
    array('data' =&gt; 'status', 'field' =&gt; 'status'),
    array('data' =&gt; 'title', 'field' =&gt; 'title'),
  );

  // Select nid from published nodes with 20 pager limit
  $query = db_select('node', 'n')
    -&gt;condition('status', 1)
    -&gt;extend('MyTableSort')
    -&gt;extend('PagerDefault')
    -&gt;orderByHeader($headers)
    -&gt;limit(30)
    -&gt;fields('n', array('nid', 'title', 'status'));

  $results = $query-&gt;execute();

  $rows = array();

  foreach ($results as $result) {
    $row = array();
    $row[] = $result-&gt;nid;
    $row[] = $result-&gt;status;
    $row[] = $result-&gt;title;

    $rows[] = $row;
  }

  $html = theme('table', array(
   'header' =&gt; $headers,
   'rows' =&gt; $rows,
  ));

  $html .= theme('pager', array(
    'parameters' =&gt; array(
      'banana' =&gt; 'banana'
  )));

  return $html;
}
Like any other extender, the TableSort class implements the SelectQueryInterface interface.

Your code doesn't work because tablesort_get_query_parameters() is a Drupal function, not a method defined from SelectQueryInterface. To change the behavior of an extender, you need to re-define one of the methods listed in the documentation for SelectQueryInterface.

References


Extenders