/** * 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'); }