thinkingreed-inc / F-RevoCRM

日本で最も利用されているオープンソースCRM
https://f-revocrm.jp
Other
46 stars 41 forks source link

[不具合]メールの「クリック数」のカウントが動作していない #629

Closed ayako-hira closed 1 year ago

ayako-hira commented 2 years ago

概要(Overview) モジュールの関連タブにある「メール」一覧に表示される「カウント」が動作していない

再現手順(To Reproduce) 不具合の発生手順を細かく記載してください。 (Steps to reproduce the behavior:)

  1. F-RevoからURL付きのメールを送信
  2. 届いたメールのURLをクリック
  3. カウントの数字が動かない

スクリーンショット(Screenshots) image

不具合発生時の利用ブラウザ Blowser(please complete the following information):

Remicck commented 2 years ago

@kkouta config.inc.phpにemail_tracking = 'Yes'を設定すると、アクセス数は取れそうです。

なお、これをYesにすればURLの方も動きそうですが、動かないです。

    public function convertUrlsToTrackUrls($content, $crmid, $type = 'html') {
        if ($this->isEmailTrackEnabled()) {
            $extractedUrls = Vtiger_Functions::getUrlsFromHtml($content);

            foreach ($extractedUrls as $sourceUrl => $value) {
                $trackingUrl = $this->getTrackUrlForClicks($crmid, $sourceUrl);
                $content = $this->replaceLinkWithShortUrl($content, $trackingUrl, $sourceUrl, $type);
            }
        }
        return $content;
    }

    public function replaceLinkWithShortUrl($content, $toReplace, $search, $type) {
        if ($type == 'html') {
            $search = '"' . $search . '"';
            $toReplace = '"' . $toReplace . '"';
        }
        $pos = strpos($content, $search);

        if ($pos != false) {
            $replacedContent = substr_replace($content, $toReplace, $pos) . substr($content, $pos + strlen($search));
            return $replacedContent;
        }

        return $content;
    }
kkouta commented 1 year ago

config.inc.phpのemail_tracking = 'Yes'を設定するとアクセス数、クリック数ともに確認できました。 image

動作としては下記に記載します。

  1. Shorturl.phpからShortURL.phpのVtiger_ShortURL_Helperクラスのhandleメゾットが呼び出される。
  2. メールのurlに添付されたidを元にvtiger_shorturlsから呼び出すファイルとクラス、添付されたurlなどの情報を取得する。
  3. 2で取得した情報を元にclickHandlerとopenHandlerを実行する。
  4. clickHandlerは添付されたurlをクリックしたときに実行され、trackClicks関数によってvtiger_email_trackにクリック数を保存・更新していく。
  5. openHandlerはメールを開いたときに実行され、最後のアクセスから一時間以上経過した時のみアクセスとしてカウントしvtiger_email_trackにアクセス数を保存・更新していく。
Remicck commented 1 year ago

@yutakoseki インストール時にconfig.inc.phpが生成される際に、上記コンフィグを生成するようにしてください。