From 9c29ac79afe75fb303392ca5899d68af924a9bbf Mon Sep 17 00:00:00 2001
From: Dries <dries@buytaert.net>
Date: Thu, 15 Dec 2011 12:33:38 -0500
Subject: [PATCH] - Patch #1059884 by bfroehle, sun, casey: Drop
 function_exists() for 'callback' functions.

---
 core/includes/common.inc                    | 28 ++++++++-------------
 core/includes/form.inc                      |  6 ++---
 core/includes/menu.inc                      |  6 ++---
 core/includes/token.inc                     |  2 +-
 core/modules/book/book.module               |  2 +-
 core/modules/entity/entity.module           |  4 +--
 core/modules/field/field.module             |  4 +--
 core/modules/field/modules/list/list.module |  2 +-
 core/modules/field_ui/field_ui.module       |  2 +-
 core/modules/filter/filter.admin.inc        |  2 +-
 core/modules/filter/filter.module           |  6 ++---
 core/modules/image/image.admin.inc          |  5 ++--
 core/modules/image/image.module             |  5 +---
 core/modules/rdf/rdf.module                 |  2 +-
 core/modules/search/search.pages.inc        |  2 +-
 15 files changed, 31 insertions(+), 47 deletions(-)

diff --git a/core/includes/common.inc b/core/includes/common.inc
index 4f78db13d375..99fcdba6d3af 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -4489,10 +4489,8 @@ function drupal_process_attached($elements, $group = JS_DEFAULT, $dependency_che
   // Libraries, JavaScript and CSS have been added already, as they require
   // special handling.
   foreach ($elements['#attached'] as $callback => $options) {
-    if (function_exists($callback)) {
-      foreach ($elements['#attached'][$callback] as $args) {
-        call_user_func_array($callback, $args);
-      }
+    foreach ($elements['#attached'][$callback] as $args) {
+      call_user_func_array($callback, $args);
     }
   }
 
@@ -5784,9 +5782,7 @@ function drupal_render(&$elements) {
   // element is rendered into the final text.
   if (isset($elements['#pre_render'])) {
     foreach ($elements['#pre_render'] as $function) {
-      if (function_exists($function)) {
-        $elements = $function($elements);
-      }
+      $elements = $function($elements);
     }
   }
 
@@ -5830,9 +5826,7 @@ function drupal_render(&$elements) {
   // which allows the output'ed text to be filtered.
   if (isset($elements['#post_render'])) {
     foreach ($elements['#post_render'] as $function) {
-      if (function_exists($function)) {
-        $elements['#children'] = $function($elements['#children'], $elements);
-      }
+      $elements['#children'] = $function($elements['#children'], $elements);
     }
   }
 
@@ -7668,16 +7662,14 @@ function drupal_get_filetransfer_info() {
     $info = array();
     foreach (module_implements('filetransfer_info') as $module) {
       $function = $module . '_filetransfer_info';
-      if (function_exists($function)) {
-        $result = $function();
-        if (isset($result) && is_array($result)) {
-          foreach ($result as &$values) {
-            if (empty($values['file path'])) {
-              $values['file path'] = drupal_get_path('module', $module);
-            }
+      $result = $function();
+      if (isset($result) && is_array($result)) {
+        foreach ($result as &$values) {
+          if (empty($values['file path'])) {
+            $values['file path'] = drupal_get_path('module', $module);
           }
-          $info = array_merge_recursive($info, $result);
         }
+        $info = array_merge_recursive($info, $result);
       }
     }
     drupal_alter('filetransfer_info', $info);
diff --git a/core/includes/form.inc b/core/includes/form.inc
index bf64d8166c96..346937761965 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -784,7 +784,7 @@ function drupal_retrieve_form($form_id, &$form_state) {
   // the actual form builder function ($callback) expects. This allows for
   // pre-populating a form with common elements for certain forms, such as
   // back/next/save buttons in multi-step form wizards. See drupal_build_form().
-  if (isset($form_state['wrapper_callback']) && function_exists($form_state['wrapper_callback'])) {
+  if (isset($form_state['wrapper_callback'])) {
     $form = call_user_func_array($form_state['wrapper_callback'], $args);
     // Put the prepopulated $form into $args.
     $args[0] = $form;
@@ -4391,9 +4391,7 @@ function batch_process($redirect = NULL, $url = 'batch', $redirect_callback = 'd
 
       // Redirect for processing.
       $function = $batch['redirect_callback'];
-      if (function_exists($function)) {
-        $function($batch['url'], array('query' => array('op' => 'start', 'id' => $batch['id'])));
-      }
+      $function($batch['url'], array('query' => array('op' => 'start', 'id' => $batch['id'])));
     }
     else {
       // Non-progressive execution: bypass the whole progressbar workflow
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 83f25f124e9e..3011a3be662e 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -632,7 +632,7 @@ function _menu_check_access(&$item, $map) {
     if ($callback == 'user_access') {
       $item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
     }
-    elseif (function_exists($callback)) {
+    else {
       $item['access'] = call_user_func_array($callback, $arguments);
     }
   }
@@ -692,7 +692,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
         $item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map));
       }
     }
-    elseif ($callback && function_exists($callback)) {
+    elseif ($callback) {
       if (empty($item['title_arguments'])) {
         $item['title'] = $callback($item['title']);
       }
@@ -1750,7 +1750,7 @@ function menu_get_custom_theme($initialize = FALSE) {
     // If this returns a valid theme, it will override any theme that was set
     // by a hook_custom_theme() implementation above.
     $router_item = menu_get_item();
-    if (!empty($router_item['access']) && !empty($router_item['theme_callback']) && function_exists($router_item['theme_callback'])) {
+    if (!empty($router_item['access']) && !empty($router_item['theme_callback'])) {
       $theme_name = call_user_func_array($router_item['theme_callback'], $router_item['theme_arguments']);
       if (drupal_theme_access($theme_name)) {
         $custom_theme = $theme_name;
diff --git a/core/includes/token.inc b/core/includes/token.inc
index 7a5fea141c39..86ac8827ac7f 100644
--- a/core/includes/token.inc
+++ b/core/includes/token.inc
@@ -86,7 +86,7 @@ function token_replace($text, array $data = array(), array $options = array()) {
   }
 
   // Optionally alter the list of replacement values.
-  if (!empty($options['callback']) && function_exists($options['callback'])) {
+  if (!empty($options['callback'])) {
     $function = $options['callback'];
     $function($replacements, $data, $options);
   }
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index 0a6637cef02a..ab57d38a44d7 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -1244,7 +1244,7 @@ function book_export_traverse($tree, $visit_func) {
         $children = book_export_traverse($data['below'], $visit_func);
       }
 
-      if (function_exists($visit_func)) {
+      if (!empty($visit_func)) {
         $output .= call_user_func($visit_func, $node, $children);
       }
       else {
diff --git a/core/modules/entity/entity.module b/core/modules/entity/entity.module
index 2eda87cf2b43..22413716c966 100644
--- a/core/modules/entity/entity.module
+++ b/core/modules/entity/entity.module
@@ -373,7 +373,7 @@ function entity_uri($entity_type, $entity) {
   }
 
   // Invoke the callback to get the URI. If there is no callback, return NULL.
-  if (isset($uri_callback) && function_exists($uri_callback)) {
+  if (isset($uri_callback)) {
     $uri = $uri_callback($entity);
     // Pass the entity data to url() so that alter functions do not need to
     // lookup this entity again.
@@ -403,7 +403,7 @@ function entity_uri($entity_type, $entity) {
 function entity_label($entity_type, $entity) {
   $label = FALSE;
   $info = entity_get_info($entity_type);
-  if (isset($info['label callback']) && function_exists($info['label callback'])) {
+  if (isset($info['label callback'])) {
     $label = $info['label callback']($entity_type, $entity);
   }
   elseif (!empty($info['entity keys']['label']) && isset($entity->{$info['entity keys']['label']})) {
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index b52fe0da9de6..5c492c0373f8 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -494,9 +494,7 @@ function field_get_default_value($entity_type, $entity, $field, $instance, $lang
   $items = array();
   if (!empty($instance['default_value_function'])) {
     $function = $instance['default_value_function'];
-    if (function_exists($function)) {
-      $items = $function($entity_type, $entity, $field, $instance, $langcode);
-    }
+    $items = $function($entity_type, $entity, $field, $instance, $langcode);
   }
   elseif (!empty($instance['default_value'])) {
     $items = $instance['default_value'];
diff --git a/core/modules/field/modules/list/list.module b/core/modules/field/modules/list/list.module
index 652355142788..0d397a4d88ca 100644
--- a/core/modules/field/modules/list/list.module
+++ b/core/modules/field/modules/list/list.module
@@ -231,7 +231,7 @@ function list_allowed_values($field) {
 
   if (!isset($allowed_values[$field['id']])) {
     $function = $field['settings']['allowed_values_function'];
-    if (!empty($function) && function_exists($function)) {
+    if (!empty($function)) {
       $values = $function($field);
     }
     else {
diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module
index 315ddb709d5f..776b965e2c8f 100644
--- a/core/modules/field_ui/field_ui.module
+++ b/core/modules/field_ui/field_ui.module
@@ -281,7 +281,7 @@ function _field_ui_view_mode_menu_access($entity_type, $bundle, $view_mode, $acc
       if ($access_callback == 'user_access') {
         return (count($args) == 1) ? user_access($args[0]) : user_access($args[0], $args[1]);
       }
-      elseif (function_exists($access_callback)) {
+      else {
         return call_user_func_array($access_callback, $args);
       }
     }
diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc
index 5a21e6e2e610..b4a700853521 100644
--- a/core/modules/filter/filter.admin.inc
+++ b/core/modules/filter/filter.admin.inc
@@ -230,7 +230,7 @@ function filter_admin_format_form($form, &$form_state, $format) {
   );
 
   foreach ($filter_info as $name => $filter) {
-    if (isset($filter['settings callback']) && function_exists($filter['settings callback'])) {
+    if (isset($filter['settings callback'])) {
       $function = $filter['settings callback'];
       // Pass along stored filter settings and default settings, but also the
       // format object and all filters to allow for complex implementations.
diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index e8572241cb9f..ab25224d9fc4 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -746,7 +746,7 @@ function check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE)
 
   // Give filters the chance to escape HTML-like data such as code or formulas.
   foreach ($filters as $name => $filter) {
-    if ($filter->status && isset($filter_info[$name]['prepare callback']) && function_exists($filter_info[$name]['prepare callback'])) {
+    if ($filter->status && isset($filter_info[$name]['prepare callback'])) {
       $function = $filter_info[$name]['prepare callback'];
       $text = $function($text, $filter, $format, $langcode, $cache, $cache_id);
     }
@@ -754,7 +754,7 @@ function check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE)
 
   // Perform filtering.
   foreach ($filters as $name => $filter) {
-    if ($filter->status && isset($filter_info[$name]['process callback']) && function_exists($filter_info[$name]['process callback'])) {
+    if ($filter->status && isset($filter_info[$name]['process callback'])) {
       $function = $filter_info[$name]['process callback'];
       $text = $function($text, $filter, $format, $langcode, $cache, $cache_id);
     }
@@ -1015,7 +1015,7 @@ function _filter_tips($format_id, $long = FALSE) {
     $filters = filter_list_format($format->format);
     $tips[$format->name] = array();
     foreach ($filters as $name => $filter) {
-      if ($filter->status && isset($filter_info[$name]['tips callback']) && function_exists($filter_info[$name]['tips callback'])) {
+      if ($filter->status && isset($filter_info[$name]['tips callback'])) {
         $tip = $filter_info[$name]['tips callback']($filter, $format, $long);
         if (isset($tip)) {
           $tips[$format->name][$name] = array('tip' => $tip, 'id' => $name);
diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index ecd5364d5b84..85712e6d971a 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -389,9 +389,8 @@ function image_effect_form($form, &$form_state, $style, $effect) {
 
   $form['#tree'] = TRUE;
   $form['#attached']['css'][drupal_get_path('module', 'image') . '/image.admin.css'] = array();
-  if (function_exists($effect['form callback'])) {
-    $form['data'] = call_user_func($effect['form callback'], $effect['data']);
-  }
+
+  $form['data'] = call_user_func($effect['form callback'], $effect['data']);
 
   // Check the URL for a weight, then the image effect, otherwise use default.
   $form['weight'] = array(
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index ccc8cd1a0f73..3d6453f51649 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -1150,10 +1150,7 @@ function image_effect_delete($effect) {
 function image_effect_apply($image, $effect) {
   module_load_include('inc', 'image', 'image.effects');
   $function = $effect['effect callback'];
-  if (function_exists($function)) {
-    return $function($image, $effect['data']);
-  }
-  return FALSE;
+  return $function($image, $effect['data']);
 }
 
 /**
diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index b2a8457d0d54..1e1485e40da1 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -304,7 +304,7 @@ function rdf_rdfa_attributes($mapping, $data = NULL) {
     case 'property':
       $attributes['property'] = $mapping['predicates'];
       // Convert $data to a specific format as per the callback function.
-      if (isset($data) && isset($mapping['callback']) && function_exists($mapping['callback'])) {
+      if (isset($data) && isset($mapping['callback'])) {
         $callback = $mapping['callback'];
         $attributes['content'] = $callback($data);
       }
diff --git a/core/modules/search/search.pages.inc b/core/modules/search/search.pages.inc
index 24ea7074d30c..4ae14c60afb3 100644
--- a/core/modules/search/search.pages.inc
+++ b/core/modules/search/search.pages.inc
@@ -52,7 +52,7 @@ function search_view($module = NULL, $keys = '') {
   // the search query URL clean as a whistle.
   if (empty($_POST['form_id']) || $_POST['form_id'] != 'search_form') {
     $conditions =  NULL;
-    if (isset($info['conditions_callback']) && function_exists($info['conditions_callback'])) {
+    if (isset($info['conditions_callback'])) {
       // Build an optional array of more search conditions.
       $conditions = call_user_func($info['conditions_callback'], $keys);
     }
-- 
GitLab