cms/drupal/modules/simpletest/tests/common_test.module
changeset 541 e756a8c72c3d
child 570 cdf0cb7bf073
equal deleted inserted replaced
540:07239de796bb 541:e756a8c72c3d
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * @file
       
     5  * Helper module for the Common tests.
       
     6  */
       
     7 
       
     8 /**
       
     9  * Implements hook_menu().
       
    10  */
       
    11 function common_test_menu() {
       
    12   $items['common-test/drupal_goto'] = array(
       
    13     'title' => 'Drupal Goto',
       
    14     'page callback' => 'common_test_drupal_goto_land',
       
    15     'access arguments' => array('access content'),
       
    16     'type' => MENU_CALLBACK,
       
    17   );
       
    18   $items['common-test/drupal_goto/fail'] = array(
       
    19     'title' => 'Drupal Goto',
       
    20     'page callback' => 'common_test_drupal_goto_land_fail',
       
    21     'access arguments' => array('access content'),
       
    22     'type' => MENU_CALLBACK,
       
    23   );
       
    24   $items['common-test/drupal_goto/redirect'] = array(
       
    25     'title' => 'Drupal Goto',
       
    26     'page callback' => 'common_test_drupal_goto_redirect',
       
    27     'access arguments' => array('access content'),
       
    28     'type' => MENU_CALLBACK,
       
    29   );
       
    30   $items['common-test/drupal_goto/redirect_advanced'] = array(
       
    31     'title' => 'Drupal Goto',
       
    32     'page callback' => 'common_test_drupal_goto_redirect_advanced',
       
    33     'access arguments' => array('access content'),
       
    34     'type' => MENU_CALLBACK,
       
    35   );
       
    36   $items['common-test/drupal_goto/redirect_fail'] = array(
       
    37     'title' => 'Drupal Goto Failure',
       
    38     'page callback' => 'drupal_goto',
       
    39     'page arguments' => array('common-test/drupal_goto/fail'),
       
    40     'access arguments' => array('access content'),
       
    41     'type' => MENU_CALLBACK,
       
    42   );
       
    43   $items['common-test/destination'] = array(
       
    44     'title' => 'Drupal Get Destination',
       
    45     'page callback' => 'common_test_destination',
       
    46     'access arguments' => array('access content'),
       
    47     'type' => MENU_CALLBACK,
       
    48   );
       
    49   $items['common-test/query-string'] = array(
       
    50     'title' => 'Test querystring',
       
    51     'page callback' => 'common_test_js_and_css_querystring',
       
    52     'access arguments' => array('access content'),
       
    53     'type' => MENU_CALLBACK,
       
    54   );
       
    55   return $items;
       
    56 }
       
    57 
       
    58 /**
       
    59  * Redirect using drupal_goto().
       
    60  */
       
    61 function common_test_drupal_goto_redirect() {
       
    62   drupal_goto('common-test/drupal_goto');
       
    63 }
       
    64 
       
    65 /**
       
    66  * Redirect using drupal_goto().
       
    67  */
       
    68 function common_test_drupal_goto_redirect_advanced() {
       
    69   drupal_goto('common-test/drupal_goto', array('query' => array('foo' => '123')), 301);
       
    70 }
       
    71 
       
    72 /**
       
    73  * Landing page for drupal_goto().
       
    74  */
       
    75 function common_test_drupal_goto_land() {
       
    76   print "drupal_goto";
       
    77 }
       
    78 
       
    79 /**
       
    80  * Fail landing page for drupal_goto().
       
    81  */
       
    82 function common_test_drupal_goto_land_fail() {
       
    83   print "drupal_goto_fail";
       
    84 }
       
    85 
       
    86 /**
       
    87  * Implements hook_drupal_goto_alter().
       
    88  */
       
    89 function common_test_drupal_goto_alter(&$path, &$options, &$http_response_code) {
       
    90   if ($path == 'common-test/drupal_goto/fail') {
       
    91     $path = 'common-test/drupal_goto/redirect';
       
    92   }
       
    93 }
       
    94 
       
    95 /**
       
    96  * Implements hook_init().
       
    97  */
       
    98 function common_test_init() {
       
    99   if (variable_get('common_test_redirect_current_path', FALSE)) {
       
   100     drupal_goto(current_path());
       
   101   }
       
   102 }
       
   103 
       
   104 /**
       
   105  * Print destination query parameter.
       
   106  */
       
   107 function common_test_destination() {
       
   108   $destination = drupal_get_destination();
       
   109   print "The destination: " . check_plain($destination['destination']);
       
   110 }
       
   111 
       
   112 /**
       
   113  * Applies #printed to an element to help test #pre_render.
       
   114  */
       
   115 function common_test_drupal_render_printing_pre_render($elements) {
       
   116   $elements['#printed'] = TRUE;
       
   117   return $elements;
       
   118 }
       
   119 
       
   120 /**
       
   121  * Implements hook_TYPE_alter().
       
   122  */
       
   123 function common_test_drupal_alter_alter(&$data, &$arg2 = NULL, &$arg3 = NULL) {
       
   124   // Alter first argument.
       
   125   if (is_array($data)) {
       
   126     $data['foo'] = 'Drupal';
       
   127   }
       
   128   elseif (is_object($data)) {
       
   129     $data->foo = 'Drupal';
       
   130   }
       
   131   // Alter second argument, if present.
       
   132   if (isset($arg2)) {
       
   133     if (is_array($arg2)) {
       
   134       $arg2['foo'] = 'Drupal';
       
   135     }
       
   136     elseif (is_object($arg2)) {
       
   137       $arg2->foo = 'Drupal';
       
   138     }
       
   139   }
       
   140   // Try to alter third argument, if present.
       
   141   if (isset($arg3)) {
       
   142     if (is_array($arg3)) {
       
   143       $arg3['foo'] = 'Drupal';
       
   144     }
       
   145     elseif (is_object($arg3)) {
       
   146       $arg3->foo = 'Drupal';
       
   147     }
       
   148   }
       
   149 }
       
   150 
       
   151 /**
       
   152  * Implements hook_TYPE_alter() on behalf of Bartik theme.
       
   153  *
       
   154  * Same as common_test_drupal_alter_alter(), but here, we verify that themes
       
   155  * can also alter and come last.
       
   156  */
       
   157 function bartik_drupal_alter_alter(&$data, &$arg2 = NULL, &$arg3 = NULL) {
       
   158   // Alter first argument.
       
   159   if (is_array($data)) {
       
   160     $data['foo'] .= ' theme';
       
   161   }
       
   162   elseif (is_object($data)) {
       
   163     $data->foo .= ' theme';
       
   164   }
       
   165   // Alter second argument, if present.
       
   166   if (isset($arg2)) {
       
   167     if (is_array($arg2)) {
       
   168       $arg2['foo'] .= ' theme';
       
   169     }
       
   170     elseif (is_object($arg2)) {
       
   171       $arg2->foo .= ' theme';
       
   172     }
       
   173   }
       
   174   // Try to alter third argument, if present.
       
   175   if (isset($arg3)) {
       
   176     if (is_array($arg3)) {
       
   177       $arg3['foo'] .= ' theme';
       
   178     }
       
   179     elseif (is_object($arg3)) {
       
   180       $arg3->foo .= ' theme';
       
   181     }
       
   182   }
       
   183 }
       
   184 
       
   185 /**
       
   186  * Implements hook_TYPE_alter() on behalf of block module.
       
   187  *
       
   188  * This is for verifying that drupal_alter(array(TYPE1, TYPE2), ...) allows
       
   189  * hook_module_implements_alter() to affect the order in which module
       
   190  * implementations are executed.
       
   191  */
       
   192 function block_drupal_alter_foo_alter(&$data, &$arg2 = NULL, &$arg3 = NULL) {
       
   193   $data['foo'] .= ' block';
       
   194 }
       
   195 
       
   196 /**
       
   197  * Implements hook_module_implements_alter().
       
   198  *
       
   199  * @see block_drupal_alter_foo_alter()
       
   200  */
       
   201 function common_test_module_implements_alter(&$implementations, $hook) {
       
   202   // For drupal_alter(array('drupal_alter', 'drupal_alter_foo'), ...), make the
       
   203   // block module implementations run after all the other modules. Note that
       
   204   // when drupal_alter() is called with an array of types, the first type is
       
   205   // considered primary and controls the module order.
       
   206   if ($hook == 'drupal_alter_alter' && isset($implementations['block'])) {
       
   207     $group = $implementations['block'];
       
   208     unset($implementations['block']);
       
   209     $implementations['block'] = $group;
       
   210   }
       
   211 }
       
   212 
       
   213 /**
       
   214  * Implements hook_theme().
       
   215  */
       
   216 function common_test_theme() {
       
   217   return array(
       
   218     'common_test_foo' => array(
       
   219       'variables' => array('foo' => 'foo', 'bar' => 'bar'),
       
   220     ),
       
   221   );
       
   222 }
       
   223 
       
   224 /**
       
   225  * Theme function for testing drupal_render() theming.
       
   226  */
       
   227 function theme_common_test_foo($variables) {
       
   228   return $variables['foo'] . $variables['bar'];
       
   229 }
       
   230 
       
   231 /**
       
   232  * Implements hook_library_alter().
       
   233  */
       
   234 function common_test_library_alter(&$libraries, $module) {
       
   235   if ($module == 'system' && isset($libraries['farbtastic'])) {
       
   236     // Change the title of Farbtastic to "Farbtastic: Altered Library".
       
   237     $libraries['farbtastic']['title'] = 'Farbtastic: Altered Library';
       
   238     // Make Farbtastic depend on jQuery Form to test library dependencies.
       
   239     $libraries['farbtastic']['dependencies'][] = array('system', 'form');
       
   240   }
       
   241 }
       
   242 
       
   243 /**
       
   244  * Implements hook_library().
       
   245  *
       
   246  * Adds Farbtastic in a different version.
       
   247  */
       
   248 function common_test_library() {
       
   249   $libraries['farbtastic'] = array(
       
   250     'title' => 'Custom Farbtastic Library',
       
   251     'website' => 'http://code.google.com/p/farbtastic/',
       
   252     'version' => '5.3',
       
   253     'js' => array(
       
   254       'misc/farbtastic/farbtastic.js' => array(),
       
   255     ),
       
   256     'css' => array(
       
   257       'misc/farbtastic/farbtastic.css' => array(),
       
   258     ),
       
   259   );
       
   260   return $libraries;
       
   261 }
       
   262 
       
   263 /**
       
   264  * Adds a JavaScript file and a CSS file with a query string appended.
       
   265  */
       
   266 function common_test_js_and_css_querystring() {
       
   267    drupal_add_js(drupal_get_path('module', 'node') . '/node.js');
       
   268    drupal_add_css(drupal_get_path('module', 'node') . '/node.css');
       
   269    // A relative URI may have a query string.
       
   270    drupal_add_css('/' . drupal_get_path('module', 'node') . '/node-fake.css?arg1=value1&arg2=value2');
       
   271    return '';
       
   272 }
       
   273 
       
   274 /**
       
   275  * Implements hook_cron().
       
   276  *
       
   277  * System module should handle if a module does not catch an exception and keep
       
   278  * cron going.
       
   279  *
       
   280  * @see common_test_cron_helper()
       
   281  *
       
   282  */
       
   283 function common_test_cron() {
       
   284   throw new Exception(t('Uncaught exception'));
       
   285 }