fsource_sloodle__libplugins.php.html 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <!-- template designed by Marco Von Ballmoos -->
  6. <title>File Source for plugins.php</title>
  7. <link rel="stylesheet" href="../media/stylesheet.css" />
  8. </head>
  9. <body>
  10. <h1>Source for file plugins.php</h1>
  11. <p>Documentation is available at <a href="../sloodle/_lib---plugins.php.html">plugins.php</a></p>
  12. <div class="src-code">
  13. <div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php">&lt;?php</span></div></li>
  14. <li><div class="src-line"><a name="a2"></a><span class="src-doc">/**</span></div></li>
  15. <li><div class="src-line"><a name="a3"></a><span class="src-doc">*&nbsp;Defines&nbsp;a&nbsp;library&nbsp;class&nbsp;for&nbsp;managing&nbsp;SLOODLE&nbsp;Plugins.</span></div></li>
  16. <li><div class="src-line"><a name="a4"></a><span class="src-doc">*&nbsp;It&nbsp;is&nbsp;constructed&nbsp;and&nbsp;used&nbsp;through&nbsp;a&nbsp;SloodleSession&nbsp;object.</span></div></li>
  17. <li><div class="src-line"><a name="a5"></a><span class="src-doc">*</span></div></li>
  18. <li><div class="src-line"><a name="a6"></a><span class="src-doc">*&nbsp;</span><span class="src-doc-coretag">@package</span><span class="src-doc">&nbsp;sloodle</span></div></li>
  19. <li><div class="src-line"><a name="a7"></a><span class="src-doc">*&nbsp;</span><span class="src-doc-coretag">@copyright</span><span class="src-doc">&nbsp;Copyright&nbsp;(c)&nbsp;2009&nbsp;Sloodle&nbsp;(various&nbsp;contributors)</span></div></li>
  20. <li><div class="src-line"><a name="a8"></a><span class="src-doc">*&nbsp;</span><span class="src-doc-coretag">@license</span><span class="src-doc">&nbsp;http://www.gnu.org/licenses/gpl-3.0.html&nbsp;GNU&nbsp;GPL&nbsp;v3</span></div></li>
  21. <li><div class="src-line"><a name="a9"></a><span class="src-doc">*</span></div></li>
  22. <li><div class="src-line"><a name="a10"></a><span class="src-doc">*&nbsp;</span><span class="src-doc-tag">@contributor</span><span class="src-doc">&nbsp;Peter&nbsp;R.&nbsp;Bloomfield</span></div></li>
  23. <li><div class="src-line"><a name="a11"></a><span class="src-doc">*/</span></div></li>
  24. <li><div class="src-line"><a name="a12"></a>&nbsp;</div></li>
  25. <li><div class="src-line"><a name="a13"></a>&nbsp;</div></li>
  26. <li><div class="src-line"><a name="a14"></a><span class="src-comm">//&nbsp;This&nbsp;library&nbsp;expects&nbsp;that&nbsp;the&nbsp;Sloodle&nbsp;config&nbsp;file&nbsp;has&nbsp;already&nbsp;been&nbsp;included</span></div></li>
  27. <li><div class="src-line"><a name="a15"></a><span class="src-comm">//&nbsp;&nbsp;(along&nbsp;with&nbsp;the&nbsp;Moodle&nbsp;libraries)</span></div></li>
  28. <li><div class="src-line"><a name="a16"></a>&nbsp;</div></li>
  29. <li><div class="src-line"><a name="a17"></a><span class="src-doc">/**&nbsp;Include&nbsp;the&nbsp;general&nbsp;Sloodle&nbsp;functionality.&nbsp;*/</span></div></li>
  30. <li><div class="src-line"><a name="a18"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-id">SLOODLE_DIRROOT</span>.<span class="src-str">'/lib/general.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  31. <li><div class="src-line"><a name="a19"></a>&nbsp;</div></li>
  32. <li><div class="src-line"><a name="a20"></a>&nbsp;</div></li>
  33. <li><div class="src-line"><a name="a21"></a><span class="src-doc">/**</span></div></li>
  34. <li><div class="src-line"><a name="a22"></a><span class="src-doc">*&nbsp;A&nbsp;class&nbsp;to&nbsp;load&nbsp;SLOODLE&nbsp;plugins,&nbsp;and&nbsp;provide&nbsp;a&nbsp;means&nbsp;to&nbsp;access&nbsp;them.</span></div></li>
  35. <li><div class="src-line"><a name="a23"></a><span class="src-doc">*&nbsp;</span><span class="src-doc-coretag">@package</span><span class="src-doc">&nbsp;sloodle</span></div></li>
  36. <li><div class="src-line"><a name="a24"></a><span class="src-doc">*/</span></div></li>
  37. <li><div class="src-line"><a name="a25"></a><span class="src-key">class&nbsp;</span><a href="../sloodle/SloodlePluginManager.html">SloodlePluginManager</a></div></li>
  38. <li><div class="src-line"><a name="a26"></a><span class="src-sym">{</span></div></li>
  39. <li><div class="src-line"><a name="a27"></a><span class="src-comm">//&nbsp;DATA&nbsp;//</span></div></li>
  40. <li><div class="src-line"><a name="a28"></a>&nbsp;</div></li>
  41. <li><div class="src-line"><a name="a29"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  42. <li><div class="src-line"><a name="a30"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Internal&nbsp;only&nbsp;-&nbsp;reference&nbsp;to&nbsp;the&nbsp;containing&nbsp;</span><span class="src-doc-inlinetag">{@link&nbsp;SloodleSession}</span><span class="src-doc">&nbsp;object.</span></div></li>
  43. <li><div class="src-line"><a name="a31"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Note:&nbsp;always&nbsp;check&nbsp;that&nbsp;it&nbsp;is&nbsp;not&nbsp;null&nbsp;before&nbsp;use!</span></div></li>
  44. <li><div class="src-line"><a name="a32"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@var&nbsp;</span><span class="src-doc-type">object&nbsp;</span></div></li>
  45. <li><div class="src-line"><a name="a33"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@access</span><span class="src-doc">&nbsp;protected</span></div></li>
  46. <li><div class="src-line"><a name="a34"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  47. <li><div class="src-line"><a name="a35"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">var&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#var$_session">$_session</a>&nbsp;=&nbsp;<span class="src-id">null</span><span class="src-sym">;</span></div></li>
  48. <li><div class="src-line"><a name="a36"></a>&nbsp;</div></li>
  49. <li><div class="src-line"><a name="a37"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  50. <li><div class="src-line"><a name="a38"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Plugin&nbsp;instance&nbsp;cache.</span></div></li>
  51. <li><div class="src-line"><a name="a39"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Stores&nbsp;the&nbsp;plugins&nbsp;which&nbsp;have&nbsp;already&nbsp;been&nbsp;created,&nbsp;to&nbsp;prevent&nbsp;new&nbsp;ones&nbsp;being&nbsp;instantiated&nbsp;unnecessarily.</span></div></li>
  52. <li><div class="src-line"><a name="a40"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Is&nbsp;an&nbsp;associative&nbsp;array&nbsp;of&nbsp;plugin&nbsp;names&nbsp;to&nbsp;plugin&nbsp;objects.</span></div></li>
  53. <li><div class="src-line"><a name="a41"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@var&nbsp;</span><span class="src-doc-type">array&nbsp;</span></div></li>
  54. <li><div class="src-line"><a name="a42"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@access</span><span class="src-doc">&nbsp;protected</span></div></li>
  55. <li><div class="src-line"><a name="a43"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  56. <li><div class="src-line"><a name="a44"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">var&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#var$plugin_cache">$plugin_cache</a>&nbsp;=&nbsp;<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  57. <li><div class="src-line"><a name="a45"></a>&nbsp;</div></li>
  58. <li><div class="src-line"><a name="a46"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  59. <li><div class="src-line"><a name="a47"></a><span class="src-comm">//&nbsp;FUNCTIONS&nbsp;//</span></div></li>
  60. <li><div class="src-line"><a name="a48"></a>&nbsp;</div></li>
  61. <li><div class="src-line"><a name="a49"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  62. <li><div class="src-line"><a name="a50"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Class&nbsp;constructor.</span></div></li>
  63. <li><div class="src-line"><a name="a51"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@param&nbsp;</span><span class="src-doc-type">object&nbsp;</span><span class="src-doc-var">&amp;$_session&nbsp;</span><span class="src-doc">Reference&nbsp;to&nbsp;the&nbsp;containing&nbsp;</span><span class="src-doc-inlinetag">{@link&nbsp;SloodleSession}</span><span class="src-doc">&nbsp;object,&nbsp;if&nbsp;available.</span></div></li>
  64. <li><div class="src-line"><a name="a52"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@access</span><span class="src-doc">&nbsp;public</span></div></li>
  65. <li><div class="src-line"><a name="a53"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  66. <li><div class="src-line"><a name="a54"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">function&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#methodSloodlePluginManager">SloodlePluginManager</a><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$_session</span><span class="src-sym">)</span></div></li>
  67. <li><div class="src-line"><a name="a55"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">{</span></div></li>
  68. <li><div class="src-line"><a name="a56"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$_session</span><span class="src-sym">))&nbsp;</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../sloodle/SloodlePluginManager.html#var$_session">_session</a>&nbsp;=&nbsp;<span class="src-sym">&amp;</span><span class="src-var">$_session</span><span class="src-sym">;</span></div></li>
  69. <li><div class="src-line"><a name="a57"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  70. <li><div class="src-line"><a name="a58"></a>&nbsp;</div></li>
  71. <li><div class="src-line"><a name="a59"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  72. <li><div class="src-line"><a name="a60"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Loads&nbsp;all&nbsp;available&nbsp;plugins&nbsp;from&nbsp;the&nbsp;specified&nbsp;folder.</span></div></li>
  73. <li><div class="src-line"><a name="a61"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@param&nbsp;</span><span class="src-doc-type">string&nbsp;</span><span class="src-doc-var">$folder&nbsp;</span><span class="src-doc">Name&nbsp;of&nbsp;the&nbsp;folder&nbsp;to&nbsp;load&nbsp;plugins&nbsp;from.&nbsp;This&nbsp;is&nbsp;a&nbsp;sub-folder&nbsp;of&nbsp;the&nbsp;'sloodle/plugin'&nbsp;folder.&nbsp;It&nbsp;will&nbsp;only&nbsp;load&nbsp;files&nbsp;which&nbsp;are&nbsp;directly&nbsp;contained&nbsp;inside&nbsp;it.</span></div></li>
  74. <li><div class="src-line"><a name="a62"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@return&nbsp;</span><span class="src-doc-type">bool&nbsp;</span><span class="src-doc">True&nbsp;if&nbsp;successful,&nbsp;or&nbsp;false&nbsp;if&nbsp;it&nbsp;fails.&nbsp;(It&nbsp;will&nbsp;only&nbsp;report&nbsp;failure&nbsp;if&nbsp;the&nbsp;folder&nbsp;does&nbsp;not&nbsp;exist,&nbsp;or&nbsp;there&nbsp;is&nbsp;an&nbsp;error&nbsp;accessing&nbsp;it.)</span></div></li>
  75. <li><div class="src-line"><a name="a63"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  76. <li><div class="src-line"><a name="a64"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">function&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#methodload_plugins">load_plugins</a><span class="src-sym">(</span><span class="src-var">$folder</span><span class="src-sym">)</span></div></li>
  77. <li><div class="src-line"><a name="a65"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">{</span></div></li>
  78. <li><div class="src-line"><a name="a66"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$folder</span><span class="src-sym">))&nbsp;</span><span class="src-key">return&nbsp;</span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
  79. <li><div class="src-line"><a name="a67"></a>&nbsp;</div></li>
  80. <li><div class="src-line"><a name="a68"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Get&nbsp;a&nbsp;list&nbsp;of&nbsp;all&nbsp;the&nbsp;files&nbsp;in&nbsp;the&nbsp;specified&nbsp;folder</span></div></li>
  81. <li><div class="src-line"><a name="a69"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$pluginFolder&nbsp;</span>=&nbsp;<span class="src-id"><a href="../sloodle/_sl_config.php.html#defineSLOODLE_DIRROOT">SLOODLE_DIRROOT</a></span>.<span class="src-str">'/plugin/'</span>.<span class="src-var">$folder</span><span class="src-sym">;</span></div></li>
  82. <li><div class="src-line"><a name="a70"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$files&nbsp;</span>=&nbsp;<a href="../sloodle/_lib---general.php.html#functionsloodle_get_files">sloodle_get_files</a><span class="src-sym">(</span><span class="src-var">$pluginFolder</span><span class="src-sym">,&nbsp;</span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  83. <li><div class="src-line"><a name="a71"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$files</span><span class="src-sym">)&nbsp;</span><span class="src-key">return&nbsp;</span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
  84. <li><div class="src-line"><a name="a72"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$files</span><span class="src-sym">)&nbsp;</span>==&nbsp;<span class="src-num">0</span><span class="src-sym">)&nbsp;</span><span class="src-key">return&nbsp;</span><span class="src-id">true</span><span class="src-sym">;</span></div></li>
  85. <li><div class="src-line"><a name="a73"></a>&nbsp;</div></li>
  86. <li><div class="src-line"><a name="a74"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Start&nbsp;by&nbsp;including&nbsp;the&nbsp;relevant&nbsp;base&nbsp;class&nbsp;files,&nbsp;if&nbsp;they&nbsp;are&nbsp;available</span></div></li>
  87. <li><div class="src-line"><a name="a75"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">@</span><span class="src-inc">include_once</span><span class="src-sym">(</span><span class="src-id"><a href="../sloodle/_sl_config.php.html#defineSLOODLE_DIRROOT">SLOODLE_DIRROOT</a></span>.<span class="src-str">'/plugin/_base.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  88. <li><div class="src-line"><a name="a76"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">@</span><span class="src-inc">include_once</span><span class="src-sym">(</span><span class="src-var">$pluginFolder</span>.<span class="src-str">'/_base.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  89. <li><div class="src-line"><a name="a77"></a>&nbsp;</div></li>
  90. <li><div class="src-line"><a name="a78"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Go&nbsp;through&nbsp;each&nbsp;filename</span></div></li>
  91. <li><div class="src-line"><a name="a79"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">foreach&nbsp;</span><span class="src-sym">(</span><span class="src-var">$files&nbsp;</span><span class="src-key">as&nbsp;</span><span class="src-var">$file</span><span class="src-sym">)&nbsp;</span><span class="src-sym">{</span></div></li>
  92. <li><div class="src-line"><a name="a80"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Include&nbsp;the&nbsp;specified&nbsp;file</span></div></li>
  93. <li><div class="src-line"><a name="a81"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-inc">include_once</span><span class="src-sym">(</span><span class="src-var">$pluginFolder</span>.<span class="src-str">'/'</span>.<span class="src-var">$file</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  94. <li><div class="src-line"><a name="a82"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  95. <li><div class="src-line"><a name="a83"></a>&nbsp;</div></li>
  96. <li><div class="src-line"><a name="a84"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">return&nbsp;</span><span class="src-id">true</span><span class="src-sym">;</span></div></li>
  97. <li><div class="src-line"><a name="a85"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  98. <li><div class="src-line"><a name="a86"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  99. <li><div class="src-line"><a name="a87"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  100. <li><div class="src-line"><a name="a88"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Gets&nbsp;an&nbsp;array&nbsp;of&nbsp;the&nbsp;names&nbsp;of&nbsp;all&nbsp;SLOODLE&nbsp;plugins&nbsp;derived&nbsp;from&nbsp;the&nbsp;specified&nbsp;type.</span></div></li>
  101. <li><div class="src-line"><a name="a89"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;By&nbsp;default,&nbsp;this&nbsp;gets&nbsp;all&nbsp;plugins.&nbsp;Specify&nbsp;a&nbsp;different&nbsp;base&nbsp;class&nbsp;to&nbsp;get&nbsp;others.</span></div></li>
  102. <li><div class="src-line"><a name="a90"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;NOTE:&nbsp;this&nbsp;will&nbsp;search&nbsp;all&nbsp;plugins&nbsp;loaded&nbsp;by&nbsp;all&nbsp;plugin&nbsp;managers&nbsp;in&nbsp;the&nbsp;current&nbsp;PHP&nbsp;script.</span></div></li>
  103. <li><div class="src-line"><a name="a91"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(There&nbsp;is&nbsp;no&nbsp;way&nbsp;to&nbsp;tell&nbsp;which&nbsp;manager&nbsp;loaded&nbsp;which&nbsp;plugins.)</span></div></li>
  104. <li><div class="src-line"><a name="a92"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Plugin&nbsp;names&nbsp;correspond&nbsp;to&nbsp;class&nbsp;names,&nbsp;with&nbsp;the&nbsp;'SloodlePlugin'&nbsp;prefix.</span></div></li>
  105. <li><div class="src-line"><a name="a93"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@param&nbsp;</span><span class="src-doc-type">string&nbsp;</span><span class="src-doc-var">$type&nbsp;</span><span class="src-doc">Name&nbsp;of&nbsp;a&nbsp;plugin&nbsp;base&nbsp;class.</span></div></li>
  106. <li><div class="src-line"><a name="a94"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@return&nbsp;</span><span class="src-doc-type">array&nbsp;</span><span class="src-doc">Numeric&nbsp;array&nbsp;of&nbsp;plugin&nbsp;names.&nbsp;These&nbsp;names&nbsp;correspond&nbsp;to&nbsp;class&nbsp;names.</span></div></li>
  107. <li><div class="src-line"><a name="a95"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  108. <li><div class="src-line"><a name="a96"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">function&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#methodget_plugin_names">get_plugin_names</a><span class="src-sym">(</span><span class="src-var">$type&nbsp;</span>=&nbsp;<span class="src-str">'SloodlePluginBase'</span><span class="src-sym">)</span></div></li>
  109. <li><div class="src-line"><a name="a97"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">{</span></div></li>
  110. <li><div class="src-line"><a name="a98"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;We&nbsp;want&nbsp;to&nbsp;create&nbsp;an&nbsp;array&nbsp;of&nbsp;plugin&nbsp;names</span></div></li>
  111. <li><div class="src-line"><a name="a99"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$plugins&nbsp;</span>=&nbsp;<span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  112. <li><div class="src-line"><a name="a100"></a>&nbsp;</div></li>
  113. <li><div class="src-line"><a name="a101"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Go&nbsp;through&nbsp;all&nbsp;declared&nbsp;classes</span></div></li>
  114. <li><div class="src-line"><a name="a102"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$classes&nbsp;</span>=&nbsp;<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>
  115. <li><div class="src-line"><a name="a103"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">foreach&nbsp;</span><span class="src-sym">(</span><span class="src-var">$classes&nbsp;</span><span class="src-key">as&nbsp;</span><span class="src-var">$className</span><span class="src-sym">)&nbsp;</span><span class="src-sym">{</span></div></li>
  116. <li><div class="src-line"><a name="a104"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Make&nbsp;sure&nbsp;this&nbsp;is&nbsp;a&nbsp;SLOODLE&nbsp;plugin&nbsp;by&nbsp;checking&nbsp;that&nbsp;it&nbsp;starts&nbsp;&quot;SloodlePlugin&quot;&nbsp;but&nbsp;not&nbsp;&quot;SloodlePluginbase&quot;</span></div></li>
  117. <li><div class="src-line"><a name="a105"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$className</span><span class="src-sym">,&nbsp;</span><span class="src-str">'SloodlePlugin'</span><span class="src-sym">)&nbsp;</span>!==&nbsp;<span class="src-num">0&nbsp;</span>||&nbsp;<a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$className</span><span class="src-sym">,&nbsp;</span><span class="src-str">'SloodlePluginBase'</span><span class="src-sym">)&nbsp;</span>===&nbsp;<span class="src-num">0</span><span class="src-sym">)&nbsp;</span><span class="src-key">continue</span><span class="src-sym">;</span></div></li>
  118. <li><div class="src-line"><a name="a106"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Make&nbsp;sure&nbsp;this&nbsp;is&nbsp;not&nbsp;one&nbsp;of&nbsp;the&nbsp;supporting&nbsp;classes</span></div></li>
  119. <li><div class="src-line"><a name="a107"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-var">$className&nbsp;</span>==&nbsp;<span class="src-str">'SloodlePluginBase'&nbsp;</span>||&nbsp;<span class="src-var">$className&nbsp;</span>==&nbsp;<span class="src-str">'SloodlePluginManager'</span><span class="src-sym">)&nbsp;</span><span class="src-key">continue</span><span class="src-sym">;</span></div></li>
  120. <li><div class="src-line"><a name="a108"></a>&nbsp;</div></li>
  121. <li><div class="src-line"><a name="a109"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Make&nbsp;sure&nbsp;it&nbsp;is&nbsp;in&nbsp;fact&nbsp;a&nbsp;plugin&nbsp;by&nbsp;ensuring&nbsp;it&nbsp;is&nbsp;appropriately&nbsp;derived&nbsp;from&nbsp;the&nbsp;given&nbsp;base&nbsp;plugin&nbsp;class</span></div></li>
  122. <li><div class="src-line"><a name="a110"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$tempPlugin&nbsp;</span>=&nbsp;<span class="src-sym">@</span><span class="src-key">new&nbsp;</span><span class="src-var">$className</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  123. <li><div class="src-line"><a name="a111"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_subclass_of">is_subclass_of</a><span class="src-sym">(</span><span class="src-var">$tempPlugin</span><span class="src-sym">,&nbsp;</span><span class="src-var">$type</span><span class="src-sym">))&nbsp;</span><span class="src-key">continue</span><span class="src-sym">;</span></div></li>
  124. <li><div class="src-line"><a name="a112"></a>&nbsp;</div></li>
  125. <li><div class="src-line"><a name="a113"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Remove&nbsp;the&nbsp;'SloodlePlugin'&nbsp;prefix&nbsp;from&nbsp;the&nbsp;class&nbsp;name</span></div></li>
  126. <li><div class="src-line"><a name="a114"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$className&nbsp;</span>=&nbsp;<a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$className</span><span class="src-sym">,&nbsp;</span><span class="src-num">13</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  127. <li><div class="src-line"><a name="a115"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$plugins</span><span class="src-sym">[</span><span class="src-sym">]&nbsp;</span>=&nbsp;<span class="src-var">$className</span><span class="src-sym">;</span></div></li>
  128. <li><div class="src-line"><a name="a116"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  129. <li><div class="src-line"><a name="a117"></a>&nbsp;</div></li>
  130. <li><div class="src-line"><a name="a118"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">return&nbsp;</span><span class="src-var">$plugins</span><span class="src-sym">;</span></div></li>
  131. <li><div class="src-line"><a name="a119"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  132. <li><div class="src-line"><a name="a120"></a>&nbsp;</div></li>
  133. <li><div class="src-line"><a name="a121"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  134. <li><div class="src-line"><a name="a122"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Gets&nbsp;an&nbsp;instance&nbsp;of&nbsp;the&nbsp;specified&nbsp;plugin&nbsp;type.</span></div></li>
  135. <li><div class="src-line"><a name="a123"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;This&nbsp;only&nbsp;works&nbsp;if&nbsp;the&nbsp;plugin&nbsp;has&nbsp;been&nbsp;loaded,&nbsp;and&nbsp;if&nbsp;it&nbsp;is&nbsp;derived&nbsp;from&nbsp;SloodlePluginBase.</span></div></li>
  136. <li><div class="src-line"><a name="a124"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@param&nbsp;</span><span class="src-doc-type">string&nbsp;</span><span class="src-doc-var">$name&nbsp;</span><span class="src-doc">Name&nbsp;of&nbsp;the&nbsp;plugin&nbsp;type&nbsp;to&nbsp;get.&nbsp;If&nbsp;it&nbsp;does&nbsp;not&nbsp;start&nbsp;with&nbsp;&quot;SloodlePlugin&quot;,&nbsp;then&nbsp;that&nbsp;is&nbsp;added&nbsp;to&nbsp;the&nbsp;start.</span></div></li>
  137. <li><div class="src-line"><a name="a125"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@param&nbsp;</span><span class="src-doc-type">bool&nbsp;</span><span class="src-doc-var">$forcenew&nbsp;</span><span class="src-doc">If&nbsp;false&nbsp;(default)&nbsp;then&nbsp;a&nbsp;cached&nbsp;instance&nbsp;of&nbsp;the&nbsp;plugin&nbsp;will&nbsp;be&nbsp;returned.&nbsp;Set&nbsp;this&nbsp;to&nbsp;true&nbsp;to&nbsp;force&nbsp;the&nbsp;manager&nbsp;to&nbsp;create&nbsp;a&nbsp;new&nbsp;plugin&nbsp;instance.</span></div></li>
  138. <li><div class="src-line"><a name="a126"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span class="src-doc-coretag">@return&nbsp;</span><span class="src-doc-type">object</span><span class="src-doc">|</span><span class="src-doc-type">bool</span><span class="src-doc">An&nbsp;object&nbsp;descended&nbsp;from&nbsp;SloodlePluginBase&nbsp;if&nbsp;successful,&nbsp;or&nbsp;false&nbsp;on&nbsp;failure.</span></div></li>
  139. <li><div class="src-line"><a name="a127"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  140. <li><div class="src-line"><a name="a128"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">function&nbsp;</span><a href="../sloodle/SloodlePluginManager.html#methodget_plugin">get_plugin</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">,&nbsp;</span><span class="src-var">$forcenew&nbsp;</span>=&nbsp;<span class="src-id">false</span><span class="src-sym">)</span></div></li>
  141. <li><div class="src-line"><a name="a129"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">{</span></div></li>
  142. <li><div class="src-line"><a name="a130"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Prepend&nbsp;'SloodlePlugin'&nbsp;if&nbsp;necessary</span></div></li>
  143. <li><div class="src-line"><a name="a131"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">,&nbsp;</span><span class="src-str">'SloodlePlugin'</span><span class="src-sym">)&nbsp;</span>!==&nbsp;<span class="src-num">0</span><span class="src-sym">)&nbsp;</span><span class="src-var">$name&nbsp;</span>=&nbsp;<span class="src-str">'SloodlePlugin'</span>.<span class="src-var">$name</span><span class="src-sym">;</span></div></li>
  144. <li><div class="src-line"><a name="a132"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Make&nbsp;sure&nbsp;the&nbsp;specified&nbsp;class&nbsp;exists</span></div></li>
  145. <li><div class="src-line"><a name="a133"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/class_exists">class_exists</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">))&nbsp;</span><span class="src-key">return&nbsp;</span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
  146. <li><div class="src-line"><a name="a134"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Do&nbsp;we&nbsp;have&nbsp;a&nbsp;cached&nbsp;plugin&nbsp;of&nbsp;this&nbsp;type?</span></div></li>
  147. <li><div class="src-line"><a name="a135"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><span class="src-var">$forcenew&nbsp;</span>==&nbsp;<span class="src-id">false&nbsp;</span>&amp;&amp;&nbsp;<span class="src-sym">!</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../sloodle/SloodlePluginManager.html#var$plugin_cache">plugin_cache</a><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">)&nbsp;</span>&amp;&amp;&nbsp;<a href="http://www.php.net/is_a">is_a</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../sloodle/SloodlePluginManager.html#var$plugin_cache">plugin_cache</a><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">,&nbsp;</span><span class="src-var">$name</span><span class="src-sym">))&nbsp;</span><span class="src-key">return&nbsp;</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../sloodle/SloodlePluginManager.html#var$plugin_cache">plugin_cache</a><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li>
  148. <li><div class="src-line"><a name="a136"></a>&nbsp;</div></li>
  149. <li><div class="src-line"><a name="a137"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Attempt&nbsp;to&nbsp;construct&nbsp;an&nbsp;instance&nbsp;of&nbsp;the&nbsp;plugin</span></div></li>
  150. <li><div class="src-line"><a name="a138"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$plugin&nbsp;</span>=&nbsp;<span class="src-key">new&nbsp;</span><span class="src-var">$name</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  151. <li><div class="src-line"><a name="a139"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Make&nbsp;sure&nbsp;it&nbsp;is&nbsp;a&nbsp;valid&nbsp;plugin</span></div></li>
  152. <li><div class="src-line"><a name="a140"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">if&nbsp;</span><span class="src-sym">(</span><a href="http://www.php.net/is_subclass_of">is_subclass_of</a><span class="src-sym">(</span><span class="src-var">$plugin</span><span class="src-sym">,&nbsp;</span><span class="src-str">'SloodlePluginBase'</span><span class="src-sym">))&nbsp;</span><span class="src-sym">{</span></div></li>
  153. <li><div class="src-line"><a name="a141"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../sloodle/SloodlePluginManager.html#var$plugin_cache">plugin_cache</a><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">]&nbsp;</span>=&nbsp;<span class="src-var">$plugin</span><span class="src-sym">;</span></div></li>
  154. <li><div class="src-line"><a name="a142"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">return&nbsp;</span><span class="src-var">$plugin</span><span class="src-sym">;</span></div></li>
  155. <li><div class="src-line"><a name="a143"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  156. <li><div class="src-line"><a name="a144"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">return&nbsp;</span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
  157. <li><div class="src-line"><a name="a145"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-sym">}</span></div></li>
  158. <li><div class="src-line"><a name="a146"></a>&nbsp;</div></li>
  159. <li><div class="src-line"><a name="a147"></a><span class="src-sym">}</span></div></li>
  160. <li><div class="src-line"><a name="a148"></a>&nbsp;</div></li>
  161. <li><div class="src-line"><a name="a149"></a><span class="src-php">?&gt;</span></div></li>
  162. </ol></div>
  163. </div>
  164. <p class="notes" id="credit">
  165. Documentation generated on Fri, 17 Jul 2009 11:02:22 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.0</a>
  166. </p>
  167. </body>
  168. </html>