[pLog-svn] r4786 - in plog/branches/lifetype-1.2: . class/plugin

Paul Westbrook paul at westbrooks.org
Tue Feb 20 14:56:44 EST 2007


Hello,
    loadPlugins is called from rss and the xmlrpcserver code.  Do we  
want to call these out as different sources?   I would think that  
most plugins only care about being called from admin.php or not.

    When I port some plugins, I will check for "admin", and call the  
admin init function in this case.  In all other cases, the simple  
init would be called.

--Paul


On Feb 20, 2007, at 2:16 AM, Jon Daley wrote:

>  	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
> _______________________________________________
> 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>




More information about the pLog-svn mailing list