受注明細リスト出力でCSVダウンロード出来ない

フォーラム 使い方全般 受注明細リスト出力でCSVダウンロード出来ない

  • このトピックには5件の返信、5人の参加者があり、最後にnglifeにより7年前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #84474
    uchinoko
    参加者

    WordPress のバージョン:4.8.3
    Welcart のバージョン:1.9.5
    症状を確認したブラウザ:Google Chrome とIE11
    サーバー(会社名、サービス名):弊社サーバー
    SSLの利用: あり

    いつもお世話になります。

    ダッシュボード内のWelcart Management
    受注リストへ進み、
    操作フィールド表示をクリックし、
    受注検索で、「を含む」で、検索開始すると、
    ブラウザ上はリスト表示されますが、
    受注明細リスト出力でCSVをダウンロードすると、
    タイトルのみでデータ部分が空になっています。

    受注検索で、「を含む」以外の「に等しい」などの条件は、
    問題無くCSVデータがダウンロード出来ます。

    数日前までは問題ありませんでした。

    原因や対策方法をご教示お願いいたします。

    #84476
    cfg-fin
    参加者

    WordPress のバージョン:4.8.3
    Welcart のバージョン:1.9.5
    症状を確認したブラウザ:Google Chrome 60
    サーバー:さくらのレンタルサーバ スタンダード
    SSLの利用: あり

    ———————————

    お世話になります

    同じ現象です
    受注リストを「を含む」にて検索後
    ブラウザ上では絞り込まれたリストが表示されますが
    ダウンロードされたCSVを見るとタイトル行以外出力されません

    先の方のように「に等しい」での絞り込み後のリストはちゃんと出力されます
    また検索せずに受注リスト全体のCSVもちゃんと出力されています

    システム設定の拡張機能にて新しいデータリストの受注リストを無効にすると
    「を含む」で絞り込んだCSVでも出力されました

    当面 旧受注リストで対応します

    お忙しい中恐れ入りますが 原因・対策等 よろしくお願いいたします

    #84477
    nglife
    参加者

    uchinokoさんと全く同様の現象が起きております。
    恐らく「新型受注リスト」のみの問題で特に「(LIKE検索ベースの)検索条件を指定した際」に起こるようです。

    10月31日(火)前後にWPのコアファイル(自動)アップデートがあったようで、

    /wp-includes/wp-db.php
    (=$wpdb)

    のprepare()関数が仕様変更されているようでした。第二引数以降に「%」が含まれていると一時的にハッシュ値で置き換えられるようになったようです。また、そのハッシュ値は「query()」を通る際に元の「%」に戻されるようです。恐らくこれによるものと思います。

    同ファイルに

    1. placeholder_escape()/ハッシュ値生成
    2. add_placeholder_escape()/ハッシュ値で「%」を置き換え
    3. remove_placeholder_escape()/ハッシュ値を「%」に戻す

    の関数が追加されておりました。
    ※それぞれ「WP:4.8.3」からの追加のようですが、私含めそれ以前のWPを使用されている方でもコアファイル自動アップデートが適用されるとこれらの更新が適用されてしまいます。

    $wpdb->prepare()が呼ばれると、
    → 2. add_placeholder_escape()
    → 1. placeholder_escape()

    の順に内部でコールされ、1. の途中で3. がフックに登録されるようです↓
    add_filter( 'query', array( $this, 'remove_placeholder_escape' ), 0 );

    ただ、リストDL時には$wpdb->prepare()が呼ばれていないためにこの連鎖が出来ていないようでした。

    Welcartの新型受注リスト用クラス
    /wp-content/plugins/usc-e-shop/classes/orderList2.class.php

    の仕様として「$searchWhere」や「$searchHaving」にクエリ文を格納し、リストDL時にはこの変数からクエリ文を復帰していると思います。ただこの場合、各変数にはハッシュ値を含むクエリ文が格納されてしまっているのとprepare()がコールされないことから3. のフック登録が行われずハッシュ値を元に戻せていないままリストのデータ取得クエリが発行されてしまっているのだと思います。また、クエリ文(構文)としては正常なのでエラーは出ずにデータ件数が0になってしまうと思われます。

    私の調べた範囲では以上のような推測となりますが早期ご対応をいただけると助かります。

    どうぞよろしくお願いいたします。

    • この返信は7年前にnglifeが編集しました。
    #84481
    nanbu
    キーマスター

    こんにちは

    情報ありがとうございます。
    nglifeさんが仰います通り、WordPressのサニタイジングの仕様が変わったためかと思われます。これによって以下の不具合を確認いたしました。

    1. キーワード検索を行った場合、ページナビ、ソートを行うと検索結果が0になってしまう。
    2. キーワード検索を行った場合、CSVの出力件数が0になってしまう。

    急を要する方は、これを回避するために以下の応急処置が考えられます。

    1. この症状は、新受注リストで起こっております。旧リストに切り替えていただくことで、とりあえずCSV出力等は行えるようです。
    2. WordPressを4.8.2にダウングレードしていただく。

    【Welcartの今後の対応】
    かなり修正箇所が多いため、今回の仕様に完璧に沿った処置には時間がかかりそうです。ただ、この不便な状況から少しでも早く解放されるために、Welcartでも応急処置を取ろうと考えております。できるだけ早く修正いたしますので、修正版がリリースされるまで今しばらくお待ちいただきたいと思います。

    なお、Welcartの拡張プラグインでも同じような症状が出ております。こちらもあわせてお待ちいただきたいと思います。

    何卒よろしくお願いいたします。

    • この返信は7年前にwelcartが編集しました。
    • この返信は7年前にyskysmrが編集しました。
    #84489
    Welcart
    キーマスター

    お待たせいたしました。修正が完了しました。
    1.9.6にアップグレードしていただけたらと思います。

    #84509
    nglife
    参加者

    nanbuさん
    Welcartさん

    早々のご対応誠にありがとうございました。
    受注データが正常に取得できているのを確認できました。

    1.9.6のコード(本件の関係箇所)を拝見させて頂きましたが例えば
    /usc-e-shop/classes/orderList2.class.phpの379行目
    $this->placeholder_escape = $wpdb->placeholder_escape();
    のように最新のメソッドをコールしている箇所につきましては、念のため後方互換を取られた方がよいのかなとも思いました↓

    if( method_exists($wpdb, 'placeholder_escape') ){
      $this->placeholder_escape = $wpdb->placeholder_escape();
    }

    何にせよ迅速なご対応厚く御礼申し上げます。
    今後ともどうぞよろしくお願いいたします。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。