Difference between revisions of "Plugin API"

From GeeklogWiki
Jump to: navigation, search
(Stats API)
(Moderation / Submission)
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Geeklog's [[Plugin API]] defines the interface between the core Geeklog code and the plugins. From Geeklog's point of view, all the Plugin API functions are called <code>PLG_something</code>, which will result in a function <code>plugin_something_foo</code> being called in the "foo" plugin (if it exists - all the API functions are optional).
 
Geeklog's [[Plugin API]] defines the interface between the core Geeklog code and the plugins. From Geeklog's point of view, all the Plugin API functions are called <code>PLG_something</code>, which will result in a function <code>plugin_something_foo</code> being called in the "foo" plugin (if it exists - all the API functions are optional).
 +
 +
Please note that there isn't always a one-to-one relationship between a <code>PLG_</code> function and a <code>plugin_</code> function. For example, <code>PLG_uninstall</code> will call either <code>plugin_uninstall_</code> or <code>plugin_autouninstall_</code>, whichever is implemented. Other functions may not even get through to the plugin, e.g. <code>PLG_afterSaveSwitch</code>.
  
 
For details about Plugin API functions that are not documented yet, please refer to the documented source code of [http://project.geeklog.net/src/Geeklog/_system---lib-plugins.php.html lib-plugins.php]
 
For details about Plugin API functions that are not documented yet, please refer to the documented source code of [http://project.geeklog.net/src/Geeklog/_system---lib-plugins.php.html lib-plugins.php]
Line 31: Line 33:
 
|Plugin should upgrade itself
 
|Plugin should upgrade itself
 
|}
 
|}
 +
 +
Also see [[Plugin Autoinstall]].
  
  
Line 59: Line 63:
 
|plugin_submissioncount_
 
|plugin_submissioncount_
 
|Return the number of items in the plugin's submission queue
 
|Return the number of items in the plugin's submission queue
 +
|-
 +
|plugin_submissionsaved_
 +
|Notify plugins that a user submitted something
 +
|-
 +
|plugin_submissiondeleted_
 +
|Notify plugins that an admin deleted a submission
 
|-
 
|-
 
|plugin_submit_
 
|plugin_submit_
Line 64: Line 74:
 
|}
 
|}
  
Also see [[Adding Moderation Capability]].
+
Also see [[Adding Moderation Capability]] and [[Moderation Functions]].
 
 
  
 
= Comments =
 
= Comments =
Line 84: Line 93:
 
|plugin_getcommenturlid_
 
|plugin_getcommenturlid_
 
|Provide URL of page to view comments and the unique identifier
 
|Provide URL of page to view comments and the unique identifier
 +
|-
 +
|plugin_getwhatsnewcomment_
 +
|Return the new plugin comments for the What's New block and the User Profile
 
|-
 
|-
 
|plugin_savecomment_
 
|plugin_savecomment_
Line 90: Line 102:
  
 
Note that these are the only Comment API functions still in use. Also see [[Integrating the Comment Engine]].
 
Note that these are the only Comment API functions still in use. Also see [[Integrating the Comment Engine]].
 
  
 
= Statistics =
 
= Statistics =
Line 109: Line 120:
  
 
= Search =
 
= Search =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_dopluginsearch_
 +
|Perform search (v1 API) or provide search details and let Geeklog perform the search (v2 API)
 +
|-
 +
|plugin_searchtypes_
 +
|Provide entries for the "type" dropdown on the Advanced Search page
 +
|-
 +
|plugin_supportsexpandedsearch_
 +
|''(not used any more)''
 +
|}
 +
 +
Plugin authors are encouraged to [[Using Geeklog's Improved Search Engine|Use Geeklog's Improved Search Engine]], available as of Geeklog 1.6.0.
 +
 +
