[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