[ Index ]
 

Code source de Phorum 5.1.25

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/scripts/ -> phorum3to5convert.php (source)

   1  <?php
   2  
   3  /*
   4  
   5  ***** IT IS HIGHLY RECCOMENDED THAT YOU RUN THIS SCRIPT ON A CONSOLE
   6  ***** PHP VERSION 4.2.0 OR HIGHER IS REQUIRED FOR RUNNING THIS SCRIPT
   7  ***** THE SCRIPT IS WRITTEN FOR UPGRADING PHORUM 3.4.x
   8  
   9  This script will convert the data from a Phorum 3 database to a Phorum 5
  10  database. It does not change any of the old phorum3-tables. The data is
  11  only copied over to the new Phorum 5 tables.
  12  
  13  Instructions:
  14  
  15  1. Be sure your Phorum 3 is running a 3.4.x version. If you are running
  16     an older version of Phorum 3, first upgrade to 3.4.x.
  17  
  18  2. Copy or move this script one directory up, to the main Phorum 5 directory.
  19  
  20  3. Edit the $CONVERT variables below to match the settings of your
  21     phorum3 installation.
  22  
  23  4. Install Phorum 5 as usual. For speed and reliability, preferably use the
  24     same database as the database where Phorum 3 lives. Because Phorum 5 uses
  25     a table prefix (typically "phorum_"), the tables for Phorum 3 and Phorum 5
  26     can safely live next to each other in the same database.
  27  
  28  5. Empty the phorum_messages and phorum_forums tables of the Phorum 5
  29     installation. You can do this either by dropping all forums from the
  30     Phorum 5 admin interface or by issuing the appropriate SQL queries from
  31     the MySQL prompt or from a database tool like "phpmyadmin". The queries
  32     to execute are (replace "phorum" with your own table_prefix if you changed
  33     this during install):
  34  
  35     DELETE FROM phorum_messages;
  36     DELETE FROM phorum_forums;
  37  
  38     I could do this from this script as well, but I would find that
  39     a little bit rude ;-))
  40  
  41  6. Turn off unneeded modules for the conversion. All modules hooking into common.php
  42     or some other general hook will be run while doing the conversion which will lead to
  43     at least a slowdown, unexpected side effects and some strange output.
  44  
  45  7. If you have shell access to your webserver, run this script using the
  46     shell from the command line. This is the preferred way of running the
  47     upgrade:
  48  
  49        php phorum3to5convert.php
  50  
  51     If you do not have shell access, call the upgrade script from your browser:
  52  
  53        <phorum5-url>/phorum3to5convert.php
  54  
  55     *** THIS STEP MAY TAKE A WHILE ***
  56  
  57  8. Take a look at the Phorum 5 forums to see if everything was converted
  58     correctly.
  59  
  60  9. Delete the upgrade script phorum3to5convert.php.
  61  
  62  */
  63  
  64  ini_set ( "zlib.output_compression", "0");
  65  ini_set ( "output_handler", "");
  66  @ob_end_flush();
  67  
  68  define("PHORUM5_CONVERSION", 1);
  69  
  70  /***** CONFIGURATION FOR THE CONVERSION *****/
  71  
  72  // The data for connecting to the old Phorum 3 database.
  73  $CONVERT['old_dbhost'] = "localhost";
  74  $CONVERT['old_dbuser'] = "phorum5";
  75  $CONVERT['old_dbpass'] = "phorum5";
  76  
  77  // The name of the old Phorum 3 database.
  78  $CONVERT['olddb'] = "phorum";
  79  
  80  // The main-table-name for phorum3 (default is "forums")
  81  $CONVERT['forumstable'] = "forums";
  82  
  83  // Separator character. If you are going to run this script from
  84  // the web, make it "<br>\n". If you are going to run it from the
  85  // shell prompt, make it "\n".
  86  $CONVERT['lbr'] = "<br>\n";
  87  
  88  // The full path to the directory where the attachments for Phorum 3.4.x
  89  // are stored (like in the old admin).
  90  $CONVERT['attachmentdir'] = "/full/path/to/files";
  91  
  92  /***** THERE'S NO NEED TO CHANGE ANYTHING BELOW THIS LINE *****/
  93  
  94  
  95  // we try to disable the execution timeout
  96  // that command doesn't work in safe_mode :(
  97  set_time_limit(0);
  98  
  99  require  './common.php';
 100  require  './include/thread_info.php';
 101  require  './scripts/phorum3_in.php';
 102  
 103  // no need to change anything below this line
 104  // establishing the first link to the old database
 105  $oldlink = mysql_connect($CONVERT['old_dbhost'], $CONVERT['old_dbuser'], $CONVERT['old_dbpass'], true);
 106  mysql_select_db($CONVERT['olddb'], $oldlink);
 107  
 108  if (!$oldlink) {
 109      print "Couldn't connect to the old database.".$CONVERT['lbr'];
 110      exit();
 111  }
 112  
 113  // checking attachment-dir
 114  if (!file_exists($CONVERT['attachmentdir']) || empty($CONVERT['attachmentdir'])) {
 115      echo "Directory {$CONVERT['attachmentdir']} doesn't exist. Attachments won't be converted. (doesn't matter if you don't have message-attachments) {$CONVERT['lbr']}";
 116  }
 117  
 118  $CONVERT['groups']=array();
 119  $CONVERT['do_groups']=false;
 120  
 121  // checking if the groups-table exists
 122  if(phorum_convert_check_groups($oldlink)) {
 123      // reading groups (should be not too much, therefore we keep the array for later use)
 124      $CONVERT['groups'] = phorum_convert_getGroups($oldlink);
 125      if(count($CONVERT['groups'])) {
 126          echo "Writing groups ... {$CONVERT['lbr']}";
 127          foreach($CONVERT['groups'] as $groupid => $groupdata) {
 128              phorum_db_add_group($groupdata['name'],$groupid);
 129              $CONVERT['groups'][$groupid]['group_id']=$groupid;
 130          }
 131      }
 132      $CONVERT['do_groups']=true;
 133  }
 134  
 135  $CONVERT['do_users']=false;
 136  // checking if the users-table exists
 137  if(phorum_convert_check_users($oldlink)) {
 138      $CONVERT['do_users']=true;
 139  }
 140  
 141  // reading the forums
 142  $forums = phorum_convert_getForums($oldlink);
 143  
 144  // going through all the forums (and folders)
 145  echo "Writing forumdata ... {$CONVERT['lbr']}";
 146  flush();
 147  $offsets=array();
 148  
 149  foreach($forums as $forumid => $forumdata) {
 150      $newforum = phorum_convert_prepareForum($forumdata);
 151  
 152      phorum_db_add_forum($newforum);
 153  
 154      if (!$forumdata['folder']) {
 155          $PHORUM['forum_id'] = $forumid;
 156          $CONVERT['forum_id'] = $forumid;
 157  
 158          echo "Reading maximum message-id from messages-table... {$CONVERT['lbr']}";
 159          flush();
 160          $CONVERT['max_id'] = phorum_db_get_max_messageid();
 161          $offsets[$forumid]=$CONVERT['max_id'];
 162  
 163          if ($forumdata['allow_uploads']=='Y' && file_exists($CONVERT['attachmentdir']."/".$forumdata['table_name'])) {
 164              $CONVERT['attachments']=phorum_convert_getAttachments($forumdata['table_name']);
 165              echo "Reading attachments for forum " . $forumdata['name'] . "...{$CONVERT['lbr']}";
 166              flush();
 167          }
 168  
 169          echo "Writing postings for forum " . $forumdata['name'] . "...{$CONVERT['lbr']}";
 170          flush();
 171  
 172          $count = 1;
 173          $total = 0;
 174  
 175          $res = phorum_convert_selectMessages($forumdata, $oldlink);
 176          while ($newmessage = phorum_convert_getNextMessage($res,$forumdata['table_name'])) {
 177  
 178              if(phorum_db_post_message($newmessage, true)) {
 179                phorum_update_thread_info($newmessage['thread']);
 180                echo "+";
 181                flush();
 182                if ($count == 50) {
 183                    $total += $count;
 184                    echo " $total from \"{$forumdata['name']}\"";
 185                    if($CONVERT['lbr']=="\n"){
 186                        // lets just go back on this line if we are on the console
 187                        echo "\r";
 188                    } else {
 189                        echo $CONVERT['lbr'];
 190                    }
 191                    flush();
 192                    $count = 0;
 193                }
 194                $count++;
 195              } else {
 196                print "Error in message: ".$CONVERT['lbr'];
 197                print_var($newmessage);
 198                print $CONVERT['lbr'];
 199              }
 200          }
 201  
 202          echo "{$CONVERT['lbr']}Updating forum-statistics: {$CONVERT['lbr']}";
 203          flush();
 204          phorum_db_update_forum_stats(true);
 205          echo $CONVERT['lbr'];
 206          flush();
 207      }
 208  }
 209  unset($forums);
 210  
 211  // storing the offsets of the forums
 212  phorum_db_update_settings(array("conversion_offsets"=>$offsets));
 213  
 214  if($CONVERT['do_groups'] && count($CONVERT['groups'])) { // here we set the group-permissions
 215      echo "Writing group-permissions ... {$CONVERT['lbr']}";
 216      foreach($CONVERT['groups'] as $groupid => $groupdata) {
 217          phorum_db_save_group($groupdata);
 218      }
 219  }
 220  
 221  if($CONVERT['do_users']) {
 222      echo "migrating users ...{$CONVERT['lbr']}";
 223      flush();
 224      $group_perms=phorum_convert_getUserGroups($oldlink);
 225      $res = phorum_convert_selectUsers($oldlink);
 226  
 227      if (!$res) {
 228          echo "No users found, All done now.{$CONVERT['lbr']}";
 229          flush();
 230          exit;
 231      }
 232  
 233      // there are users...
 234      $count = 0;
 235      $userdata["date_added"] = time();
 236      $cur_time = time();
 237      while ($cur_user = phorum_convert_getNextUser($res)) {
 238          if (isset($cur_user['user_id'])) {
 239              phorum_user_add($cur_user, -1);
 240              $user_groups=$group_perms[$cur_user['user_id']];
 241              if(count($user_groups)) { // setting the user's group-memberships
 242              phorum_db_user_save_groups($cur_user['user_id'],$user_groups);
 243              }
 244              $count++;
 245          }
 246      }
 247      unset($users);
 248      print "$count users converted{$CONVERT['lbr']}";
 249  }
 250  echo "{$CONVERT['lbr']}Done.{$CONVERT['lbr']}";
 251  flush();
 252  
 253  ?>


Généré le : Thu Nov 29 12:22:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics