[geeklog-devel] Re: Geeklog 2 Module API

Blaine Lang geeklog at langfamily.ca
Mon Oct 20 14:55:40 EDT 2003


Vinny,

I like the idea of having the plugin register itself with their capabilties.
As Tom notes, there may also be a way for a plugin to advertise new services
that may be available.

- Examples that I have close to release are:
1) Support for Smilies - Add/Edit Admin plus the replace functions but
standard Story Edit and Comment functions could also use this
2) Private Messenger - The one in chatterblock was a quick hack compared to
the new one I have now but other plugins may want to leverage this feature.
Example, I created a Project Mgmt Plugin for a client and they wanted the
options to received task notifications via the Private Messenger.

Another example is an image mgmt plugin that would provide a service to
allow users to add images to stories or other plugins that have content
functionality.

But as Tom notes, we will need someway to facilite or mediate over
conflicts.

Would there be a need to have or want a plugin function replace a core
function ?

I was not sure if you have used the most recent release when you reviewed
the PLG API functions. Dirk has added a number of new ones for syndication.

What about an internal Messaging protocal or service for plugins and Core
compoents to share or exchange information ?

GL 1.3.8 Added the new functions to extend the User and Account Profiles -
this was a great addition. If only now we had a way to auto extend or modify
the templates. GL2 will need to support a much improved template engine as
noted many times < but I digress off topic>
Is there a need to add an API to add/edit information to the cookie or
session variables ?

I can't think of any new API's that are needed. The 1.3.x framework has been
very good at fleshing this out and it's been nicely extended over the past
year.  I have not looked at XOOPS2 to see what they have done -  that may be
helpfull for ideas.

I'd like to see a way to import in a new plugin. Similar to a JAR file - a
zip file with the defined structure. The Plugin installer would un-archive
the contents, create the directories and run the installer script. I'd put
my hand up to work on that one. I think we need to also look at the Block
admin and have a similar feature.

Note: We may want to move some of the GL2 Discussion to the Geeklog.net
Forum. I can create a Developers Category and Forums that are restricted.

----- 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: Monday, October 20, 2003 2:29 AM
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




More information about the geeklog-devel mailing list