<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://gwiki3.thatlinuxbox.com/index.php?action=history&amp;feed=atom&amp;title=Adding_Moderation_Capability</id>
		<title>Adding Moderation Capability - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://gwiki3.thatlinuxbox.com/index.php?action=history&amp;feed=atom&amp;title=Adding_Moderation_Capability"/>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;action=history"/>
		<updated>2026-04-04T13:25:08Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.5</generator>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5792&amp;oldid=prev</id>
		<title>Cordiste: Move explanations into the right  paragraphs</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5792&amp;oldid=prev"/>
				<updated>2010-03-31T17:28:33Z</updated>
		
		<summary type="html">&lt;p&gt;Move explanations into the right  paragraphs&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 17:28, 31 March 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot; &gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_ismoderator_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_ismoderator_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The '''''plugin_ismoderator'''''&amp;#160; function simply returns TRUE if &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the current user has moderation privileges for the plugin.&amp;#160; In the example&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to the right, The mailing lists plugin simply uses the security function &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SEC_hasRights to determine if a user has the required rights.&amp;#160; The lists.admin permission was installed with the plugin.&amp;#160; You could use your own SQL query or some other criteria to determine access rights.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function plugin_ismoderator_lists()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function plugin_ismoderator_lists()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot; &gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 100:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_submissioncount_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_submissioncount_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_ismoderator&lt;/del&gt;''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;function &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;simply &lt;/del&gt;returns &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;TRUE if &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the current user has moderation privileges &lt;/del&gt;for &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;plugin.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In the example&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_submissioncount&lt;/ins&gt;''''' function returns &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the number of &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;right, The mailing lists plugin simply uses &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;security function &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submissions &lt;/ins&gt;for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this &lt;/ins&gt;plugin &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;that are awaiting moderation&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This value is used &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;indicate &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;number of waiting submissions in &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;admin block&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;A DB_count() on &lt;/ins&gt;the plugin &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submission table is usually sufficient for this&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SEC_hasRights to determine if a user has the required rights&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The lists.admin permission was installed with &lt;/del&gt;the plugin&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; You could use your own SQL query or some other criteria to determine access rights&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l109&quot; &gt;Line 109:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_savesubmission_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_savesubmission_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_submissioncount&lt;/del&gt;''''' function &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;returns &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;number of &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submissions &lt;/del&gt;for &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this plugin that are awaiting moderation&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; This value is used &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;indicate &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;number of waiting submissions in &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;admin block&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A DB_count&lt;/del&gt;() &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin submission table is usually sufficient for this&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_savesubmission&lt;/ins&gt;''''' function &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;takes data entered into&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the submission form and saves it to &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submission table.&amp;#160; Optionally, this function can use different logic for an admin or power user as seen in the Mailing Lists Plugin.&amp;#160; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;In addition to saving the information to the plugin's submission table, it must also check data entered &lt;/ins&gt;for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;validity&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; Upon failure the function should return false or redirect &lt;/ins&gt;to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submission form.&amp;#160; If successful, &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;function should redirect to a relevant page, or return true&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;In Geeklog 1.3.7 the plugin API expects the function to do a redirect &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;COM_refresh()&lt;/ins&gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; If it does not, a successful return from the function &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;will redirect the user back to &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Geeklog home page&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l158&quot; &gt;Line 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 166:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationvalues_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationvalues_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_savesubmission&lt;/del&gt;''''' function &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;takes data entered into&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submission form and saves it &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the submission table&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Optionally, this function can use different logic for &lt;/del&gt;an &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;admin or power user as seen in &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Mailing Lists Plugin.&amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_moderationvalues&lt;/ins&gt;''''' function &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;returns important information used by &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Plugin API &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;handle plugin submissions&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;It must return &lt;/ins&gt;an &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;array consisting of &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;main column id (ml_id), &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;main table name ($_TABLES['lists']), a comma separated list of columns that will be copied from &lt;/ins&gt;the plugin submission table to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;main table (ml_id, ml_name&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ml_descr)&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;and &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;name of &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submission table &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;$_TABLE['listssubmission']&lt;/ins&gt;).&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This information is used to automatically&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In addition to saving &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;information to &lt;/del&gt;the plugin&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'s &lt;/del&gt;submission table&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, it must also check data entered for validity.&amp;#160;  Upon failure the function should return false or redirect &lt;/del&gt;to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submission form.&amp;#160; If successful&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the function should redirect to a relevant page&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;or return true.&amp;#160; In Geeklog 1.3.7 &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin API expects &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;function to do a redirect &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;COM_refresh()&lt;/del&gt;).&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;If it does not, a successful return &lt;/del&gt;from the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;function &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;copy information &lt;/ins&gt;from the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin submission table &lt;/ins&gt;to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin main table when a submission is approved&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will redirect the user back &lt;/del&gt;to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Geeklog home page&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l173&quot; &gt;Line 173:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 180:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_itemlist_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_itemlist_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_moderationvalues&lt;/del&gt;''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;function &lt;/del&gt;returns &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;important &lt;/del&gt;information &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;used by &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Plugin API to handle plugin submissions&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It must return an array consisting &lt;/del&gt;of the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;main column id (ml_id), &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;main table name ($_TABLES[&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;lists&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;]), a comma separated list of columns &lt;/del&gt;that will be &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;copied from &lt;/del&gt;the plugin submission &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;table to &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;main table (ml_id, ml_name, ml_descr&lt;/del&gt;)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, and the name of the submission table &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$_TABLE[&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;listssubmission&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/del&gt;).&amp;#160; This &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;information is used to automatically&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;copy information from &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin submission table &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the plugin main table when a submission is approved&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;function &lt;/ins&gt;'''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_itemlist&lt;/ins&gt;''''' returns &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a Plugin() class containing &lt;/ins&gt;information &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;that will displayed on &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;moderation.php page&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The following member variables &lt;/ins&gt;of the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Plugin class must be filled out:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* '''submissionlabel:''' The title that indicate &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin submission section.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* '''getsubmissionsql:'&lt;/ins&gt;'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;An SQL query that will select all the data &lt;/ins&gt;that will be &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;displayed in &lt;/ins&gt;the plugin submission &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;section.&amp;#160; NOTE: one item (&lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;unique id column&lt;/ins&gt;) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;must be labeled id &lt;/ins&gt;('&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;as id&lt;/ins&gt;').&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* '''addSubmissionHeading():''' &lt;/ins&gt; This &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;function must be called once for every field besides the one labeled id.&amp;#160; The parameter passed should be &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;column name &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;be displayed&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l195&quot; &gt;Line 195:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 206:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_submit_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_submit_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The function '''''plugin_itemlist''''' returns a Plugin() class containing information that will displayed on the moderation.php page.&amp;#160; The following member variables of the Plugin class must be filled out:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/del&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submissionlabel:&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;' The title that indicate the plugin submission section.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The function &lt;/ins&gt;'''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_submit&lt;/ins&gt;''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;creates HTML &lt;/ins&gt;that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;contains &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;submission form for &lt;/ins&gt;the plugin.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;It is recommended to use &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Geeklog template functionality &lt;/ins&gt;as &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;shown here to create the form&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;See the section of this manual [[Using Templates and Language Files|on templates]] &lt;/ins&gt;for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;more information&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;When creating the form, &lt;/ins&gt;be &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sure to include fields for each variable you would like &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;user &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;fill along with preview and submit buttons&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* '&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;getsubmissionsql:&lt;/del&gt;''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;An SQL query &lt;/del&gt;that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will select all &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;data that will be displayed in &lt;/del&gt;the plugin &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submission section&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NOTE: one item (&lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;unique id column) must be labeled id ('&lt;/del&gt;as &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;id')&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* '''addSubmissionHeading():''' &lt;/del&gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This function must be called once &lt;/del&gt;for &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;every field besides the one labeled id&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The parameter passed should &lt;/del&gt;be the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;column name &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;be displayed&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l233&quot; &gt;Line 233:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 241:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationapprove_&amp;lt;plugin name&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationapprove_&amp;lt;plugin name&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;function '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_submit&lt;/del&gt;''''' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;creates HTML that contains &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;submission form for &lt;/del&gt;the plugin&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; It &lt;/del&gt;is &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;recommended to use the Geeklog template functionality as shown here &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;create the form&lt;/del&gt;.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;See the section &lt;/del&gt;of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this manual [[Using Templates and Language Files|on templates]] for more &lt;/del&gt;information.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;When creating &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;form, be sure to include fields &lt;/del&gt;for &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;each variable you would like the user to fill along with preview and submit buttons&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Although the moderation.php script takes care of the work of actually moving data from the plugin submission table to the main plugin table, often times a plugin requires more to be done to the plugin tables or for other information to be updated.&amp;#160; Geeklog provides the &lt;/ins&gt;function '''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_moderationapprove&lt;/ins&gt;''''' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;for these tasks.&amp;#160; In the case of &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;lists plugin, &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;main &lt;/ins&gt;plugin &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;table is updated with additional data that it &lt;/ins&gt;is &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;not desirable for a user &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;enter&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Instead this function takes care &lt;/ins&gt;of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;placing that &lt;/ins&gt;information &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;into the table&lt;/ins&gt;.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;As of now &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;return value &lt;/ins&gt;for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this function is ignored&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l263&quot; &gt;Line 263:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 272:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationdelete_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====plugin_moderationdelete_&amp;lt;plugin name&amp;gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Although the moderation.php script takes care of the work of actually &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;moving &lt;/del&gt;data from the plugin submission table &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to the main plugin table&lt;/del&gt;, often times a plugin requires more to be done to the plugin tables or for other information to be updated.&amp;#160; Geeklog provides the function '''''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;plugin_moderationapprove&lt;/del&gt;''''' for these tasks.&amp;#160; In the case of the lists plugin, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the main plugin table is updated with additional &lt;/del&gt;data that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it is &lt;/del&gt;not &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;desirable for a user to enter.&amp;#160; Instead this function takes care of placing &lt;/del&gt;that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;information into the table&lt;/del&gt;.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Although the moderation.php script takes care of the work of actually &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;removing &lt;/ins&gt;data from the plugin submission table &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;for a submission deletion&lt;/ins&gt;, often times a plugin requires more to be done to the plugin tables or for other information to be updated.&amp;#160; Geeklog provides the function '''''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;plugin_moderationdelete&lt;/ins&gt;''''' for these tasks.&amp;#160; In the case of the lists plugin, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tables are checked for extraneous &lt;/ins&gt;data &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;should &lt;/ins&gt;not &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;exist in most cases) and &lt;/ins&gt;that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;data is removed if found&lt;/ins&gt;.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l278&quot; &gt;Line 278:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 288:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Although the moderation.php script takes care of the work of actually removing data from the plugin submission table for a submission deletion, often times a plugin requires more to be done to the plugin tables or for other information to be updated.&amp;#160; Geeklog provides the function '''''plugin_moderationdelete''''' for these tasks.&amp;#160; In the case of the lists plugin, tables are checked for extraneous data (that should not exist in most cases) and that data is removed if found.&amp;#160; As of now the return value for this function is ignored.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Plugin Developers Handbook]] [[Category:Plugin Development]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Plugin Developers Handbook]] [[Category:Plugin Development]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5490&amp;oldid=prev</id>
		<title>LWC: /* The functions */ Spaces</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5490&amp;oldid=prev"/>
				<updated>2009-05-30T09:42:19Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The functions: &lt;/span&gt; Spaces&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:42, 30 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot; &gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|7&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|7&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_moderationapprove_&amp;lt;plugin name&amp;gt;|plugin_moderationapprove_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_moderationapprove_&amp;lt;plugin name&amp;gt;|plugin_moderationapprove_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|This optional function supplements moderation.php.&amp;#160; While moderation.php actually moves data from the &amp;lt;plugin name&amp;gt;submission table to the main &amp;lt;plugin name&amp;gt; table, this function executes all other submission approval tasks including any other database updates required by your plugin.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|This optional function supplements moderation.php.&amp;#160; While moderation.php actually moves data from the &amp;lt;plugin name&amp;gt; submission table to the main &amp;lt;plugin name&amp;gt; table, this function executes all other submission approval tasks including any other database updates required by your plugin.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|8&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_moderationdelete_&amp;lt;plugin name&amp;gt;|plugin_moderationdelete_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_moderationdelete_&amp;lt;plugin name&amp;gt;|plugin_moderationdelete_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|This optional function supplements moderation.php.&amp;#160; While moderation.php actually removes data from the &amp;lt;plugin name&amp;gt;submission table, this function executes all other submission removal tasks including any other database updates required by your plugin.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|This optional function supplements moderation.php.&amp;#160; While moderation.php actually removes data from the &amp;lt;plugin name&amp;gt; submission table, this function executes all other submission removal tasks including any other database updates required by your plugin.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l74&quot; &gt;Line 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Plugin database changes ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Plugin database changes ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The table &amp;lt;plugin name&amp;gt;submission must be the name of your submission &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The table &amp;lt;plugin name&amp;gt; submission must be the name of your submission &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;table.&amp;#160; This table can only contain a proper subset of the columns from the main &amp;lt;plugin name&amp;gt; table.&amp;#160; This allows the moderation.php script to &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;table.&amp;#160; This table can only contain a proper subset of the columns from the main &amp;lt;plugin name&amp;gt; table.&amp;#160; This allows the moderation.php script to &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;automatically copy those columns from the submission to the main table upon&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;automatically copy those columns from the submission to the main table upon&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>LWC</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5489&amp;oldid=prev</id>
		<title>LWC: /* The functions */ Space</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5489&amp;oldid=prev"/>
				<updated>2009-05-30T09:41:36Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The functions: &lt;/span&gt; Space&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:41, 30 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot; &gt;Line 32:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 32:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|3&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_savesubmission_&amp;lt;plugin name&amp;gt;|plugin_savesubmission_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|[[#plugin_savesubmission_&amp;lt;plugin name&amp;gt;|plugin_savesubmission_&amp;lt;plugin name&amp;gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|Takes the data input by the plugin submission form and populates the &amp;lt;plugin name&amp;gt;submission table with that data.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|Takes the data input by the plugin submission form and populates the &amp;lt;plugin name&amp;gt; submission table with that data.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>LWC</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5488&amp;oldid=prev</id>
		<title>LWC: Formatted and fixed</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5488&amp;oldid=prev"/>
				<updated>2009-05-30T09:40:32Z</updated>
		
		<summary type="html">&lt;p&gt;Formatted and fixed&lt;/p&gt;
&lt;a href=&quot;http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;amp;diff=5488&amp;amp;oldid=5008&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>LWC</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5008&amp;oldid=prev</id>
		<title>Dirk: fixed formatting of sample code</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5008&amp;oldid=prev"/>
				<updated>2009-05-05T09:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;fixed formatting of sample code&lt;/p&gt;
&lt;a href=&quot;http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;amp;diff=5008&amp;amp;oldid=4589&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Dirk</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=4589&amp;oldid=prev</id>
		<title>Dirk: Changed category</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=4589&amp;oldid=prev"/>
				<updated>2008-05-10T20:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Changed category&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:18, 10 May 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l314&quot; &gt;Line 314:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 314:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if found.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if found.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Plugin_Developers_Handbook&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Plugin Development&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dirk</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=2726&amp;oldid=prev</id>
		<title>Tomw at 14:00, 1 July 2004</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=2726&amp;oldid=prev"/>
				<updated>2004-07-01T14:00:03Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 14:00, 1 July 2004&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l313&quot; &gt;Line 313:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 313:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;extraneous data (that should not exist in most cases) and that data is removed&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;extraneous data (that should not exist in most cases) and that data is removed&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if found.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if found.&amp;#160; As of now the return value for this function is ignored.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Plugin_Developers_Handbook]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tomw</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=134&amp;oldid=prev</id>
		<title>Tomw at 13:43, 30 June 2004</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=134&amp;oldid=prev"/>
				<updated>2004-06-30T13:43:13Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This section will describe and document how to enable your plugin to use the&lt;br /&gt;
Geeklog moderation engine.  This set of functions is optional when creating your&lt;br /&gt;
plugin, but should be used when your plugin has functionality that includes &lt;br /&gt;
submitting of an item that needs to be reviewed by a site admin or plugin admin &lt;br /&gt;
before posting to the site.  The Geeklog (GL) developers have made the implementation of this &lt;br /&gt;
API very straight forward and enabled the API calls into the moderation related &lt;br /&gt;
core programs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE: '''You will need to be using Geeklog version 1.3.7 or apply the &lt;br /&gt;
changes noted in the appendix to successfully use the Moderation API's, though&lt;br /&gt;
some functionality may work with previous versions of Geeklog.  The changes with &lt;br /&gt;
1.3.7 release include the following programs:  moderation.php, submit.php, plugin.class.php and lib-plugins.php.&lt;br /&gt;
Refer to the appendix if you have a previous release and want to review the needed changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are six (6) plugin functions that are required for the moderation plugin&lt;br /&gt;
and two (2) optional functions.  The example functions that are provided can be &lt;br /&gt;
used as guide, but they will required some changes to make them work for your plugin.  &lt;br /&gt;
The following table summarizes the functions:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellPadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th width=&amp;quot;4%&amp;quot;&amp;gt; &amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th width=&amp;quot;32%&amp;quot;&amp;gt;Function&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Description of Function&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot;&amp;gt;plugin_ismoderator_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Checks if the current user has rights to moderate for the plugin and returns true if this is the case, false otherwise.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot; &amp;gt;plugin_submissioncount_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td &amp;gt;Calculates the current number of submissions awaiting moderation and returns that number.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot; &amp;gt;plugin_savesubmission_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td &amp;gt;Takes the data input by the plugin submission form and populates the &amp;lt;plugin name&amp;gt;submission table with that data.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot;&amp;gt;plugin_moderationvalues_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Returns a list of important moderation values.  The list contains (in order): the row 'id' label, the main plugin table name, comma separated string of moderation fields, and the plugin submission table name.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot; &amp;gt;plugin_itemlist_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td &amp;gt;Uses the plugin class to return data required by moderation.php to list plugin objects that need to be moderated.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot; &amp;gt;plugin_submit_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td &amp;gt;Returns a string containing the HTML to display the plugin submission form.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot;&amp;gt;plugin_moderationapprove_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;This optional function supplements moderation.php.  While moderation.php actually moves data from the &amp;lt;plugin name&amp;gt;submission table to the main &amp;lt;plugin name&amp;gt; table, this function executes all other submission approval tasks including any other database updates required by your plugin.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;4%&amp;quot; align=&amp;quot;center&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td width=&amp;quot;32%&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;plugin_moderationdelete_&amp;lt;plugin name&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td height=&amp;quot;29&amp;quot;&amp;gt;This optional function supplements moderation.php.  While moderation.php actually removes data from the &amp;lt;plugin name&amp;gt;submission table, this function executes all other submission removal tasks including any other database updates required by your plugin.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to call the Moderation Engine ===&lt;br /&gt;
&lt;br /&gt;
After you implement the moderation functions in your plugin, you will need to&lt;br /&gt;
call the Geeklog moderation engine or program to create or moderate the submission.&lt;br /&gt;
This can be done by adding a link or button which redirects the user to submit.php&lt;br /&gt;
or moderate.php with the necessary parameters from your plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The example below was used by the Mailing Lists plugin to link to the 'submit&lt;br /&gt;
new mailing list' page.  The link to submit.php needs to be passed with the parameter&lt;br /&gt;
'''type''' to indicate which plugin's submission form should be displayed.  The &lt;br /&gt;
variable $retval is assigned the formatted link which will be displayed as a &lt;br /&gt;
link in the plugin display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$retval = &amp;quot;&amp;lt;a href='&amp;quot; . $_CONF['site_url'] . &amp;quot;/submit.php?type=lists'&amp;gt;&amp;quot; . $LANG_LISTS['SUBMITLIST'] . &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Admin interaction with the Moderation Engine:''' Once all the moderation&lt;br /&gt;
functions are implemented, the 'Submissions' link in the admin block will include&lt;br /&gt;
a list of all submissions to be moderated (they can be approved, removed or &lt;br /&gt;
edited).  You must write you're own submission edit function located in&lt;br /&gt;
$_CONF['site_admin_url'] . '/plugins/&amp;lt;plugin name&amp;gt;/&amp;lt;plugin name&amp;gt;.php.&lt;br /&gt;
It will be passed the http variables id=&amp;lt;item id&amp;gt; and mode=editsubmission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugin database changes ===&lt;br /&gt;
&lt;br /&gt;
The table &amp;lt;plugin name&amp;gt;submission must be the name of your submission &lt;br /&gt;
table.  This table can only contain a proper subset of the columns from the main &lt;br /&gt;
&amp;lt;plugin name&amp;gt; table.  This allows the moderation.php script to &lt;br /&gt;
automatically copy those columns from the submission to the main table upon&lt;br /&gt;
approval.  All data in columns of the submission table that are not in the main&lt;br /&gt;
table will be lost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Function details and examples ===&lt;br /&gt;
&lt;br /&gt;
This explanation of the plugin moderation API functions will use the Mailing&lt;br /&gt;
Lists plugin for examples and give a detailed description of each function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plugin_ismoderator_lists() {&lt;br /&gt;
    global $_USER, $_TABLES;&lt;br /&gt;
    return SEC_hasRights('lists.admin');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1) The '''''plugin_ismoderator'''''  function simply returns TRUE if &lt;br /&gt;
the current user has moderation privileges for the plugin.  In the example&lt;br /&gt;
to the right, The mailing lists plugin simply uses the security function &lt;br /&gt;
SEC_hasRights to determine if a user has the required rights.  The lists.admin &lt;br /&gt;
permission was installed with the plugin.  You could use your own SQL query or some &lt;br /&gt;
other criteria to determine access rights.&lt;br /&gt;
&lt;br /&gt;
function plugin_submissioncount_lists() {&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
    return DB_count($_TABLES['listssubmission']);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
2) The''''' plugin_submissioncount''''' function returns the number of &lt;br /&gt;
submissions for this plugin that are awaiting moderation.  This value is used&lt;br /&gt;
to indicate the number of waiting submissions in the admin block.  A DB_count()&lt;br /&gt;
on the plugin submission table is usually sufficient for this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function plugin_savesubmission_lists($A) {&lt;br /&gt;
    global $_TABLES, $_USER, $_CONF;&lt;br /&gt;
&lt;br /&gt;
    // check for missing fields&lt;br /&gt;
    if (empty($A['ml_name']) || empty($A['ml_descr'])) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (empty($_USER['uid'])) {&lt;br /&gt;
        $owner_id = 1;&lt;br /&gt;
    } else {&lt;br /&gt;
        $owner_id = $_USER['uid'];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (SEC_hasRights('links.admin')) {&lt;br /&gt;
        $result = DB_getItem($_TABLES['groups'], '*', &amp;quot;grp_name = 'lists Admin'&amp;quot;);&lt;br /&gt;
        if ($_CONF['listsarchive'] == 'optional') {&lt;br /&gt;
            $archive = $_CONF['listsarchivedefault'];&lt;br /&gt;
        } elseif ($_CONF['listsarchive'] == 'no') {&lt;br /&gt;
            $archive = 0;&lt;br /&gt;
        } else {     // $_CONF['listsarchive'] == 'yes'&lt;br /&gt;
            $archive = 1;&lt;br /&gt;
        }&lt;br /&gt;
        DB_save($_TABLES['lists'], 'ml_id, ml_name, ml_descr, html, archive, owner_id, group_id',&lt;br /&gt;
                &amp;quot;'&amp;quot; . COM_makeSid() . &amp;quot;', '&amp;quot; . $A['ml_name'] . &amp;quot;', '&amp;quot; . $A['ml_descr'] &lt;br /&gt;
              . &amp;quot;', &amp;quot; . $_CONF['listshtml'] . &amp;quot;, $archive, $owner_id, &amp;quot; . $result['grp_id']);&lt;br /&gt;
    } elseif ($_CONF['listssubmission'] == 1) {&lt;br /&gt;
        DB_save($_TABLES['listssubmission'],&lt;br /&gt;
                'ml_id, ml_name, ml_descr',&lt;br /&gt;
                &amp;quot;'&amp;quot; . COM_makeSid() . &amp;quot;', '&amp;quot; . $A['ml_name'] . &amp;quot;', '&amp;quot; &lt;br /&gt;
              . $A['ml_descr'] . &amp;quot;'&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (DB_error()) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) The '''''plugin_savesubmission''''' function takes data entered into&lt;br /&gt;
the submission form and saves it to the submission table.  Optionally, this function &lt;br /&gt;
can use different logic for an admin or power user as seen in the Mailing Lists Plugin.  &lt;br /&gt;
In addition to saving the information to the plugin's submission table, it must &lt;br /&gt;
also check data entered for validity.   Upon failure the function should return false &lt;br /&gt;
or redirect to the submission form.  If successful, the function should redirect &lt;br /&gt;
to a relevant page, or return true.  In GL 1.3.7 the plugin API expects the function &lt;br /&gt;
to do a redirect (COM_refresh()).  If it does not, a successful return from the function &lt;br /&gt;
will redirect the user back to the GL home page.&lt;br /&gt;
&lt;br /&gt;
function plugin_moderationvalues_lists() {&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
    return array('ml_id', $_TABLES['lists'], 'ml_id, ml_name, ml_descr', $_TABLES['listssubmission']);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) This '''''plugin_moderationvalues''''' function returns important information used by the&lt;br /&gt;
Plugin API to handle plugin submissions.  It must return an array consisting&lt;br /&gt;
of the main column id (ml_id), the main table name ($_TABLES['lists']), a comma&lt;br /&gt;
separated list of columns that will be copied from the plugin submission table&lt;br /&gt;
to the main table (ml_id, ml_name, ml_descr), and the name of the submission&lt;br /&gt;
table ($_TABLE['listssubmission']).  This information is used to automatically&lt;br /&gt;
copy information from the plugin submission table to the plugin main table when&lt;br /&gt;
a submission is approved.&lt;br /&gt;
&lt;br /&gt;
function plugin_itemlist_lists() {&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    if (plugin_ismoderator_lists()) {&lt;br /&gt;
        $plugin = new Plugin();&lt;br /&gt;
        $plugin-&amp;gt;submissionlabel = 'Mailing List Submissions';&lt;br /&gt;
        $plugin-&amp;gt;getsubmissionssql = SELECT ml_id as id, ml_name, ml_descr FROM  &lt;br /&gt;
                                   . $_TABLES['listssubmission'];&lt;br /&gt;
        $plugin-&amp;gt;addSubmissionHeading('List Name');&lt;br /&gt;
        $plugin-&amp;gt;addSubmissionHeading('List Description');&lt;br /&gt;
&lt;br /&gt;
        return $plugin;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) The function '''''plugin_itemlist''''' returns a Plugin() class containing information&lt;br /&gt;
that will displayed on the moderation.php page.  The following member variables&lt;br /&gt;
of the Plugin class must be filled out:&lt;br /&gt;
&lt;br /&gt;
*'''submissionlabel:''' The title that indicate the plugin submission section.&lt;br /&gt;
*'''getsubmissionsql:''' An SQL query that will select all the data that will &lt;br /&gt;
        be displayed in the plugin submission section.  NOTE: one item (the unique&lt;br /&gt;
        id column) must be labeled id ('as id').&lt;br /&gt;
*'''addSubmissionHeading():'''  This function must be called once for every field&lt;br /&gt;
        besides the one labeled id.  The parameter passed should be the column &lt;br /&gt;
        name to be displayed.&lt;br /&gt;
&lt;br /&gt;
function plugin_submit_lists() {&lt;br /&gt;
    global $_CONF, $LANG12, $HTTP_POST_VARS;&lt;br /&gt;
&lt;br /&gt;
    if ($_CONF['listssubmission'] == 0 &amp;amp;amp;&amp;amp;amp; !SEC_hasRights('lists.admin')) {&lt;br /&gt;
        return &amp;quot;Submission queue disabled for mailing lists&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($HTTP_POST_VARS['mode'] == $LANG12[32]) { // preview&lt;br /&gt;
        $A = $HTTP_POST_VARS;&lt;br /&gt;
    $ml_id = $A['ml_id'];&lt;br /&gt;
    } else {&lt;br /&gt;
        $ml_id = COM_makesid();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $template = new Template($_CONF['path'] . &amp;quot;plugins/lists/templates/public&amp;quot;);&lt;br /&gt;
    $template-&amp;gt;set_file(array('form' =&amp;gt; 'submit_form.thtml'));&lt;br /&gt;
    $template-&amp;gt;set_var('site_url', $_CONF['site_url']);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_name', 'List Name');&lt;br /&gt;
    $template-&amp;gt;set_var('ml_name', $A['ml_name']);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_descr', 'Description');&lt;br /&gt;
    $template-&amp;gt;set_var('ml_descr', $A['ml_descr']);&lt;br /&gt;
    $template-&amp;gt;set_var('ml_id', $ml_id);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_preview', $LANG12[32]);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_save', $LANG12[8]);&lt;br /&gt;
&lt;br /&gt;
    return $template-&amp;gt;parse('output', 'form');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
6) The function '''''plugin_submit''''' creates HTML that contains the submission&lt;br /&gt;
form for the plugin.  It is recommended to use the GL template functionality as&lt;br /&gt;
shown here to create the form.  See the section of this manual on templates for &lt;br /&gt;
more information.  When creating the form, be sure to include fields for each&lt;br /&gt;
variable you would like the user to fill along with preview and submit buttons.&lt;br /&gt;
&lt;br /&gt;
function plugin_moderationapprove_lists($id) {&lt;br /&gt;
    global $_TABLES, $_USER, $_CONF;&lt;br /&gt;
&lt;br /&gt;
    $result = DB_query(&amp;quot;SELECT * FROM &amp;quot; . $_TABLES['groups'] &lt;br /&gt;
                     . &amp;quot; WHERE grp_name = 'lists Admin'&amp;quot;);&lt;br /&gt;
    $group  = DB_fetchArray($result);&lt;br /&gt;
    if ($_CONF['listsarchive'] == 'optional') {&lt;br /&gt;
        $archive = $_CONF['listsarchivedefault'];&lt;br /&gt;
    } elseif ($_CONF['listsarchive'] == 'no') {&lt;br /&gt;
        $archive = 0;&lt;br /&gt;
    } else {     // $_CONF['listsarchive'] == 'yes'&lt;br /&gt;
        $archive = 1;&lt;br /&gt;
    }&lt;br /&gt;
    $sql = &amp;quot;UPDATE &amp;quot; . $_TABLES['lists'] . &amp;quot; SET owner_id = &amp;quot; . $_USER['uid'] &lt;br /&gt;
         . &amp;quot;, group_id = &amp;quot; . $group['grp_id'] . &amp;quot;, html = &amp;quot; . $_CONF['listshtml']&lt;br /&gt;
         . &amp;quot;, archive = $archive WHERE ml_id = '$id'&amp;quot;;&lt;br /&gt;
    $result = DB_query($sql);&lt;br /&gt;
&lt;br /&gt;
    if (DB_error()) {&lt;br /&gt;
       return 'Error';&lt;br /&gt;
    }&lt;br /&gt;
    return '';&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
7) Although the moderation.php script takes care of the work&lt;br /&gt;
of actually moving data from the plugin submission table to the main plugin table,&lt;br /&gt;
often times a plugin requires more to be done to the plugin tables or for other&lt;br /&gt;
information to be updated.  GL provides the function '''''plugin_moderationapprove&lt;br /&gt;
'''''for these tasks.  In the case of the lists plugin, the main plugin table is updated&lt;br /&gt;
with additional data that it is not desirable for a user to enter.  Instead&lt;br /&gt;
this function takes care of placing that information into the table.  As of now&lt;br /&gt;
the return value for this function is ignored.&lt;br /&gt;
&lt;br /&gt;
function plugin_moderationdelete_lists($id) {&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    // these tables should not contain any rows with ml_id = $id&lt;br /&gt;
    // this is done 'just in case'&lt;br /&gt;
    DB_delete($_TABLES['listsubscriptions'], 'ml_id', $id);&lt;br /&gt;
    DB_delete($_TABLES['listarchive'], 'ml_id', $id);&lt;br /&gt;
    DB_delete($_TABLES['listpermissions'], 'ml_id', $id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
8) Although the moderation.php script takes care of the work&lt;br /&gt;
of actually removing data from the plugin submission table for a submission &lt;br /&gt;
deletion, often times a plugin requires more to be done to the plugin tables or for other&lt;br /&gt;
information to be updated.  GL provides the function '''''plugin_moderationdelete'''''&lt;br /&gt;
for these tasks.  In the case of the lists plugin, tables are checked for &lt;br /&gt;
extraneous data (that should not exist in most cases) and that data is removed&lt;br /&gt;
if found.  As of now the return value for this function is ignored.&lt;/div&gt;</summary>
		<author><name>Tomw</name></author>	</entry>

	</feed>