[geeklog-devel] Re: Geeklog 2 Module API

Tom Willett tomw at pigstye.net
Mon Oct 20 09:25:03 EDT 2003


Vinny, 

Looks like a good start!  Now some suggestions:  Along with the ability to 
register APIs at the start, it would be good to be able to register and 
unregister them after the plugin is installed.  That would allow the plugin 
writer to turn on and off such things as stats display from the interface 
easier.  The plugin could then make the appropriate calls to turn on any 
APIs it needed (the default being off) when it installs itself.  Thus you 
could have:

/* installation functions */
function install();                /* install the plugin */
function uninstall();            /* uninstall the plugin */
function upgrade();                /* upgrade the plugin from a previous 
version */
function regAPI();               /* register availability of API */
function unregAPI();             /* unregister availability of API */
function getVersion();            /* return plugin name and version (author
(s)?, website?)*/

instead of:

  /* installation functions */
  function install();                /* install the plugin */
  function uninstall();            /* uninstall the plugin */
  function upgrade();                /* upgrade the plugin from a previous 
version */
  function getVersion();            /* return plugin name and version author
(s)?, website?)*/


Some other thoughts.

What about the ability for a plugin to publish an API for other plugins to 
use.  A simple example: Blaines use of chatterblock functions in the forum.  
This might require you to further virtualize the plugin API so that the 
plugin could query the API interface in the same way the program itself does.

What about the ability to replace an internal Geeklog function?  This would 
allow the plugin to replace/enhance core Geeklog functionality. Of course 
this would require Geeklog to moderate, we would not want two plugins trying 
to replace the same Geeklog function.

Some of this may already be planned with the new modular structure, if so 
ignore me.

I would love to have the time to contribute more than suggestions, but at 
the present do not.

--
Tom Willett
tomw at pigstye.net

---------- Original Message -----------
From: Vincent Furia <vmf at abtech.org>
To: Tony Bibbs <tony at tonybibbs.com>
Cc: Geeklog Development <geeklog-devel at lists.geeklog.net>
Sent: Mon, 20 Oct 2003 02:29:41 -0400
Subject: [geeklog-devel] Re: Geeklog 2 Module API

> OK, here is a first go at the module/plugin API to get things 
> started.  I thought that I would start by recommending that plugins 
> "register" themselves during install with geeklog, including whether 
> they use the different plugin APIs (moderation, comments, ratings, 
> search, etc) so as to eliminate the "doesXXXX" type functions that 
> may be needed otherwise 
> (should also make things more efficient when calling functions for 
> multiple plugins).
> 
> In any case, please make lots of recommendations.  This doesn't 
> really add much to what a plugin can do in GL 1.3.x, any new ideas 
> would be very much appreciated.
> 
> -Vinny
> 
> <?php
> interface glPlugin {
>     /* installation functions */
>     function install();                /* install the plugin */
>     function uninstall();            /* uninstall the plugin */
>     function upgrade();                /* upgrade the plugin from a 
> previous version */
>     function getVersion();            /* return plugin name and 
> version 
> (author(s)?, website?)*/
> 
>     /* user modifications */
>     function onNewUser();            /* process new user */
>     function onDeleteUser();        /* process user deletion */
> 
>     /* moderation */
>     function getSubmissionForm();    /* return the form for plugin 
> submission */
>     function getModerationList();    /* return list of items for 
> moderation */
>     function onApproveSubmission();    /* process a submission 
> approval */    function onDeleteSubmission();    /* delete a 
> submission */    function onEditSubmission();    /* return the form 
> to edit a submission */    function getSubmissionCount();  /* return 
> count of current submissions */
> 
>     /* search functions */
>     function getSearchResults();    /* search items for keywords */
>     function getSearchTypes();        /* return plugin search 
> options */
> 
>     /* comment functions */
>     function onCommentAction();        /* plugin action on comment 
> submit, delete, etc */
>     function getCommentParent();    /* for display of the parent 
> above comments */
> 
>     /* ratings functions */
>     function onRatingAction();        /* plugin action  on ratings 
> actions (submit rating) */
> 
>     /* menu/display items */
>     function getMenuItems();        /* return menu items related to 
> the plugin */    function getUserMenu();            /* return user 
> menu options */    function getAdminMenu();        /* return admin 
> menu options */    function getControlMenu();        /* return 
> control menu options */    function getCenterBlock();        /* 
> return centerblock */
> 
>     /* profile */
>     function getProfileBlock();        /* display plugin block 
> profile values */    function getEditProfileBlock();    /* return 
> form to edit block profile values */    function getProfileVar();    
>     /* display plugin variable profile values */    function 
> getEditProfileVar();    /* return form to edit variable profile 
> values */    function saveProfileOptions();  /* save plugin profile 
> options */
> 
>     /* export files (rdf feeds, ical files, etc) */
>     function getExportNames();        /* return export file names 
> the plugin uses */    function getExportContent();    /* return 
> export file content */    function getExportCurrent();    /* return 
> if exports are current */
> 
>     /* other */
>     function getHeaderCode();        /* return plugin JS or Meta 
> Data */    function getStats();            /* return plugin stats 
> information */ }
> 
> _______________________________________________
> geeklog-devel mailing list
> geeklog-devel at lists.geeklog.net
> http://lists.geeklog.net/listinfo/geeklog-devel
------- End of Original Message -------




More information about the geeklog-devel mailing list