2007年6月2日土曜日

DrupalからXOOPSへユーザデータを移行する方法

druplicon images

以前とあるサイトを管理するのにDrupalを使っていました。DrupalはDrupalでまぁいいとこもあるんですが、理由があってXOOPSに乗り換えることにしました。

DrupalはXOOPSと比べて、圧倒的に情報が少ないというのが一番大きくて、それとDrupalのデザインをいじるのに、Drupal内部の書き換えを結構やってしまったせいで、バージョンアップすらままならなくなったからです。

ただ移行するにあたって、これまで登録してくれた会員の方々に再登録をしてもらうのはNGでした。そこでDrupalからXOOPSへの移行方法をWebで探したわけですが、ない!全然ない!逆にXOOPSからDrupalへの移行方法は色々とあるようです。

情報がまったくなかったわけで仕方ないので、自分で移行してみることにしました。移行の条件としては、

  • Drupalのユーザ名、パスワード、E-Mailを漏れなく移行する。
  • ユーザグループ情報も移行する。
です。

結論としては、以下の方法で実現できます。

※以下に続く方法を実現したPHPスクリプトがあるのはあるのですが、自分の環境に特化しているため広く公開することができません。必要な方はご連絡いただければお渡しすることはできます。

まずデータには、素直に対応付けできるデータは良いのですが、そうはいかないデータがあります。1つ目はXOOPSのactkeyというやつです。これは、ユーザを一意に特定する乱数のようです。これはPHPでは以下の記述で対応できます。

substr( md5(uniqid(mt_rand(), 1)), 0, 8 )

2つ目のユーザ権限に関しては、DrupalとXOOPSのグループをそれぞれ設定します。これは整数で入っていますが、まずDrupalとXOOPSで値が合いません。それぞれ対応付けてDBに入れる必要があります。また、普通にDrupal、XOOPSをインストールすると、DrupalのDBはUTF-8、XOOPSのDBはEUC-JPです。なので、Drupal DBのデータをEUC-JPに変換する必要があります。
DrupalとXOOPSのユーザデータの対応表※XOOPSのテーブルプレフィックスは「xoops」とします。
Drupal XOOPS
テーブル名 users xoops_users
ユーザID uid uid
ユーザ名 name uname
パスワード pass pass
E-Mail mail email
ユーザ作成日 created user_regdate

DrupalとXOOPSのユーザ権限データ対応表

Drupal XOOPS
テーブル名 users_roles xoops_groups_users_link
ユーザID uid uid
ユーザ権限 rid 忘れてしまいました


0 コメント:

コメントを投稿