View source
<?php
function database_test_query_alter(QueryAlterableInterface $query) {
if ($query
->hasTag('database_test_alter_add_range')) {
$query
->range(0, 2);
}
if ($query
->hasTag('database_test_alter_add_join')) {
$people_alias = $query
->join('test', 'people', "test_task.pid=people.id");
$name_field = $query
->addField('people', 'name', 'name');
$query
->condition($people_alias . '.id', 2);
}
if ($query
->hasTag('database_test_alter_change_conditional')) {
$conditions =& $query
->conditions();
$conditions[0]['value'] = 2;
}
if ($query
->hasTag('database_test_alter_change_fields')) {
$fields =& $query
->getFields();
unset($fields['age']);
}
if ($query
->hasTag('database_test_alter_change_expressions')) {
$expressions =& $query
->getExpressions();
$expressions['double_age']['expression'] = 'age*3';
}
}
function database_test_query_database_test_alter_remove_range_alter(QueryAlterableInterface $query) {
$query
->range();
}
function database_test_menu() {
$items['database_test/db_query_temporary'] = array(
'access callback' => TRUE,
'page callback' => 'database_test_db_query_temporary',
);
$items['database_test/pager_query_even'] = array(
'access callback' => TRUE,
'page callback' => 'database_test_even_pager_query',
);
$items['database_test/pager_query_odd'] = array(
'access callback' => TRUE,
'page callback' => 'database_test_odd_pager_query',
);
$items['database_test/tablesort'] = array(
'access callback' => TRUE,
'page callback' => 'database_test_tablesort',
);
$items['database_test/tablesort_first'] = array(
'access callback' => TRUE,
'page callback' => 'database_test_tablesort_first',
);
return $items;
}
function database_test_db_query_temporary() {
$table_name = db_query_temporary('SELECT status FROM {system}', array());
drupal_json_output(array(
'table_name' => $table_name,
'row_count' => db_select($table_name)
->countQuery()
->execute()
->fetchField(),
));
exit;
}
function database_test_even_pager_query($limit) {
$query = db_select('test', 't');
$query
->fields('t', array(
'name',
))
->orderBy('age');
$query = $query
->extend('PagerDefault')
->limit($limit);
$names = $query
->execute()
->fetchCol();
drupal_json_output(array(
'names' => $names,
));
exit;
}
function database_test_odd_pager_query($limit) {
$query = db_select('test_task', 't');
$query
->fields('t', array(
'task',
))
->orderBy('pid');
$query = $query
->extend('PagerDefault')
->limit($limit);
$names = $query
->execute()
->fetchCol();
drupal_json_output(array(
'names' => $names,
));
exit;
}
function database_test_tablesort() {
$header = array(
'tid' => array(
'data' => t('Task ID'),
'field' => 'tid',
'sort' => 'desc',
),
'pid' => array(
'data' => t('Person ID'),
'field' => 'pid',
),
'task' => array(
'data' => t('Task'),
'field' => 'task',
),
'priority' => array(
'data' => t('Priority'),
'field' => 'priority',
),
);
$query = db_select('test_task', 't');
$query
->fields('t', array(
'tid',
'pid',
'task',
'priority',
));
$query = $query
->extend('TableSort')
->orderByHeader($header);
$tasks = $query
->execute()
->fetchAll();
drupal_json_output(array(
'tasks' => $tasks,
));
exit;
}
function database_test_tablesort_first() {
$header = array(
'tid' => array(
'data' => t('Task ID'),
'field' => 'tid',
'sort' => 'desc',
),
'pid' => array(
'data' => t('Person ID'),
'field' => 'pid',
),
'task' => array(
'data' => t('Task'),
'field' => 'task',
),
'priority' => array(
'data' => t('Priority'),
'field' => 'priority',
),
);
$query = db_select('test_task', 't');
$query
->fields('t', array(
'tid',
'pid',
'task',
'priority',
));
$query = $query
->extend('TableSort')
->orderByHeader($header)
->orderBy('priority');
$tasks = $query
->execute()
->fetchAll();
drupal_json_output(array(
'tasks' => $tasks,
));
exit;
}