? media_mover.fix_reference.718374.2.patch
? refactor-for-php-5.3.718374.5.patch
Index: media_mover_api.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/media_mover/media_mover_api.module,v
retrieving revision 1.1.2.110.2.84
diff -u -p -r1.1.2.110.2.84 media_mover_api.module
--- media_mover_api.module	6 May 2010 15:01:46 -0000	1.1.2.110.2.84
+++ media_mover_api.module	7 May 2010 16:05:52 -0000
@@ -520,7 +520,7 @@ function media_mover_api_run_config_harv
   if (! media_mover_api_harvest_lock($config)) {
     // set some output display
     $output = t('Harvesting.... ') .'<br />';
-    $files = module_invoke($config->{$verb}->module, 'media_mover', $verb, $config->{$verb}->action, $config->{$verb}->configuration, null, $config, $nid);
+    $files = _media_mover_api_module_invoke($config->{$verb}->module, 'media_mover', $verb, $config->{$verb}->action, $config->{$verb}->configuration, $null = NULL, $config, $nid);
     $output .= t('Configuration process: <em>harvest</em> found !count files', array('!count' => count($files))) .'<br />';
     // store the harvested files
     if (count($files)) {
@@ -585,8 +585,7 @@ function media_mover_api_run_config_verb
   // make sure no one else is trying to operate on this file
   if (media_mover_api_file_lock($file['mmfid'], $status, $status + 1) )  {
     // now we run the actual verb on this file
-    // @NOTE not using module_invoke here b/c it doesn't seem to pass by reference correctly ($file)
-    $filepath = call_user_func_array($config->{$verb}->module .'_media_mover', array($verb, $config->{$verb}->action, $config->{$verb}->configuration, &$file, $config));
+    $filepath = _media_mover_api_module_invoke($config->{$verb}->module, 'media_mover', $verb, $config->{$verb}->action, $config->{$verb}->configuration, $file, $config);
     // Action was successful
     if ($filepath) {
 
@@ -1158,7 +1157,7 @@ function media_mover_api_update_file($fi
     $file['complete_file'], ($status ? $status : $file['status']) , $file['data'], $file['mmfid']
   );
   foreach (media_mover_api_verbs() as $verb) {
-    module_invoke($file["{$verb}_module"], 'media_mover', 'update', $file["{$verb}_action"], NULL, $file);
+    _media_mover_api_module_invoke($file["{$verb}_module"], 'media_mover', 'update', $file["{$verb}_action"], $null = NULL, $file);
   }
   db_unlock_tables('media_mover_files');
   // clear the cache for this file if we have a NID
@@ -1909,7 +1908,7 @@ function media_mover_api_build_add_confi
           }
 
           // get the config form from the modules
-          if (! $action_form = module_invoke($module, 'media_mover', 'config', $action_id, $config)) {
+          if (! $action_form = _media_mover_api_module_invoke($module, 'media_mover', 'config', $action_id, $config)) {
             // this action has no config, make a default
             $no_options_form = array();
             $no_options_form[$module .'_nooptions_'. $action_id] = array(
@@ -2062,7 +2061,7 @@ function media_mover_api_add_config_form
 
   // we need to allow modules to manipulate the configuration now that it is created
   foreach (media_mover_api_verbs() as $verb) {
-    module_invoke($configuration->{$verb}->module, 'media_mover', 'config_add', $configuration->{$verb}->action, $configuration);
+    _media_mover_api_module_invoke($configuration->{$verb}->module, 'media_mover', 'config_add', $configuration->{$verb}->action, $configuration);
   }
 
   drupal_set_message(t('Media mover configuration %name created.', array('%name' => $form_state['values']['name'])));
@@ -2225,7 +2224,7 @@ function media_mover_api_config_edit_for
   // build each form element for this configuration
   foreach(media_mover_api_verbs() as $weight => $verb) {
     // get the form for this configuration role
-    $config_role_form = module_invoke($configuration->{$verb}->module, 'media_mover', 'config', $configuration->{$verb}->action, $configuration->{$verb}->configuration);
+    $config_role_form = _media_mover_api_module_invoke($configuration->{$verb}->module, 'media_mover', 'config', $configuration->{$verb}->action, $configuration->{$verb}->configuration);
 
     // prefix the incoming form values with verb and action data
     $prefix = media_mover_api_form_prefix($configuration->{$verb}->configuration);
@@ -2368,7 +2367,7 @@ function media_mover_api_config_form_val
     $config = media_mover_api_collect_form_data($verb, $form_state['values']);
 
     // now pass this back to the module functions for validation
-    if ( $all_errors[$verb] = module_invoke($config['module'], 'media_mover', 'config_validate', $config['action'], $config['configuration'])) {
+    if ( $all_errors[$verb] = _media_mover_api_module_invoke($config['module'], 'media_mover', 'config_validate', $config['action'], $config['configuration'])) {
       // now add the action on. Do this here so that module
       // authors don't have to worry about passing back data
       foreach($all_errors[$verb] as $id => $error) {
@@ -3018,7 +3017,7 @@ function media_mover_api_file_delete_con
 
   // invoke the hook media mover $op delete
   foreach (media_mover_api_verbs() as $verb) {
-    module_invoke($configuration->{$verb}->module, 'media_mover', 'delete', $configuration->{$verb}->action, $configuration->{$verb}->configuration, $file, $configuration);
+    _media_mover_api_module_invoke($configuration->{$verb}->module, 'media_mover', 'delete', $configuration->{$verb}->action, $configuration->{$verb}->configuration, $file, $configuration);
   }
 
   // delete the file cache for this node
@@ -3096,7 +3095,7 @@ function media_mover_api_file_delete_cal
 
   // call the modules that added files to this
   foreach (media_mover_api_verbs() as $verb) {
-    module_invoke($configuration->{$verb}->module, 'media_mover', 'delete', $configuration->{$verb}->action, $configuration->{$verb}->configuration, $file, $configuration);
+    _media_mover_api_module_invoke($configuration->{$verb}->module, 'media_mover', 'delete', $configuration->{$verb}->action, $configuration->{$verb}->configuration, $file, $configuration);
   }
 
   // now clear the cache if we have a node
@@ -3368,7 +3367,7 @@ function media_mover_api_xspf_playlist_u
  */
 function theme_media_mover_files($files) {
   foreach ($files as $file) {
-    if ($custom = module_invoke($file['storage_module'], 'media_mover', 'theme', NULL, $file) ) {
+    if ($custom = _media_mover_api_module_invoke($file['storage_module'], 'media_mover', 'theme', $null = NULL, $file) ) {
       $output .= $custom;
     }
     else {
@@ -3466,3 +3465,10 @@ function theme_media_mover_api_configura
   );
   return $form;
 }
+
+function _media_mover_api_module_invoke($module, $hook, $op, $action, &$context1 = NULL, &$context2 = NULL, $context3 = NULL, $context4 = NULL, $context5 = NULL) {
+  if (module_hook($module, $hook)) {
+    $function = $module .'_'. $hook;
+    return $function($op, $action, $context1, $context2, $context3, $context4, $context5);
+  }
+}
