2

あなたの何人かがphpに優れていることを願っています!

基本的にこれを作ったのはMIAなので、私たちが抱えている問題を解決するために何をする必要があるかを彼に尋ねることはできません.

背景: 私たちはカスタム Web アプリを使用して、出張中の鍵屋に新しい仕事があることを知らせる鍵屋の会社です。この Web アプリは、GPS 位置情報、ジョブにかかった時間、作業完了時にクライアントからの署名を保存する機能など、いくつかの追加機能も実行します。

問題: アプリは、E3 というアカウント管理アプリケーションから送信された電子メールを取得することによって機能します。電子メール (例: http://cl.ly/image/2E433O330T0N ) は、この Web アプリによって読み取られ、電子メールとWeb ページを開き、鍵屋に送信して彼の新しい仕事を確認します。鍵屋が電話でウェブページにアクセスしたとき (例: http://cl.ly/image/0P1I0R0h0O3K ))、クライアントの名前、住所、連絡先の詳細を含む仕事の詳細を見ることができます。問題は、ジョブ ノートには元の電子メールの見出しが割り当てられていないため、ジョブ ノートが配置されている場所をコードで解決する必要があることです。これは、Web アプリがジョブのデータを表示しなくなったため、問題のある部分です。ノート。ジョブ メモは、鍵屋に何を修正する必要があるかを伝えるため、重要です。これは以前は機能していましたが、現在機能を停止しており、その理由は不明です。

データを Web アプリに転送する方法は非常に興味深いものです。データをデータベースに保存するのではなく、データをアドレス バーに配置し、Web ページがコードを解釈してページにフォーマットします。

たとえば、現在のリンクは次のようになります (データを取り出し、xxxxxxx に置き換えます)。

http://www.xxxxxxx.com/apps/xxxxxx/on-my-way ? client =xxxxxx& company =xxxxxx& mobile =xxxxxxx& phone =xxxxxxx& contact =xxxxxxxx& addressData =Array& addressIndex =3& streetAddress =xxxxxxxxx& addressLocality =xxxxxxxx& postcode =xxxxxxx& city =xxxxxxxx & clientEmail =& jobDate =11/22/2012& jobTime =1:30:00 %20PM& jobID =xxxxxx& jobAMPM =PM& adminEmail =xxxxxxx&companyPhone =xxxxxxxx& staffEmail =xxxxxxxx& staffName =xxxxxxx& staffPhone =xxxxxxxx

以前は、作業中、このリンクに jobNotes フィールドが追加されていました。

http://www.xxxxxxxx.com/apps/xxxxxxxx/on-my-way ? client =xxxxxxxx& company =xxxxxxxx& mobile =xxxxxxxx& phone =& contact =xxxxxxxx& addressData =Array& addressIndex =4& streetAddress =xxxxxxxx& addressLocality =xxxxxxxx& postcode =xxxxxxxxx& city =xxxxxxxx& clientEmail =xxxxxxxx& jobNotes =Quote%20on%20installing%20new%20keying%20system% 0A%0AAlso%20would%20like%20a%20Quote%20on%20Install%20CCTV%0A%0ASub%20Total%3A%202%2C236.36%0AGST%3A%20223.64%0ATotal%3A%202%2C460.00%0A% 0AMISC&*ジョブ日付=11/19/2012 *& jobTime =2:00:00%20PM& jobID =xxxxxxxx& jobAMPM =PM& adminEmail =xxxxxxxx& noreplyEmail =xxxxxxxx& companyPhone =xxxxxxxx& staffEmail =xxxxxxxx& staffName =xxxxxxxx& staffPhone =xxxxxxxx

コード:

これは、e3 メールのデータを Web アプリに変換するメイン ファイルである e3-parser.php からの抜粋です。

    // Job notes
  if ($this->clientEmail) {

// REMOVED NOW THAT EMAIL IS BEING PUT ON THIRD LINE OF ADDRESS
//   // If customer email present grab everything after it save it as job notes
//   preg_match("/$this->clientEmail[^-]+/",$e3Output,$matches);
//   $result = implode("",$matches);
//   $notes  = trim(str_replace($this->clientEmail,'',$result));
//   $this->jobNotes = rawurlencode($notes);
// } else {

    // Fall back to grabbing everything after the time
    preg_match("/AM[^-]+/",$e3Output,$matchesAM);
    preg_match("/PM[^-]+/",$e3Output,$matchesPM);
    $resultAM = implode("",$matchesAM);
    $resultPM = implode("",$matchesPM);    
    $notes  = trim(str_replace('AM','',$resultAM) . str_replace('PM','',$resultPM));
    $this->jobNotes = rawurlencode($notes);
  }

ここでの質問は、所要時間フィールドの後にリストされているデータを正常に取得できますか? (読み取り元のメールの例: http://cl.ly/image/2E433O330T0N)

解析されたデータを Web ページに配置するコードは次のとおりです。

// Create job link
$url      = $e3->create_job_url('http://www.prvgroup.com.au/apps/jobbook/on-my-way?');  
$linkName = "View job details";
$href     = '<a class="btn btn-small" href="' . $url . '&staffEmail=' . $staff-    >staffEmail . '&staffName=' . $staff->staffName . '&staffPhone=' . $staff->staffPhone . '">' . $linkName . '</a>';  

これは、クリック可能なリンク「仕事の詳細を表示」で彼の新しい仕事を知らせる電子メールで鍵屋に送信されます。リンクには必要なデータが含浸されています。しかし、見た目からして、jobNotes のデータはありません。このコードのバックアップには、コードが jobNotes を表示していたときにまったく同じものが表示されるため、そのフィールドがどのように配置されているのか正確にはわかりません.

ここまで来たら、お見事!問題が何であるかについて十分に明確であったことを願っていますが、さらに明確にする必要がある場合は、質問してください!

乾杯、マーク

4

1 に答える 1

1

コードを調べた後、clientEmailがある場合にのみpreg_matchを実行します。上記のサンプルメールから、クライアントメールがないか、preg_matchを使用して見つからないため、このコードを実行しているようには見えません。調べる特定の場所は、e3-parser.phpファイルの113行目です。あなたはこれを見るでしょう:

if($this->clientEmail) 
{
    //matching code here.
}

109行目と110行目で、メールアドレスを探していますが、見つからないか、間違った場所を探しています。いずれにせよ、メールアドレスの有無に関係なく、このコードを実行する必要があります。メモは後で使用するために設定する必要があります。現在、何も設定されていません。このifステートメントを削除すると、問題が解決するはずです。

于 2012-11-26T02:58:13.003 に答える