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

Oscar Renalias oscar at renalias.net
Thu Feb 22 04:45:13 EST 2007


Fine by me.

On 2/22/07, Paul Westbrook <paul at westbrooks.org> wrote:
> Hello,
>     If we want to go with something like the current solution, I
> propose that loadPlugins should default to $source = "".  Then in the
> plugins, if the source is "admin" they would initialize the admin code.
>
> If this sounds good, I can check this in.
>
> --Paul
>
>
> On Feb 20, 2007, at 1:45 PM, Oscar Renalias wrote:
>
> > It's impossible to determine whether a plugin only wants to listen to
> > some events or do something else. In addition to that, there could
> > also potentially be plugins for the xmlrpc interface that extend the
> > interface in one way or another (but unfortunately I can't think of
> > an example right now)
> >
> > Regarding default values for the source parameter, I think we should
> > find a solution that does not break the current behaviour so plugins
> > that have been improved to support this parameter will make use of
> > it, and those that haven't shouldn't break because of this. So either
> > all entry points that load plugins use "index" as their source
> > parameter and admin.php is the only one using "admin", or we leave it
> > empty by default and specify that admin.php will provide a value of
> > "admin" so that we can do some extra stuff related to admin.php only.
> >
> > On 20 Feb 2007, at 23:37, Paul Westbrook wrote:
> >
> >> 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>
> >>
> >>
> >> _______________________________________________
> >> 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
>
> --
> 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
>


More information about the pLog-svn mailing list