fsource_sloodle__moddemo-1.0linker.php.html 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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 linker.php</title>
  7. <link rel="stylesheet" href="../media/stylesheet.css" />
  8. </head>
  9. <body>
  10. <h1>Source for file linker.php</h1>
  11. <p>Documentation is available at <a href="../sloodle/_mod---demo-1.0---linker.php.html">linker.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>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**</span></div></li>
  15. <li><div class="src-line"><a name="a3"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Sloodle&nbsp;demo&nbsp;linker&nbsp;(for&nbsp;Sloodle&nbsp;0.4).</span></div></li>
  16. <li><div class="src-line"><a name="a4"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Allows&nbsp;a&nbsp;demo&nbsp;object&nbsp;to&nbsp;link&nbsp;to&nbsp;Moodle.</span></div></li>
  17. <li><div class="src-line"><a name="a5"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*</span></div></li>
  18. <li><div class="src-line"><a name="a6"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&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;&nbsp;&nbsp;&nbsp;*&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;&nbsp;&nbsp;&nbsp;*&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">&nbsp;&nbsp;&nbsp;&nbsp;*</span></div></li>
  22. <li><div class="src-line"><a name="a10"></a><span class="src-doc">&nbsp;&nbsp;&nbsp;&nbsp;*&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">&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div></li>
  24. <li><div class="src-line"><a name="a12"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  25. <li><div class="src-line"><a name="a13"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Common&nbsp;parameters&nbsp;for&nbsp;linker&nbsp;scripts</span></div></li>
  26. <li><div class="src-line"><a name="a14"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodlecontrollerid&nbsp;=&nbsp;ID&nbsp;of&nbsp;a&nbsp;Sloodle&nbsp;Controller&nbsp;through&nbsp;which&nbsp;to&nbsp;access&nbsp;Moodle</span></div></li>
  27. <li><div class="src-line"><a name="a15"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodlepwd&nbsp;=&nbsp;the&nbsp;prim&nbsp;password&nbsp;or&nbsp;object-specific&nbsp;session&nbsp;key&nbsp;to&nbsp;authenticate&nbsp;the&nbsp;request</span></div></li>
  28. <li><div class="src-line"><a name="a16"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodlemoduleid&nbsp;=&nbsp;ID&nbsp;of&nbsp;a&nbsp;module&nbsp;to&nbsp;load&nbsp;(corresponds&nbsp;to&nbsp;a&nbsp;course&nbsp;module&nbsp;instance&nbsp;ID,&nbsp;i.e.&nbsp;the&nbsp;'id'&nbsp;field&nbsp;of&nbsp;the&nbsp;'course_modules'&nbsp;db&nbsp;table).</span></div></li>
  29. <li><div class="src-line"><a name="a17"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodleuuid&nbsp;=&nbsp;UUID&nbsp;of&nbsp;the&nbsp;avatar</span></div></li>
  30. <li><div class="src-line"><a name="a18"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodleavname&nbsp;=&nbsp;name&nbsp;of&nbsp;the&nbsp;avatar</span></div></li>
  31. <li><div class="src-line"><a name="a19"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//</span></div></li>
  32. <li><div class="src-line"><a name="a20"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Less&nbsp;common&nbsp;parameters:</span></div></li>
  33. <li><div class="src-line"><a name="a21"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodleserveraccesslevel&nbsp;=&nbsp;how&nbsp;strict&nbsp;should&nbsp;access&nbsp;be?&nbsp;Handled&nbsp;entirely&nbsp;by&nbsp;the&nbsp;SloodleSession&nbsp;object</span></div></li>
  34. <li><div class="src-line"><a name="a22"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//</span></div></li>
  35. <li><div class="src-line"><a name="a23"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//</span></div></li>
  36. <li><div class="src-line"><a name="a24"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;following&nbsp;parameter&nbsp;is&nbsp;optional:</span></div></li>
  37. <li><div class="src-line"><a name="a25"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;&nbsp;sloodledebug&nbsp;=&nbsp;if&nbsp;'true',&nbsp;then&nbsp;Sloodle&nbsp;debugging&nbsp;mode&nbsp;is&nbsp;activated&nbsp;--&nbsp;should&nbsp;only&nbsp;be&nbsp;used&nbsp;from&nbsp;a&nbsp;web-browser&nbsp;as&nbsp;it&nbsp;outputs&nbsp;lots&nbsp;of&nbsp;extra&nbsp;info</span></div></li>
  38. <li><div class="src-line"><a name="a26"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  39. <li><div class="src-line"><a name="a27"></a>&nbsp;</div></li>
  40. <li><div class="src-line"><a name="a28"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**&nbsp;Lets&nbsp;Sloodle&nbsp;know&nbsp;we&nbsp;are&nbsp;in&nbsp;a&nbsp;linker&nbsp;script.&nbsp;*/</span></div></li>
  41. <li><div class="src-line"><a name="a29"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'SLOODLE_LINKER_SCRIPT'</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>
  42. <li><div class="src-line"><a name="a30"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  43. <li><div class="src-line"><a name="a31"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**&nbsp;Grab&nbsp;the&nbsp;Sloodle/Moodle&nbsp;configuration.&nbsp;*/</span></div></li>
  44. <li><div class="src-line"><a name="a32"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'../../sl_config.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  45. <li><div class="src-line"><a name="a33"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-doc">/**&nbsp;Include&nbsp;the&nbsp;Sloodle&nbsp;PHP&nbsp;API.&nbsp;*/</span></div></li>
  46. <li><div class="src-line"><a name="a34"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-id">SLOODLE_LIBROOT</span>.<span class="src-str">'/sloodle_session.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  47. <li><div class="src-line"><a name="a35"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  48. <li><div class="src-line"><a name="a36"></a><span class="src-comm">/////&nbsp;SETTING&nbsp;UP&nbsp;THE&nbsp;SESSION&nbsp;//////</span></div></li>
  49. <li><div class="src-line"><a name="a37"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  50. <li><div class="src-line"><a name="a38"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Construct&nbsp;a&nbsp;SloodleSession&nbsp;to&nbsp;handle&nbsp;this&nbsp;request.</span></div></li>
  51. <li><div class="src-line"><a name="a39"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;This&nbsp;provides&nbsp;a&nbsp;framework&nbsp;to&nbsp;handle&nbsp;all&nbsp;the&nbsp;common&nbsp;SLOODLE-related&nbsp;things.</span></div></li>
  52. <li><div class="src-line"><a name="a40"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;By&nbsp;default,&nbsp;this&nbsp;immediately&nbsp;processes&nbsp;important&nbsp;incoming&nbsp;data,&nbsp;but&nbsp;you&nbsp;can&nbsp;suppress&nbsp;that&nbsp;with&nbsp;optional&nbsp;parameters.&nbsp;(See&nbsp;API&nbsp;documentation.)</span></div></li>
  53. <li><div class="src-line"><a name="a41"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle&nbsp;</span>=&nbsp;<span class="src-key">new&nbsp;</span><span class="src-id"><a href="../sloodle/SloodleSession.html">SloodleSession</a></span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  54. <li><div class="src-line"><a name="a42"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  55. <li><div class="src-line"><a name="a43"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Check&nbsp;that&nbsp;the&nbsp;object&nbsp;is&nbsp;allowed&nbsp;to&nbsp;access&nbsp;Moodle.</span></div></li>
  56. <li><div class="src-line"><a name="a44"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;This&nbsp;checks&nbsp;that&nbsp;a&nbsp;SLOODLE&nbsp;Controller&nbsp;has&nbsp;been&nbsp;identified,&nbsp;and&nbsp;that&nbsp;a&nbsp;password&nbsp;has&nbsp;been&nbsp;given&nbsp;too.</span></div></li>
  57. <li><div class="src-line"><a name="a45"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;it&nbsp;fails,&nbsp;it&nbsp;will&nbsp;normally&nbsp;terminate&nbsp;the&nbsp;script&nbsp;with&nbsp;an&nbsp;error,&nbsp;but&nbsp;you&nbsp;can&nbsp;suppress&nbsp;that&nbsp;using&nbsp;optional&nbsp;parameters.</span></div></li>
  58. <li><div class="src-line"><a name="a46"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">authenticate_request</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  59. <li><div class="src-line"><a name="a47"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  60. <li><div class="src-line"><a name="a48"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;At&nbsp;this&nbsp;stage,&nbsp;you&nbsp;are&nbsp;guaranteed&nbsp;that&nbsp;the&nbsp;request&nbsp;is&nbsp;secure...&nbsp;or&nbsp;at&nbsp;least&nbsp;as&nbsp;secure&nbsp;as&nbsp;we&nbsp;can&nbsp;make&nbsp;it.&nbsp;:-)</span></div></li>
  61. <li><div class="src-line"><a name="a49"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  62. <li><div class="src-line"><a name="a50"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Note:</span></div></li>
  63. <li><div class="src-line"><a name="a51"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;There&nbsp;are&nbsp;two&nbsp;types&nbsp;of&nbsp;authentication&nbsp;-&nbsp;prim&nbsp;password,&nbsp;and&nbsp;object-specific&nbsp;password.</span></div></li>
  64. <li><div class="src-line"><a name="a52"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;In&nbsp;both&nbsp;cases,&nbsp;a&nbsp;SLOODLE&nbsp;Controller&nbsp;must&nbsp;be&nbsp;identified&nbsp;in&nbsp;the&nbsp;&quot;sloodlecontrollerid&quot;&nbsp;HTTP&nbsp;parameter,&nbsp;and&nbsp;the&nbsp;password&nbsp;in&nbsp;the&nbsp;&quot;sloodlepwd&quot;&nbsp;HTTP&nbsp;parameter.</span></div></li>
  65. <li><div class="src-line"><a name="a53"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;A&nbsp;prim-password&nbsp;is&nbsp;just&nbsp;a&nbsp;5&nbsp;to&nbsp;9&nbsp;digit&nbsp;number,&nbsp;and&nbsp;it&nbsp;is&nbsp;the&nbsp;same&nbsp;for&nbsp;any&nbsp;object&nbsp;using&nbsp;the&nbsp;Controller.</span></div></li>
  66. <li><div class="src-line"><a name="a54"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;An&nbsp;object-specific&nbsp;password&nbsp;is&nbsp;a&nbsp;9-digit&nbsp;number&nbsp;PLUS&nbsp;the&nbsp;object's&nbsp;UUID,&nbsp;and&nbsp;it&nbsp;is&nbsp;unique&nbsp;for&nbsp;every&nbsp;object.</span></div></li>
  67. <li><div class="src-line"><a name="a55"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  68. <li><div class="src-line"><a name="a56"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;*&nbsp;See&nbsp;the&nbsp;SLOODLE&nbsp;PHP&nbsp;API&nbsp;documentation&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;&quot;SloodleSession&quot;&nbsp;class&nbsp;*</span></div></li>
  69. <li><div class="src-line"><a name="a57"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  70. <li><div class="src-line"><a name="a58"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  71. <li><div class="src-line"><a name="a59"></a><span class="src-comm">/////&nbsp;HANDLING&nbsp;THE&nbsp;USER&nbsp;/////</span></div></li>
  72. <li><div class="src-line"><a name="a60"></a>&nbsp;</div></li>
  73. <li><div class="src-line"><a name="a61"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Many&nbsp;requests&nbsp;either&nbsp;deal&nbsp;with&nbsp;or&nbsp;are&nbsp;originated&nbsp;by&nbsp;a&nbsp;particular&nbsp;avatar.</span></div></li>
  74. <li><div class="src-line"><a name="a62"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;For&nbsp;example,&nbsp;the&nbsp;WebIntercom&nbsp;needs&nbsp;to&nbsp;know&nbsp;who&nbsp;is&nbsp;chatting&nbsp;a&nbsp;message.</span></div></li>
  75. <li><div class="src-line"><a name="a63"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;This&nbsp;information&nbsp;is&nbsp;passed-in&nbsp;using&nbsp;two&nbsp;parameters:&nbsp;sloodleavname,&nbsp;sloodleuuid.</span></div></li>
  76. <li><div class="src-line"><a name="a64"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;It&nbsp;is&nbsp;good&nbsp;practice&nbsp;to&nbsp;provide&nbsp;both&nbsp;in&nbsp;your&nbsp;script,&nbsp;but&nbsp;just&nbsp;one&nbsp;will&nbsp;usually&nbsp;suffice&nbsp;(unless&nbsp;you&nbsp;want&nbsp;to&nbsp;auto-register&nbsp;a&nbsp;new&nbsp;avatar).</span></div></li>
  77. <li><div class="src-line"><a name="a65"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  78. <li><div class="src-line"><a name="a66"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;use&nbsp;the&nbsp;following&nbsp;method&nbsp;to&nbsp;check&nbsp;that&nbsp;an&nbsp;avatar&nbsp;has&nbsp;been&nbsp;specified.</span></div></li>
  79. <li><div class="src-line"><a name="a67"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;This&nbsp;will&nbsp;also&nbsp;check&nbsp;to&nbsp;see&nbsp;if&nbsp;they&nbsp;are&nbsp;registered&nbsp;in&nbsp;Moodle,&nbsp;and&nbsp;enrolled&nbsp;on&nbsp;the&nbsp;course.</span></div></li>
  80. <li><div class="src-line"><a name="a68"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;it&nbsp;fails,&nbsp;it&nbsp;will&nbsp;normally&nbsp;terminate&nbsp;the&nbsp;script&nbsp;with&nbsp;an&nbsp;error,&nbsp;but&nbsp;you&nbsp;can&nbsp;suppress&nbsp;that&nbsp;using&nbsp;optional&nbsp;parameters.</span></div></li>
  81. <li><div class="src-line"><a name="a69"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Note&nbsp;that&nbsp;this&nbsp;function&nbsp;will&nbsp;auto-register&nbsp;and/or&nbsp;auto-enrol&nbsp;avatars&nbsp;if&nbsp;necessary&nbsp;and&nbsp;if&nbsp;the&nbsp;Moodle&nbsp;site/course&nbsp;allow&nbsp;it.</span></div></li>
  82. <li><div class="src-line"><a name="a70"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;An&nbsp;important&nbsp;side-effect&nbsp;of&nbsp;this&nbsp;function&nbsp;is&nbsp;that&nbsp;it&nbsp;forces&nbsp;Moodle&nbsp;to&nbsp;think&nbsp;the&nbsp;registered&nbsp;Moodle&nbsp;user&nbsp;is&nbsp;actually&nbsp;logged-in&nbsp;for&nbsp;the&nbsp;duration&nbsp;of&nbsp;this&nbsp;script.</span></div></li>
  83. <li><div class="src-line"><a name="a71"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">validate_user</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  84. <li><div class="src-line"><a name="a72"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  85. <li><div class="src-line"><a name="a73"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;At&nbsp;this&nbsp;stage,&nbsp;you&nbsp;are&nbsp;guaranteed&nbsp;to&nbsp;have&nbsp;a&nbsp;valid&nbsp;avatar&nbsp;AND&nbsp;Moodle&nbsp;user.</span></div></li>
  86. <li><div class="src-line"><a name="a74"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;now&nbsp;access&nbsp;the&nbsp;user&nbsp;information&nbsp;like&nbsp;this:&nbsp;$sloodle-&gt;user-&gt;...</span></div></li>
  87. <li><div class="src-line"><a name="a75"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;For&nbsp;example,&nbsp;let's&nbsp;get&nbsp;the&nbsp;names&nbsp;of&nbsp;the&nbsp;avatar&nbsp;and&nbsp;Moodle&nbsp;user.</span></div></li>
  88. <li><div class="src-line"><a name="a76"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$avatarname&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">user</span><span class="src-sym">-&gt;</span><span class="src-id">get_avatar_name</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  89. <li><div class="src-line"><a name="a77"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$moodlename&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">user</span><span class="src-sym">-&gt;</span><span class="src-id">get_user_firstname</span><span class="src-sym">(</span><span class="src-sym">)&nbsp;</span>.<span class="src-str">'&nbsp;'</span>.&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">user</span><span class="src-sym">-&gt;</span><span class="src-id">get_user_lastname</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  90. <li><div class="src-line"><a name="a78"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  91. <li><div class="src-line"><a name="a79"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;*&nbsp;See&nbsp;the&nbsp;SLOODLE&nbsp;PHP&nbsp;API&nbsp;documentation&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;SloodleUser&nbsp;class.&nbsp;*</span></div></li>
  92. <li><div class="src-line"><a name="a80"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;SloodleUser&nbsp;is&nbsp;defined&nbsp;in:&nbsp;sloodle/lib/user.php</span></div></li>
  93. <li><div class="src-line"><a name="a81"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  94. <li><div class="src-line"><a name="a82"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  95. <li><div class="src-line"><a name="a83"></a><span class="src-comm">/////&nbsp;LOADING&nbsp;MODULES&nbsp;/////</span></div></li>
  96. <li><div class="src-line"><a name="a84"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  97. <li><div class="src-line"><a name="a85"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;In&nbsp;order&nbsp;to&nbsp;improve&nbsp;portability&nbsp;and&nbsp;code-reusability,&nbsp;a&nbsp;modules&nbsp;system&nbsp;was&nbsp;created.</span></div></li>
  98. <li><div class="src-line"><a name="a86"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;It&nbsp;is&nbsp;not&nbsp;essential,&nbsp;but&nbsp;can&nbsp;help&nbsp;keep&nbsp;linker&nbsp;scripts&nbsp;clean&nbsp;and&nbsp;free&nbsp;of&nbsp;Moodle-specific&nbsp;database&nbsp;code.</span></div></li>
  99. <li><div class="src-line"><a name="a87"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;SloodleModule&nbsp;base&nbsp;class&nbsp;provides&nbsp;a&nbsp;common&nbsp;base&nbsp;for&nbsp;any&nbsp;SLOODLE&nbsp;code&nbsp;which&nbsp;'wraps'&nbsp;a&nbsp;Moodle&nbsp;module.</span></div></li>
  100. <li><div class="src-line"><a name="a88"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;For&nbsp;example,&nbsp;the&nbsp;SloodleModuleChat&nbsp;class&nbsp;provides&nbsp;simple&nbsp;functions&nbsp;to&nbsp;handle&nbsp;a&nbsp;Moodle&nbsp;chatroom.</span></div></li>
  101. <li><div class="src-line"><a name="a89"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Similarly,&nbsp;the&nbsp;SloodleModuleBlog&nbsp;class&nbsp;provides&nbsp;simple&nbsp;functions&nbsp;to&nbsp;handle&nbsp;the&nbsp;Moodle&nbsp;blog.</span></div></li>
  102. <li><div class="src-line"><a name="a90"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  103. <li><div class="src-line"><a name="a91"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Note&nbsp;that&nbsp;these&nbsp;will&nbsp;NOT&nbsp;necessarily&nbsp;correspond&nbsp;to&nbsp;actual&nbsp;Moodle&nbsp;modules&nbsp;(although&nbsp;they&nbsp;usually&nbsp;do).</span></div></li>
  104. <li><div class="src-line"><a name="a92"></a>&nbsp;</div></li>
  105. <li><div class="src-line"><a name="a93"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;following&nbsp;method&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;load&nbsp;a&nbsp;module&nbsp;wrapper&nbsp;for&nbsp;a&nbsp;chatroom.</span></div></li>
  106. <li><div class="src-line"><a name="a94"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;first&nbsp;argument&nbsp;names&nbsp;the&nbsp;module,&nbsp;and&nbsp;the&nbsp;second&nbsp;indicates&nbsp;whether&nbsp;or&nbsp;not&nbsp;there&nbsp;is&nbsp;database&nbsp;data&nbsp;to&nbsp;be&nbsp;loaded.</span></div></li>
  107. <li><div class="src-line"><a name="a95"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Note&nbsp;that&nbsp;this&nbsp;will&nbsp;load&nbsp;the&nbsp;module&nbsp;identified&nbsp;by&nbsp;HTTP&nbsp;parameter&nbsp;'sloodlemoduleid'.</span></div></li>
  108. <li><div class="src-line"><a name="a96"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;that&nbsp;parameter&nbsp;is&nbsp;not&nbsp;provided&nbsp;in&nbsp;the&nbsp;request,&nbsp;then&nbsp;this&nbsp;method&nbsp;will&nbsp;terminate&nbsp;the&nbsp;script&nbsp;with&nbsp;an&nbsp;error&nbsp;message.</span></div></li>
  109. <li><div class="src-line"><a name="a97"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;the&nbsp;module&nbsp;loading&nbsp;fails&nbsp;(e.g.&nbsp;due&nbsp;to&nbsp;a&nbsp;database&nbsp;error)&nbsp;then&nbsp;the&nbsp;script&nbsp;will&nbsp;also&nbsp;be&nbsp;terminated,&nbsp;although&nbsp;that&nbsp;behaviour&nbsp;can&nbsp;be&nbsp;suppressed&nbsp;by&nbsp;addition&nbsp;optional&nbsp;arguments.</span></div></li>
  110. <li><div class="src-line"><a name="a98"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">load_module</span><span class="src-sym">(</span><span class="src-str">'chat'</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>
  111. <li><div class="src-line"><a name="a99"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  112. <li><div class="src-line"><a name="a100"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;now&nbsp;access&nbsp;the&nbsp;module&nbsp;like&nbsp;this:&nbsp;$sloodle-&gt;module-&gt;...</span></div></li>
  113. <li><div class="src-line"><a name="a101"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;There&nbsp;are&nbsp;some&nbsp;common&nbsp;functions,&nbsp;such&nbsp;as&nbsp;getting&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;module,&nbsp;and&nbsp;various&nbsp;functions&nbsp;specific&nbsp;to&nbsp;the&nbsp;module&nbsp;class&nbsp;that&nbsp;was&nbsp;loaded.</span></div></li>
  114. <li><div class="src-line"><a name="a102"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$modulename&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">module</span><span class="src-sym">-&gt;</span><span class="src-id">get_name</span><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;<span class="src-var">$chatmessages&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">module</span><span class="src-sym">-&gt;</span><span class="src-id">get_chat_history</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  116. <li><div class="src-line"><a name="a104"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  117. <li><div class="src-line"><a name="a105"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  118. <li><div class="src-line"><a name="a106"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;*&nbsp;See&nbsp;the&nbsp;SLOODLE&nbsp;PHP&nbsp;API&nbsp;documentation&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;&quot;SloodleModule&quot;&nbsp;class&nbsp;*</span></div></li>
  119. <li><div class="src-line"><a name="a107"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  120. <li><div class="src-line"><a name="a108"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;SloodleModule&nbsp;is&nbsp;defined&nbsp;in:&nbsp;sloodle/lib/modules/module_base.php</span></div></li>
  121. <li><div class="src-line"><a name="a109"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;sub-classes&nbsp;are&nbsp;defined&nbsp;in:&nbsp;sloodle/lib/modules</span></div></li>
  122. <li><div class="src-line"><a name="a110"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;module&nbsp;loading&nbsp;code&nbsp;is&nbsp;define&nbsp;in:&nbsp;sloodle/lib/modules.php</span></div></li>
  123. <li><div class="src-line"><a name="a111"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  124. <li><div class="src-line"><a name="a112"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  125. <li><div class="src-line"><a name="a113"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  126. <li><div class="src-line"><a name="a114"></a><span class="src-comm">/////&nbsp;GETTING&nbsp;INPUT&nbsp;/////</span></div></li>
  127. <li><div class="src-line"><a name="a115"></a>&nbsp;</div></li>
  128. <li><div class="src-line"><a name="a116"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;will&nbsp;often&nbsp;want&nbsp;to&nbsp;pass&nbsp;data&nbsp;from&nbsp;SL&nbsp;to&nbsp;Moodle&nbsp;as&nbsp;HTTP&nbsp;parameters.&nbsp;This&nbsp;can&nbsp;be&nbsp;done&nbsp;using&nbsp;GET&nbsp;or&nbsp;POST&nbsp;parameters.</span></div></li>
  129. <li><div class="src-line"><a name="a117"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;fetch&nbsp;either&nbsp;type&nbsp;of&nbsp;data&nbsp;easily&nbsp;using&nbsp;the&nbsp;&quot;SloodleRequest&quot;&nbsp;object&nbsp;within&nbsp;the&nbsp;SloodleSession.</span></div></li>
  130. <li><div class="src-line"><a name="a118"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;access&nbsp;it&nbsp;using:&nbsp;$sloodle-&gt;request-&gt;...</span></div></li>
  131. <li><div class="src-line"><a name="a119"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  132. <li><div class="src-line"><a name="a120"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;there&nbsp;is&nbsp;a&nbsp;parameter&nbsp;called&nbsp;'message'&nbsp;that&nbsp;you&nbsp;absolutely&nbsp;MUST&nbsp;receive&nbsp;for&nbsp;the&nbsp;script&nbsp;to&nbsp;work&nbsp;properly,&nbsp;you&nbsp;can&nbsp;fetch&nbsp;it&nbsp;like&nbsp;this:</span></div></li>
  133. <li><div class="src-line"><a name="a121"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$requiredmessage&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">request</span><span class="src-sym">-&gt;</span><span class="src-id">required_param</span><span class="src-sym">(</span><span class="src-str">'message'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  134. <li><div class="src-line"><a name="a122"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  135. <li><div class="src-line"><a name="a123"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;the&nbsp;parameter&nbsp;was&nbsp;not&nbsp;given&nbsp;in&nbsp;the&nbsp;HTTP&nbsp;request,&nbsp;then&nbsp;the&nbsp;script&nbsp;is&nbsp;immediately&nbsp;terminate&nbsp;with&nbsp;an&nbsp;error&nbsp;message.</span></div></li>
  136. <li><div class="src-line"><a name="a124"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;argument&nbsp;gives&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;parameter&nbsp;to&nbsp;fetch.</span></div></li>
  137. <li><div class="src-line"><a name="a125"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;the&nbsp;parameter&nbsp;was&nbsp;specified,&nbsp;then&nbsp;it&nbsp;is&nbsp;returned&nbsp;as&nbsp;a&nbsp;raw&nbsp;string&nbsp;(you&nbsp;MUST&nbsp;do&nbsp;proper&nbsp;data&nbsp;cleanup&nbsp;before&nbsp;putting&nbsp;it&nbsp;into&nbsp;a&nbsp;database&nbsp;query,&nbsp;otherwise&nbsp;you'll&nbsp;be&nbsp;vulnerable&nbsp;to&nbsp;SQL&nbsp;injections).</span></div></li>
  138. <li><div class="src-line"><a name="a126"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  139. <li><div class="src-line"><a name="a127"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  140. <li><div class="src-line"><a name="a128"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  141. <li><div class="src-line"><a name="a129"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;a&nbsp;particular&nbsp;parameter&nbsp;is&nbsp;optional&nbsp;(i.e.&nbsp;you&nbsp;may&nbsp;or&nbsp;may&nbsp;not&nbsp;receive&nbsp;it),&nbsp;then&nbsp;you&nbsp;can&nbsp;use&nbsp;the&nbsp;following&nbsp;method:</span></div></li>
  142. <li><div class="src-line"><a name="a130"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$optionalmessage&nbsp;</span>=&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">request</span><span class="src-sym">-&gt;</span><span class="src-id">optional_param</span><span class="src-sym">(</span><span class="src-str">'anothermessage'</span><span class="src-sym">,&nbsp;</span><span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  143. <li><div class="src-line"><a name="a131"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  144. <li><div class="src-line"><a name="a132"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;first&nbsp;argument&nbsp;gave&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;paramter.</span></div></li>
  145. <li><div class="src-line"><a name="a133"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;second&nbsp;argument&nbsp;gave&nbsp;the&nbsp;default&nbsp;value&nbsp;that&nbsp;would&nbsp;be&nbsp;returned&nbsp;if&nbsp;that&nbsp;parameter&nbsp;was&nbsp;not&nbsp;passed&nbsp;to&nbsp;this&nbsp;script.</span></div></li>
  146. <li><div class="src-line"><a name="a134"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;If&nbsp;the&nbsp;parameter&nbsp;*was*&nbsp;provided&nbsp;for&nbsp;this&nbsp;script,&nbsp;then&nbsp;the&nbsp;raw&nbsp;string&nbsp;value&nbsp;is&nbsp;returned.</span></div></li>
  147. <li><div class="src-line"><a name="a135"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  148. <li><div class="src-line"><a name="a136"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  149. <li><div class="src-line"><a name="a137"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;*&nbsp;See&nbsp;the&nbsp;SLOODLE&nbsp;PHP&nbsp;API&nbsp;documentation&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;&quot;SloodleRequest&quot;&nbsp;class&nbsp;*</span></div></li>
  150. <li><div class="src-line"><a name="a138"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;SloodleRequest&nbsp;is&nbsp;defined&nbsp;in:&nbsp;sloodle/lib/io.php</span></div></li>
  151. <li><div class="src-line"><a name="a139"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  152. <li><div class="src-line"><a name="a140"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  153. <li><div class="src-line"><a name="a141"></a><span class="src-comm">/////&nbsp;RETURNING&nbsp;A&nbsp;RESPONSE&nbsp;/////</span></div></li>
  154. <li><div class="src-line"><a name="a142"></a>&nbsp;</div></li>
  155. <li><div class="src-line"><a name="a143"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;After&nbsp;you&nbsp;have&nbsp;done&nbsp;some&nbsp;processing,&nbsp;you&nbsp;have&nbsp;to&nbsp;provide&nbsp;a&nbsp;response.</span></div></li>
  156. <li><div class="src-line"><a name="a144"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;There&nbsp;is&nbsp;information&nbsp;in&nbsp;the&nbsp;developer&nbsp;documentation&nbsp;on&nbsp;the&nbsp;SLOODLE&nbsp;wiki&nbsp;about&nbsp;the&nbsp;appropriate&nbsp;communications&nbsp;specification.</span></div></li>
  157. <li><div class="src-line"><a name="a145"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Note&nbsp;that&nbsp;*anything*&nbsp;you&nbsp;output,&nbsp;e.g.&nbsp;using&nbsp;&quot;echo&quot;&nbsp;or&nbsp;&quot;print&quot;&nbsp;becomes&nbsp;part&nbsp;of&nbsp;the&nbsp;response.</span></div></li>
  158. <li><div class="src-line"><a name="a146"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;The&nbsp;SloodleResponse&nbsp;object&nbsp;within&nbsp;SloodleSession&nbsp;provides&nbsp;some&nbsp;assistance.</span></div></li>
  159. <li><div class="src-line"><a name="a147"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;access&nbsp;the&nbsp;response&nbsp;object&nbsp;like&nbsp;this:&nbsp;$sloodle-&gt;response-&gt;...</span></div></li>
  160. <li><div class="src-line"><a name="a148"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  161. <li><div class="src-line"><a name="a149"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;must&nbsp;always&nbsp;provide&nbsp;a&nbsp;status&nbsp;code&nbsp;(see&nbsp;the&nbsp;wiki&nbsp;for&nbsp;a&nbsp;list&nbsp;of&nbsp;these):</span></div></li>
  162. <li><div class="src-line"><a name="a150"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">set_status_code</span><span class="src-sym">(</span><span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;&nbsp;</span><span class="src-comm">//&nbsp;Positive&nbsp;means&nbsp;OK,&nbsp;negative&nbsp;means&nbsp;an&nbsp;error</span></div></li>
  163. <li><div class="src-line"><a name="a151"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  164. <li><div class="src-line"><a name="a152"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;must&nbsp;also&nbsp;provide&nbsp;a&nbsp;simple,&nbsp;generic,&nbsp;status&nbsp;'descriptor'&nbsp;(a&nbsp;short&nbsp;human-readable&nbsp;string):</span></div></li>
  165. <li><div class="src-line"><a name="a153"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">set_status_descriptor</span><span class="src-sym">(</span><span class="src-str">'OK'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  166. <li><div class="src-line"><a name="a154"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  167. <li><div class="src-line"><a name="a155"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;optionally&nbsp;add&nbsp;data,&nbsp;line&nbsp;by&nbsp;line.&nbsp;Each&nbsp;line&nbsp;can&nbsp;have&nbsp;several&nbsp;fields,&nbsp;usually&nbsp;separated&nbsp;by&nbsp;|&nbsp;characters.</span></div></li>
  168. <li><div class="src-line"><a name="a156"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;There&nbsp;are&nbsp;several&nbsp;ways&nbsp;to&nbsp;add&nbsp;the&nbsp;data.</span></div></li>
  169. <li><div class="src-line"><a name="a157"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Avatar&nbsp;name&nbsp;is:&nbsp;{<span class="src-var">$avatarname</span><span class="src-sym">}</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;&nbsp;</span><span class="src-comm">//&nbsp;Just&nbsp;add&nbsp;a&nbsp;string&nbsp;on&nbsp;each&nbsp;line</span></div></li>
  170. <li><div class="src-line"><a name="a158"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'Moodle&nbsp;name'</span><span class="src-sym">,&nbsp;</span><span class="src-var">$moodlename</span><span class="src-sym">))</span><span class="src-sym">;&nbsp;</span><span class="src-comm">//&nbsp;Add&nbsp;several&nbsp;fields&nbsp;on&nbsp;a&nbsp;single&nbsp;line</span></div></li>
  171. <li><div class="src-line"><a name="a159"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'module'</span><span class="src-sym">,&nbsp;</span><span class="src-str">'name'</span><span class="src-sym">,&nbsp;</span><span class="src-var">$modulename</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
  172. <li><div class="src-line"><a name="a160"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  173. <li><div class="src-line"><a name="a161"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Just&nbsp;some&nbsp;more&nbsp;usage&nbsp;of&nbsp;input&nbsp;data</span></div></li>
  174. <li><div class="src-line"><a name="a162"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Required&nbsp;message:&nbsp;{<span class="src-var">$requiredmessage</span><span class="src-sym">}</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  175. <li><div class="src-line"><a name="a163"></a>&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">$optionalmessage</span><span class="src-sym">))&nbsp;</span><span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-str">&quot;No&nbsp;optional&nbsp;message&nbsp;provided&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  176. <li><div class="src-line"><a name="a164"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-key">else&nbsp;</span><span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">add_data_line</span><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Optional&nbsp;message:&nbsp;{<span class="src-var">$optionalmessage</span><span class="src-sym">}</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  177. <li><div class="src-line"><a name="a165"></a>&nbsp;</div></li>
  178. <li><div class="src-line"><a name="a166"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  179. <li><div class="src-line"><a name="a167"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Finally,&nbsp;you&nbsp;MUST&nbsp;remember&nbsp;to&nbsp;render&nbsp;the&nbsp;response!</span></div></li>
  180. <li><div class="src-line"><a name="a168"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$sloodle</span><span class="src-sym">-&gt;</span><span class="src-id">response</span><span class="src-sym">-&gt;</span><span class="src-id">render_to_output</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
  181. <li><div class="src-line"><a name="a169"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  182. <li><div class="src-line"><a name="a170"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;Alternatively,&nbsp;you&nbsp;can&nbsp;render&nbsp;the&nbsp;output&nbsp;to&nbsp;a&nbsp;string,&nbsp;like&nbsp;this:</span></div></li>
  183. <li><div class="src-line"><a name="a171"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-var">$output&nbsp;</span>=&nbsp;<span class="src-str">''</span><span class="src-sym">;</span></div></li>
  184. <li><div class="src-line"><a name="a172"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//$sloodle-&gt;response-&gt;render_to_output($output);&nbsp;//&nbsp;Passed&nbsp;in&nbsp;by&nbsp;reference</span></div></li>
  185. <li><div class="src-line"><a name="a173"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;You&nbsp;can&nbsp;then&nbsp;output&nbsp;that&nbsp;string&nbsp;yourself,&nbsp;or&nbsp;send&nbsp;it&nbsp;by&nbsp;XMLRPC&nbsp;or&nbsp;similar.</span></div></li>
  186. <li><div class="src-line"><a name="a174"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;NOTE:&nbsp;for&nbsp;XMLRPC&nbsp;into&nbsp;SL,&nbsp;you&nbsp;need&nbsp;to&nbsp;replace&nbsp;newlines&nbsp;(\n)&nbsp;with&nbsp;\\n&nbsp;before&nbsp;sending.</span></div></li>
  187. <li><div class="src-line"><a name="a175"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  188. <li><div class="src-line"><a name="a176"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  189. <li><div class="src-line"><a name="a177"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;*&nbsp;See&nbsp;the&nbsp;SLOODLE&nbsp;PHP&nbsp;API&nbsp;documentation&nbsp;for&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;&quot;SloodleResponse&quot;&nbsp;class&nbsp;*</span></div></li>
  190. <li><div class="src-line"><a name="a178"></a>&nbsp;&nbsp;&nbsp;&nbsp;<span class="src-comm">//&nbsp;SloodleResponse&nbsp;is&nbsp;defined&nbsp;in:&nbsp;sloodle/lib/io.php</span></div></li>
  191. <li><div class="src-line"><a name="a179"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  192. <li><div class="src-line"><a name="a180"></a>&nbsp;&nbsp;&nbsp;&nbsp;</div></li>
  193. <li><div class="src-line"><a name="a181"></a><span class="src-php">?&gt;</span></div></li>
  194. </ol></div>
  195. </div>
  196. <p class="notes" id="credit">
  197. Documentation generated on Fri, 17 Jul 2009 11:01:47 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.0</a>
  198. </p>
  199. </body>
  200. </html>