Forums / Cotonti / Extensions / cross plugin code or data

using functions from other plugins to get data or ..

ez
#1 2011-10-02 07:46

I sometimes need code or data that is cross plugin, so i want to use functions or I want to get data that come from other plugins.
And because I want all code for a plugin in one place, I made the 'custom' function below:

You can make what I call modules and they must be in the modules folder of any plugin.

 

/*======================================================================
	Function:   cf_load_module
	
		With this function we can load any code (called modules) from other plugins.
		In this way we can get/set any value from any plugin via functions that
		belong to that specific plugin.
		There can be separate modules that we can use... so we can devide functionality
	
		parameters:
						pluginname		should be the pluginname
						modulename		empty will load the default
											pluginname.module.php
										value will load
											pluginname.module.<value>.php
		
		return values:
						false if the file was not found or the plugin is inactive
						true if the file was found and loaded
		
======================================================================*/	
function cf_load_module($pluginname='',$modulename='') {
    global $cfg,$sed_plugins;
    $ret=false;
    $pluginactive=false;
    
    if ($pluginname!="") {
        // check if plugin is active
        if (is_array($sed_plugins))
        {
            foreach($sed_plugins as $i => $k)
            {
                if($k['pl_code']==$pluginname)
                {
                    $pluginactive=true;
                    break;
                }
            }
        }
        if (!$pluginactive) {
            // plugin is not installed
            return false;
        }
    
    
        if ($modulename!='') {
            $filename = $cfg['plugins_dir'].'/'.$pluginname.'/modules/'.$pluginname.'.module.'.$modulename.'.php';
        } else {
            $filename = $cfg['plugins_dir'].'/'.$pluginname.'/modules/'.$pluginname.'.module.php';
        }        
        if (file_exists($filename)) {
            require_once($filename);
            $ret=true;
        }
    }    
    return $ret;
}

 

How to use it:

	if (cf_load_module("myproject","users")) {
		// 0 = current logged in user
		$ret=mod_mpr_users_getProjectRights('STRING',$userid,$projectid);
	}	


In this example it loads the 'users' part from the myproject plugin (i am working on)

Hope somebody can use the idea :D

==- I say: Keep it EZ -==
Trustmaster
#2 2011-10-02 08:09

In Siena you just do this:

require_once cot_incfile('module_name', 'module');

or to reuse plugin functions:

require_once cot_incfile('plugin_name', 'plug');

You can also detect if that module or plugin is loaded on site:

if (cot_plugin_active('plugin_name'))
{
    require_once cot_incfile('plugin_name', 'plug');
    // ...
}

if (cot_module_active('module_name'))
{
    require_once cot_incfile('module_name', 'module');
    // ...
}
May the Source be with you!
ez
#3 2011-10-02 08:20

LOL... i am still working Genoa... so didnt see that

==- I say: Keep it EZ -==