| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?xml version="1.0" encoding="iso-8859-1"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <!-- template designed by Marco Von Ballmoos -->
- <title>File Source for modules.php</title>
- <link rel="stylesheet" href="../media/stylesheet.css" />
- </head>
- <body>
-
<h1>Source for file modules.php</h1>
- <p>Documentation is available at <a href="../sloodle/_lib---modules.php.html">modules.php</a></p>
- <div class="src-code">
- <div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php"><?php</span></div></li>
- <li><div class="src-line"><a name="a2"></a> <span class="src-comm">// This file is part of the Sloodle project (www.sloodle.org)</span></div></li>
- <li><div class="src-line"><a name="a3"></a> </div></li>
- <li><div class="src-line"><a name="a4"></a> <span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a5"></a><span class="src-doc"> * This file brings all of the Sloodle module classes together.</span></div></li>
- <li><div class="src-line"><a name="a6"></a><span class="src-doc"> * It also provides functionality to create and load different module types.</span></div></li>
- <li><div class="src-line"><a name="a7"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a8"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> sloodle</span></div></li>
- <li><div class="src-line"><a name="a9"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@copyright</span><span class="src-doc"> Copyright (c) 2008 Sloodle (various contributors)</span></div></li>
- <li><div class="src-line"><a name="a10"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@license</span><span class="src-doc"> http://www.gnu.org/licenses/gpl-3.0.html GNU GPL v3</span></div></li>
- <li><div class="src-line"><a name="a11"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a12"></a><span class="src-doc"> * </span><span class="src-doc-tag">@contributor</span><span class="src-doc"> Peter R. Bloomfield</span></div></li>
- <li><div class="src-line"><a name="a13"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a14"></a> </div></li>
- <li><div class="src-line"><a name="a15"></a> </div></li>
- <li><div class="src-line"><a name="a16"></a> <span class="src-doc">/** Base module. */</span></div></li>
- <li><div class="src-line"><a name="a17"></a> <span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-id">SLOODLE_LIBROOT</span>.<span class="src-str">'/modules/module_base.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a18"></a> </div></li>
- <li><div class="src-line"><a name="a19"></a> </div></li>
- <li><div class="src-line"><a name="a20"></a> <span class="src-comm">// Now we will go through every file in the "lib/modules" folder which starts "module_", and include it.</span></div></li>
- <li><div class="src-line"><a name="a21"></a> <span class="src-var">$MODULESPATH </span>= <span class="src-id"><a href="../sloodle/_sl_config.php.html#defineSLOODLE_LIBROOT">SLOODLE_LIBROOT</a></span>.<span class="src-str">'/modules'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a22"></a> <span class="src-var">$modulefiles </span>= <a href="../sloodle/_lib---general.php.html#functionsloodle_get_files">sloodle_get_files</a><span class="src-sym">(</span><span class="src-var">$MODULESPATH</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a23"></a> <span class="src-comm">// Go through each file</span></div></li>
- <li><div class="src-line"><a name="a24"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$modulefiles</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a25"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$modulefiles </span><span class="src-key">as </span><span class="src-var">$mf</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a26"></a> <span class="src-comm">// Does this filename start with "module_" and end with ".php"?</span></div></li>
- <li><div class="src-line"><a name="a27"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strcasecmp">strcasecmp</a><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$mf</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-num">7</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'module_'</span><span class="src-sym">) </span>== <span class="src-num">0 </span>&& <a href="http://www.php.net/strcasecmp">strcasecmp</a><span class="src-sym">(</span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$mf</span><span class="src-sym">, </span>-<span class="src-num">4</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'.php'</span><span class="src-sym">) </span>== <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a28"></a> <span class="src-comm">// Yes - include it</span></div></li>
- <li><div class="src-line"><a name="a29"></a> <span class="src-inc">include_once</span><span class="src-sym">(</span><span class="src-var">$MODULESPATH</span>.<span class="src-str">'/'</span>.<span class="src-var">$mf</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a30"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a31"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a32"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a33"></a> </div></li>
- <li><div class="src-line"><a name="a34"></a> <span class="src-comm">// We will store an associative array of module types to module class names</span></div></li>
- <li><div class="src-line"><a name="a35"></a> <span class="src-comm">// e.g. { 'chat'=>'SloodleModuleChat', 'distributor'=>'SloodleModuleDistributor', ...}</span></div></li>
- <li><div class="src-line"><a name="a36"></a> <span class="src-key">global </span><span class="src-var">$SLOODLE_MODULE_CLASS</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a37"></a> <span class="src-var">$SLOODLE_MODULE_CLASS </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a38"></a> <span class="src-comm">// Go through each declared class</span></div></li>
- <li><div class="src-line"><a name="a39"></a> <span class="src-var">$allclasses </span>= <a href="http://www.php.net/get_declared_classes">get_declared_classes</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a40"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$allclasses </span><span class="src-key">as </span><span class="src-var">$c</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a41"></a> <span class="src-comm">// Is this class a subclass of the Sloodle Module type?</span></div></li>
- <li><div class="src-line"><a name="a42"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strcasecmp">strcasecmp</a><span class="src-sym">(</span><a href="http://www.php.net/get_parent_class">get_parent_class</a><span class="src-sym">(</span><span class="src-var">$c</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-str">'SloodleModule'</span><span class="src-sym">) </span>== <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a43"></a> <span class="src-comm">// Fetch the type name</span></div></li>
- <li><div class="src-line"><a name="a44"></a> <span class="src-var">$curtype </span>= <a href="http://www.php.net/call_user_func">call_user_func</a><span class="src-sym">(</span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-var">$c</span><span class="src-sym">, </span><span class="src-str">'get_type'</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a45"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$curtype</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a46"></a> <span class="src-comm">// Add it to our array with its type</span></div></li>
- <li><div class="src-line"><a name="a47"></a> <span class="src-var">$SLOODLE_MODULE_CLASS</span><span class="src-sym">[</span><span class="src-var">$curtype</span><span class="src-sym">] </span>= <span class="src-var">$c</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a48"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a49"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a50"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a51"></a> </div></li>
- <li><div class="src-line"><a name="a52"></a> </div></li>
- <li><div class="src-line"><a name="a53"></a> <span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a54"></a><span class="src-doc"> * Constructs a appropriate Sloodle module object based on the named type.</span></div></li>
- <li><div class="src-line"><a name="a55"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$type </span><span class="src-doc">The type of module to construct - typically a short name, such as 'chat' or 'blog'</span></div></li>
- <li><div class="src-line"><a name="a56"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">SloodleSession </span><span class="src-doc-var">&$_session </span><span class="src-doc">The </span><span class="src-doc-inlinetag">{@link SloodleSession}</span><span class="src-doc"> object to pass to the module on construction, or just null</span></div></li>
- <li><div class="src-line"><a name="a57"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc-var">$id </span><span class="src-doc">The identifier of the module instance to load from the database (or null if there is no module data)</span></div></li>
- <li><div class="src-line"><a name="a58"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">SloodleModule</span><span class="src-doc">|</span><span class="src-doc-type">bool</span><span class="src-doc">Returns the cosntructed module object, or false if it fails</span></div></li>
- <li><div class="src-line"><a name="a59"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a60"></a> <span class="src-key">function </span><a href="../sloodle/_lib---modules.php.html#functionsloodle_load_module">sloodle_load_module</a><span class="src-sym">(</span><span class="src-var">$type</span><span class="src-sym">, </span><span class="src-sym">&</span><span class="src-var">$_session</span><span class="src-sym">, </span><span class="src-var">$id </span>= <span class="src-id">null</span><span class="src-sym">)</span></div></li>
- <li><div class="src-line"><a name="a61"></a> <span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a62"></a> <span class="src-key">global </span><span class="src-var">$SLOODLE_MODULE_CLASS</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a63"></a> </div></li>
- <li><div class="src-line"><a name="a64"></a> <span class="src-comm">// Abort if the type is not recognised</span></div></li>
- <li><div class="src-line"><a name="a65"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/array_key_exists">array_key_exists</a><span class="src-sym">(</span><span class="src-var">$type</span><span class="src-sym">, </span><span class="src-var">$SLOODLE_MODULE_CLASS</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a66"></a> <a href="../sloodle/_sl_config.php.html#functionsloodle_debug">sloodle_debug</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Module load failed - type \"<span class="src-var">$type</span>\" not recognised.<br/></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a67"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a68"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a69"></a> <span class="src-comm">// Construct the object, based on the class name in our array</span></div></li>
- <li><div class="src-line"><a name="a70"></a> <span class="src-var">$module </span>= <span class="src-key">new </span><span class="src-var">$SLOODLE_MODULE_CLASS</span><span class="src-sym">[</span><span class="src-var">$type</span><span class="src-sym">]</span><span class="src-sym">(</span><span class="src-var">$_session</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a71"></a> </div></li>
- <li><div class="src-line"><a name="a72"></a> <span class="src-comm">// Load the data from the database, if necessary</span></div></li>
- <li><div class="src-line"><a name="a73"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$id </span>!= <span class="src-id">null</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a74"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$module</span><span class="src-sym">-></span><span class="src-id">load</span><span class="src-sym">(</span><span class="src-var">$id</span><span class="src-sym">)) </span><span class="src-key">return </span><span class="src-var">$module</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a75"></a> <a href="../sloodle/_sl_config.php.html#functionsloodle_debug">sloodle_debug</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Failed to load module data from database with ID <span class="src-var">$id</span>.<br/></span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a76"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a77"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a78"></a> </div></li>
- <li><div class="src-line"><a name="a79"></a> <span class="src-comm">// Everything seems OK</span></div></li>
- <li><div class="src-line"><a name="a80"></a> <span class="src-key">return </span><span class="src-var">$module</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a81"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a82"></a> </div></li>
- <li><div class="src-line"><a name="a83"></a><span class="src-php">?></span></div></li>
- </ol></div>
- </div>
- <p class="notes" id="credit">
- Documentation generated on Fri, 17 Jul 2009 11:01:50 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.0</a>
- </p>
- </body>
- </html>
|