예제 #1
0
 /**
  * A method to run a method on all plugin objects in an array of plugins.
  *
  * @static
  * @param array $aPlugins An array of plugin objects.
  * @param string $methodName The name of the method to executed for every plugin.
  * @param array $aParams An optional array of parameters to pass to the method called.
  * @return mixed An array of the results of the method calls, or false on error.
  */
 function &callOnPlugins(&$aPlugins, $methodName, $aParams = null)
 {
     if (!is_array($aPlugins)) {
         MAX::raiseError('Bad argument: Not an array of plugins.', MAX_ERROR_INVALIDARGS);
         return false;
     }
     foreach ($aPlugins as $key => $oPlugin) {
         if (!is_a($oPlugin, 'MAX_Plugin_Common')) {
             MAX::raiseError('Bad argument: Not an array of plugins.', MAX_ERROR_INVALIDARGS);
             return false;
         }
     }
     $aReturn = array();
     foreach ($aPlugins as $key => $oPlugin) {
         // Check that the method name can be called
         if (!is_callable(array($oPlugin, $methodName))) {
             $message = "Method '{$methodName}()' not defined in class '" . MAX_Plugin::_getPluginClassName($oPlugin->module, $oPlugin->package, $oPlugin->name) . "'.";
             MAX::raiseError($message, MAX_ERROR_INVALIDARGS);
             return false;
         }
         if (is_null($aParams)) {
             $aReturn[$key] = call_user_func(array($aPlugins[$key], $methodName));
         } else {
             $aReturn[$key] = call_user_func_array(array($aPlugins[$key], $methodName), $aParams);
         }
     }
     return $aReturn;
 }
 /**
  * A method to test the _getPluginClassName() method.
  */
 function test_getPluginClassName()
 {
     // Test basic case
     $result = MAX_Plugin::_getPluginClassName('foo', 'bar');
     $this->assertEqual($result, 'Plugins_Foo_Bar_Bar');
     // Test plugin name case
     $result = MAX_Plugin::_getPluginClassName('foo', 'bar', 'baz');
     $this->assertEqual($result, 'Plugins_Foo_Bar_Baz');
 }