[pLog-svn] r4786 - in plog/branches/lifetype-1.2: . class/plugin
Jon Daley
plogworld at jon.limedaley.com
Tue Feb 20 05:16:49 EST 2007
Why is a default good? Does loadPlugins get called from somewhere
else? If there isn't a default, then one would get an error that they
were missing a parameter when they call it, and so would know to fix their
code.
On Tue, 20 Feb 2007, Oscar Renalias wrote:
> Specifying a default source is probably a good idea, I guess it should
> be "index".
>
> And plugins should want to know where they're being instantiated from,
> that's the idea, so that they can react in different ways and load
> different classes depending on whether they're being loaded from
> index.php and admin.php.
>
> On 2/20/07, Paul Westbrook <paul at westbrooks.org> wrote:
>> Hello,
>> Also, should there be a default source that is used in
>> loadPlugins. The only places that currently specify a source are in
>> admin.php and index.php.
>>
>> Should the default be "index" and only admin.php set it to "admin"?
>> Or would plugins want to know exactly where they are being
>> instantiated from?
>>
>> --Paul
>>
>>
>> On Feb 19, 2007, at 12:54 PM, oscar at devel.lifetype.net wrote:
>>
>>> Author: oscar
>>> Date: 2007-02-19 15:54:56 -0500 (Mon, 19 Feb 2007)
>>> New Revision: 4786
>>>
>>> Modified:
>>> plog/branches/lifetype-1.2/admin.php
>>> plog/branches/lifetype-1.2/class/plugin/pluginbase.class.php
>>> plog/branches/lifetype-1.2/class/plugin/pluginmanager.class.php
>>> plog/branches/lifetype-1.2/index.php
>>> Log:
>>> Added an extra parameter to the constructor of the PluginBase
>>> class: $source. This parameter will be provided by the
>>> PluginManager class when instantiating plugin classes and it should
>>> be used by plugin classes to differentiate whether they're being
>>> called by index.php or admin.php. This also means that the
>>> constructor can react in different ways depending on the value of
>>> the $source parameter, so for example when it's index.php calling
>>> us there is no need to register menu entries or add new admin
>>> actions because they're not going to be used anyway... By making a
>>> few small changes in the authimage plugin to accommodate this new
>>> parameter, I was able to save over 500kb of memory in addition to
>>> over 2000 function and method calls, which I think is quite good.
>>>
>>> Of course this change means nothing unless plugins are adapted for
>>> it, but I will get round to modifying the ported plugins right away.
>>>
>>> As a side effect this also means that our current implementation of
>>> dynamic menus is rubbish and that we should rethink the whole thing
>>> for 1.3 :)
>>>
>>>
>>> Modified: plog/branches/lifetype-1.2/admin.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2/admin.php 2007-02-19 20:40:28 UTC
>>> (rev 4785)
>>> +++ plog/branches/lifetype-1.2/admin.php 2007-02-19 20:54:56 UTC
>>> (rev 4786)
>>> @@ -37,7 +37,7 @@
>>> // Controller::process() method, as some of the plugins _might_
>>> // add new actions to the controller
>>> $pluginManager =& PluginManager::getPluginManager();
>>> - $pluginManager->loadPlugins();
>>> + $pluginManager->loadPlugins( "admin" );
>>>
>>> // give control to the, ehem, controller :)
>>> $controller->process( HttpVars::getRequest(), "op");
>>>
>>> Modified: plog/branches/lifetype-1.2/class/plugin/pluginbase.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2/class/plugin/pluginbase.class.php
>>> 2007-02-19 20:40:28 UTC (rev 4785)
>>> +++ plog/branches/lifetype-1.2/class/plugin/pluginbase.class.php
>>> 2007-02-19 20:54:56 UTC (rev 4786)
>>> @@ -80,8 +80,14 @@
>>>
>>> /**
>>> * Constructor. Feel free to do here whatever you need to.
>>> + *
>>> + * @param source Only defined to be 'blog' or 'admin'. This
>>> parameter should be used to determine
>>> + * whether it is index.php registering this plugin ("index") or
>>> admin.php doing it ("admin") so that
>>> + * we can perform different things. This means that the plugin
>>> can be initialized in two different ways
>>> + * depending on whether we're being called via index.php or via
>>> admin.php so things like menu entries
>>> + * or admin actions do not need to be registered unless it's
>>> admin.php calling, and so on.
>>> */
>>> - function PluginBase()
>>> + function PluginBase( $source = "" )
>>> {
>>>
>>> }
>>>
>>> Modified: plog/branches/lifetype-1.2/class/plugin/
>>> pluginmanager.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2/class/plugin/pluginmanager.class.php
>>> 2007-02-19 20:40:28 UTC (rev 4785)
>>> +++ plog/branches/lifetype-1.2/class/plugin/pluginmanager.class.php
>>> 2007-02-19 20:54:56 UTC (rev 4786)
>>> @@ -41,6 +41,7 @@
>>> var $_blogInfo;
>>> var $_userInfo;
>>> var $_pluginInstances;
>>> + var $_source;
>>>
>>> /**
>>> * global variable to save the list of plugins registered
>>> so far
>>> @@ -60,9 +61,7 @@
>>> * @param filePattern
>>> */
>>> function PluginManager( $pluginDir =
>>> PLUGIN_MANAGER_DEFAULT_PLUGIN_FOLDER, $filePattern =
>>> PLUGIN_MANAGER_DEFAULT_PLUGIN_FILE_PATTERN )
>>> - {
>>> -
>>> -
>>> + {
>>> $config =& Config::getConfig();
>>>
>>> // initialize the arrays used to keep track of plugins
>>> and events
>>> @@ -165,11 +164,13 @@
>>> /**
>>> * Loads all the plugins from disk
>>> *
>>> - * @private
>>> + * @param source
>>> */
>>> - function loadPlugins()
>>> + function loadPlugins( $source )
>>> {
>>> $classLoader =& ResourceClassLoader::getLoader();
>>> +
>>> + $this->_source = $source;
>>>
>>> foreach( $this->_pluginList as $plugin ) {
>>> $pluginFile = "./plugins/$plugin";
>>> @@ -243,7 +244,7 @@
>>> if( File::isReadable( $pluginFile."/".
>>> $pluginFileName )) {
>>> $className = "Plugin".$plugin;
>>> lt_include( $pluginFullPath );
>>> - $classInstance = new $className();
>>> + $classInstance = new $className( $this->_source );
>>> $classInstance->setPluginFolder( PLOG_CLASS_PATH.
>>> $pluginFile."/" );
>>> $name = $classInstance->getId();
>>>
>>>
>>> Modified: plog/branches/lifetype-1.2/index.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2/index.php 2007-02-19 20:40:28 UTC
>>> (rev 4785)
>>> +++ plog/branches/lifetype-1.2/index.php 2007-02-19 20:54:56 UTC
>>> (rev 4786)
>>> @@ -45,7 +45,7 @@
>>> // Controller::process() method, as some of the plugins _might_
>>> // add new actions to the controller
>>> $pluginManager =& PluginManager::getPluginManager();
>>> - $pluginManager->loadPlugins();
>>> + $pluginManager->loadPlugins( "index" );
>>>
>>> // give control to the, ehem, controller :)
>>> $controller->process( HttpVars::getRequest(), "op");
>>>
>>> _______________________________________________
>>> pLog-svn mailing list
>>> pLog-svn at devel.lifetype.net
>>> http://limedaley.com/mailman/listinfo/plog-svn
>>
>> --
>> Paul Westbrook
>> paul at westbrooks.org
>> <http://www.westbrooks.org>
>>
>>
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.lifetype.net
>> http://limedaley.com/mailman/listinfo/plog-svn
>>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://limedaley.com/mailman/listinfo/plog-svn
>
--
Jon Daley
http://jon.limedaley.com/
It's a question of whether we're going to go forward
into the future, or past into the back.
-- Dan Quayle
More information about the pLog-svn
mailing list