Browse files

Bringing jforum source to guj

  • Loading branch information...
1 parent 6da8a37 commit b9bcbbc74153a870b928c1f698f5a6cf7b3ebf76 erich committed Feb 22, 2011
Showing with 19,493 additions and 0 deletions.
  1. +61 −0 .classpath
  2. +3 −0 .settings/org.eclipse.wst.common.component
  3. +7 −0 ChangeLog.htm
  4. +7 −0 Documentation.htm
  5. +7 −0 How to Install.htm
  6. +39 −0 License.txt
  7. +7 −0 Upgrading.html
  8. +520 −0 WEB-INF/config/SystemGlobals.properties
  9. +276 −0 WEB-INF/config/bb_config.xml
  10. +244 −0 WEB-INF/config/clickstream-jforum.xml
  11. +760 −0 WEB-INF/config/database/generic/generic_queries.sql
  12. +149 −0 WEB-INF/config/database/hsqldb/hsqldb.sql
  13. +180 −0 WEB-INF/config/database/hsqldb/hsqldb_data_dump.sql
  14. +561 −0 WEB-INF/config/database/hsqldb/hsqldb_db_struct.sql
  15. +19 −0 WEB-INF/config/database/mysql/mysql.properties
  16. +1 −0 WEB-INF/config/database/mysql/mysql.sql
  17. +17 −0 WEB-INF/config/database/mysql/mysql_323.sql
  18. +8 −0 WEB-INF/config/database/mysql/mysql_40.sql
  19. +175 −0 WEB-INF/config/database/mysql/mysql_data_dump.sql
  20. +555 −0 WEB-INF/config/database/mysql/mysql_db_struct.sql
  21. +18 −0 WEB-INF/config/database/oracle/oracle.properties
  22. +287 −0 WEB-INF/config/database/oracle/oracle.sql
  23. +141 −0 WEB-INF/config/database/oracle/oracle_data_dump.sql
  24. +1 −0 WEB-INF/config/database/oracle/oracle_data_jforum_posts_text_post_text_blob.txt
  25. +669 −0 WEB-INF/config/database/oracle/oracle_db_struct.sql
  26. +120 −0 WEB-INF/config/database/oracle/oracle_drop_tables.sql
  27. +16 −0 WEB-INF/config/database/postgresql/postgresql.properties
  28. +132 −0 WEB-INF/config/database/postgresql/postgresql.sql
  29. +180 −0 WEB-INF/config/database/postgresql/postgresql_data_dump.sql
  30. +549 −0 WEB-INF/config/database/postgresql/postgresql_db_struct.sql
  31. +60 −0 WEB-INF/config/database/postgresql/postgresql_drop_tables.sql
  32. +14 −0 WEB-INF/config/database/sqlserver/sqlserver.properties
  33. +246 −0 WEB-INF/config/database/sqlserver/sqlserver.sql
  34. +170 −0 WEB-INF/config/database/sqlserver/sqlserver_data_dump.sql
  35. BIN WEB-INF/config/database/sqlserver/sqlserver_db_struct.sql
  36. +14 −0 WEB-INF/config/database/sqlserver2000/sqlserver2000.properties
  37. +197 −0 WEB-INF/config/database/sqlserver2000/sqlserver2000.sql
  38. +157 −0 WEB-INF/config/database/sqlserver2000/sqlserver2000_data_dump.sql
  39. +597 −0 WEB-INF/config/database/sqlserver2000/sqlserver2000_db_struct.sql
  40. +39 −0 WEB-INF/config/jboss-cache-cluster.xml
  41. +7 −0 WEB-INF/config/jboss-cache-local.xml
  42. +943 −0 WEB-INF/config/languages/de_DE.properties
  43. +1,025 −0 WEB-INF/config/languages/en_US.properties
  44. +950 −0 WEB-INF/config/languages/hu_HU.properties
  45. +893 −0 WEB-INF/config/languages/it_IT.properties
  46. +9 −0 WEB-INF/config/languages/locales.properties
  47. +945 −0 WEB-INF/config/languages/nb_NO.properties
  48. +944 −0 WEB-INF/config/languages/pt_BR.properties
  49. +952 −0 WEB-INF/config/languages/pt_PT.properties
  50. +1,115 −0 WEB-INF/config/languages/zh_CN.properties
  51. +1,117 −0 WEB-INF/config/languages/zh_TW.properties
  52. +35 −0 WEB-INF/config/modulesMapping.properties
  53. +172 −0 WEB-INF/config/permissions.xml
  54. +24 −0 WEB-INF/config/quartz-jforum.properties
  55. +159 −0 WEB-INF/config/templatesMapping.properties
  56. +175 −0 WEB-INF/config/urlPattern.properties
  57. BIN WEB-INF/lib/activation.jar
  58. BIN WEB-INF/lib/bsh-2.0b4.jar
  59. BIN WEB-INF/lib/c3p0-0.9.1-pre9.jar
  60. BIN WEB-INF/lib/commons-codec-1.3.jar
  61. BIN WEB-INF/lib/commons-httpclient-3.0-rc3.jar
  62. BIN WEB-INF/lib/commons-io-1.1.jar
  63. BIN WEB-INF/lib/commons-lang-2.3.jar
  64. BIN WEB-INF/lib/commons-logging-api.jar
  65. BIN WEB-INF/lib/concurrent.jar
  66. BIN WEB-INF/lib/ehcache-1.1.jar
  67. BIN WEB-INF/lib/freemarker-2.3.9.jar
  68. BIN WEB-INF/lib/hsqldb-1.8.0.1.jar
  69. BIN WEB-INF/lib/htmlparser-1.5.jar
  70. BIN WEB-INF/lib/jaxen.jar
  71. BIN WEB-INF/lib/jboss-cache-1.2.4.jar
  72. BIN WEB-INF/lib/jboss-common.jar
  73. BIN WEB-INF/lib/jboss-jmx.jar
  74. BIN WEB-INF/lib/jboss-system.jar
  75. BIN WEB-INF/lib/jcaptcha-all-1.0-RC2.0.1.jar
  76. BIN WEB-INF/lib/jdom.jar
  77. BIN WEB-INF/lib/jgroups-all-2.2.9-beta2.jar
  78. BIN WEB-INF/lib/jtds-1.2.2.jar
  79. BIN WEB-INF/lib/log4j-1.2.12.jar
  80. BIN WEB-INF/lib/lucene-analyzers-2.2.0.jar
  81. BIN WEB-INF/lib/lucene-core-2.2.0.jar
  82. BIN WEB-INF/lib/lucene-highlighter-2.2.0.jar
  83. BIN WEB-INF/lib/mail.jar
  84. BIN WEB-INF/lib/mysql-connector-java-5.0.3-bin.jar
  85. BIN WEB-INF/lib/ojdbc14.jar
  86. BIN WEB-INF/lib/postgresql-8.0-313.jdbc3.jar
  87. BIN WEB-INF/lib/quartz-1.5.1.jar
  88. BIN WEB-INF/lib/xalan.jar
  89. BIN WEB-INF/lib/xercesImpl.jar
  90. BIN WEB-INF/lib/xml-apis.jar
  91. BIN WEB-INF/lib/xmlrpc.jar
  92. BIN WEB-INF/lib/xom-1.0.jar
  93. +45 −0 WEB-INF/log4j.xml
  94. +90 −0 WEB-INF/web.xml
  95. +3 −0 build.properties-example
  96. +166 −0 build.xml
  97. +1 −0 images/avatar/readme.txt
  98. BIN images/smilies/0320a00cb4bb5629ab9fc2bc1fcc4e9e.gif
  99. BIN images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif
  100. BIN images/smilies/1069449046bcd664c21db15b1dfedaee.gif
  101. BIN images/smilies/136dd33cba83140c7ce38db096d05aed.gif
  102. BIN images/smilies/1cfd6e2a9a2c0cf8e74b49b35e2e46c7.gif
  103. BIN images/smilies/2786c5c8e1a8be796fb2f726cca5a0fe.gif
  104. BIN images/smilies/283a16da79f3aa23fe1025c96295f04f.gif
  105. BIN images/smilies/2e207fad049d4d292f60607f80f05768.gif
  106. BIN images/smilies/385970365b8ed7503b4294502a458efa.gif
  107. BIN images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif
  108. BIN images/smilies/47941865eb7bbc2a777305b46cc059a2.gif
  109. BIN images/smilies/49869fe8223507d7223db3451e5321aa.gif
  110. BIN images/smilies/499fd50bc713bfcdf2ab5a23c00c2d62.gif
  111. BIN images/smilies/69934afc394145350659cd7add244ca9.gif
  112. BIN images/smilies/8a80c6485cd926be453217d59a84a888.gif
  113. BIN images/smilies/8f7fb9dd46fb8ef86f81154a4feaada9.gif
  114. BIN images/smilies/908627bbe5e9f6a080977db8c365caff.gif
  115. BIN images/smilies/9293feeb0183c67ea1ea8c52f0dbaf8c.gif
  116. BIN images/smilies/97ada74b88049a6d50a6ed40898a03d7.gif
  117. BIN images/smilies/9d71f0541cff0a302a0309c5079e8dee.gif
  118. BIN images/smilies/b2eb59423fbf5fa39342041237025880.gif
  119. BIN images/smilies/c30b4198e0907b23b8246bdd52aa1c3c.gif
  120. BIN images/smilies/d6741711aa045b812616853b5507fd2a.gif
  121. BIN images/smilies/e78feac27fa924c4d0ad6cf5819f3554.gif
  122. BIN images/smilies/e8a506dc4ad763aca51bec4ca7dc8560.gif
  123. BIN images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif
  124. BIN images/transp.gif
  125. +18 −0 index.htm
  126. +1 −0 install.jsp
  127. BIN jforum_model.gif
  128. BIN jforum_model.vsd
  129. +25 −0 latest_version.txt
  130. BIN lib/jargs-1.0.jar
  131. +168 −0 src/net/jforum/C3P0PooledConnection.java
  132. +149 −0 src/net/jforum/Command.java
  133. +281 −0 src/net/jforum/ConfigLoader.java
  134. +384 −0 src/net/jforum/ControllerUtils.java
  135. +150 −0 src/net/jforum/DBConnection.java
  136. +112 −0 src/net/jforum/DataSourceConnection.java
  137. +86 −0 src/net/jforum/ForumSessionListener.java
  138. +107 −0 src/net/jforum/ForumStartup.java
  139. +173 −0 src/net/jforum/InstallServlet.java
  140. +318 −0 src/net/jforum/JForum.java
  141. +163 −0 src/net/jforum/JForumBaseServlet.java
  142. +332 −0 src/net/jforum/JForumExecutionContext.java
  143. +53 −0 src/net/jforum/PooledConnection.java
