diff --git a/e107_plugins/forum/forum_update.php b/e107_plugins/forum/forum_update.php index 1581342eb..aca9793df 100644 --- a/e107_plugins/forum/forum_update.php +++ b/e107_plugins/forum/forum_update.php @@ -11,8 +11,8 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_update.php,v $ -| $Revision: 1.5 $ -| $Date: 2008-12-20 00:55:29 $ +| $Revision: 1.6 $ +| $Date: 2008-12-20 04:51:06 $ | $Author: mcfly_e107 $ +----------------------------------------------------------------------------+ */ @@ -229,6 +229,100 @@ function step3() } +function step4() +{ + $e107 = e107::getInstance(); + $stepCaption = 'Step 4: Move user specific forum data'; + if(!isset($_POST['move_user_data'])) + { + $text = " + This step will move the user_viewed data from user table into the user extended table.
+ The user_forum field data will not be moved, as it will be recalculated later.
+
+ Depending on the size of your user table, this step could take a while. +

+
+ +
+ "; + $e107->ns->tablerender($stepCaption, $text); + return; + } + $result = array( + 'usercount' => 0, + 'viewcount' => 0, + 'trackcount' => 0 + ); + $db = new db; + if($db->db_Select('user', 'user_id, user_viewed, user_realm',"user_viewed != '' OR user_realm != ''")) + { + require_once(e_HANDLER.'user_extended_class.php'); + $ue = new e107_user_extended; + + while($row = $db->db_Fetch(MYSQL_ASSOC)) + { + $result['usercount']++; + $userId = (int)$row['user_id']; + + $viewed = $row['user_viewed']; + $viewed = trim($viewed, '.'); + $tmp = preg_split('#\.+#', $viewed); + $viewed = implode(',', $tmp); + + + $realm = $row['user_realm']; + $realm - str_replace('USERREALM', '', $realm); + $realm = trim($realm, '-.'); + $trackList = preg_split('#\D+#', $realm); + +// echo 'user_id = '.$userId.'
'; +// echo 'viewed = '.$viewed.'
'; +// echo 'realm = '.$realm.'
'; +// echo 'tracking = ' . implode(',', $trackList).'
'; +// print_a($trackList); +// echo "

"; + + if($viewed != '') + { + $ue->user_extended_setvalue($userId, 'plugin_forum_viewed', mysql_real_escape_string($viewed)); + $result['viewcount']++; + } + + if(is_array($trackList) && count($trackList)) + { + foreach($trackList as $threadId) + { + $result['trackcount']++; + $threadId = (int)$threadId; + if($threadId > 0) + { + $tmp = array(); + $tmp['track_userid'] = $userId; + $tmp['track_thread'] = $threadId; + $tmp['_FIELD_TYPES']['track_userid'] = 'int'; + $tmp['_FIELD_TYPES']['track_thread'] = 'int'; + + $e107->sql->db_Insert('forum_track', $tmp); + } + } + } + } + } + + $text .= " + User data move results:
+ Number of users processed: {$result['usercount']}
+ Number of viewed data processed: {$result['viewcount']}
+ Number of tracked records added: {$result['trackcount']}
+

+
+ +
+ "; + + $e107->ns->tablerender($stepCaption, $text); + +} class forumUpgrade {