'system_test_batch_theme', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/sleep/%'] = array( 'page callback' => 'system_test_sleep', 'page arguments' => array(2), 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/auth'] = array( 'page callback' => 'system_test_basic_auth_page', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/redirect/%'] = array( 'title' => 'Redirect', 'page callback' => 'system_test_redirect', 'page arguments' => array(2), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/set-header'] = array( 'page callback' => 'system_test_set_header', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/redirect-noscheme'] = array( 'page callback' => 'system_test_redirect_noscheme', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/redirect-noparse'] = array( 'page callback' => 'system_test_redirect_noparse', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/redirect-invalid-scheme'] = array( 'page callback' => 'system_test_redirect_invalid_scheme', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/destination'] = array( 'title' => 'Redirect', 'page callback' => 'system_test_destination', 'page arguments' => array(2), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/variable-get'] = array( 'title' => 'Variable Get', 'page callback' => 'variable_get', 'page arguments' => array('simpletest_bootstrap_variable_test', NULL), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['system-test/lock-acquire'] = array( 'title' => 'Lock acquire', 'page callback' => 'system_test_lock_acquire', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/lock-exit'] = array( 'title' => 'Lock acquire then exit', 'page callback' => 'system_test_lock_exit', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/main-content-handling'] = array( 'title' => 'Test main content handling', 'page callback' => 'system_test_main_content_fallback', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/main-content-fallback'] = array( 'title' => 'Test main content fallback', 'page callback' => 'system_test_main_content_fallback', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); $items['system-test/main-content-duplication'] = array( 'title' => 'Test main content duplication', 'page callback' => 'system_test_main_content_fallback', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; } /** * Menu callback; start a new batch for testing the batch progress page theme. */ function system_test_batch_theme() { $batch = array( 'operations' => array( array('system_test_batch_theme_callback', array()), ), ); batch_set($batch); // Force the batch to redirect to some page other than this one (to avoid an // infinite loop). batch_process('node'); } /** * Batch callback function for testing the theme used by a batch. */ function system_test_batch_theme_callback() { // Because drupalGet() steps through the full progressive batch before // returning control to the test function, we cannot test that the correct // theme is being used on the batch processing page by viewing that page // directly. Instead, we save the theme being used in a variable here, so // that it can be loaded and inspected in the thread running the test. global $theme; variable_set('system_test_batch_theme_used', $theme); } function system_test_sleep($seconds) { sleep($seconds); } function system_test_basic_auth_page() { $output = t('$_SERVER[\'PHP_AUTH_USER\'] is @username.', array('@username' => $_SERVER['PHP_AUTH_USER'])); $output .= t('$_SERVER[\'PHP_AUTH_PW\'] is @password.', array('@password' => $_SERVER['PHP_AUTH_PW'])); return $output; } function system_test_redirect($code) { $code = (int)$code; if ($code != 200) { header("Location: " . url('system-test/redirect/200', array('absolute' => TRUE)), TRUE, $code); exit; } return ''; } function system_test_set_header() { drupal_add_http_header($_GET['name'], $_GET['value']); return t('The following header was set: %name: %value', array('%name' => $_GET['name'], '%value' => $_GET['value'])); } function system_test_redirect_noscheme() { header("Location: localhost/path", TRUE, 301); exit; } function system_test_redirect_noparse() { header("Location: http:///path", TRUE, 301); exit; } function system_test_redirect_invalid_scheme() { header("Location: ftp://localhost/path", TRUE, 301); exit; } function system_test_destination() { $destination = drupal_get_destination(); return 'The destination: ' . $destination['destination']; } /** * Implement hook_modules_installed(). */ function system_test_modules_installed($modules) { if (in_array('aggregator', $modules)) { drupal_set_message(t('hook_modules_installed fired for aggregator')); } } /** * Implement hook_modules_enabled(). */ function system_test_modules_enabled($modules) { if (in_array('aggregator', $modules)) { drupal_set_message(t('hook_modules_enabled fired for aggregator')); } } /** * Implement hook_modules_disabled(). */ function system_test_modules_disabled($modules) { if (in_array('aggregator', $modules)) { drupal_set_message(t('hook_modules_disabled fired for aggregator')); } } /** * Implement hook_modules_uninstalled(). */ function system_test_modules_uninstalled($modules) { if (in_array('aggregator', $modules)) { drupal_set_message(t('hook_modules_uninstalled fired for aggregator')); } } /** * Implement hook_boot(). */ function system_test_boot() { watchdog('system_test', 'hook_boot'); } /** * Implement hook_init(). */ function system_test_init() { // Used by FrontPageTestCase to get the results of drupal_is_front_page(). if (variable_get('front_page_output', 0) && drupal_is_front_page()) { drupal_set_message(t('On front page.')); } } /** * Implement hook_exit(). */ function system_test_exit() { watchdog('system_test', 'hook_exit'); } /** * Implement hook_system_info_alter(). */ function system_test_system_info_alter(&$info, $file, $type) { // We need a static otherwise the last test will fail to alter common_test. static $test; if (($dependencies = variable_get('dependencies', array())) || $test) { if ($file->name == 'module_test') { $info['hidden'] = FALSE; $info['dependencies'][] = array_shift($dependencies); variable_set('dependencies', $dependencies); $test = TRUE; } if ($file->name == 'common_test') { $info['hidden'] = FALSE; $info['version'] = '7.x-2.4-beta3'; } } } /** * Try to acquire a named lock and report the outcome. */ function system_test_lock_acquire() { if (lock_acquire('system_test_lock_acquire')) { lock_release('system_test_lock_acquire'); return 'TRUE: Lock successfully acquired in system_test_lock_acquire()'; } else { return 'FALSE: Lock not acquired in system_test_lock_acquire()'; } } /** * Try to acquire a specific lock, and then exit. */ function system_test_lock_exit() { if (lock_acquire('system_test_lock_exit', 900)) { echo 'TRUE: Lock successfully acquired in system_test_lock_exit()'; // The shut-down function should release the lock. exit(); } else { return 'FALSE: Lock not acquired in system_test_lock_exit()'; } } /** * Implement hook_page_build(). */ function system_test_page_build(&$page) { $menu_item = menu_get_item(); $main_content_display = &drupal_static('system_main_content_added', FALSE); if ($menu_item['path'] == 'system-test/main-content-handling') { $page['footer'] = drupal_set_page_content(); $page['footer']['main']['#markup'] = '
' . $page['footer']['main']['#markup'] . '
'; } else if ($menu_item['path'] == 'system-test/main-content-fallback') { drupal_set_page_content(); $main_content_display = FALSE; } else if ($menu_item['path'] == 'system-test/main-content-duplication') { drupal_set_page_content(); } } /** * Menu callback to test main content fallback(). */ function system_test_main_content_fallback() { return t('Content to test main content fallback'); }