- Posts: 43
- Thank you received: 7
撤回通知(ユーザー宛)プレビュー画面でのFatal errorの報告 (PHP 8環境)
- Alouette00
-
Topic Author
- Offline
Less
More
4 months 2 weeks ago - 4 months 2 weeks ago #371804
by Alouette00
撤回通知(ユーザー宛)プレビュー画面でのFatal errorの報告 (PHP 8環境) was created by Alouette00
-- HikaShop version -- : 6.4.1
-- Joomla version -- : 6.1.0
-- PHP version -- : 8.5.2
お世話になります。
PHP 8以降の環境において、HikaShopの「撤回通知(ユーザー宛) (withdrawal_user_notification)」のメールプレビュー(および編集画面)を開こうとすると、以下のFatal errorが発生する不具合を見つけましたのでご報告いたします。
【エラー内容】
0 Attempt to assign property "cart" on false
【発生箇所】
ファイル:media/com_hikashop/mail/withdrawal_user_notification.preload.php
16行目付近:
$data->cart = $orderClass->loadFullOrder($data->order->order_id, true, false);
【原因】
管理画面でのプレビュー時、$data オブジェクト(および $data->order や $data->withdrawal)が空の状態で上記の処理が走るため、PHP 8の厳密なルールにより「非オブジェクト(false)へのプロパティ割り当て」としてエラーで停止してしまいます。
【回避策(修正案)】
該当ファイルの先頭付近($data->cart の代入より前)に、以下のようにプレビュー用のダミーオブジェクトを生成するコードを追記したところ、正常にプレビューが表示されるようになりました。
お手数ですが、開発元への報告および次期バージョンでの修正をご検討いただけますと幸いです。
よろしくお願いいたします。
追記:管理者宛の withdrawal_admin_notification.preload.php でも全く同じ問題が起きることを確認しました。このファイルも同様に修正をよろしくお願いします。
-- Joomla version -- : 6.1.0
-- PHP version -- : 8.5.2
お世話になります。
PHP 8以降の環境において、HikaShopの「撤回通知(ユーザー宛) (withdrawal_user_notification)」のメールプレビュー(および編集画面)を開こうとすると、以下のFatal errorが発生する不具合を見つけましたのでご報告いたします。
【エラー内容】
0 Attempt to assign property "cart" on false
【発生箇所】
ファイル:media/com_hikashop/mail/withdrawal_user_notification.preload.php
16行目付近:
$data->cart = $orderClass->loadFullOrder($data->order->order_id, true, false);
【原因】
管理画面でのプレビュー時、$data オブジェクト(および $data->order や $data->withdrawal)が空の状態で上記の処理が走るため、PHP 8の厳密なルールにより「非オブジェクト(false)へのプロパティ割り当て」としてエラーで停止してしまいます。
【回避策(修正案)】
該当ファイルの先頭付近($data->cart の代入より前)に、以下のようにプレビュー用のダミーオブジェクトを生成するコードを追記したところ、正常にプレビューが表示されるようになりました。
Code:
if (!is_object($data)) {
$data = new stdClass();
}
if (!isset($data->order)) {
$data->order = new stdClass();
$data->order->order_id = 0;
}
if (!isset($data->withdrawal)) {
$data->withdrawal = new stdClass();
$data->withdrawal->withdrawal_products = array();
$data->withdrawal->withdrawal_reason = '';
}
$data->cart = $orderClass->loadFullOrder($data->order->order_id, true, false);
if (!is_object($data->cart)) {
$data->cart = new stdClass();
}
if (!isset($data->cart->products)) {
$data->cart->products = array();
}
お手数ですが、開発元への報告および次期バージョンでの修正をご検討いただけますと幸いです。
よろしくお願いいたします。
追記:管理者宛の withdrawal_admin_notification.preload.php でも全く同じ問題が起きることを確認しました。このファイルも同様に修正をよろしくお願いします。
Last edit: 4 months 2 weeks ago by Alouette00.
Please Log in or Create an account to join the conversation.
4 months 2 weeks ago #371805
by nicolas
Replied by nicolas on topic 撤回通知(ユーザー宛)プレビュー画面でのFatal errorの報告 (PHP 8環境)
Alouette00様
詳細なご報告と修正案をご提供いただき、ありがとうございます。
ご指摘の通り、withdrawal_user_notification.preload.php および withdrawal_admin_notification.preload.php の両方で、PHP 8環境においてプレビュー画面で $data がオブジェクトでない場合にFatal errorが発生する問題を確認いたしました。
修正をHikaShop 6.4.1の最新ビルドに反映いたしましたので、お手数ですが下記の手順をお試しください:
1. My account>My subscriptionsから、HikaShop 6.4.1の最新ビルドを再度ダウンロードしてください
2. ダウンロードしたZIPファイルを、Joomlaの拡張機能マネージャー経由でインストールしてください(同じバージョン番号でも上書きインストール可能です)
3. 「Withdrawal notification (to user)」および「Withdrawal notification (to admin)」のメールテンプレートのプレビュー・編集画面が、Fatal errorなしで表示されることをご確認ください
なお、修正の方針はご提案いただいたものと同じ考え方で、$data、$data->order、$data->withdrawal、$data->cart
の各プロパティに対して安全なデフォルト値を設定するようにしております。HikaShop内の他のpreloadファイル(order_creation_notification.preload.php など)と同様のスタイルで実装いたしました。
ご報告いただき、誠にありがとうございました。問題が解決しない場合は、このスレッドにてお知らせください。
よろしくお願いいたします。
詳細なご報告と修正案をご提供いただき、ありがとうございます。
ご指摘の通り、withdrawal_user_notification.preload.php および withdrawal_admin_notification.preload.php の両方で、PHP 8環境においてプレビュー画面で $data がオブジェクトでない場合にFatal errorが発生する問題を確認いたしました。
修正をHikaShop 6.4.1の最新ビルドに反映いたしましたので、お手数ですが下記の手順をお試しください:
1. My account>My subscriptionsから、HikaShop 6.4.1の最新ビルドを再度ダウンロードしてください
2. ダウンロードしたZIPファイルを、Joomlaの拡張機能マネージャー経由でインストールしてください(同じバージョン番号でも上書きインストール可能です)
3. 「Withdrawal notification (to user)」および「Withdrawal notification (to admin)」のメールテンプレートのプレビュー・編集画面が、Fatal errorなしで表示されることをご確認ください
なお、修正の方針はご提案いただいたものと同じ考え方で、$data、$data->order、$data->withdrawal、$data->cart
の各プロパティに対して安全なデフォルト値を設定するようにしております。HikaShop内の他のpreloadファイル(order_creation_notification.preload.php など)と同様のスタイルで実装いたしました。
ご報告いただき、誠にありがとうございました。問題が解決しない場合は、このスレッドにてお知らせください。
よろしくお願いいたします。
The following user(s) said Thank You: Alouette00
Please Log in or Create an account to join the conversation.
- Alouette00
-
Topic Author
- Offline
Less
More
- Posts: 43
- Thank you received: 7
4 months 2 weeks ago #371808
by Alouette00
Replied by Alouette00 on topic 撤回通知(ユーザー宛)プレビュー画面でのFatal errorの報告 (PHP 8環境)
nicolasさん、
ありがとうございます。最新ビルドを再度ダウンロードで更新、確認しました。
ありがとうございます。最新ビルドを再度ダウンロードで更新、確認しました。
The following user(s) said Thank You: nicolas
Please Log in or Create an account to join the conversation.
Time to create page: 0.213 seconds