操作
Bug(バグ) #2864
未完了OpenPNE 2 からコンバートされたか、管理画面からアップロードされた画像が常に JPEG として表示されてしまう箇所がある
開始日:
2012-03-08
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
Overview (現象)¶
OpenPNE 2 からコンバートされたものか、管理画面からアップロードされた画像が常に JPEG として表示されてしまう箇所がある。
Causes (原因)¶
image_tag_sf_image()
の第一引数にファイル名を与えた場合、元ソースがファイルのフォーマット部分に応じた画像ファイルであるとみなし、変換処理をおこなう。ファイル名は _[拡張子]
で終わる形式 (OpenPNE 3 の随所で画像アップロードをした場合に作成される形式) を想定している。
しかし、 OpenPNE 2 からコンバートされた画像や、管理画面からアップロードされた画像のファイル名は .[拡張子]
で終了しているため、この形式の推測に失敗し、常に JPEG 画像として表示をおこなってしまう。
Way to fix (修正内容)¶
以下の方針が考えられる。
1.image_tag_sf_image()
の現状のアプローチを維持する案
- 極力ファイル名からの推測をおこなわないよう、
image_tag_sf_image()
の第一引数に File クラスのインスタンスを渡すように変更する - ただ、漏れの可能性がありうることと、コア以外のコール部分については変更をおこなえないので、
.[拡張子]
でファイル名が与えられた場合でも期待通りの変換がおこなえるように修正する
2.image_tag_sf_image()
のアプローチを変更する案 - ファイル名が与えられた場合でも、ファイル名からのフォーマットの推測をおこなわないように修正する
Yuya Watanabe さんが12年以上前に更新
メモ¶
修正内容に記述されている 1 の方法の場合に変更する必要がある部分でFile インスタンスを渡すようにする場合に変更が必要そうな部分.
op_image_tag_sf_image (image_tag_sf_image() を内部で呼び出している)
apps/pc_frontend/templates/_partsMemberImageBox.php
8 <?php echo op_image_tag_sf_image($options->object->getImageFileName(), $imgParam) ?>
この$options->object は下記部分で呼び出されており,それぞれ 別のオブジェクトが $options->object に入っている.
apps/pc_frontend/modules/connection/templates/showSuccess.php apps/pc_frontend/modules/community/templates/homeSuccess.php apps/pc_frontend/modules/default/templates/_memberImageBox.php
また,conenction モジュールの $options->object については不明だが,他の2つでは Member オブジェクトと Community オブジェクトが入っており, Member オブジェクトの場合は getImageFileName() で File オブジェクトが返ってくるのに対して Community オブジェクトの getImageFileName() は文字列が返ってくるという違いがある.
操作