XoopsX / legacy

XOOPS Cube Legacy base repository
15 stars 11 forks source link

messageモジュールインストール時のpmモジュからのデータ移行にバグ #60

Closed RyujiAMANO closed 10 years ago

RyujiAMANO commented 10 years ago

html/modules/message/admin/class/myInstaller.class.php 63行目から

while ($val = $db->fetchArray($result)) {
      $sql = sprintf($INBOX, $val['to_userid'], $val['from_userid'], mysql_real_escape_string($val['subject']), mysql_real_escape_string($val['msg_text']), $val['msg_time'], $val['read_msg']);
      $result = $db->queryF($sql);

      $sql = sprintf($OUTBOX, $val['from_userid'], $val['to_userid'], mysql_real_escape_string($val['subject']), mysql_real_escape_string($val['msg_text']), $val['msg_time']);
      $result = $db->queryF($sql);
      $num++;
    }

と、whileに渡してる$resultをループ内のqueryFで上書きしちゃうので、データ移行がしくじります。

while ($val = $db->fetchArray($result)) {
      $sql = sprintf($INBOX, $val['to_userid'], $val['from_userid'], mysql_real_escape_string($val['subject']), mysql_real_escape_string($val['msg_text']), $val['msg_time'], $val['read_msg']);
      $result2 = $db->queryF($sql);

      $sql = sprintf($OUTBOX, $val['from_userid'], $val['to_userid'], mysql_real_escape_string($val['subject']), mysql_real_escape_string($val['msg_text']), $val['msg_time']);
      $result3 = $db->queryF($sql);
      $num++;
    }

とすればpmのデータ読み取ってmessageモジュールに移行されました。

nao-pon commented 10 years ago

ソースをよく見ていないのですが、そもそもループの中で queryF() の戻り値を変数に代入しなくてもいいのかな?

RyujiAMANO commented 10 years ago

そうですね。全然queryFの結果を処理してないですもんね。