phpBB

Development Wiki

Difference between revisions of "Add Events"

From phpBB Development Wiki

(How to add a ledge)
(How to add a ledge)
Line 5: Line 5:
  
 
==How to add a ledge==
 
==How to add a ledge==
You would add a ledge as so:
+
You would add a ledge like so:
 
<pre class="codebox"> <nowiki>$phpbb_dispatcher->dispatch('identifer', $input_param); </nowiki> </pre>
 
<pre class="codebox"> <nowiki>$phpbb_dispatcher->dispatch('identifer', $input_param); </nowiki> </pre>
Lets dissect that code
+
Let's dissect that code
  
 
<pre class="narrow-codebox"> <nowiki>$phpbb_dispatcher</nowiki></pre>
 
<pre class="narrow-codebox"> <nowiki>$phpbb_dispatcher</nowiki></pre>
In phpBB this is automatically loaded, and there is also code that will load all the hook files (hook/*.php). It registers the hook containers of those files with the hooks controller.
+
This is the phpbb_dispatcher object, which is automatically loaded with the page. This object registers the hook containers of found within hook files (in the hooks/*.php directory) with the hooks controller.
  
 
<pre class="narrow-codebox"> <nowiki>dispatch</nowiki></pre>
 
<pre class="narrow-codebox"> <nowiki>dispatch</nowiki></pre>
This explains that you are adding a ledge.
+
This method adds a ledge.
  
 
<pre class="narrow-codebox"> <nowiki>identifer</nowiki></pre>
 
<pre class="narrow-codebox"> <nowiki>identifer</nowiki></pre>
This is where you enter the name for the hook. If its in the core it should be prefixed by "core." but if its in an extension you should prefix it with something relating to your extension. This is to prevent clashes with other software.
+
This is where you enter the name for the hook. If its in the core it should be prefixed by "core." but if its in an extension you should prefix it with a unique string related to your extension to prevent clashes with other extensions.
  
 
<pre class="narrow-codebox"> <nowiki>$input_param</nowiki></pre>
 
<pre class="narrow-codebox"> <nowiki>$input_param</nowiki></pre>
This is where the input parameters go. If there is one it should be listed as it is in the example, if it is more than one then it should be in an array.
+
This is where the input parameters go. This will either be a single variable or an array of variables, depending on the ledge onto which you are hooking.
  
Based on the blog article [http://blog.phpbb.com/2010/10/09/explaining-hooks/ here]
+
Based on the blog article [http://blog.phpbb.com/2010/10/09/explaining-hooks/ Explaining Hooks]
 
[[Category:Ledges and Hooks]]
 
[[Category:Ledges and Hooks]]

Revision as of 20:32, 10 March 2012

So what are ledges

Ledges are hook locations. So what are hook locations? First you need to know what hooks are.

Ledges are the code injection points in the code. To use a hook the code inside the hook needs to be injected into the code in the right place. This can go in anywhere in the phpBB code base but it needs to have a ledge there.

How to add a ledge

You would add a ledge like so:

 $phpbb_dispatcher->dispatch('identifer', $input_param);  

Let's dissect that code

 $phpbb_dispatcher

This is the phpbb_dispatcher object, which is automatically loaded with the page. This object registers the hook containers of found within hook files (in the hooks/*.php directory) with the hooks controller.

 dispatch

This method adds a ledge.

 identifer

This is where you enter the name for the hook. If its in the core it should be prefixed by "core." but if its in an extension you should prefix it with a unique string related to your extension to prevent clashes with other extensions.

 $input_param

This is where the input parameters go. This will either be a single variable or an array of variables, depending on the ledge onto which you are hooking.

Based on the blog article Explaining Hooks