For backward compatibility with older Geeklog versions, also see [[Using Geeklog's Search Engine]].
 +
 +
 
= UI and Templates =
 
= UI and Templates =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_cclabel_
 +
|Get entry for the "Command and Control" page
 +
|-
 +
|plugin_getadminoption_
 +
|Get entries for the [[Admins Block]]
 +
|-
 +
|[[PLG_getplugin_getConfigTooltip|plugin_getconfigtooltip_]]
 +
|Returns tooltip information for the Configuration
 +
|-
 +
|[[PLG_getDocumentationUrl|plugin_getdocumentationurl_]]
 +
|Link to plugin documentation
 +
|-
 +
|plugin_getheadercode_
 +
|Add code, etc. to the HTML <code>&lt;head&gt;</code> section, e.g. meta tags
 +
|-
 +
|plugin_geticon_
 +
|Provide URL of the plugin's icon
 +
|-
 +
|plugin_getmenuitems_
 +
|Add entries to the header menu
 +
|-
 +
|plugin_getuseroption_
 +
|Get entries for the [[User Settings & User Functions Block|User Functions Block]]
 +
|-
 +
|plugin_profileblocksdisplay_
 +
|Add template variables when displaying a block on the user profile page
 +
|-
 +
|plugin_profileblocksedit_
 +
|Add template variables to a block when editing the user profile
 +
|-
 +
|plugin_profileextrassave_
 +
|Save plugin-specific additions when saving a user's profile
 +
|-
 +
|plugin_profilevariablesdisplay_
 +
|Add template variables when displaying the user profile page
 +
|-
 +
|plugin_profilevariablesedit_
 +
|Add template variables when editing the user profile
 +
|-
 +
|plugin_templatesetvars_
 +
|Add template variables to the standard templates, e.g. site header, articles, ...
 +
|}
 +
 
= User =
 
= User =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_user_changed_
 +
|A user's profile information or preferences changed
 +
|-
 +
|plugin_user_create_
 +
|A new user was created
 +
|-
 +
|plugin_user_delete_
 +
|A user is about to be deleted
 +
|-
 +
|plugin_user_login_
 +
|A user has logged in (using the login form)
 +
|-
 +
|plugin_user_logout_
 +
|A user has logged out (explicitly, i.e. using the "Log Out" link)
 +
|}
 +
 +
 
= Feeds =
 
= Feeds =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_feedElementExtensions_
 +
|Get extension tags for a feed
 +
|-
 +
|plugin_feedExtensionTags_
 +
|Get meta tag extensions for a feed
 +
|-
 +
|plugin_feedNSExtensions_
 +
|Get namespace extensions for a feed
 +
|-
 +
|plugin_feedupdatecheck_
 +
|Plugin should check if a feed needs to be updated
 +
|-
 +
|plugin_getfeedcontent_
 +
|Get content of a plugin feed
 +
|-
 +
|plugin_getfeednames_
 +
|Get a list of feeds provided by the plugin
 +
|}
 +
 +
Also see [[RSS API]].
 +
 +
 
= Spam Filter =
 
= Spam Filter =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_spamaction_
 +
|Trigger action on recognized spam
 +
|-
 +
|plugin_checkforSpam_
 +
|Check if content is spam
 +
|}
 +
 +
'''Note:''' These API functions are used by plugins ''implementing'' a spam filter, i.e. they are implemented by the [[Spam-X Plugin]]. To filter spam in your plugin, see [[Filtering Spam with Spam-X]].
 +
 +
 +
= Blocks =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_centerblock_
 +
|Display a centerblock
 +
|-
 +
|plugin_getBlocks_
 +
|Provide [[Dynamic Blocks|dynamically created blocks]]
 +
|-
 +
|plugin_getBlocksConfig_
 +
|Provide [[Dynamic Blocks|information about dynamic blocks]] for the Blocks Manager
 +
|-
 +
|plugin_getwhatsnew_
 +
