PluginSDK

From WoWRosterWiKi
(Difference between revisions)
Jump to: navigation, search
(Created page with "__NOEDITSECTION__ {{Disclaimer|NoLang}} {{MainMenu|Roster}} ==Plugin SDK== Most of the Plugin install system is like the Addon system see the AddOn SDK for more info some change...")
 
Line 41: Line 41:
 
*$scope
 
*$scope
 
**this is the scope the plugin functions in ex guild, user multiple scopes are set as guild|char|user '''global''' can only be defined alone
 
**this is the scope the plugin functions in ex guild, user multiple scopes are set as guild|char|user '''global''' can only be defined alone
 +
 +
==Install Class==
 +
<php>function install()</php>
 +
All the same functions you can use in addon install class work here BUT you cannot create menu buttons this is the only limitation
 +
 +
==Addon Plugin Init==
 +
 +
This function is customized for each addon and is included in the functions or main file for the addon to get plugin data
 +
 +
This is the Function used in the new WoWRoster Portal
 +
 +
<php>
 +
function _initPlugins()
 +
{
 +
global $roster, $addon;
 +
$plugins = $roster->plugin_data;
 +
if( !empty($plugins) )
 +
{
 +
foreach( $plugins as $plugin_name => $plugin )
 +
{
 +
if ($plugin['parent'] == $addon['basename'])
 +
{
 +
if ($roster->plugin_data[$plugin_name]['active'] == '1')
 +
{
 +
$xplugin = getplugin($plugin_name);
 +
 +
foreach( $roster->multilanguages as $lang )
 +
{
 +
$roster->locale->add_locale_file($xplugin['locale_dir'] . $lang . '.php', $lang);
 +
}
 +
$plugin['scope'] = explode('|',$plugin['scope']);
 +
if (in_array( $roster->scope, $plugin['scope'] ) )
 +
{
 +
$classfile = ROSTER_PLUGINS . $plugin_name . DIR_SEP . $plugin_name . '.php';
 +
require($classfile);
 +
$pluginstuff = new $plugin_name($xplugin);
 +
$this->block[] = array(
 +
'name'  => $roster->locale->act[$plugin_name]['title'],//$pluginstuff->fullname,
 +
'output' => $pluginstuff->output,
 +
'icon'  => $pluginstuff->icon
 +
);
 +
unset($pluginstuff);
 +
}
 +
}
 +
}
 +
}
 +
}
 +
return true;
 +
}
 +
</php>
 +
after $pluginstuff = new $plugin_name($xplugin); is where custom variables are declared for each addon these do change from addon to addon
 +
$this->block is passed to the index.php and looped to output the custom blocks for this plugin.

Revision as of 15:01, 5 June 2012

WR.net

Important note: When you edit this page, you agree to release your contribution into the public domain.
If you do not want this or can not do this because of license restrictions, please do not edit.

Contents


Plugin SDK

Most of the Plugin install system is like the Addon system see the AddOn SDK for more info some changes are as such

Each install.def.php for each plugin has to have these vars at the top after the class is started

class eventsInstall
{
	/*
	*	These Vars are used with the new Plugin installer 
	*	@var name - unique name for the plugin
	*	@var parent - the intended addon to use this plugin
	*/
	var $active = true;
	var $name = 'events';
	var $filename = 'events.php';
	var $parent = 'main';
	var $scope = 'guild';
	var $icon = 'achievement_worldevent_childrensweek';
	var $version = '1.0';
	var $oldversion = '';
	var $wrnet_id = '';
 
	var $fullname = 'WoW Events';
	var $description = 'Creates a display of the current ingame event.';
	var $credits = array(
		array(	"name"=>	"Ulminia <Ulminia@gmail.com>",
			"info"=>	"WoW Events (Alpha Release)"),
	);

Install Class

function install()

All the same functions you can use in addon install class work here BUT you cannot create menu buttons this is the only limitation

Addon Plugin Init

This function is customized for each addon and is included in the functions or main file for the addon to get plugin data

This is the Function used in the new WoWRoster Portal

function _initPlugins()
{
	global $roster, $addon;
	$plugins = $roster->plugin_data;
	if( !empty($plugins) )
	{
		foreach( $plugins as $plugin_name => $plugin )
		{
			if ($plugin['parent'] == $addon['basename'])
			{
				if ($roster->plugin_data[$plugin_name]['active'] == '1')
				{
					$xplugin = getplugin($plugin_name);
					
					foreach( $roster->multilanguages as $lang )
					{
						$roster->locale->add_locale_file($xplugin['locale_dir'] . $lang . '.php', $lang);
					}
					$plugin['scope'] = explode('|',$plugin['scope']);
					if (in_array( $roster->scope, $plugin['scope'] ) )
					{
						$classfile = ROSTER_PLUGINS . $plugin_name . DIR_SEP . $plugin_name . '.php';
						require($classfile);
						$pluginstuff = new $plugin_name($xplugin);
							$this->block[] = array(
							'name'   => $roster->locale->act[$plugin_name]['title'],//$pluginstuff->fullname,
							'output' => $pluginstuff->output,
							'icon'   => $pluginstuff->icon
						);
							unset($pluginstuff);
					}
				}
			}
		}
	}
	return true;
}

after $pluginstuff = new $plugin_name($xplugin); is where custom variables are declared for each addon these do change from addon to addon $this->block is passed to the index.php and looped to output the custom blocks for this plugin.

Personal tools
Namespaces
Variants
Actions
WoWRoster
Navigation
Toolbox