diff --git a/e107_plugins/forum/forum_class.php b/e107_plugins/forum/forum_class.php
index 9f4ab0465..2b08ea560 100644
--- a/e107_plugins/forum/forum_class.php
+++ b/e107_plugins/forum/forum_class.php
@@ -9,8 +9,8 @@
* Message Handler
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_class.php,v $
- * $Revision: 1.34 $
- * $Date: 2008-12-23 20:48:24 $
+ * $Revision: 1.35 $
+ * $Date: 2008-12-24 04:51:27 $
* $Author: mcfly_e107 $
*
*/
@@ -455,7 +455,7 @@ class e107forum
return $e107->sql->db_Count('forum_post', '(*)', "WHERE post_id <= {$postId} AND post_thread = {$threadId} ORDER BY post_id ASC");
}
- function forumUpdateLastpost($type, $id, $update_threads = FALSE)
+ function forumUpdateLastpost($type, $id, $updateThreads = false)
{
global $sql, $tp;
$sql2 = new db;
@@ -472,15 +472,17 @@ class e107forum
else
{
$tmp['thread_lastuser'] = 0;
- $tmp['thread_lastuser_anon'] = $lpInfo['post_user_anon'];
+ $tmp['thread_lastuser_anon'] = ($lpInfo['post_user_anon'] ? $lpInfo['post_user_anon'] : 'Anonymous');
}
$tmp['thread_lastpost'] = $lpInfo['post_datestamp'];
$tmp['_FIELD_TYPES'] = $this->fieldTypes['forum_thread'];
+ $tmp['WHERE'] = 'thread_id = '.$id;
$sql->db_Update('forum_thread', $tmp);
return $lpInfo;
}
- if ($type == 'forum') {
+ if ($type == 'forum')
+ {
if ($id == 'all')
{
if ($sql->db_Select('forum', 'forum_id', 'forum_parent != 0'))
@@ -491,7 +493,8 @@ class e107forum
}
foreach($parentList as $id)
{
- $this->forumUpdateLastpost('forum', $id, $update_threads);
+ set_time_limit(60);
+ $this->forumUpdateLastpost('forum', $id, $updateThreads);
}
}
}
@@ -500,13 +503,14 @@ class e107forum
$id = (int)$id;
$lp_info = '';
$lp_user = 'NULL';
- if($update_threads == true)
+ if($updateThreads == true)
{
if ($sql2->db_Select('forum_t', 'thread_id', "thread_forum_id = $id AND thread_parent = 0"))
{
while ($row = $sql2->db_Fetch(MYSQL_ASSOC))
{
- $this->update_lastpost('thread', $row['thread_id']);
+ set_time_limit(60);
+ $this->forumUpdateLastpost('thread', $row['thread_id']);
}
}
}
@@ -1011,7 +1015,8 @@ class e107forum
$flist = $e107->sql->db_getList();
foreach($flist as $f)
{
- $this->forumUpdateCounts($f['forum_id']);
+ set_time_limit(60);
+ $this->forumUpdateCounts($f['forum_id'], $recalcThreads);
}
return;
}
@@ -1019,8 +1024,9 @@ class e107forum
$threads = $e107->sql->db_Count('forum_thread', '(*)', 'WHERE thread_forum_id='.$forumId);
$replies = $e107->sql->db_Count('forum_post', '(*)', 'WHERE post_forum='.$forumId);
$e107->sql->db_Update('forum', "forum_threads={$threads}, forum_replies={$replies} WHERE forum_id={$forumId}");
- if($recalc_threads == true)
+ if($recalcThreads == true)
{
+ set_time_limit(60);
$e107->sql->db_Select('forum_post', 'post_thread, count(post_thread) AS replies', "post_forum={$forumId} GROUP BY post_thread");
$tlist = $e107->sql->db_getList();
foreach($tlist as $t)
diff --git a/e107_plugins/forum/forum_update.php b/e107_plugins/forum/forum_update.php
index 9ce231b54..2861f6b59 100644
--- a/e107_plugins/forum/forum_update.php
+++ b/e107_plugins/forum/forum_update.php
@@ -9,8 +9,8 @@
* Message Handler
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_update.php,v $
- * $Revision: 1.9 $
- * $Date: 2008-12-23 20:48:24 $
+ * $Revision: 1.10 $
+ * $Date: 2008-12-24 04:51:27 $
* $Author: mcfly_e107 $
*
*/
@@ -507,7 +507,7 @@ function step7()
if(!isset($_POST['calculate_usercounts']))
{
$text = "
- This step will calculate post count information for all users
+ This step will calculate post count information for all users, as well as recount all for thread and reply counts.
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+ return;
+ }
+
+ global $forum;
+
+ $forum->forumUpdateLastpost('forum', 'all', true);
+
+
+// $forum->forumUpdateLastpost('thread', 84867);
+
+
+ $text .= "
+ Successfully recalculated lastpost information for all forums and threads.
+
+
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+}
+
+function step9()
+{
+ $e107 = e107::getInstance();
+ $stepCaption = 'Step 9: Migrate poll information';
+ if(!isset($_POST['migrate_polls']))
+ {
+ $text = "
+ This step will recalculate all poll information that has been entered in the forums.
+
+
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+ return;
+ }
+
+ $qry = "
+ SELECT t.thread_id, p.poll_id FROM `#polls` AS p
+ LEFT JOIN `#forum_thread` AS t ON t.thread_id = p.poll_datestamp
+ WHERE t.thread_id IS NOT NULL
+ ";
+ if($e107->sql->db_Select_gen($qry))
+ {
+ while($row = $e107->sql->db_Fetch(MYSQL_ASSOC))
+ {
+ $threadList[] = $row['thread_id'];
+ }
+ foreach($threadList as $threadId)
+ {
+ if($e107->sql->db_Select('forum_thread', 'thread_options', 'thread_id = '.$threadId, 'default', true))
+ {
+ $row = $e107->sql->db_Fetch(MYSQL_ASSOC);
+ if($row['thread_options'])
+ {
+ $opts = unserialize($row['thread_options']);
+ $opts['poll'] = 1;
+ }
+ else
+ {
+ $opts = array('poll' => 1);
+ }
+ $tmp = array();
+ $tmp['thread_options'] = serialize($opts);
+ $tmp['WHERE'] = 'thread_id = '.$threadId;
+ $tmp['_FIELD_TYPES']['thread_options'] = 'escape';
+ $e107->sql->db_Update('forum_thread', $tmp);
+ }
+ }
+ }
+ else
+ {
+ $text = 'No threads found!
';
+ }
+
+ $text .= "
+ Successfully migrated forum poll information for ".count($threadList)." thread poll(s).
+
+
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+}
+
+function step10()
+{
+ $e107 = e107::getInstance();
+ $stepCaption = 'Step 9: Migrate forum attachments';
+ if(!isset($_POST['migrate_attachments']))
+ {
+ $text = "
+ This step will migrate all forum attachment information.
+ All files will be moved from the e107_files/public directory into the e107_plugins/forum/attachment directory and related posts will be updated accordingly.
+
+
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+ return;
+ }
+
+ $qry = "
+ SELECT thread_id, thread_thread FROM `#forum_t`
+ WHERE thread_thread REGEXP '_[[:digit:]]+_FT'
+ ";
+ if($e107->sql->db_Select_gen($qry))
+ {
+ while($row = $e107->sql->db_Fetch(MYSQL_ASSOC))
+ {
+ $postList[] = $row;
+ }
+ $attachments = array();
+ foreach($postList as $post)
+ {
+ //[img:width=604&height=453]{e_FILE}public/1229562306_1_FT0_julia.jpg[/img]
+ //Check for attached full-size images
+ if(preg_match_all('#\[img.*?\]({e_FILE}.*?_FT\d+_.*?)\[/img\]#ms', $post['thread_thread'], $matches, PREG_SET_ORDER))
+ {
+ foreach($matches as $match)
+ {
+// print_a($matches);
+ $att = array();
+ $att['thread_id'] = $post['thread_id'];
+ $att['type'] = 'img';
+ $att['html'] = $match[0];
+ $att['name'] = $match[1];
+ $att['thumb'] = '';
+ $attachments[] = $att;
+ }
+ }
+
+ //[link={e_FILE}public/1230091080_1_FT0_julia.jpg][img:width=60&height=45]{e_FILE}public/1230091080_1_FT0_julia_.jpg[/img][/link][br]
+ //Check for images with thumbnails linking to full size
+ if(preg_match_all('#\[link=(.*?)\]\[img.*?\]({e_FILE}.*?)\[/img\]\[/link\]#ms', $post['thread_thread'], $matches, PREG_SET_ORDER))
+ {
+ foreach($matches as $match)
+ {
+// print_a($matches);
+ $att = array();
+ $att['thread_id'] = $post['thread_id'];
+ $att['type'] = 'img';
+ $att['html'] = $match[0];
+ $att['name'] = $match[1];
+ $att['thumb'] = $match[2];
+ $attachments[] = $att;
+ }
+ }
+
+ //[file={e_FILE}public/1230090820_1_FT0_julia.zip]julia.zip[/file]
+ //Check for attached file (non-images)
+ if(preg_match_all('#\[file=({e_FILE}.*?)\](.*?)\[/file\]#ms', $post['thread_thread'], $matches, PREG_SET_ORDER))
+ {
+ foreach($matches as $match)
+ {
+// print_a($matches);
+ $att = array();
+ $att['thread_id'] = $post['thread_id'];
+ $att['type'] = 'file';
+ $att['html'] = $match[0];
+ $att['name'] = $match[1];
+ $att['thumb'] = '';
+ $attachments[] = $att;
+ }
+ }
+ }
+ if(count($attachments))
+ {
+ print_a($attachments);
+ }
+
+ }
+ else
+ {
+ $text = 'No forum attachments found!
';
+ }
+
+// $forum->forumUpdateLastpost('thread', 84867);
+
+ $text .= "
+ Successfully migrated forum attachment information for ".count($postList)." post(s).
+
+
+ ";
+ $e107->ns->tablerender($stepCaption, $text);
+}
+
class forumUpgrade
{
@@ -756,18 +963,21 @@ function forum_update_adminmenu()
$var[6]['text'] = '6 - Migrate threads/replies';
$var[6]['link'] = '#';
- $var[7]['text'] = '7 - Calc counts/lastpost data';
+ $var[7]['text'] = '7 - Recalc all counts';
$var[7]['link'] = '#';
- $var[8]['text'] = '8 - Migrate any poll data';
+ $var[8]['text'] = '8 - Calc lastpost data';
$var[8]['link'] = '#';
- $var[9]['text'] = '9 - Migrate any attachments';
+ $var[9]['text'] = '9 - Migrate any poll data';
$var[9]['link'] = '#';
- $var[10]['text'] = '10 - Delete old forum data';
+ $var[10]['text'] = '10 - Migrate any attachments';
$var[10]['link'] = '#';
+ $var[11]['text'] = '11 - Delete old forum data';
+ $var[11]['link'] = '#';
+
for($i=1; $i < $currentStep; $i++)
{