Sorry, we could not display the entire diff because too many files (1,543) changed.
View
61 .classpath
@@ -3,6 +3,9 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="src" path="test"/>
+ <classpathentry kind="src" path="tools/phpbb2jforum/src"/>
+ <classpathentry kind="src" path="tools/luceneIndexer"/>
+ <classpathentry kind="src" path="tests/core"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="owner.project.facets" value="jst.java"/>
@@ -15,5 +18,63 @@
<classpathentry kind="lib" path="lib/servlet-api.jar"/>
<classpathentry kind="lib" path="lib/test/junit-4.8.2.jar"/>
<classpathentry kind="lib" path="lib/test/mockito-all-1.8.5.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/activation.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/bsh-2.0b4.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/c3p0-0.9.1-pre9.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/commons-codec-1.3.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/commons-httpclient-3.0-rc3.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/commons-io-1.1.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/commons-lang-2.3.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/commons-logging-api.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/concurrent.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/ehcache-1.1.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/freemarker-2.3.9.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/hsqldb-1.8.0.1.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/htmlparser-1.5.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jaxen.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jboss-cache-1.2.4.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jboss-common.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jboss-jmx.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jboss-system.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jcaptcha-all-1.0-RC2.0.1.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jdom.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jgroups-all-2.2.9-beta2.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/jtds-1.2.2.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/log4j-1.2.12.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/lucene-analyzers-2.2.0.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/lucene-core-2.2.0.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/lucene-highlighter-2.2.0.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/mail.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/mysql-connector-java-5.0.3-bin.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/ojdbc14.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/postgresql-8.0-313.jdbc3.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/quartz-1.5.1.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/xalan.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/xercesImpl.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/xml-apis.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/xmlrpc.jar"/>
+ <classpathentry kind="lib" path="WEB-INF/lib/xom-1.0.jar"/>
+ <classpathentry kind="lib" path="lib/jargs-1.0.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/activation.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/commons-lang-2.0.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/commons-logging-api.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/ecs.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/freshcookies-security-0.31.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/java2html.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/jaxen.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/jdom.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/jrcs-diff.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/JSPWiki.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/log4j.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/lucene-highlighter.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/lucene.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/mail.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/multipartrequest.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/mysql-connector-java-5.0.3-bin.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/nekohtml.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/oro.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/oscache.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/sandler.jar"/>
+ <classpathentry kind="lib" path="www/website/WEB-INF/lib/xmlrpc.jar"/>
<classpathentry kind="output" path="webapp/WEB-INF/classes"/>
</classpath>
View
3 .settings/org.eclipse.wst.common.component
@@ -5,6 +5,9 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/test"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/tools/phpbb2jforum/src"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/tools/luceneIndexer"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/tests/core"/>
<property name="context-root" value="guj.com.br"/>
<property name="java-output-path"/>
</wb-module>
View
7 ChangeLog.htm
@@ -0,0 +1,7 @@
+<html>
+<body>
+<script type="text/javascript">
+document.location = "http://www.jforum.net/doc/NewFeatures2.1.8";
+</script>
+</body>
+</html>
View
7 Documentation.htm
@@ -0,0 +1,7 @@
+<html>
+<body>
+<script type="text/javascript">
+document.location = "http://www.jforum.net/doc";
+</script>
+</body>
+</html>
View
7 How to Install.htm
@@ -0,0 +1,7 @@
+<html>
+<body>
+<script type="text/javascript">
+document.location = "http://www.jforum.net/install.jsp";
+</script>
+</body>
+</html>
View
39 License.txt
@@ -0,0 +1,39 @@
+ Copyright (c) JForum Team
+ All rights reserved.
+
+ Redistribution and use in source and binary forms,
+ with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1) Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+ 2) Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and
+ the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ 3) Neither the name of "Rafael Steil" nor
+ the names of its contributors may be used to endorse
+ or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+ HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
+
+ The JForum Project
+ http://www.jforum.net
View
7 Upgrading.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<script type="text/javascript">
+document.location = "http://www.jforum.net/doc/UpgradingFrom2.1.7To2.1.8";
+</script>
+</body>
+</html>
View
520 WEB-INF/config/SystemGlobals.properties
@@ -0,0 +1,520 @@
+# JForum default configuration options
+#
+# If you are a developer and want to specify options specific to your
+# machine, like database driver and password, that should not be
+# commited to the CVS, please create a file named
+# jforum-custom.conf under WEB-INF/config and put the custom
+# keys and values there.
+#
+# Version: $Id: SystemGlobals.properties,v 1.176 2007/09/25 23:38:48 rafaelsteil Exp $
+
+#####################
+# GENERAL SETTINGS
+#####################
+forum.link = http://localhost:8080/jforum
+homepage.link = http://localhost:8080
+forum.name = My Forum
+forum.page.title = ${forum.name} - your board description
+forum.page.metatag.keywords = some keywords for your board
+forum.page.metatag.description = here goes the board description
+
+# If "true", all redirect URLs will include the value of "redirect.base.url" as prefix
+redirect.absolute.paths = false
+
+# This property is only used when redirect.absolute.paths = true. You can use
+# it to force a redirect prefix other than forum.link. It is specially useful
+# when using proxied.context.path
+redirect.base.url = ${forum.link}
+
+# In case you're using mod_proxy or something similar, you can set this
+# property to force JForum to use a specific context path.
+#
+# Leave it blank if you don't need to use it.
+#
+# Note that if you set this property, you will also want to properly
+# set "forum.link" to use the same context path.
+proxied.context.path =
+
+# Default language to use. Can be any value
+# existent at config/languages/locales.properties
+i18n.board.default = en_US
+
+# Security Hash. You should change this value just before the
+# first run of your forum. The value can be anything and *should*
+# very a large and complex sequence. This value will be used to
+# increase security
+user.hash.sequence = 04904SDFfhfh449911-**%$nvMDFHDhskda6546546as4df4ads6f54ads654
+
+# Page encoding
+encoding = UTF-8
+
+# Set it to "true" to require that Moderators log their actions
+moderation.logging.enabled = true
+
+#####################
+# DATABASE SETTINGS
+#####################
+# Database type to use
+database.driver.name = mysql
+
+# Can be net.jforum.SimpleConnection, net.jforum.PooledConnection
+# or net.jforum.DataSourceConnection
+database.connection.implementation = net.jforum.PooledConnection
+
+# Enable / Disable transactions
+database.use.transactions = true
+
+# DataSource name, in case of using net.jforum.core.db.DataSourceConnection
+database.datasource.name = java:/MySqlDS
+
+# Time in seconds to healthcheck all database connections
+database.ping.delay = 3600
+
+# Extra parameters to pass to C3P0 (only when using PooledConnection)
+# Form is key=value;key2=value2;keyN=valueN
+c3p0.extra.params = checkoutTimeout=120000;debugUnreturnedConnectionStackTraces=false;unreturnedConnectionTimeout=180
+
+# ######
+# Cache
+# ######
+topic.cache.enabled = true
+security.cache.enabled = true
+topicsPerPage = 15
+postsPerPage = 15
+usersPerPage = 30
+hot.topic.begin = 20
+topic.recent = 50
+topic.hottest = 50
+posts.cache.enabled = false
+posts.cache.size = 100
+
+################################
+# GENERAL BOARD CONFIGURATIONS
+################################
+# Delay (in ms) between each post from the user
+# Set it to 0 (zero) to disable the config
+posts.new.delay = 15000
+
+# If set to "true", only moderators and admins are
+# allowed to see the error stack trace when an exception
+# occurs in the board.
+stacktrace.moderators.only = false
+
+# Enable or disable registration of new users.
+registration.enabled = true
+
+dateTime.format = dd/MM/yyyy HH\:mm\:ss
+
+# RSS date and time format.
+# If you want to include the timezone, use
+#
+# EEE, d MMM yyyy HH:mm:ss z
+#
+# However, currently, JForum does not include timezone
+# when writing messages data to the database
+rss.datetime.format = EEE, d MMM yyyy HH:mm:ss
+
+# RSS
+rss.enabled = true
+
+# Proxy handling when logging in
+# If set to true, the header X-Forwarded-Host will be ignored
+# when building the redirect URL after a sucessfull login.
+# Usually useful when running behind a reverse proxy
+login.ignore.xforwardedhost = false
+
+# If true, JForum will not try to redirect the browser
+# session to the HTTP Referer (if any) after successfully
+# logging in an user
+login.ignore.referer = false
+
+# ########
+# Captcha
+# ########
+captcha.registration = false
+captcha.posts = false
+captcha.ignore.case = false
+
+captcha.width = 250
+captcha.height = 50
+
+captcha.min.words = 5
+captcha.max.words = 7
+
+captcha.min.font.size = 25
+captcha.max.font.size = 35
+
+# Allowed HTML tags to be used when posting a message
+html.tags.welcome = u, a, img, i, u, li, ul, font, br, p, b, hr
+html.attributes.welcome = src, href, size, face, color, target, rel
+
+# Allow or not relative links in the messages. If set to true,
+# links starting with / are allowed, otherwise it should start
+# with the values defined in the key html.links.allow.protocols
+html.links.allow.relative = false
+
+# Protocols allowed in the links posted in the messages. Only used
+# if html.links.allow.relative is set to false. Any value different
+# of those declared will result in an empty link.
+html.links.allow.protocols = http://, https://, mailto:, ftp://
+
+# Max length for the username
+username.max.length = 25
+
+avatar.maxHeight = 150
+avatar.maxWidth = 150
+
+# Allow or not the user to link to an external avatar
+# To disable, set to "false"
+avatar.allow.external.url = true
+
+# #########################
+# Terms Agreement / COPPA
+# #########################
+agreement.show = true
+agreement.files.path = /templates/agreement
+agreement.default.file = terms_en_US.txt
+
+# #############
+# ATTACHMENTS
+# #############
+attachments.anonymous = true
+
+# Maximum of attachments per post
+attachments.max.post = 3
+
+# Create thumbnails for attached images
+attachments.images.createthumb = true
+
+# If the image size is less than the specified
+# size, then thumbs are not created
+attachments.images.thumb.maxsize.w = 400
+attachments.images.thumb.maxsize.h = 400
+
+# If "true", tell the application to display the
+# regular download box for thumbnails as well.
+# If "false", then only the thumb will be shown
+# within the message, and then the user should
+# click on the image to download the full version
+attachments.images.thumb.box.show = true
+
+# Icon to identify topics / posts with attachments
+attachments.icon = images/icon_clip.gif
+
+# Directory to store the files
+attachments.upload.dir = upload
+attachments.store.dir = ${application.path}/${attachments.upload.dir}
+
+##################
+# MAIL SETTINGS
+##################
+mail.lostPassword.messageFile = mail/lostPassword.txt
+mail.lostPassword.subject = [${forum.name}] Password recovery
+
+# If "true", a mail will be send to users when a topic is
+# answered. To disable, set to "false"
+mail.notify.answers = true
+
+# SMTP config
+mail.sender = email@sender.address
+mail.smtp.auth = true
+mail.smtp.host = localhost
+
+# Non-SSL default port is 25. If SSL, the default por is 465.
+mail.smtp.port = 25
+
+mail.smtp.username = your@smtp.username
+mail.smtp.password = smtppassword
+
+# the period in milliseconds JForum waits before sending next mail to SMTP server.
+# Some SMTP server will response 421 if you sending a lot of mails in a very short time.
+# set it to 0 (zero) to disable it completely
+mail.smtp.delay = 2000
+
+# SSL support for SMTP. Set it to "true" if your
+# host requires that (GMail does). Don't forget
+# to change the mail.smtp.port too
+mail.smtp.ssl = false
+
+# If true, allow users to interact to the forum using any
+# email client, by just sending a message to a specific address
+mail.pop3.integration.enabled = false
+
+# If "false", deletes all messages retrieved from a POP3
+# connection. If "true", keep them in the server
+mail.pop3.debug.keep.messages = true
+
+# If the mail.smtp.host cannot be resolved, JavaMail sends a HELO
+# without an hostname - which is a violation of the SMTP protocol
+# You can set this property to force the hostname
+mail.smtp.localhost =
+
+# If "true", requires all new users to validate their email
+# addresses in order to be accepted in the system
+mail.user.email.auth = false
+
+# Can be "text" or "html"
+mail.messageFormat = text
+
+mail.charset = UTF-8
+mail.template.encoding = UTF-8
+
+mail.newAnswer.messageFile = mail/mailNewReply.txt
+mail.newAnswer.subject = [${forum.name}] Message posted: {0}
+
+mail.newPm.subject = [${forum.name}] Private Message
+mail.newPm.messageFile = mail/newPrivateMessage.txt
+
+mail.newTopic.messageFile = mail/mailNewTopic.txt
+mail.newTopic.subject = [${forum.name}] New Topic: {0}
+
+mail.activationKey.subject = [${forum.name}] Activate forum account
+mail.activationKey.messageFile = mail/activateAccount.txt
+
+mail.summary.weekly.messageFile = mail/summaryMessage.txt
+mail.summary.weekly.subject = [${forum.name}] Weekly Summary
+
+# ##############
+# Helper Sutff
+# ##############
+extension.field = extension
+
+# ##################
+# Banning of users
+# ##################
+# Set it to "true" to send "403 Forbidden" header instead of
+# displaying a nice error message to the user, in case of banning
+banlist.send.403forbidden = false
+
+# ########
+# SEARCH
+# ########
+search.indexing.enabled = true
+search.indexer.default = net.jforum.search.LuceneManager
+search.indexer.implementation = ${search.indexer.default}
+
+lucene.analyzer = org.apache.lucene.analysis.standard.StandardAnalyzer
+
+# Full path to where the index should be written. It must be writable by the
+# user who's running the webserver
+lucene.index.write.path = ${resource.dir}/jforumLuceneIndex
+
+# Used for re-indexation. It is the number of documents
+# to keep in memory before flushing them to the disk
+# Please keep in mind that a higher number means a higher memory usage
+lucene.indexer.ram.numdocs = 10000
+
+# Number of posts to retrieve on each read from the database
+# Please keep in mind that a higher number means a higher memory usage
+lucene.indexer.db.fetch.count = 50
+
+# #######
+# KARMA
+# #######
+karma.min.points = 1
+karma.max.points = 5
+
+#############################
+# SSO / User authentication
+#############################
+# Auhentication type: use one of the following options
+#
+# sso: SSO based authentication. The called class will be the one
+# specified by the key "sso.implementation", whic must be an implementation
+# of net.jforum.sso.SSO
+#
+# default: Non-SSO authentication, which relies on the key
+# "login.authenticator" to validate users. For more information, please see
+# net.jforum.sso.LoginAuthenticator and the default implementation.
+authentication.type = default
+
+# The above key will be used when "authentication.type" is set to "default"
+# Can be any implementation of net.jforum.sso.LoginAuthenticator
+#
+# For LDAP authentication, set the value to net.jforum.sso.LDAPAuthenticator. Also,
+# see the LDAP section below
+login.authenticator = net.jforum.sso.DefaultLoginAuthenticator
+
+# When using authentication.type = default, you may choose to disable
+# the automatic login feature, which will prevents users to get
+# automatic logged in when they come back to the forum
+auto.login.enabled = true
+
+# The above key will be be used then "authentication.type" is set to "sso"
+# The default implementation (used here) only checks if request.getRemoteUser()
+# is not null. This may be enough for many situations.
+sso.implementation = net.jforum.sso.RemoteUserSSO
+
+# Special attributes used when creating a new user
+# Only if auhentication.type = sso
+# The attribute name to search in the session for the password.
+sso.password.attribute = password
+
+# Same as above
+sso.email.attribute = email
+
+# The default email to use if sso.email.attribute is empty
+sso.default.email = sso@user
+
+# The default password to use if sso.password.attribute is empty
+sso.default.password = sso
+
+# Optional redirect for SSO
+#
+# If a value is set, the user will be redirected to the defined
+# URL, using the following logic:
+#
+# ${sso.redirect}?returnUrl=${forum.link} + <the original JForum URL>
+#
+# The value MUST start with the protocol (http:// or https://)
+#
+sso.redirect =
+
+# #######
+# LDAP
+# #######
+# Security protocol to use, e.g: "ssl"
+# Leave it empty (default) to let the provider figure it out
+ldap.security.protocol =
+
+# Security authentication to use. Possible values: "none", "simple", "strong",
+# "EXTERNAL" (SASL). Leave empty (default) to let the provider figure it out
+ldap.authentication =
+
+# Class that provides a LDAP factory
+ldap.factory = com.sun.jndi.ldap.LdapCtxFactory
+
+# The prefix your LDAP server requires. e.g 'uid='
+# The username supplied gets inserted just after the prefix,
+# e.g: 'uid=username' so adjust the prefix properly
+ldap.login.prefix = uid=
+
+# The suffix your LDAP server requires.
+# e.g 'ou=Users,dc=department,dc=company,dc=com'
+ldap.login.suffix = ou=Users,dc=department,dc=company,dc=com
+
+# The url of your LDAP server.
+# Notice that if your LDAP server uses SSL you will need to configure your
+# server certificate so that Java Secure Sockets Extension (JSSE) will accept it.
+# Read http://java.sun.com/products/jndi/tutorial/ldap/security/ssl.html
+ldap.server.url = ldap://localhost
+
+# Field that holds the user's email
+ldap.field.email = mail
+
+# ActiveDirectory
+# To configure LDAPAuthenticator integrating with Microsoft Active Directory. The following two keys should be necessary.
+# They are similar to ldap.login.prefix and ldap.login.suffix , but it's used when looking up user infomation
+# rather than authentication. It's used when the login Distinguished Name (DN) is formatted differently from the lookup
+# DN on some LDAP servers, for example, Microsoft Active Directory. If it's the case, you should add these keys in additional
+# to ldap.login.prefix and ldap.login.suffix .
+#
+# The following example is for configuring on Microsoft Active Directory:
+# ===========================
+# ldap.login.prefix=CN=
+# ldap.login.suffix=CN=Users,DC=jform,DC=net
+# ldap.lookup.suffix=CN=Users
+# ===========================
+ldap.lookup.prefix =
+ldap.lookup.suffix =
+
+###############################
+# INTERNAL CONFIGURATION STUFF
+###############################
+i18n.internal = en_US
+
+database.driver.config = ${config.dir}/database/${database.driver.name}/${database.driver.name}.properties
+sql.queries.driver = ${config.dir}/database/${database.driver.name}/${database.driver.name}.sql
+sql.queries.generic = ${config.dir}/database/generic/generic_queries.sql
+database.support.subqueries = false
+
+# ${application.path}, ${installation}, and ${servlet.name} are set by the web application
+resource.dir = ${application.path}/WEB-INF
+config.dir = ${resource.dir}/config
+installation.config = ${config.dir}/jforum-custom.conf
+
+# Only change these values if you know what you're doing
+anonymous.userId = 1
+defaultUserGroup = 1
+
+cache.engine.default = net.jforum.cache.DefaultCacheEngine
+cache.engine.jboss = net.jforum.cache.JBossCacheEngine
+jboss.cache.properties = ${config.dir}/jboss-cache-cluster.xml
+
+cache.engine.implementation = ${cache.engine.default}
+
+cacheable.objects = net.jforum.repository.BBCodeRepository, \
+ net.jforum.repository.RankingRepository, \
+ net.jforum.repository.SmiliesRepository, \
+ net.jforum.repository.ForumRepository, \
+ net.jforum.repository.TopicRepository, \
+ net.jforum.SessionFacade, \
+ net.jforum.repository.PostRepository, \
+ net.jforum.repository.Tpl, \
+ net.jforum.repository.RolesRepository, \
+ net.jforum.repository.SecurityRepository, \
+ net.jforum.repository.BanlistRepository
+
+# The template to use
+template.dir = default
+
+# If you change this value, is necessary to edit WEB-INF/web.xml as well
+servlet.extension = .page
+
+###########
+# COOKIES
+###########
+cookie.name.data = jforumUserId
+cookie.name.user = jforumUserInfo
+cookie.name.autologin = jforumAutoLogin
+cookie.name.userHash = jforumUserHash
+
+##################
+# OTHER SETTINGS
+##################
+tmp.dir = tmp
+cache.dir = cache
+templates.mapping = ${config.dir}/templatesMapping.properties
+locales.dir = config/languages/
+locales.names = locales.properties
+
+smilie.image.dir = images/smilies
+smilie.image.pattern = <img src\="#CONTEXT#/images/smilies/\#IMAGE\#" border\="0">
+
+useFilesystemCache = false
+avatarMaxKbSize = 25
+
+background.tasks = true
+
+clickstream.config = ${config.dir}/clickstream-jforum.xml
+quartz.config = ${config.dir}/quartz-jforum.properties
+
+# Default charset used by the servlet container.
+#
+# **It's unlikely** you will have tho change this value,
+# even if you're using a Cyrillic alphabet.
+#
+# For detailed information, please see
+# http://www.jforum.net/confluence/display/configuration/charEncodingContainer
+#
+default.container.encoding = ISO-8859-1
+
+# the period in milliseconds the config files are watched for changes
+# set it to 0 (zero) to disable it completely
+file.changes.delay = 2000
+
+# System version
+version = 2.1.8
+
+# If you have freemarker templates residing outside of the JForum webapp
+# you can add the path to the directory containing them here.
+# Add the full path to the directory.
+freemarker.extra.template.path =
+
+##########
+# Summary
+##########
+summary.enabled = false
+summary.days.before = 7
+
+jforum.version.url = http://www.jforum.net/latest_version.txt
View
276 WEB-INF/config/bb_config.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Id: bb_config.xml,v 1.35 2008/01/04 18:07:04 andowson Exp $ -->
+<bbConfig>
+ <!-- CODE -->
+ <match name="code">
+ <regex>(?s)\[code\](.*?)\[/code\]</regex>
+ <replace>
+ <![CDATA[
+ <textarea name="code" class="java" cols="60" rows="10">$1</textarea>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="code-highlight">
+ <regex>(?s)(?i)\[code=['"]?(.*?[^'"])['"]?\](.*?)\[/code\]</regex>
+ <replace>
+ <![CDATA[
+ <textarea name="code" class="$1" cols="60" rows="10">$2</textarea>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="openSimpleQuote">
+ <regex>(?i)\[quote\]</regex>
+ <replace>
+ <![CDATA[
+ <blockquote class="uncited">
+ <div>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="openQuote">
+ <regex>(?i)\[quote=['"]?(.*?[^'"])['"]?\]</regex>
+ <replace>
+ <![CDATA[
+ <blockquote>
+ <div>
+ <cite>$1 wrote:</cite>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="closeQuote">
+ <regex>(?i)\[/quote\]</regex>
+ <replace>
+ <![CDATA[
+ </div>
+ </blockquote>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- B -->
+ <match name="b">
+ <regex>(?s)(?i)\[b\](.*?)\[/b\]</regex>
+ <replace>
+ <![CDATA[
+ <b>$1</b>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- I -->
+ <match name="i">
+ <regex>(?s)(?i)\[i\](.*?)\[/i\]</regex>
+ <replace>
+ <![CDATA[
+ <i>$1</i>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- U -->
+ <match name="u">
+ <regex>(?s)(?i)\[u\](.*?)\[/u\]</regex>
+ <replace>
+ <![CDATA[
+ <u>$1</u>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- LIST -->
+ <match name="list">
+ <regex>(?s)(?i)\[list\](.*?)\[/list\]</regex>
+ <replace>
+ <![CDATA[
+ <li>$1</li>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- IMG -->
+ <match name="img" removeQuotes="true">
+ <regex>(?i)\[img\](.*?)\[/img\]</regex>
+ <replace>
+ <![CDATA[
+ <img src="$1" border="0" />
+ ]]>
+ </replace>
+ </match>
+
+ <!-- Flash -->
+ <match name="flash" removeQuotes="true">
+ <regex>(?i)\[flash\](.*?)\[/flash\]</regex>
+ <replace>
+ <![CDATA[
+ <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="750" height="500" title="flash">
+ <param name="movie" value="$1" />
+ <param name="quality" value="high" />
+ <embed src="$1" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="750" height="500" />
+ </object>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- Windows Media -->
+ <match name="wmv" removeQuotes="true">
+ <regex>(?i)\[wmv\](.*?)\[/wmv\]</regex>
+ <replace>
+ <![CDATA[
+ <object id="mediaPlayer" width="320" height="285"
+ classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
+ codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
+ standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
+ <param name="fileName" value="$1" />
+ <param name="animationatStart" value="true" />
+ <param name="transparentatStart" value="true" />
+ <param name="autoStart" value="true" />
+ <param name="showControls" value="true" />
+ <param name="loop" value="false" />
+ <embed src="$1" width="320" height="285" type="application/x-mplayer2"
+ pluginspage="http://microsoft.com/windows/mediaplayer/en/download/"
+ id="mediaPlayer" name="mediaPlayer" displaysize="4" autosize="-1"
+ bgcolor="darkblue" showcontrols="true" showtracker="-1"
+ showdisplay="0" showstatusbar="-1" videoborder3d="-1"
+ autostart="true" designtimesp="5311" loop="false">
+ </embed>
+ </object>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- Real Media -->
+ <match name="rm" removeQuotes="true">
+ <regex>(?i)\[rm\](.*?)\[/rm\]</regex>
+ <replace>
+ <![CDATA[
+ <object id="rvocx" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="320" height="240">
+ <param name="src" value="$1" />
+ <param name="autostart" value="true" />
+ <param name="controls" value="ImageWindow" />
+ <param name="console" value="video" />
+ <param name="loop" value="false" />
+ <embed src="$1" width="320" height="240"
+ type="audio/x-pn-realaudio-plugin" controls="ImageWindow" console="video" autostart="true" loop="false">
+ </embed>
+ </object>
+ <br />
+ <object id="rvocx" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="320" height="30" />
+ <param name="src" value="$1" />
+ <param name="autostart" value="true" />
+ <param name="controls" value="ControlPanel" />
+ <param name="console" value="video" />
+ <embed src="$1" width="320" height="30"
+ type="audio/x-pn-realaudio-plugin" controls="ControlPanel" console="video" autostart="true">
+ </embed>
+ </object>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- Automatic URL matching -->
+ <match name="auto-url" removeQuotes="true" alwaysProcess="true">
+ <regex>(^|[\n ]|\()([\w]+?://[^ \"\n\r\t&lt;\)\[]*)</regex>
+ <replace>
+ <![CDATA[
+ $1<a class="snap_shots" href="$2" target="_blank" rel="nofollow">$2</a>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="auto-url-simple" removeQuotes="true" alwaysProcess="true">
+ <regex>(^|[\n ]\()(www\.[^ \"\t\n\r&lt;\)\[]*)</regex>
+ <replace>
+ <![CDATA[
+ $1<a class="snap_shots" href="http://$2" target="_blank" rel="nofollow">$2</a>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="auto-ftp-simple" removeQuotes="true" alwaysProcess="true">
+ <regex>(^|[\n ]\()(ftp\.[^ \"\t\n\r&lt;\)\[]*)</regex>
+ <replace>
+ <![CDATA[
+ $1<a class="snap_shots" href="ftp://$2" target="_blank" rel="nofollow">$2</a>
+ ]]>
+ </replace>
+ </match>
+
+ <match name="auto-email" removeQuotes="true" alwaysProcess="true">
+ <regex>(^|[\n ])([a-z0-9&amp;\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)</regex>
+ <replace>
+ <![CDATA[
+ $1<a class="snap_shots" href="mailto:$2@$3">$2@$3</a>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- URL -->
+ <match name="simple-url" removeQuotes="true">
+ <regex>(?i)\[url\](.*?)\[/url\]</regex>
+ <replace>
+ <![CDATA[
+ <a class="snap_shots" href="$1" target="_new" rel="nofollow">$1</a>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- URL=?? -->
+ <match name="descriptive-url" removeQuotes="true">
+ <regex>(?i)\[url=['"]?(.*?[^'"])['"]?\](.*?)\[/url\]</regex>
+ <replace>
+ <![CDATA[
+ <a class="snap_shots" href="$1" target="_new" rel="nofollow">$2</a>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- COLOR -->
+ <match name="color" removeQuotes="true">
+ <regex>(?s)(?i)\[color=['"]?(.*?[^'"])['"]?\](.*?)\[/color\]</regex>
+ <replace>
+ <![CDATA[
+ <font color='$1'>$2</font>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- SIZE -->
+ <match name="size" removeQuotes="true">
+ <regex>(?s)(?i)\[size=['"]?(.*?[^'"])['"]?\](.*?)\[/size\]</regex>
+ <replace>
+ <![CDATA[
+ <span style="font-size: $1px; line-height: normal;">$2</span>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- Google -->
+ <match name="google">
+ <regex>(?i)\[google\](.*?)\[/google\]</regex>
+ <replace>
+ <![CDATA[
+ <a class="snap_shots" href="http://www.google.com/search?q=$1">$1</a>
+ ]]>
+ </replace>
+ </match>
+
+ <!-- YouTube -->
+ <match name="youtube">
+ <regex>
+ (?i)\[youtube\]http\:\/\/(.*?)youtube.com\/watch\?v\=(.*?)\[/youtube\]
+ </regex>
+ <replace>
+ <![CDATA[
+ <object width="425" height="350">
+ <param name="movie" value="http://$1youtube.com/v/$2"></param>
+ <param name="wmode" value="transparent"></param>
+ <embed src="http://$1youtube.com/v/$2" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed>
+ </object>
+ ]]>
+ </replace>
+ </match>
+</bbConfig>
View
244 WEB-INF/config/clickstream-jforum.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0"?>
+<clickstream>
+ <bot-host name="inktomi.com"/>
+ <bot-host name="inktomisearch.com"/>
+ <bot-host name="googlebot.com"/>
+ <bot-host name="linuxtoday.com.au"/>
+
+ <bot-agent name="acme.spider"/>
+ <bot-agent name="ahoythehomepagefinder"/>
+ <bot-agent name="alkaline"/>
+ <bot-agent name="appie"/>
+ <bot-agent name="arachnophilia"/>
+ <bot-agent name="architext"/>
+ <bot-agent name="aretha"/>
+ <bot-agent name="ariadne"/>
+ <bot-agent name="aspider"/>
+ <bot-agent name="atn.txt"/>
+ <bot-agent name="atomz"/>
+ <bot-agent name="auresys"/>
+ <bot-agent name="backrub"/>
+ <bot-agent name="bigbrother"/>
+ <bot-agent name="bjaaland"/>
+ <bot-agent name="blackwidow"/>
+ <bot-agent name="blindekuh"/>
+ <bot-agent name="bloodhound"/>
+ <bot-agent name="brightnet"/>
+ <bot-agent name="bspider"/>
+ <bot-agent name="cactvschemistryspider"/>
+ <bot-agent name="calif"/>
+ <bot-agent name="cassandra"/>
+ <bot-agent name="cgireader"/>
+ <bot-agent name="checkbot"/>
+ <bot-agent name="churl"/>
+ <bot-agent name="cmc"/>
+ <bot-agent name="collective"/>
+ <bot-agent name="combine"/>
+ <bot-agent name="conceptbot"/>
+ <bot-agent name="core"/>
+ <bot-agent name="cshkust"/>
+ <bot-agent name="cusco"/>
+ <bot-agent name="cyberspyder"/>
+ <bot-agent name="deweb"/>
+ <bot-agent name="dienstspider"/>
+ <bot-agent name="diibot"/>
+ <bot-agent name="direct_hit"/>
+ <bot-agent name="dnabot"/>
+ <bot-agent name="download_express"/>
+ <bot-agent name="dragonbot"/>
+ <bot-agent name="dwcp"/>
+ <bot-agent name="ebiness"/>
+ <bot-agent name="eit"/>
+ <bot-agent name="emacs"/>
+ <bot-agent name="emcspider"/>
+ <bot-agent name="esther"/>
+ <bot-agent name="evliyacelebi"/>
+ <bot-agent name="fdse"/>
+ <bot-agent name="felix"/>
+ <bot-agent name="ferret"/>
+ <bot-agent name="fetchrover"/>
+ <bot-agent name="fido"/>
+ <bot-agent name="finnish"/>
+ <bot-agent name="fireball"/>
+ <bot-agent name="fish"/>
+ <bot-agent name="fouineur"/>
+ <bot-agent name="francoroute"/>
+ <bot-agent name="freecrawl"/>
+ <bot-agent name="funnelweb"/>
+ <bot-agent name="gazz"/>
+ <bot-agent name="gcreep"/>
+ <bot-agent name="getbot"/>
+ <bot-agent name="geturl"/>
+ <bot-agent name="golem"/>
+ <bot-agent name="googlebot"/>
+ <bot-agent name="grapnel"/>
+ <bot-agent name="griffon"/>
+ <bot-agent name="gromit"/>
+ <bot-agent name="gulliver"/>
+ <bot-agent name="hambot"/>
+ <bot-agent name="harvest"/>
+ <bot-agent name="havindex"/>
+ <bot-agent name="hometown"/>
+ <bot-agent name="wired-digital"/>
+ <bot-agent name="htdig"/>
+ <bot-agent name="htmlgobble"/>
+ <bot-agent name="hyperdecontextualizer"/>
+ <bot-agent name="ibm"/>
+ <bot-agent name="iconoclast"/>
+ <bot-agent name="ilse"/>
+ <bot-agent name="imagelock"/>
+ <bot-agent name="incywincy"/>
+ <bot-agent name="informant"/>
+ <bot-agent name="infoseek"/>
+ <bot-agent name="infoseeksidewinder"/>
+ <bot-agent name="infospider"/>
+ <bot-agent name="inspectorwww"/>
+ <bot-agent name="intelliagent"/>
+ <bot-agent name="iron33"/>
+ <bot-agent name="israelisearch"/>
+ <bot-agent name="javabee"/>
+ <bot-agent name="jcrawler"/>
+ <bot-agent name="jeeves"/>
+ <bot-agent name="jobot"/>
+ <bot-agent name="joebot"/>
+ <bot-agent name="jubii"/>
+ <bot-agent name="jumpstation"/>
+ <bot-agent name="katipo"/>
+ <bot-agent name="kdd"/>
+ <bot-agent name="kilroy"/>
+ <bot-agent name="ko_yappo_robot"/>
+ <bot-agent name="labelgrabber.txt"/>
+ <bot-agent name="larbin"/>
+ <bot-agent name="legs"/>
+ <bot-agent name="linkscan"/>
+ <bot-agent name="linkwalker"/>
+ <bot-agent name="lockon"/>
+ <bot-agent name="logo_gif"/>
+ <bot-agent name="lycos"/>
+ <bot-agent name="macworm"/>
+ <bot-agent name="magpie"/>
+ <bot-agent name="mediafox"/>
+ <bot-agent name="merzscope"/>
+ <bot-agent name="meshexplorer"/>
+ <bot-agent name="mindcrawler"/>
+ <bot-agent name="moget"/>
+ <bot-agent name="momspider"/>
+ <bot-agent name="monster"/>
+ <bot-agent name="motor"/>
+ <bot-agent name="msn"/>
+ <bot-agent name="msnbot"/>
+ <bot-agent name="muscatferret"/>
+ <bot-agent name="mwdsearch"/>
+ <bot-agent name="myweb"/>
+ <bot-agent name="netcarta"/>
+ <bot-agent name="netmechanic"/>
+ <bot-agent name="netscoop"/>
+ <bot-agent name="newscan-online"/>
+ <bot-agent name="nhse"/>
+ <bot-agent name="nomad"/>
+ <bot-agent name="northstar"/>
+ <bot-agent name="nzexplorer"/>
+ <bot-agent name="occam"/>
+ <bot-agent name="octopus"/>
+ <bot-agent name="orb_search"/>
+ <bot-agent name="packrat"/>
+ <bot-agent name="pageboy"/>
+ <bot-agent name="parasite"/>
+ <bot-agent name="patric"/>
+ <bot-agent name="perignator"/>
+ <bot-agent name="perlcrawler"/>
+ <bot-agent name="phantom"/>
+ <bot-agent name="piltdownman"/>
+ <bot-agent name="pioneer"/>
+ <bot-agent name="pitkow"/>
+ <bot-agent name="pjspider"/>
+ <bot-agent name="pka"/>
+ <bot-agent name="plumtreewebaccessor"/>
+ <bot-agent name="poppi"/>
+ <bot-agent name="portalb"/>
+ <bot-agent name="puu"/>
+ <bot-agent name="python"/>
+ <bot-agent name="raven"/>
+ <bot-agent name="rbse"/>
+ <bot-agent name="resumerobot"/>
+ <bot-agent name="rhcs"/>
+ <bot-agent name="roadrunner"/>
+ <bot-agent name="robbie"/>
+ <bot-agent name="robi"/>
+ <bot-agent name="roverbot"/>
+ <bot-agent name="safetynetrobot"/>
+ <bot-agent name="scooter"/>
+ <bot-agent name="search_au"/>
+ <bot-agent name="searchprocess"/>
+ <bot-agent name="senrigan"/>
+ <bot-agent name="sgscout"/>
+ <bot-agent name="shaggy"/>
+ <bot-agent name="shaihulud"/>
+ <bot-agent name="sift"/>
+ <bot-agent name="simbot"/>
+ <bot-agent name="site-valet"/>
+ <bot-agent name="sitegrabber"/>
+ <bot-agent name="sitetech"/>
+ <bot-agent name="slurp"/>
+ <bot-agent name="smartspider"/>
+ <bot-agent name="snooper"/>
+ <bot-agent name="solbot"/>
+ <bot-agent name="spanner"/>
+ <bot-agent name="speedy"/>
+ <bot-agent name="spider_monkey"/>
+ <bot-agent name="spiderbot"/>
+ <bot-agent name="spiderman"/>
+ <bot-agent name="spry"/>
+ <bot-agent name="ssearcher"/>
+ <bot-agent name="suke"/>
+ <bot-agent name="sven"/>
+ <bot-agent name="tach_bw"/>
+ <bot-agent name="tarantula"/>
+ <bot-agent name="tarspider"/>
+ <bot-agent name="tcl"/>
+ <bot-agent name="techbot"/>
+ <bot-agent name="templeton"/>
+ <bot-agent name="titin"/>
+ <bot-agent name="titan"/>
+ <bot-agent name="tkwww"/>
+ <bot-agent name="tlspider"/>
+ <bot-agent name="ucsd"/>
+ <bot-agent name="udmsearch"/>
+ <bot-agent name="urlck"/>
+ <bot-agent name="valkyrie"/>
+ <bot-agent name="victoria"/>
+ <bot-agent name="visionsearch"/>
+ <bot-agent name="voyager"/>
+ <bot-agent name="vwbot"/>
+ <bot-agent name="w3index"/>
+ <bot-agent name="w3m2"/>
+ <bot-agent name="wanderer"/>
+ <bot-agent name="webbandit"/>
+ <bot-agent name="webcatcher"/>
+ <bot-agent name="webcopy"/>
+ <bot-agent name="webfetcher"/>
+ <bot-agent name="webfoot"/>
+ <bot-agent name="weblayers"/>
+ <bot-agent name="weblinker"/>
+ <bot-agent name="webmirror"/>
+ <bot-agent name="webmoose"/>
+ <bot-agent name="webquest"/>
+ <bot-agent name="webreader"/>
+ <bot-agent name="webreaper"/>
+ <bot-agent name="websnarf"/>
+ <bot-agent name="webspider"/>
+ <bot-agent name="webvac"/>
+ <bot-agent name="webwalk"/>
+ <bot-agent name="webwalker"/>
+ <bot-agent name="webwatch"/>
+ <bot-agent name="wget"/>
+ <bot-agent name="whowhere"/>
+ <bot-agent name="wmir"/>
+ <bot-agent name="wolp"/>
+ <bot-agent name="wombat"/>
+ <bot-agent name="worm"/>
+ <bot-agent name="wwwc"/>
+ <bot-agent name="wz101"/>
+ <bot-agent name="xget"/>
+ <bot-agent name="nederland.zoek"/>
+</clickstream>
View
760 WEB-INF/config/database/generic/generic_queries.sql
@@ -0,0 +1,760 @@
+# ############
+# GroupModel
+# ############
+GroupModel.selectAll = SELECT group_id, group_name, parent_id, group_description FROM jforum_groups ORDER BY group_name
+GroupModel.selectById = SELECT group_id, group_name, parent_id, group_description FROM jforum_groups WHERE group_id = ?
+GroupModel.canDelete = SELECT COUNT(1) AS total FROM jforum_user_groups WHERE group_id = ?
+GroupModel.delete = DELETE FROM jforum_groups WHERE group_id = ?
+GroupModel.update = UPDATE jforum_groups SET group_name = ?, parent_id = ?, group_description = ? WHERE group_id = ?
+GroupModel.addNew = INSERT INTO jforum_groups (group_name, group_description, parent_id) VALUES (?, ?, ?)
+GroupModel.selectUsersIds = SELECT user_id FROM jforum_user_groups WHERE group_id = ?
+
+# #############
+# CategoryModel
+# #############
+CategoryModel.selectById = SELECT categories_id, title, display_order, moderated FROM jforum_categories WHERE categories_id = ? ORDER BY title
+CategoryModel.selectAll = SELECT categories_id, title, display_order, moderated FROM jforum_categories ORDER BY display_order
+CategoryModel.canDelete = SELECT COUNT(1) AS total FROM jforum_forums WHERE categories_id = ?
+CategoryModel.delete = DELETE FROM jforum_categories WHERE categories_id = ?
+CategoryModel.update = UPDATE jforum_categories SET title = ?, moderated = ? WHERE categories_id = ?
+CategoryModel.addNew = INSERT INTO jforum_categories (title, display_order, moderated) VALUES (?, ?, ?)
+CategoryModel.setOrderById = UPDATE jforum_categories SET display_order = ? WHERE categories_id = ?
+CategoryModel.getMaxOrder = SELECT MAX(display_order) FROM jforum_categories
+
+# #############
+# RankingModel
+# #############
+RankingModel.selectById = SELECT * FROM jforum_ranks WHERE rank_id = ?
+RankingModel.selectSpecials = SELECT * FROM jforum_ranks WHERE rank_special = 1
+RankingModel.selectAll = SELECT * FROM jforum_ranks ORDER BY rank_min
+RankingModel.delete = DELETE FROM jforum_ranks WHERE rank_id = ?
+RankingModel.update = UPDATE jforum_ranks SET rank_title = ?, rank_image = ?, rank_special = ?, rank_min = ? WHERE rank_id = ?
+RankingModel.addNew = INSERT INTO jforum_ranks ( rank_title, rank_min, rank_special) VALUES ( ?, ?, ? )
+
+# #############
+# ConfigModel
+# #############
+ConfigModel.insert = INSERT INTO jforum_config (config_name, config_value) VALUES (?, ?)
+ConfigModel.selectById = SELECT config_name, config_value FROM jforum_config WHERE config_id = ?
+ConfigModel.selectByName = SELECT config_name, config_value, config_id FROM jforum_config WHERE config_name = ?
+ConfigModel.selectAll = SELECT config_name, config_value, config_id FROM jforum_config
+ConfigModel.delete = DELETE FROM jforum_config WHERE config_id = ?
+ConfigModel.update = UPDATE jforum_config SET config_value = ? WHERE config_name = ?
+
+# ##########
+# UserModel
+# ##########
+UserModel.pendingActivations = SELECT user_id, username, user_regdate FROM jforum_users WHERE user_actkey IS NOT NULL ORDER BY user_id
+
+UserModel.selectById = SELECT COUNT(pm.privmsgs_to_userid) AS private_messages, u.* \
+ FROM jforum_users u \
+ LEFT JOIN jforum_privmsgs pm ON pm.privmsgs_type = 1 AND pm.privmsgs_to_userid = u.user_id \
+ WHERE u.user_id = ? \
+ GROUP BY pm.privmsgs_to_userid
+
+UserModel.selectAll = SELECT user_email, user_id, user_posts, user_regdate, username, deleted, user_karma, user_from, \
+ user_website, user_viewemail FROM jforum_users ORDER BY user_id
+
+UserModel.selectAllByLimit = SELECT user_email, user_id, user_posts, user_regdate, username, deleted, user_karma, user_from, user_website, user_viewemail \
+ FROM jforum_users ORDER BY username LIMIT ?, ?
+
+UserModel.selectAllByGroup = SELECT user_email, u.user_id, user_posts, user_regdate, username, deleted, user_karma, user_from, \
+ user_website, user_viewemail \
+ FROM jforum_users u, jforum_user_groups ug \
+ WHERE u.user_id = ug.user_id \
+ AND ug.group_id = ? \
+ ORDER BY user_id LIMIT ?, ?
+
+UserModel.saveUserAuthHash = UPDATE jforum_users SET user_authhash = ? WHERE user_id = ?
+UserModel.getUserAuthHash = SELECT user_authhash FROM jforum_users WHERE user_id = ?
+UserModel.totalUsersByGroup = SELECT COUNT(1) FROM jforum_user_groups WHERE group_id = ?
+UserModel.deletedStatus = UPDATE jforum_users SET deleted = ? WHERE user_id = ?
+UserModel.isDeleted = SELECT deleted FROM jforum_users WHERE user_id = ?
+UserModel.incrementPosts = UPDATE jforum_users SET user_posts = user_posts + 1 WHERE user_id = ?
+UserModel.decrementPosts = UPDATE jforum_users SET user_posts = user_posts - 1 WHERE user_id = ?
+UserModel.rankingId = UPDATE jforum_users SET rank_id = ? WHERE user_id = ?
+UserModel.activeStatus = UPDATE jforum_users SET user_active = ? WHERE user_id = ?
+UserModel.addNew = INSERT INTO jforum_users (username, user_password, user_email, user_regdate, user_actkey, rank_id) VALUES (?, ?, ?, ?, ?, 0)
+UserModel.findByName = SELECT user_id, username, user_email, deleted FROM jforum_users WHERE UPPER(username) LIKE UPPER(?)
+UserModel.findByEmail = SELECT * FROM jforum_users WHERE LOWER(user_email) = LOWER(?)
+UserModel.selectByName = SELECT * FROM jforum_users WHERE LOWER(username) = LOWER(?)
+UserModel.addNewWithId = INSERT INTO jforum_users (username, user_password, user_email, user_regdate, user_actkey, user_id) VALUES (?, ?, ?, ?, ?, ?)
+
+UserModel.update = UPDATE jforum_users SET user_aim = ?, \
+ user_avatar = ?,\
+ gender = ?, \
+ themes_id = ?,\
+ user_allow_pm = ?, \
+ user_allowavatar = ?, \
+ user_allowbbcode = ?, \
+ user_allowhtml = ?, \
+ user_allowsmilies = ?, \
+ user_email = ?, \
+ user_from = ?, \
+ user_icq = ?, \
+ user_interests = ?, \
+ user_occ = ?, \
+ user_sig = ?, \
+ user_website = ?, \
+ user_yim = ?, \
+ user_msnm = ?, \
+ user_password = ?, \
+ user_viewemail = ?, \
+ user_viewonline = ?, \
+ user_notify = ?, \
+ user_attachsig = ?, \
+ username = ?, \
+ user_lang = ?, \
+ user_notify_pm = ?, \
+ user_biography = ?, \
+ user_lastvisit = ?, \
+ user_notify_always = ?, \
+ user_notify_text = ?, \
+ rank_id = ? \
+ WHERE user_id = ?
+
+UserModel.lastUserRegistered = SELECT user_id, username FROM jforum_users ORDER BY user_regdate DESC LIMIT 1
+UserModel.totalUsers = SELECT COUNT(1) as total_users FROM jforum_users
+UserModel.isUsernameRegistered = SELECT COUNT(1) as registered FROM jforum_users WHERE LOWER(username) = LOWER(?)
+UserModel.login = SELECT user_id FROM jforum_users WHERE LOWER(username) = LOWER(?) AND user_password = ?
+UserModel.loginMatch = SELECT user_id FROM jforum_users WHERE LOWER(username) = LOWER(?)
+UserModel.addToGroup = INSERT INTO jforum_user_groups ( user_id, group_id ) VALUES ( ?, ? )
+UserModel.removeFromGroup = DELETE FROM jforum_user_groups WHERE user_id = ? AND group_id = ?
+
+UserModel.selectGroups = SELECT ug.group_id, g.group_name FROM jforum_user_groups ug, jforum_groups g \
+ WHERE ug.group_id = g.group_id \
+ AND ug.user_id = ? \
+ ORDER BY g.group_id
+
+UserModel.saveNewPassword = UPDATE jforum_users SET user_password = ?, security_hash = null WHERE user_email = ?
+UserModel.validateLostPasswordHash = SELECT COUNT(1) AS valid FROM jforum_users WHERE security_hash = ? AND user_email = ?
+UserModel.writeLostPasswordHash = UPDATE jforum_users SET security_hash = ? WHERE user_email = ?
+UserModel.getUsernameByEmail = SELECT username FROM jforum_users WHERE user_email = ?
+UserModel.validateActivationKeyHash = SELECT COUNT(1) AS valid FROM jforum_users WHERE user_actkey = ? AND user_id = ?
+UserModel.writeUserActive = UPDATE jforum_users SET user_active = 1, user_actkey = NULL WHERE user_id = ?
+UserModel.updateUsername = UPDATE jforum_users SET username = ? WHERE user_id = ?
+UserModel.getUsername = SELECT username FROM jforum_users WHERE user_id = ?
+
+# #############
+# PostModel
+# #############
+PostModel.selectLatestByForumForRSS = SELECT p.topic_id, p.post_id, p.forum_id, pt.post_subject AS subject, pt.post_text, p.post_time, p.user_id, u.username \
+ FROM jforum_topics t, jforum_posts p, jforum_posts_text pt, jforum_users u \
+ WHERE p.post_id = t.topic_first_post_id \
+ AND p.topic_id = t.topic_id \
+ AND p.user_id = u.user_id \
+ AND p.post_id = pt.post_id \
+ AND p.need_moderate = 0 \
+ AND t.forum_id = ? \
+ ORDER BY t.topic_id DESC \
+ LIMIT ?
+
+PostModel.selectHotForRSS = SELECT t.topic_id, t.topic_title AS subject, p.post_id, t.forum_id, pt.post_text, p.post_time, p.user_id, u.username \
+ FROM jforum_topics t, jforum_posts p, jforum_posts_text pt, jforum_users u \
+ WHERE p.post_id = t.topic_first_post_id \
+ AND p.topic_id = t.topic_id \
+ AND p.user_id = u.user_id \
+ AND p.post_id = pt.post_id \
+ AND p.need_moderate = 0 \
+ ORDER BY topic_first_post_id DESC \
+ LIMIT ?
+
+PostModel.countPreviousPosts = SELECT COUNT(p2.post_id) AS prev_posts \
+ FROM jforum_posts p, jforum_posts p2 \
+ WHERE p.post_id = ? \
+ AND p2.topic_id = p.topic_id \
+ AND p2.post_id <= ?
+
+PostModel.selectById = SELECT p.post_id, topic_id, forum_id, p.user_id, post_time, poster_ip, enable_bbcode, enable_html, \
+ enable_smilies, enable_sig, post_edit_time, post_edit_count, status, pt.post_subject, pt.post_text, username, p.attach, p.need_moderate \
+ FROM jforum_posts p, jforum_posts_text pt, jforum_users u \
+ WHERE p.post_id = pt.post_id \
+ AND p.post_id = ? \
+ AND p.user_id = u.user_id
+
+PostModel.deletePost = DELETE FROM jforum_posts WHERE post_id = ?
+PostModel.deletePostText = DELETE FROM jforum_posts_text WHERE post_id = ?
+
+PostModel.updatePost = UPDATE jforum_posts SET topic_id = ?, forum_id = ?, enable_bbcode = ?, enable_html = ?, enable_smilies = ?, enable_sig = ?, post_edit_time = ?, post_edit_count = ?, poster_ip = ? WHERE post_id = ?
+PostModel.updatePostText = UPDATE jforum_posts_text SET post_text = ?, post_subject = ? WHERE post_id = ?
+
+PostModel.addNewPost = INSERT INTO jforum_posts (topic_id, forum_id, user_id, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig, post_edit_time, need_moderate) \
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?)
+PostModel.addNewPostText = INSERT INTO jforum_posts_text ( post_id, post_text, post_subject ) VALUES (?, ?, ?)
+
+PostModel.selectAllByTopicByLimit = SELECT p.post_id, topic_id, forum_id, p.user_id, post_time, poster_ip, enable_bbcode, p.attach, \
+ enable_html, enable_smilies, enable_sig, post_edit_time, post_edit_count, status, pt.post_subject, pt.post_text, username, p.need_moderate \
+ FROM jforum_posts p, jforum_posts_text pt, jforum_users u \
+ WHERE p.post_id = pt.post_id \
+ AND topic_id = ? \
+ AND p.user_id = u.user_id \
+ AND p.need_moderate = 0 \
+ ORDER BY post_time ASC \
+ LIMIT ?, ?
+
+PostModel.selectByUserByLimit = SELECT p.post_id, topic_id, forum_id, p.user_id, post_time, poster_ip, enable_bbcode, p.attach, \
+ enable_html, enable_smilies, enable_sig, post_edit_time, post_edit_count, status, pt.post_subject, pt.post_text, username, p.need_moderate \
+ FROM jforum_posts p, jforum_posts_text pt, jforum_users u \
+ WHERE p.post_id = pt.post_id \
+ AND p.user_id = u.user_id \
+ AND p.user_id = ? \
+ AND p.need_moderate = 0 \
+ AND forum_id IN(:fids:) \
+ ORDER BY p.post_id DESC \
+ LIMIT ?, ?
+
+PostModel.countUserPosts = SELECT COUNT(1) AS total FROM jforum_posts where user_id = ? AND forum_id IN (:fids:) AND need_moderate = 0
+
+PostModel.setForumByTopic = UPDATE jforum_posts SET forum_id = ? WHERE topic_id = ?
+PostModel.deleteByTopic = SELECT post_id, user_id FROM jforum_posts WHERE topic_id = ?
+
+# #############
+# PollModel
+# #############
+PollModel.addNewPoll = INSERT INTO jforum_vote_desc (topic_id, vote_text, vote_length, vote_start) VALUES (?, ?, ?, NOW())
+PollModel.addNewPollOption = INSERT INTO jforum_vote_results (vote_id, vote_option_id, vote_option_text, vote_result) VALUES (?, ?, ?, 0)
+PollModel.addNewVoter = INSERT INTO jforum_vote_voters (vote_id, vote_user_id, vote_user_ip) VALUES (?, ?, ?)
+PollModel.selectById = SELECT vote_id, topic_id, vote_start, vote_length, vote_text FROM jforum_vote_desc WHERE vote_id = ?
+PollModel.selectPollByTopicId SELECT vote_id, topic_id, vote_start, vote_length, vote_text FROM jforum_vote_desc WHERE topic_id = ?
+PollModel.incrementVoteCount = UPDATE jforum_vote_results SET vote_result = vote_result + 1 WHERE vote_id = ? AND vote_option_id = ?
+PollModel.selectMaxVoteId = SELECT MAX(vote_option_id) FROM jforum_vote_results WHERE vote_id = ?
+PollModel.selectVoter = SELECT vote_id, vote_user_id, vote_user_ip FROM jforum_vote_voters WHERE vote_id = ? AND vote_user_id = ?
+PollModel.deletePollVoters = DELETE FROM jforum_vote_voters WHERE vote_id = ?
+PollModel.deletePollOption = DELETE FROM jforum_vote_results WHERE vote_id = ? AND vote_option_id = ?
+PollModel.deleteAllPollOptions = DELETE FROM jforum_vote_results WHERE vote_id = ?
+PollModel.deletePoll = DELETE FROM jforum_vote_desc WHERE vote_id = ?
+PollModel.updatePollOption = UPDATE jforum_vote_results SET vote_option_text = ? WHERE vote_option_id = ? AND vote_id = ?
+PollModel.updatePoll = UPDATE jforum_vote_desc SET vote_text = ?, vote_length = ? WHERE vote_id = ?
+
+PollModel.selectOptionsByPollId = SELECT vote_id, vote_option_id, vote_option_text, vote_result \
+ FROM jforum_vote_results WHERE vote_id = ? ORDER BY vote_option_id
+
+PollModel.selectVoterByIP = SELECT vote_id, vote_user_id, vote_user_ip \
+ FROM jforum_vote_voters WHERE vote_id = ? AND vote_user_ip = ?
+
+# #############
+# ForumModel
+# #############
+ForumModel.selectById = SELECT forum_id, forum_name, categories_id, forum_desc, forum_order, forum_topics, forum_last_post_id, moderated \
+ FROM jforum_forums \
+ WHERE forum_id = ?
+
+ForumModel.selectAll = SELECT forum_id, forum_name, categories_id, forum_desc, forum_order, forum_topics, forum_last_post_id, moderated \
+ FROM jforum_forums \
+ ORDER BY forum_order ASC
+
+ForumModel.selectAllForPermissions = SELECT forum_id, forum_name FROM jforum_forums ORDER BY forum_name
+
+ForumModel.statsFirstPostTime = SELECT MIN(post_time) FROM jforum_posts WHERE post_time > 0
+ForumModel.statsFirstRegisteredUserTime = SELECT MIN(user_regdate) FROM jforum_users WHERE user_regdate > 0
+ForumModel.discoverForumId = SELECT forum_id FROM jforum_mail_integration WHERE forum_email = ?
+ForumModel.countForumPosts = SELECT COUNT(1) FROM jforum_posts WHERE forum_id = ?
+ForumModel.setModerated = UPDATE jforum_forums SET moderated = ? WHERE categories_id = ?
+ForumModel.delete = DELETE FROM jforum_forums WHERE forum_id = ?
+ForumModel.update = UPDATE jforum_forums SET categories_id = ?, forum_name = ?, forum_desc = ?, moderated = ? WHERE forum_id = ?
+ForumModel.addNew = INSERT INTO jforum_forums (categories_id, forum_name, forum_desc, forum_order, moderated) VALUES (?, ?, ?, ?, ?)
+ForumModel.updateLastPost = UPDATE jforum_forums SET forum_last_post_id = ? WHERE forum_id = ?
+ForumModel.incrementTotalTopics = UPDATE jforum_forums SET forum_topics = forum_topics + ? WHERE forum_id = ?
+ForumModel.decrementTotalTopics = UPDATE jforum_forums SET forum_topics = forum_topics - ? WHERE forum_id = ?
+ForumModel.decrementTotalPosts = UPDATE jforum_forums SET total_posts = total_posts - ? WHERE forum_id = ?
+ForumModel.getTotalTopics = SELECT COUNT(topic_id) as total FROM jforum_topics WHERE forum_id = ?
+ForumModel.setOrderById = UPDATE jforum_forums SET forum_order = ? WHERE forum_id = ?
+ForumModel.getMaxOrder = SELECT MAX(forum_order) FROM jforum_forums
+
+ForumModel.lastPostInfo = SELECT post_time, p.topic_id, t.topic_replies, post_id, u.user_id, username \
+ FROM jforum_posts p, jforum_users u, jforum_topics t , jforum_forums f \
+ WHERE t.forum_id = f.forum_id \
+ AND t.topic_id = p.topic_id \
+ AND f.forum_last_post_id = t.topic_last_post_id \
+ AND t.topic_last_post_id = p.post_id \
+ AND p.forum_id = ? \
+ AND p.user_id = u.user_id \
+ AND p.need_moderate = 0
+
+ForumModel.getModeratorList = SELECT g.group_id AS id, g.group_name AS name \
+ FROM jforum_groups g, jforum_roles r, jforum_role_values rv, jforum_roles r2 \
+ WHERE g.group_id = r.group_id \
+ AND r.role_id = rv.role_id \
+ AND r.name = 'perm_moderation_forums' \
+ AND rv.role_value = ? \
+ AND r2.name = 'perm_moderation' \
+ AND r2.group_id = g.group_id
+
+ForumModel.totalMessages = SELECT COUNT(1) as total_messages FROM jforum_posts WHERE need_moderate = 0
+ForumModel.getMaxPostId = SELECT MAX(post_id) AS post_id FROM jforum_posts WHERE forum_id = ?
+ForumModel.moveTopics = UPDATE jforum_topics SET forum_id = ?, topic_moved_id = ? WHERE topic_id = ?
+ForumModel.checkUnreadTopics = SELECT MAX(post_time), topic_id FROM jforum_posts WHERE forum_id = ? AND post_time > ? GROUP BY topic_id
+ForumModel.latestTopicIdForfix = SELECT MAX(topic_id) AS topic_id FROM jforum_posts WHERE forum_id = ? AND need_moderate = 0
+ForumModel.fixLatestPostData = UPDATE jforum_topics SET topic_last_post_id = ? WHERE topic_id = ?
+ForumModel.fixForumLatestPostData = UPDATE jforum_forums SET forum_last_post_id = ? WHERE forum_id = ?
+
+ForumModel.getUnreadForums = SELECT t.forum_id, t.topic_id, p.post_time \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE p.post_id = t.topic_last_post_id \
+ AND p.post_time > ?
+
+ForumModel.subscribeUser = INSERT INTO jforum_forums_watch(forum_id, user_id) VALUES (?, ?)
+ForumModel.isUserSubscribed = SELECT user_id FROM jforum_forums_watch WHERE forum_id = ? AND user_id = ?
+ForumModel.removeSubscription = DELETE FROM jforum_forums_watch WHERE forum_id = ? AND user_id = ?
+ForumModel.removeSubscriptionByForum = DELETE FROM jforum_forums_watch WHERE forum_id = ?
+
+ForumModel.notifyUsers = SELECT u.user_id, u.username, u.user_lang, u.user_email, \
+ u.user_notify_always, u.user_notify_text \
+ FROM jforum_forums_watch fw, jforum_users u \
+ WHERE fw.user_id = u.user_id \
+ AND fw.forum_id = ? \
+ AND u.user_id NOT IN ( ?, ? )
+ AND u.user_notify_always IN (0, 1)
+
+# #############
+# TopicModel
+# #############
+TopicModel.findTopicsByDateRange = SELECT DISTINCT topic_id FROM jforum_posts WHERE post_time >= ? AND post_time <= ?
+
+TopicModel.selectById = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE t.topic_id = ? \
+ AND p.post_id = t.topic_last_post_id
+
+TopicModel.selectRaw = SELECT topic_id, forum_id, topic_title, user_id, topic_views, topic_replies, topic_status, topic_vote_id, topic_type, \
+ topic_first_post_id, topic_last_post_id, moderated, topic_time, topic_moved_id \
+ FROM jforum_topics WHERE topic_id = ?
+
+TopicModel.selectAllByForumByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE (t.forum_id = ? OR t.topic_moved_id = ?) \
+ AND p.post_id = t.topic_last_post_id \
+ AND p.need_moderate = 0 \
+ ORDER BY t.topic_type DESC, t.topic_last_post_id DESC \
+ LIMIT ?, ?
+
+TopicModel.topicPosters = SELECT user_id, username, user_karma, user_avatar, user_allowavatar, user_regdate, user_posts, user_icq, \
+ user_from, user_email, rank_id, user_sig, user_attachsig, user_viewemail, user_msnm, user_yim, user_website, user_sig, user_aim \
+ FROM jforum_users \
+ WHERE user_id IN (:ids:)
+
+TopicModel.distinctPosters = SELECT DISTINCT user_id FROM jforum_posts WHERE topic_id = ?
+
+TopicModel.selectTopicTitlesByIds = SELECT topic_id, topic_title FROM jforum_topics WHERE topic_id IN (:ids:)
+TopicModel.setModerationStatus = UPDATE jforum_topics SET moderated = ? WHERE forum_id = ?
+TopicModel.setModerationStatusByTopic = UPDATE jforum_topics SET moderated = ? WHERE topic_id = ?
+TopicModel.deleteByForum = SELECT topic_id FROM jforum_topics where forum_id = ?
+
+TopicModel.delete = DELETE FROM jforum_topics WHERE topic_id = ?
+TopicModel.deletePosts = DELETE FROM jforum_posts WHERE topic_id = ?
+TopicModel.incrementTotalViews = UPDATE jforum_topics SET topic_views = topic_views + 1 WHERE topic_id = ?
+TopicModel.incrementTotalReplies = UPDATE jforum_topics SET topic_replies = topic_replies + 1 WHERE topic_id = ?
+TopicModel.decrementTotalReplies = UPDATE jforum_topics SET topic_replies = topic_replies - 1 WHERE topic_id = ?
+TopicModel.setLastPostId = UPDATE jforum_topics SET topic_last_post_id = ? WHERE topic_id = ?
+TopicModel.setFirstPostId = UPDATE jforum_topics SET topic_first_post_id = ? WHERE topic_id = ?
+TopicModel.getMinPostId = SELECT MIN(post_id) AS post_id FROM jforum_posts WHERE topic_id = ?
+
+TopicModel.addNew = INSERT INTO jforum_topics (forum_id, topic_title, user_id, topic_time, topic_first_post_id, topic_last_post_id, topic_type, moderated) \
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+
+TopicModel.update = UPDATE jforum_topics SET topic_title = ?, topic_last_post_id = ?, topic_first_post_id = ?, topic_type = ?, moderated = ?, topic_vote_id = ? WHERE topic_id = ?
+TopicModel.getMaxPostId = SELECT MAX(post_id) AS post_id FROM jforum_posts WHERE topic_id = ?
+TopicModel.getTotalPosts = SELECT COUNT(1) AS total FROM jforum_posts WHERE topic_id = ? AND need_moderate = 0
+
+TopicModel.subscribeUser = INSERT INTO jforum_topics_watch(topic_id, user_id, is_read) VALUES (?, ?, 1)
+TopicModel.isUserSubscribed = SELECT user_id FROM jforum_topics_watch WHERE topic_id = ? AND user_id = ?
+TopicModel.removeSubscription = DELETE FROM jforum_topics_watch WHERE topic_id = ? AND user_id = ?
+TopicModel.removeSubscriptionByTopic = DELETE FROM jforum_topics_watch WHERE topic_id = ?
+TopicModel.updateReadStatus = UPDATE jforum_topics_watch SET is_read = ? WHERE topic_id = ? AND user_id = ?
+
+TopicModel.notifyUsers = SELECT u.user_id, u.username, u.user_lang, u.user_email, u.user_notify_text \
+ FROM jforum_topics_watch tw, jforum_users u \
+ WHERE tw.user_id = u.user_id \
+ AND tw.topic_id = ? \
+ AND (tw.is_read = 1 OR u.user_notify_always = 1) \
+ AND u.user_id NOT IN ( ?, ? )
+
+TopicModel.markAllAsUnread = UPDATE jforum_topics_watch SET is_read = '0' WHERE topic_id = ? AND user_id NOT IN (?, ?)
+TopicModel.lockUnlock = UPDATE jforum_topics SET topic_status = ? WHERE topic_id = ?
+
+TopicModel.selectRecentTopicsByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE p.post_id = t.topic_last_post_id \
+ AND p.need_moderate = 0 \
+ ORDER BY topic_last_post_id DESC \
+ LIMIT ?
+
+TopicModel.selectForNewMessages = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE t.topic_id IN (:topicIds:) \
+ AND p.need_moderate = 0 \
+ AND p.post_id = t.topic_last_post_id \
+ ORDER BY topic_last_post_id DESC
+
+TopicModel.selectHottestTopicsByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE p.post_id = t.topic_last_post_id \
+ AND p.need_moderate = 0 \
+ ORDER BY topic_views DESC \
+ LIMIT ?
+
+TopicModel.getUserInformation = SELECT user_id, username FROM jforum_users WHERE user_id IN (#ID#)
+
+TopicModel.selectByUserByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, p.attach AS attach \
+ FROM jforum_topics t, jforum_posts p \
+ WHERE p.post_id = t.topic_last_post_id \
+ AND t.user_id = ? \
+ AND p.need_moderate = 0 \
+ AND t.forum_id IN(:fids:) \
+ ORDER BY t.topic_last_post_id DESC \
+ LIMIT ?, ?
+
+TopicModel.countUserTopics = SELECT COUNT(1) AS total FROM jforum_topics t, jforum_posts p WHERE t.user_id = ? AND t.forum_id IN (:fids:) AND p.post_id = t.topic_first_post_id AND p.need_moderate = 0
+
+TopicModel.getFirstLastPostId = SELECT MIN(post_id) AS first_post_id, MAX(post_id) AS last_post_id FROM jforum_posts WHERE topic_id = ?
+TopicModel.fixFirstLastPostId = UPDATE jforum_topics SET topic_first_post_id = ?, topic_last_post_id = ? WHERE topic_id = ?
+TopicModel.totalTopics = SELECT COUNT(1) FROM jforum_topics
+
+# ############
+# SearchModel
+# ############
+SearchModel.getFirstPostId = SELECT MIN(post_id) FROM jforum_posts
+SearchModel.firstPostIdByDate = SELECT post_id FROM jforum_posts WHERE post_time > ? LIMIT 1
+SearchModel.lastPostIdByDate = SELECT post_id FROM jforum_posts WHERE post_time < ? ORDER BY post_id DESC LIMIT 1
+
+SearchModel.getPostsToIndexForLucene = SELECT p.post_id, p.forum_id, p.enable_bbcode, p.enable_smilies, '' AS topic_title, p.topic_id, p.user_id, p.post_time, pt.post_text, pt.post_subject \
+ FROM jforum_posts p, jforum_posts_text pt \
+ WHERE p.post_id = pt.post_id \
+ AND p.post_id >= ? AND p.post_id < ?
+
+SearchModel.getPostsDataForLucene = SELECT p.post_id, p.forum_id, p.topic_id, p.user_id, u.username, p.enable_bbcode, p.enable_smilies, p.post_time, pt.post_subject, pt.post_text, t.topic_title \
+ FROM jforum_posts p, jforum_posts_text pt, jforum_users u, jforum_topics t \
+ WHERE p.post_id IN (:posts:) \
+ AND p.post_id = pt.post_id \
+ AND p.topic_id = t.topic_id \
+ AND p.user_id = u.user_Id
+
+# ##########
+# TreeGroup
+# ##########
+TreeGroup.selectGroup = SELECT group_id, group_name FROM jforum_groups WHERE parent_id = ? ORDER BY group_name
+
+# ################
+# PermissionControl
+# ################
+PermissionControl.deleteAllRoleValues = DELETE FROM jforum_role_values WHERE role_id IN (SELECT role_id FROM jforum_roles WHERE group_id = ?)
+PermissionControl.deleteAllGroupRoles = DELETE FROM jforum_roles WHERE group_id = ?
+PermissionControl.addGroupRole = INSERT INTO jforum_roles (group_id, name) VALUES (?, ?)
+PermissionControl.addRoleValues = INSERT INTO jforum_role_values (role_id, role_value) VALUES (?, ?)
+PermissionControl.getRoleIdByName = SELECT role_id FROM jforum_roles WHERE name = ? AND group_id = ?
+
+PermissionControl.selectForumRoles = SELECT DISTINCT r.role_id FROM jforum_roles r, jforum_role_values rv \
+ WHERE r.role_id = rv.role_id \
+ AND r.name in ('perm_forum', 'perm_anonymous_post', 'perm_reply_only', 'perm_read_only_forums', 'perm_reply_without_moderation', 'perm_html_disabled', 'perm_attachments_enabled', 'perm_moderation_forums') \
+ AND rv.role_value = ?
+
+PermissionControl.deleteRoleValues = DELETE FROM jforum_role_values WHERE role_value = ? AND role_id IN (#IDS#)
+
+PermissionControl.loadGroupRoles = SELECT r.name, '0' AS role_value FROM jforum_roles r WHERE r.group_id IN (#IN#) \
+ UNION \
+ SELECT r.name, rv.role_value \
+ FROM jforum_roles r, jforum_role_values rv \
+ WHERE r.role_id = rv.role_id \
+ AND r.group_id IN (#IN#) \
+ ORDER BY name
+
+# #############
+# TopicListing
+# #############
+TopicListing.selectTopicData = SELECT topic_id, topic_title, topic_views, topic_replies, topic_last_post_id, user_id FROM jforum_topics WHERE forum_id = ?
+
+# #############
+# SmiliesModel
+# #############
+SmiliesModel.addNew = INSERT INTO jforum_smilies ( code, url, disk_name) VALUES (?, ?, ?)
+SmiliesModel.delete = DELETE FROM jforum_smilies WHERE smilie_id = ?
+SmiliesModel.update = UPDATE jforum_smilies SET code = ?, url = ?, disk_name =? WHERE smilie_id = ?
+SmiliesModel.selectAll = SELECT * FROM jforum_smilies ORDER BY smilie_id
+SmiliesModel.selectById = SELECT * FROM jforum_smilies WHERE smilie_id = ?
+
+# ####################
+# PrivateMessageModel
+# ####################
+PrivateMessageModel.add = INSERT INTO jforum_privmsgs ( privmsgs_type, privmsgs_subject, privmsgs_from_userid, \
+ privmsgs_to_userid, privmsgs_date, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, \
+ privmsgs_attach_sig ) \
+ VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )
+
+PrivateMessagesModel.addText = INSERT INTO jforum_privmsgs_text ( privmsgs_id, privmsgs_text ) VALUES (?, ?)
+
+PrivateMessagesModel.isDeleteAllowed = SELECT 1 FROM jforum_privmsgs WHERE privmsgs_id = ? \
+ AND ( \
+ (privmsgs_from_userid = ? AND privmsgs_type = 2) \
+ OR (privmsgs_to_userid = ? AND privmsgs_type IN(0, 1, 5)) \
+ )
+
+PrivateMessageModel.delete = DELETE FROM jforum_privmsgs WHERE privmsgs_id = ?
+PrivateMessagesModel.deleteText = DELETE FROM jforum_privmsgs_text WHERE privmsgs_id = ?
+
+PrivateMessageModel.baseListing = SELECT pm.privmsgs_type, pm.privmsgs_id, pm.privmsgs_date, pm.privmsgs_subject, u.user_id, u.username \
+ FROM jforum_privmsgs pm, jforum_users u \
+ #FILTER# \
+ ORDER BY pm.privmsgs_date DESC
+
+PrivateMessageModel.inbox = WHERE privmsgs_to_userid = ? \
+ AND u.user_id = pm.privmsgs_from_userid \
+ AND ( pm.privmsgs_type = 1 \
+ OR pm.privmsgs_type = 0 \
+ OR privmsgs_type = 5)
+
+PrivateMessageModel.sent = WHERE privmsgs_from_userid = ? \
+ AND u.user_id = pm.privmsgs_to_userid \
+ AND pm.privmsgs_type = 2
+
+PrivateMessageModel.updateType = UPDATE jforum_privmsgs SET privmsgs_type = ? WHERE privmsgs_id = ?
+
+PrivateMessageModel.selectById = SELECT p.*, pt.privmsgs_text \
+ FROM jforum_privmsgs p, jforum_privmsgs_text pt \
+ WHERE p.privmsgs_id = pt.privmsgs_id \
+ AND p.privmsgs_id = ?
+
+
+# #################
+# UserSessionModel
+# #################
+UserSessionModel.add = INSERT INTO jforum_sessions ( session_id, session_user_id, session_start ) VALUES (?, ?, ?)
+UserSessionModel.update = UPDATE jforum_sessions SET session_start = ?, session_time = ?, session_id = ? WHERE session_user_id = ?
+UserSessionModel.delete = DELETE FROM jforum_sessions WHERE session_user_id = ?
+UserSessionModel.selectById = SELECT session_time, session_start, session_id FROM jforum_sessions WHERE session_user_id = ?
+
+# ###########
+# KarmaModel
+# ###########
+KarmaModel.add = INSERT INTO jforum_karma (post_id, post_user_id, from_user_id, points, topic_id, rate_date) VALUES (?, ?, ?, ?, ?, ?)
+KarmaModel.update = UPDATE jforum_karma SET points = ? WHERE karma_id = ?
+KarmaModel.getUserKarma = SELECT user_karma FROM jforum_users WHERE user_id = ?
+KarmaModel.updateUserKarma = UPDATE jforum_users SET user_karma = ? WHERE user_id = ?
+KarmaModel.getPostKarma = SELECT SUM(points) / COUNT(post_id) AS points FROM jforum_karma WHERE post_id = ?
+KarmaModel.userCanAddKarma = SELECT COUNT(1) FROM jforum_karma WHERE post_id = ? AND from_user_id = ?
+
+KarmaModel.getUserKarmaPoints = SELECT SUM(points) AS points, COUNT(1) AS votes, from_user_id \
+ FROM jforum_karma WHERE post_user_id = ? GROUP BY from_user_id
+KarmaModel.getUserVotes = SELECT points, post_id FROM jforum_karma WHERE topic_id = ? AND from_user_id = ?
+
+#Frankiln Tests
+KarmaModel.getUserGivenVotes = SELECT COUNT(post_id) AS votes FROM jforum_karma WHERE from_user_id = ?
+KarmaModel.getUserTotalVotes = SELECT SUM(points) AS points, COUNT(post_id) AS votes FROM jforum_karma WHERE post_user_id = ?
+
+KarmaModel.getMostRatedUserByPeriod = SELECT u.user_id, u.username, SUM(points) AS total, \
+ COUNT(post_user_id) AS votes_received, user_karma, \
+ -1 AS given \
+ FROM jforum_users u, jforum_karma k \
+ WHERE u.user_id = k.post_user_id \
+ AND k.rate_date BETWEEN ? AND ? \
+ GROUP BY u.user_id, u.username, user_karma
+
+# ##############
+# BookmarkModel
+# ##############
+BookmarkModel.add = INSERT INTO jforum_bookmarks (user_id, relation_id, relation_type, public_visible, title, description) VALUES (?, ?, ?, ?, ?, ?)
+BookmarkModel.update = UPDATE jforum_bookmarks SET public_visible = ?, title = ?, description = ? WHERE bookmark_id = ?
+BookmarkModel.remove = DELETE FROM jforum_bookmarks WHERE bookmark_id = ?
+
+BookmarkModel.selectForumBookmarks = SELECT b.bookmark_id, b.user_id, b.relation_type, b.relation_id, b.public_visible, b.title, b.description, f.forum_name, f.forum_desc \
+ FROM jforum_bookmarks b, jforum_forums f \
+ WHERE b.relation_type = 1 \
+ AND b.relation_id = f.forum_id \
+ AND b.user_id = ? \
+ ORDER BY f.forum_name
+
+BookmarkModel.selectTopicBookmarks = SELECT b.bookmark_id, b.user_id, b.relation_type, b.relation_id, b.public_visible, b.title, b.description, t.topic_title \
+ FROM jforum_bookmarks b, jforum_topics t \
+ WHERE b.relation_type = 2 \
+ AND b.relation_id = t.topic_id \
+ AND b.user_id = ? \
+ ORDER BY t.topic_title
+
+BookmarkModel.selectUserBookmarks = SELECT b.bookmark_id, b.user_id, b.relation_type, b.relation_id, b.public_visible, b.title, b.description, u.username \
+ FROM jforum_bookmarks b, jforum_users u \
+ WHERE b.relation_type = 3 \
+ AND b.relation_id = u.user_id \
+ AND b.user_id = ? \
+ ORDER BY u.username
+
+BookmarkModel.selectAllFromUser = SELECT b.bookmark_id, b.user_id, b.relation_type, b.relation_id, b.public_visible, b.title, b.description \
+ FROM jforum_bookmarks b \
+ WHERE b.user_id = ? \
+ ORDER BY b.title
+
+BookmarkModel.selectForUpdate = SELECT bookmark_id, relation_id, public_visible, relation_type, title, description, user_id \
+ FROM jforum_bookmarks WHERE relation_id = ? AND relation_type = ? AND user_id = ?
+
+BookmarkModel.selectById = SELECT bookmark_id, relation_id, public_visible, title, description, user_id, relation_type \
+ FROM jforum_bookmarks WHERE bookmark_id = ?
+
+# ################
+# AttachmentModel
+# ################
+AttachmentModel.addQuotaLimit = INSERT INTO jforum_quota_limit (quota_desc, quota_limit, quota_type) VALUES (?, ?, ?)
+AttachmentModel.updateQuotaLimit = UPDATE jforum_quota_limit SET quota_desc = ?, quota_limit = ?, quota_type = ? WHERE quota_limit_id = ?
+AttachmentModel.removeQuotaLimit = DELETE FROM jforum_quota_limit WHERE quota_limit_id = ?
+
+AttachmentModel.selectQuotaLimit = SELECT quota_limit_id, quota_desc, quota_limit, quota_type \
+ FROM jforum_quota_limit ORDER BY quota_type, quota_limit
+
+AttachmentModel.addExtensionGroup = INSERT INTO jforum_extension_groups (name, allow, upload_icon, download_mode) VALUES (?, ?, ?, ?)
+
+AttachmentModel.updateExtensionGroups = UPDATE jforum_extension_groups SET name = ?, allow = ?, upload_icon = ?, download_mode = ? \
+ WHERE extension_group_id = ?
+
+AttachmentModel.removeExtensionGroups = DELETE FROM jforum_extension_groups WHERE extension_group_id = ?
+AttachmentModel.selectExtensionGroups = SELECT extension_group_id, name, allow, upload_icon, download_mode FROM jforum_extension_groups ORDER BY name
+
+AttachmentModel.addExtension = INSERT INTO jforum_extensions (extension_group_id, description, upload_icon, extension, allow) VALUES (?, ?, ?, ?, ?)
+
+AttachmentModel.updateExtension = UPDATE jforum_extensions SET extension_group_id = ?, description = ?, upload_icon = ?, extension = ?, allow = ? \
+ WHERE extension_id = ?
+
+AttachmentModel.removeExtension = DELETE FROM jforum_extensions WHERE extension_id = ?
+AttachmentModel.addAttachment = INSERT INTO jforum_attach (post_id, privmsgs_id, user_id) VALUES (?, ?, ?)
+
+AttachmentModel.addAttachmentInfo = INSERT INTO jforum_attach_desc (attach_id, physical_filename, real_filename, description, \
+ mimetype, filesize, upload_time, thumb, extension_id ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
+
+AttachmentModel.updatePost = UPDATE jforum_posts SET attach = ? WHERE post_id = ?
+
+AttachmentModel.selectExtensions = SELECT extension_id, extension_group_id, extension, description, upload_icon, allow, '' AS group_icon FROM jforum_extensions ORDER BY extension
+
+AttachmentModel.selectExtension = SELECT e.extension_id, e.extension_group_id, e.extension, e.description, e.upload_icon, e.allow, g.upload_icon AS group_icon \
+ FROM jforum_extensions e, jforum_extension_groups g \
+ WHERE e.$field = ? \
+ AND e.extension_group_id = g.extension_group_id
+
+AttachmentModel.extensionsForSecurity = SELECT e.extension, e.allow, eg.allow AS group_allow \
+ FROM jforum_extensions e, jforum_extension_groups eg \
+ WHERE e.extension_group_id = eg.extension_group_id
+
+AttachmentModel.isPhysicalDownloadMode = SELECT download_mode FROM jforum_extension_groups WHERE extension_group_id = ?
+
+AttachmentModel.selectAttachments = SELECT a.attach_id, a.user_id, a.post_id, a.privmsgs_id, d.mimetype, d.physical_filename, d.real_filename, \
+ d.download_count, d.description, d.filesize, d.upload_time, d.extension_id \
+ FROM jforum_attach a, jforum_attach_desc d \
+ WHERE a.post_id = ? \
+ AND a.attach_id = d.attach_id
+
+AttachmentModel.selectAttachmentById = SELECT a.attach_id, a.user_id, a.post_id, a.privmsgs_id, d.mimetype, d.physical_filename, d.real_filename, \
+ d.download_count, d.description, d.filesize, d.upload_time, d.extension_id \
+ FROM jforum_attach a, jforum_attach_desc d \
+ WHERE a.attach_id = ? \
+ AND a.attach_id = d.attach_id
+
+AttachmentModel.updateAttachment = UPDATE jforum_attach_desc SET description = ?, download_count = ? WHERE attach_id = ?
+AttachmentModel.removeAttachment = DELETE FROM jforum_attach WHERE attach_id = ?
+AttachmentModel.removeAttachmentInfo = DELETE FROM jforum_attach_desc WHERE attach_id = ?
+AttachmentModel.countPostAttachments = SELECT COUNT(1) FROM jforum_attach WHERE post_id = ?
+AttachmentModel.deleteGroupQuota = DELETE FROM jforum_attach_quota
+AttachmentModel.setGroupQuota = INSERT INTO jforum_attach_quota (group_id, quota_limit_id) VALUES (?, ?)
+AttachmentModel.selectGroupsQuotaLimits = SELECT group_id, quota_limit_id FROM jforum_attach_quota
+
+AttachmentModel.selectQuotaLimitByGroup = SELECT ql.quota_limit_id, ql.quota_desc, ql.quota_limit, ql.quota_type \
+ FROM jforum_quota_limit ql, jforum_attach_quota at \
+ WHERE ql.quota_limit_id = at.quota_limit_id \
+ AND at.group_id = ?
+
+# ################
+# ModerationModel
+# ################
+ModerationModel.aprovePost = UPDATE jforum_posts SET need_moderate = 0, post_time = ? WHERE post_id = ?
+ModerationModel.categoryPendingModeration = SELECT c.categories_id, c.title, f.forum_id, f.forum_name, COUNT(p.post_id) AS total \
+ FROM jforum_categories c, jforum_forums f, jforum_posts p \
+ WHERE p.need_moderate = 1 \
+ AND p.forum_id = f.forum_id \
+ AND f.categories_id = c.categories_id \
+ GROUP BY c.categories_id, c.title, f.forum_id, f.forum_name
+
+ModerationModel.topicsByForum = SELECT p.post_id, t.topic_id, t.topic_title, t.topic_replies, p.user_id, enable_bbcode, p.attach, \
+ enable_html, enable_smilies, pt.post_subject, pt.post_text, username \
+ FROM jforum_posts p, jforum_posts_text pt, jforum_users u, jforum_topics t \
+ WHERE p.post_id = pt.post_id \
+ AND p.topic_id = t.topic_id \
+ AND t.forum_id = ? \
+ AND p.user_id = u.user_id \
+ AND p.need_moderate = 1 \
+ ORDER BY t.topic_id, post_time ASC
+
+# #############
+# BannerDAO
+# #############
+BannerDAO.selectById = SELECT banner_id, name, banner_placement, banner_description, banner_clicks, banner_views, \
+ banner_url, banner_weight, banner_active, banner_comment, banner_type, banner_width, banner_height \
+ FROM jforum_banner \
+ WHERE banner_id = ?
+
+BannerDAO.selectAll = SELECT banner_id, banner_name, banner_placement, banner_description, banner_clicks, banner_views, \
+ banner_url, banner_weight, banner_active, banner_comment, banner_type, banner_width, banner_height \
+ FROM jforum_banner \
+ ORDER BY comment
+
+BannerDAO.canDelete = SELECT COUNT(1) AS total FROM jforum_banner WHERE banner_id = ?
+BannerDAO.delete = DELETE FROM jforum_banner WHERE banner_id = ?
+
+BannerDAO.update = UPDATE jforum_banner SET banner_name = ?, banner_placement = ?, banner_description = ?, banner_clicks = ?, \
+ banner_views = ?, banner_url = ?, banner_weight = ?, banner_active = ?, banner_comment = ?, banner_type = ?, \