Index: uc_order/uc_order.module =================================================================== --- uc_order/uc_order.module (revision 987) +++ uc_order/uc_order.module (working copy) @@ -1452,10 +1452,10 @@ function uc_order_get_total($order, $pro $total += uc_line_items_calculate($order); - foreach (module_list() as $module) { + foreach (uc_modules_hooks_allowed() as $module) { $function = $module .'_order'; // $order must be passed by reference. - if (function_exists($function) && ($value = $function('total', $order, NULL))) { + if ($function != 'date_order' && function_exists($function) && ($value = $function('total', $order, NULL))) { $total += $value; } } @@ -1464,6 +1464,21 @@ function uc_order_get_total($order, $pro } /** + * Return modules for which Ubercart may use hooks. + * Dependent on the Drupal variable 'uc_ignore_modules', which is a list of + * modules to be ignored. Items in the list may be delimited by whitespace, + * commas, or semicolons. + * @return + * array of modules which may be used. + */ +function uc_modules_hooks_allowed() { + // Ignore hooks in these modules + $ignore_modules = preg_split('/[\s,;]+/', variable_get('uc_ignore_modules', "")); + $allowed_modules = array_diff(module_list(), $ignore_modules); + return $allowed_modules; +} + +/** * Calculate up an order's product count */ function uc_order_get_product_count($order) { Index: uc_order/uc_order.install =================================================================== --- uc_order/uc_order.install (revision 981) +++ uc_order/uc_order.install (working copy) @@ -1138,3 +1138,16 @@ function uc_order_update_6014() { return $ret; } + +/** + * Introduce the uc_ignore_modules variable to avoid hooks we don't want. + */ +function uc_order_update_6015() { + $ret = array(); + $uc_ignore_modules = variable_get('uc_ignore_modules',''); + if (empty($uc_ignore_modules)) { + // Avoid conflict from http://drupal.org/project/611044 + variable_set('uc_ignore_modules', "date,date_api"); + } + return $ret; +} \ No newline at end of file