Core Override

Categories

Component ID

1546970

Component name

Core Override

Component type

module

Maintenance status

Development status

Component security advisory coverage

not-covered

Component created

Component changed

Component body

This module allows you to override individual functions in core without patching core.

Usage:
mymodule.module

/**
 * Take over taxonomy_get_tree() and drupal_get_form().
 */
function mymodule_core_override_info() {
  return array(
    'taxonomy_get_tree' => array(
      'file' => drupal_get_path('module', 'mymodule') . '/mymodule.overrides.inc',
      'callback' => 'mymodule_taxonomy_get_tree'
    ),
    'drupal_get_form' => array(
      'callback' => 'mymodule_drupal_get_form'
    )
  );
}

/**
 * Hijack drupal_get_form()
 */
function mymodue_drupal_get_form($form_id) {
  error_log("TOOK FORM");
  return call_user_func_array('drupal_core_drupal_get_form', func_get_args());
}

mymodule.overrides.inc

/**
 * Hijack taxonomy_get_tree()
 */
function mymodule_taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities = FALSE) {
  // Do custom stuff here ... for now just use the original taxonomy_get_tree().
  return drupal_core_taxonomy_get_tree($vid, $parent, $max_depth, $load_entities);
}

This module was partially inspired by the technique used in the Leftandright - Nested Set Taxonomy module and by stream_wrapper override ideas of patrickd.

This module probably shouldn't be used in production, and was made entirely for fun to see if it was somewhat possible to override core functionality in a general way.

NOTE: Seems buggy with XCache but fine with APC?