diff --git a/RELEASE b/RELEASE
index 51dc5c4..574ad52 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,3 +1,6 @@
+SVN :
+* possibilité d'ajouter des commentaires avec PunBB (http://www.punbb.org)
+* légères modifications du template
Version 0.4 :
* script d'aide à l'export PNG et au téléchargement :
diff --git a/configuration-dist.php b/configuration-dist.php
index a67d307..85cf8a8 100644
--- a/configuration-dist.php
+++ b/configuration-dist.php
@@ -14,6 +14,10 @@
*/
class configuration
{
+ /**
+ * Software version
+ */
+ var $version = 'pre-0.5 (2008-04-22)';
/**
* URL of the website
diff --git a/punbb-1.2.15_extern.php b/punbb-1.2.15_extern.php
new file mode 100644
index 0000000..4908265
--- /dev/null
+++ b/punbb-1.2.15_extern.php
@@ -0,0 +1,391 @@
+
+
+ Show board statistics:
+
+
+ And finally some examples using extern.php to output an RSS 0.91
+ feed.
+
+ Output the 15 most recently active topics:
+ http://host.com/extern.php?action=active&type=RSS
+
+ Output the 15 newest topics from forum with ID=2:
+ http://host.com/extern.php?action=active&type=RSS&fid=2
+
+ Below you will find some variables you can edit to tailor the
+ scripts behaviour to your needs.
+
+
+/***********************************************************************/
+
+// The maximum number of topics that will be displayed
+$show_max_topics = 60;
+
+// The length at which topic subjects will be truncated (for HTML output)
+$max_subject_length = 30;
+
+/***********************************************************************/
+
+// DO NOT EDIT ANYTHING BELOW THIS LINE! (unless you know what you are doing)
+
+
+define('PUN_ROOT', './');
+@include PUN_ROOT.'config.php';
+
+// If PUN isn't defined, config.php is missing or corrupt
+if (!defined('PUN'))
+ exit('The file \'config.php\' doesn\'t exist or is corrupt. Please run install.php to install PunBB first.');
+
+
+// Make sure PHP reports all errors except E_NOTICE
+error_reporting(E_ALL ^ E_NOTICE);
+
+// Turn off magic_quotes_runtime
+set_magic_quotes_runtime(0);
+
+
+// Load the functions script
+require PUN_ROOT.'include/functions.php';
+
+// Load DB abstraction layer and try to connect
+require PUN_ROOT.'include/dblayer/common_db.php';
+
+// Load cached config
+@include PUN_ROOT.'cache/cache_config.php';
+if (!defined('PUN_CONFIG_LOADED'))
+{
+ require PUN_ROOT.'include/cache.php';
+ generate_config_cache();
+ require PUN_ROOT.'cache/cache_config.php';
+}
+
+// Make sure we (guests) have permission to read the forums
+$result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id=3') or error('Unable to fetch group info', __FILE__, __LINE__, $db->error());
+if ($db->result($result) == '0')
+ exit('No permission');
+
+
+// Attempt to load the common language file
+@include PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/common.php';
+if (!isset($lang_common))
+ exit('There is no valid language pack \''.$pun_config['o_default_lang'].'\' installed. Please reinstall a language of that name.');
+
+// Check if we are to display a maintenance message
+if ($pun_config['o_maintenance'] && !defined('PUN_TURN_OFF_MAINT'))
+ maintenance_message();
+
+if (!isset($_GET['action']))
+ exit('No parameters supplied. See extern.php for instructions.');
+
+
+//
+// Converts the CDATA end sequence ]]> into ]]>
+//
+function escape_cdata($str)
+{
+ return str_replace(']]>', ']]>', $str);
+}
+
+
+//
+// Show recent discussions
+//
+if ($_GET['action'] == 'active' || $_GET['action'] == 'new')
+{
+ $order_by = ($_GET['action'] == 'active') ? 't.last_post' : 't.posted';
+ $forum_sql = '';
+
+ // Was any specific forum ID's supplied?
+ if (isset($_GET['fid']) && $_GET['fid'] != '')
+ {
+ $fids = explode(',', trim($_GET['fid']));
+ $fids = array_map('intval', $fids);
+
+ if (!empty($fids))
+ $forum_sql = ' AND f.id IN('.implode(',', $fids).')';
+ }
+
+ // Any forum ID's to exclude?
+ if (isset($_GET['nfid']) && $_GET['nfid'] != '')
+ {
+ $nfids = explode(',', trim($_GET['nfid']));
+ $nfids = array_map('intval', $nfids);
+
+ if (!empty($nfids))
+ $forum_sql = ' AND f.id NOT IN('.implode(',', $nfids).')';
+ }
+
+ // Should we output this as RSS?
+ if (isset($_GET['type']) && strtoupper($_GET['type']) == 'RSS')
+ {
+ $rss_description = ($_GET['action'] == 'active') ? $lang_common['RSS Desc Active'] : $lang_common['RSS Desc New'];
+ $url_action = ($_GET['action'] == 'active') ? '&action=new' : '';
+
+ // Send XML/no cache headers
+ header('Content-Type: text/xml');
+ header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+ header('Pragma: public');
+
+ // It's time for some syndication!
+ echo ''."\r\n";
+ echo ''."\r\n";
+ echo ''."\r\n";
+ echo ''."\r\n";
+ echo "\t".''.pun_htmlspecialchars($pun_config['o_board_title']).''."\r\n";
+ echo "\t".''.$pun_config['o_base_url'].'/'."\r\n";
+ echo "\t".''.pun_htmlspecialchars($rss_description.' '.$pun_config['o_board_title']).''."\r\n";
+ echo "\t".'en-us'."\r\n";
+
+ // Fetch 15 topics
+ $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT 15') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
+
+ while ($cur_topic = $db->fetch_assoc($result))
+ {
+ if ($pun_config['o_censoring'] == '1')
+ $cur_topic['subject'] = censor_words($cur_topic['subject']);
+
+ echo "\t".'- '."\r\n";
+ echo "\t\t".''.pun_htmlspecialchars($cur_topic['subject']).''."\r\n";
+ echo "\t\t".''.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].$url_action.''."\r\n";
+ echo "\t\t".''.$cur_topic['forum_name'].'
'."\r\n".$lang_common['Author'].': '.$cur_topic['poster'].'
'."\r\n".$lang_common['Posted'].': '.date('r', $cur_topic['posted']).'
'."\r\n".$lang_common['Last post'].': '.date('r', $cur_topic['last_post'])).']]>'."\r\n";
+ echo "\t".' '."\r\n";
+ }
+
+ echo ''."\r\n";
+ echo '';
+ }
+
+
+ // Output regular HTML
+ else
+ {
+ $show = isset($_GET['show']) ? intval($_GET['show']) : 15;
+ if ($show < 1 || $show > 50)
+ $show = 15;
+
+ // Fetch $show topics
+ $result = $db->query('SELECT t.id, t.subject FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT '.$show) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
+
+ while ($cur_topic = $db->fetch_assoc($result))
+ {
+ if ($pun_config['o_censoring'] == '1')
+ $cur_topic['subject'] = censor_words($cur_topic['subject']);
+
+ if (pun_strlen($cur_topic['subject']) > $max_subject_length)
+ $subject_truncated = pun_htmlspecialchars(trim(substr($cur_topic['subject'], 0, ($max_subject_length-5)))).' …';
+ else
+ $subject_truncated = pun_htmlspecialchars($cur_topic['subject']);
+
+ echo '
'.$subject_truncated.''."\n";
+ }
+ }
+
+ return;
+}
+
+
+//
+// Show users online
+//
+else if ($_GET['action'] == 'online' || $_GET['action'] == 'online_full')
+{
+ // Load the index.php language file
+ require PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/index.php';
+
+ // Fetch users online info and generate strings for output
+ $num_guests = $num_users = 0;
+ $users = array();
+ $result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());
+
+ while ($pun_user_online = $db->fetch_assoc($result))
+ {
+ if ($pun_user_online['user_id'] > 1)
+ {
+ $users[] = ''.pun_htmlspecialchars($pun_user_online['ident']).'';
+ ++$num_users;
+ }
+ else
+ ++$num_guests;
+ }
+
+ echo $lang_index['Guests online'].': '.$num_guests.'
';
+
+ if ($_GET['action'] == 'online_full')
+ echo $lang_index['Users online'].': '.implode(', ', $users).'
';
+ else
+ echo $lang_index['Users online'].': '.$num_users.'
';
+
+ return;
+}
+
+
+//
+// Show board statistics
+//
+else if ($_GET['action'] == 'stats')
+{
+ // Load the index.php language file
+ require PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/index.php';
+
+ // Collect some statistics from the database
+ $result = $db->query('SELECT COUNT(id)-1 FROM '.$db->prefix.'users') or error('Unable to fetch total user count', __FILE__, __LINE__, $db->error());
+ $stats['total_users'] = $db->result($result);
+
+ $result = $db->query('SELECT id, username FROM '.$db->prefix.'users ORDER BY registered DESC LIMIT 1') or error('Unable to fetch newest registered user', __FILE__, __LINE__, $db->error());
+ $stats['last_user'] = $db->fetch_assoc($result);
+
+ $result = $db->query('SELECT SUM(num_topics), SUM(num_posts) FROM '.$db->prefix.'forums') or error('Unable to fetch topic/post count', __FILE__, __LINE__, $db->error());
+ list($stats['total_topics'], $stats['total_posts']) = $db->fetch_row($result);
+
+ echo $lang_index['No of users'].': '.$stats['total_users'].'
';
+ echo $lang_index['Newest user'].': '.pun_htmlspecialchars($stats['last_user']['username']).'
';
+ echo $lang_index['No of topics'].': '.$stats['total_topics'].'
';
+ echo $lang_index['No of posts'].': '.$stats['total_posts'];
+
+ return;
+}
+
+/***********************************************************************/
+/* PATCH TOPIC EXPORT */
+/***********************************************************************/
+
+else if ( $_GET['action'] == 'topic') {
+
+
+ $sql = '';
+
+ if( isset( $_GET['ttitle']) ) {
+ $sql = 'SELECT
+ t.id
+ FROM
+ '.$db->prefix.'topics AS t
+ WHERE
+ t.subject="'.$_GET['ttitle'].'"
+
+ ;';
+
+ $res = $db->query( $sql );
+ $_tid = $db->fetch_row( $res );
+ $_GET['tid'] = intval( $_tid[0] );
+
+ }
+
+ if( $_GET['tid'] > 0 ) {
+
+ $sql = 'SELECT
+ p.id, p.message, p.poster
+ FROM
+ '.$db->prefix.'posts AS p
+ WHERE
+ p.topic_id='.$_GET['tid'].'
+ ORDER BY
+ p.edited
+ ;';
+ } else {
+
+ error( 'Unable to fetch posts list, you must ask for a topic id or title', __FILE__, __LINE__, $db->error() );
+ }
+
+ $result = $db->query($sql) or error('Unable to fetch posts list', __FILE__, __LINE__, $db->error());
+
+ while ($cur_post = $db->fetch_assoc($result))
+ {
+ if ($pun_config['o_censoring'] == '1')
+ $cur_post['message'] = censor_words($cur_post['message']);
+
+ $subject_truncated = $cur_post['message'];
+ if (pun_strlen($cur_post['message']) > $max_subject_length) {
+ $subject_truncated = pun_htmlspecialchars(trim(substr($cur_post['message'], 0, ($max_subject_length-5)))).' …';
+ } else {
+ $subject_truncated = pun_htmlspecialchars($cur_post['message']);
+ }
+
+ echo ''.$subject_truncated.'';
+ }
+
+}
+
+/***********************************************************************/
+
+else
+ exit('Bad request');
diff --git a/strip_manager.php b/strip_manager.php
index 518e1c2..8d99468 100644
--- a/strip_manager.php
+++ b/strip_manager.php
@@ -294,7 +294,7 @@ class strip_manager
// if one want to use punbb as forum
if( $this->general->use_punbb ) {
// lasts posts associated to the strip
- $fh = fopen( $this->general->forum.'/extern.php?action=new&fid=1', 'r');
+ $fh = fopen( $this->general->forum.'/extern.php?action=topic&tid=1', 'r');
if (!$fh) {
// TODO traduction
diff --git a/template_default.html b/template_default.html
index 6df167a..d31e3d8 100644
--- a/template_default.html
+++ b/template_default.html
@@ -21,7 +21,7 @@