|Provide content for the [[What's New Block]]
 +
|-
 +
|plugin_whatsnewsupported_
 +
|Return headline and byline for the [[What's New Block]]
 +
|}
 +
 
= Misc =
 
= Misc =
 +
 +
{| border="1" cellpadding="5"
 +
! API Function
 +
! Description
 +
|-
 +
|plugin_autotags_
 +
|Provide or replace autotags
 +
|-
 +
|[[PLG_configChange|plugin_configchange_]]
 +
|A change was made in the Configuration for Geeklog or a plugin
 +
|-
 +
|[[PLG_getItemInfo|plugin_getiteminfo_]]
 +
|Provide information about an item
 +
|-
 +
|plugin_getrelateditems_
 +
|Return related items for an item or list of topics
 +
|-
 +
|plugin_group_changed_
 +
|A group's information has changed or a new group was created
 +
|-
 +
|plugin_handlepingoperation_
 +
|Accept or delete a Trackback or Pingback
 +
|-
 +
|[[PLG_itemSaved#PLG_itemDeleted|plugin_itemdeleted_]]
 +
|An item was deleted
 +
|-
 +
|plugin_itemdisplay_
 +
|An item is about to be displayed
 +
|-
 +
|plugin_itemPreSave_
 +
|Called before an item is saved
 +
|-
 +
|[[PLG_itemSaved|plugin_itemsaved_]]
 +
|Geeklog saved an item
 +
|-
 +
|[[PLG_pluginStateChange|plugin_pluginstatechange_]]
 +
|A plugin's state changed
 +
|-
 +
|plugin_runScheduledTask_
 +
|Run a task at a scheduled time (cronjob-like functionality)
 +
|-
 +
|plugin_wsEnabled_
 +
|Whether or not the plugin supports the [[Webservices API]]
 +
|}
  
  
 
[[Category:Plugin Development]]
 
[[Category:Plugin Development]]

Latest revision as of 18:57, 4 July 2013

Geeklog's Plugin API defines the interface between the core Geeklog code and the plugins. From Geeklog's point of view, all the Plugin API functions are called PLG_something, which will result in a function plugin_something_foo being called in the "foo" plugin (if it exists - all the API functions are optional).

Please note that there isn't always a one-to-one relationship between a PLG_ function and a plugin_ function. For example, PLG_uninstall will call either plugin_uninstall_ or plugin_autouninstall_, whichever is implemented. Other functions may not even get through to the plugin, e.g. PLG_afterSaveSwitch.

For details about Plugin API functions that are not documented yet, please refer to the documented source code of lib-plugins.php


Installation

API Function Description
plugin_autouninstall_ Plugin should provide data for uninstallation
plugin_chkVersion_ Called to check if a plugin upgrade is required
plugin_enablestatechange_ Inform plugin that it's about to be enabled or disabled
plugin_install_ (not currently used)
plugin_migrate_ Site migration underway; plugin should migrate its data
plugin_uninstall_ Plugin should uninstall itself
plugin_upgrade_ Plugin should upgrade itself

Also see Plugin Autoinstall.


Moderation / Submission

API Function Description
plugin_ismoderator_ Check to see if the current user is a moderator for this plugin
plugin_itemlist_ Provide information to build the list of items in the plugin's submission queue
plugin_moderationapprove_ Approve an item in the plugin's submission queue
plugin_moderationdelete_ Remove an item from the plugin's submission queue
plugin_moderationvalues_ Set plugin-specific moderation values
plugin_savesubmission_ Save an item in the plugin's submission queue
plugin_submissioncount_ Return the number of items in the plugin's submission queue
plugin_submissionsaved_ Notify plugins that a user submitted something
plugin_submissiondeleted_ Notify plugins that an admin deleted a submission
plugin_submit_ Display the plugin's submission form

Also see Adding Moderation Capability and Moderation Functions.

Comments

API Function Description
plugin_commentPreSave_ Called before a comment is saved
plugin_deletecomment_ Delete a comment
plugin_displaycomment_ Display one or several comment(s)
plugin_getcommenturlid_ Provide URL of page to view comments and the unique identifier
plugin_getwhatsnewcomment_ Return the new plugin comments for the What's New block and the User Profile
plugin_savecomment_ Save a comment

Note that these are the only Comment API functions still in use. Also see Integrating the Comment Engine.

Statistics

API Function Description
plugin_showstats_ Provide statistics information (summary and specifics)
plugin_statssummary_ Provide statistics for the summary only

Also see Extending Site Statistics with your plugin and Stats Function.


Search

API Function Description
plugin_dopluginsearch_ Perform search (v1 API) or provide search details and let Geeklog perform the search (v2 API)
plugin_searchtypes_ Provide entries for the "type" dropdown on the Advanced Search page
plugin_supportsexpandedsearch_ (not used any more)

Plugin authors are encouraged to Use Geeklog's Improved Search Engine, available as of Geeklog 1.6.0.

For backward compatibility with older Geeklog versions, also see Using Geeklog's Search Engine.


UI and Templates

API Function Description
plugin_cclabel_ Get entry for the "Command and Control" page
plugin_getadminoption_ Get entries for the Admins Block
plugin_getconfigtooltip_ Returns tooltip information for the Configuration
plugin_getdocumentationurl_ Link to plugin documentation
plugin_getheadercode_ Add code, etc. to the HTML <head> section, e.g. meta tags
plugin_geticon_ Provide URL of the plugin's icon
plugin_getmenuitems_ Add entries to the header menu
plugin_getuseroption_ Get entries for the User Functions Block
plugin_profileblocksdisplay_ Add template variables when displaying a block on the user profile page
plugin_profileblocksedit_ Add template variables to a block when editing the user profile
plugin_profileextrassave_ Save plugin-specific additions when saving a user's profile
plugin_profilevariablesdisplay_ Add template variables when displaying the user profile page
plugin_profilevariablesedit_ Add template variables when editing the user profile
plugin_templatesetvars_ Add template variables to the standard templates, e.g. site header, articles, ...

User

API Function Description
plugin_user_changed_ A user's profile information or preferences changed
plugin_user_create_ A new user was created
plugin_user_delete_ A user is about to be deleted
plugin_user_login_ A user has logged in (using the login form)
plugin_user_logout_ A user has logged out (explicitly, i.e. using the "Log Out" link)


Feeds

API Function Description
plugin_feedElementExtensions_ Get extension tags for a feed
plugin_feedExtensionTags_ Get meta tag extensions for a feed
plugin_feedNSExtensions_ Get namespace extensions for a feed
plugin_feedupdatecheck_ Plugin should check if a feed needs to be updated
plugin_getfeedcontent_ Get content of a plugin feed
plugin_getfeednames_ Get a list of feeds provided by the plugin

Also see RSS API.


Spam Filter

API Function Description
plugin_spamaction_ Trigger action on recognized spam
plugin_checkforSpam_ Check if content is spam

Note: These API functions are used by plugins implementing a spam filter, i.e. they are implemented by the Spam-X Plugin. To filter spam in your plugin, see Filtering Spam with Spam-X.


Blocks

API Function Description
plugin_centerblock_ Display a centerblock
plugin_getBlocks_ Provide dynamically created blocks
plugin_getBlocksConfig_ Provide information about dynamic blocks for the Blocks Manager
plugin_getwhatsnew_ Provide content for the What's New Block
plugin_whatsnewsupported_ Return headline and byline for the What's New Block

Misc

API Function Description
plugin_autotags_ Provide or replace autotags
plugin_configchange_ A change was made in the Configuration for Geeklog or a plugin
plugin_getiteminfo_ Provide information about an item
plugin_getrelateditems_ Return related items for an item or list of topics
plugin_group_changed_ A group's information has changed or a new group was created
plugin_handlepingoperation_ Accept or delete a Trackback or Pingback
plugin_itemdeleted_ An item was deleted
plugin_itemdisplay_ An item is about to be displayed
plugin_itemPreSave_ Called before an item is saved
plugin_itemsaved_ Geeklog saved an item
plugin_pluginstatechange_ A plugin's state changed
plugin_runScheduledTask_ Run a task at a scheduled time (cronjob-like functionality)
plugin_wsEnabled_ Whether or not the plugin supports the Webservices API