ewikiで画像データをアップロードしてあるとします.
その画像のサイズ(縦/横幅)を変更して改めてアップロードしても,データベースに最初に登録した画像のサイズの情報が新しい画像のデータに更新されません.最初の画像が大きかった場合,小さな画像に更新すると画像が引き伸ばされて表示されてしまいます.これはデータベース中にwidthとheightのmeta情報が登録され,HTML出力する際にはその情報を利用して<IMG>タグで表示されるためのようです.なお,画像ファイル自体はmoddataにアップロードされて置き換えられるので画像は変化します.
mod/wiki/ewiki/ewiki.phpのfunction ewiki_binary_save_image()の終わりの方を見てみると,既にアップロード済みのファイルの場合はewiki_database()を呼んでいません.以下のようにaction引数を"WRITE"ではなく"OVERWRITE"にして追加してみた所,いまのところ正しく動作しているようです.
#-- write if not exist
$exists = ewiki_database("FIND", array($id));
if (! $exists[$id] ) {
$result = ewiki_database("WRITE", $data);
ewiki_log("saving of '$id': " . ($result ? "ok" : "error"));
}
else {
// (Shirai101): ここから追加
$result = ewiki_database("OVERWRITE", $data);
// (Shirai101): ここまで追加
ewiki_log("binary_save_image: '$id' was already in the database", 2);
}
return($id);
}
なお,完全にコードを理解して動作確認をした訳ではありません.一応,Trackerには報告しました(MDL-17305).