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

Oscar Renalias oscar at renalias.net
Tue Feb 20 01:47:55 EST 2007


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
>


More information about the pLog-svn mailing list