[geeklog-devel] PLG_itemDisplay?

Joe Mucchiello joe at ThrowingDice.com
Mon Oct 8 16:27:51 EDT 2007

There are currently dozens of suggestions regarding this. I'll go 
with the ones I feel have the path of least resistance:

STEP 1: Expand the PLG_templateSetVars function so it is more informative.

function PLG_templateSetVars($templateName, $templateclass, $type= 
'', $data =Array())
function plugin_templatesetvars_$plugin($templateName, 
$templateclass, $type, $data)

This change is the most transparent. The caller of 
PLG_templateSetVars tells the plugins who he is ($type) and providing 
a database row associated with the object ($data) if there is one. So 
existing calls would expand to something like:

    PLG_templateSetVars('featuredstory', $T, 'article', $A);
    PLG_templateSetVars('header', $header, 'siteHeader');  // leave 
the array blank on the header, footer, newuserform, and submitstory

Where $A is the result from the DB_fetchArray() for the story.

There are only 10 calls to PLG_templateSetVars in CVS so it shouldn't 
take long to do this. (I've added the call to the calendar plugin as 
part of the bounty.)

Line numbers may be off, I haven't refreshed in a week or two:
public_html\lib-common.php(1151):     PLG_templateSetVars( 'header', 
$header, 'siteHeader' );
public_html\lib-common.php(1320):     PLG_templateSetVars( 'footer', 
$footer, 'siteFooter' );
public_html\profiles.php(227):             PLG_templateSetVars 
('contact', $mail_template, 'email');
public_html\profiles.php(401):     PLG_templateSetVars ('emailstory', 
$mail_template, 'email');
public_html\submit.php(207):         PLG_templateSetVars ('story', 
$storyform, 'submitform');
public_html\users.php(692):     PLG_templateSetVars ('registration', 
$user_templates, 'submitform');
system\lib-comment.php(799):                 PLG_templateSetVars 
('comment', $comment_template, 'submitform');
system\lib-story.php(497):         PLG_templateSetVars( 
'featuredstorytext', $article, 'article', $story );
system\lib-story.php(503):         PLG_templateSetVars( 
'archivestorytext', $article, 'article', $story );
system\lib-story.php(509):         PLG_templateSetVars( 'storytext', 
$article, 'article', $story );

Of note here, the PLG_templateSetVars in comments is on the 
submission form but not on the display. That needs remedy.

STEP 2: More than just stories needs to call PLG_itemSaved()

Not much to add here. Understood should be that the $type in 
PLG_itemSaved($id, $type) needs to be the same a the $type in 
PLG_templateSetVars for sanity sake.

STEP 3: This part isn't necessary but it would certainly help plugin 

Add an extra variable to any templates expressly for the use of 
unknown plugins: {extensions}
Plugins use the append mode of set_var() so they don't overwrite some 
other plugin's use of the {extension} variable:

function plugin_templatesetvars_$plugin($templateName, $T, $type, $A)
     if ($type == 'block' AND $A['name'] = 'user_block') {
         $T->set_var('extensions', extendUserBlock($A), true);

Some templates might include more than one {extensions} variables. 
For example, Stories might have an {extend_after} and 
{extend_buttons} so you could add button where the edit button goes. 
But that is beyond the scope of this task.

At 10:56 AM 10/8/2007, Oliver Spiesshofer wrote:
>I remember now I introduced that function myself but due to the 
>upcoming discussion it was never used.
>The reason was that plugins should be able to modify or analyze 
>information before display if desired.
>Simply adding a template variable with 
>plugin_templatesetvars_xxx  would require that the plugin is 
>installed together with a template using the variable, and the 
>actual content of the item cannot be seen by the plugin then anyhow. 
>It would be great if the function could be called in the plugin api 
>instead so that the plugin could read the variables of the template 
>out, modify them and then send them back for further processing. I 
>guess that would cover most of the items needed.
>any thoughts on this?
>> >At 06:50 AM 1/9/2007, Dirk Haun wrote:
>> >Oliver,
>> >
>> >>Ok, rewriting the plugin engine was not the original scope of the
>> >>tagging plugin :), but this can certainly be done.
>> >>A PLG_itemDisplay('story') could call all plugins and see if they have
>> >>anything to add to the story display.
>> >
>> >Could you slow down a bit, please?
>> >
>> >Do we even need such an API? We already have something similar in 
>> the form of
>> >plugin_templatesetvars_xxx
>> >
>> >bye, Dirk
>geeklog-devel mailing list
>geeklog-devel at lists.geeklog.net

Joe Mucchiello
Throwing Dice Games

More information about the geeklog-devel mailing list