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

Paul Westbrook paul at westbrooks.org
Tue Feb 20 16:37:01 EST 2007


Hello,
    I agree that not every plugin should be instantiated from rss or  
xmlrpc server.  For example, ideally in xmlrpcserver, only plugins  
that have registered for EVENT_PRE/POST_POST_AD, EVENT_PRE/ 
POST_POST_UPDATE, and EVENT_PRE/POST_POST_DELETE would be instantiated.

Using a bit field might add confusion.  Bitfields imply that multiple  
bits can be set at the same time.  I can't imagine when multiple  
sources would be set.

--Paul


On Feb 20, 2007, at 12:17 PM, Jon Daley wrote:

>  	Hrm - I wonder how many / which plugins should be called from the
> rss and xmlrpcserver - maybe we could lower the resource usage on  
> them?
> It would be nice to lower the RSS load.
>  	Does php care if that parameter is a string versus an integer, in
> terms of performance?  I also wondered about using a bitfield like
> define("SOURCE_INDEX", 1);
> define("SOURCE_ADMIN", 2);
> define("SOURCE_RSS", 4);
>
> and then do a
>     if($src & SOURCE_ADMIN)
>
>
>
> On Tue, 20 Feb 2007, Paul Westbrook wrote:
>
>> 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>
>>
>>
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.lifetype.net
>> http://limedaley.com/mailman/listinfo/plog-svn
>>
>
> -- 
> Jon Daley
> http://jon.limedaley.com/
>
> Do not worry about your difficulties in mathematics, I assure you that
> mine are greater.
> -- Einstein
> _______________________________________________
> 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