Research Artisan Liteのソースコード解析メモ

データ集計周りのロジックを調査したときのメモ。
ソースを調査した目的は、Research Artisan Liteでログイン直後に表示される時間別画面に、各種サマリー値(adsenseクリック数など)を出したかったから。


確認できた事


ログの集計は、RaModel.phpのfindQuery()で実施される。

ログの種類は各種ある(アクセスログ、クリックログ、adsenseログetc.)、これらはlogテーブルのlogtype列で種別分けされている

logtypeの種類はConfig.phpで定義されている。

  const NORMAL_ACCESS = '0';
  const CLICK_LINK = '1';
  const CLICK_BTN = '2';
  const CLICK_ADSENSE = 'g';



アクセスログの各種確認画面で、データの取得を行うSQLは、ResearchController.phpで決定されている。
(画面に応じて、本クラスのデータ取得メソッドがコールされる)


どの画面が,どのデータ取得メソッドをコールするかは、MenuConfig.phpに定義されている。

  public static $convertActions = array(
                    'time_detail' => 'time',
                    'uid_detail' => 'uid',
                    'ip_user' => 'ip',
                    'remotehost_user' => 'remotehost',
                    'domain_user' => 'domain',
                    'jpdomain_user' => 'jpdomain',
                    'country_user' => 'country',
                    'pref_user' => 'pref',
                    'rank_user' => 'rank',
                    'key_user' => 'key',
                    'engine_key' => 'engine',
                    'engine_user' => 'engine',
                    'host_user' => 'host',
                    'crawler_user' => 'crawler',
                    'referer_user' => 'referer',
                    'rate_user' => 'rate',
                    'clickrank_user' => 'clickrank',
                    'btnrank_user' => 'btnrank',
                    'pagein_user' => 'pagein',
                    'pageout_user' => 'pageout',
                    'brow_ver' => 'brow',
                    'brow_user' => 'brow',
                    'os_user' => 'os',
                    'screenwh_user' => 'screenwh',
                    'screencol_user' => 'screencol',
                    'jsck_user' => 'jsck',
                    'adsenserank_user' => 'adsenserank',
                    'adsensepagerank_user' => 'adsensepagerank',
                    'adsenseip_user' => 'adsenseip',
                    'aliasedit' => 'aliaslist',
                    'domainedit' => 'domainlist',
                    'douninstall' => 'uninstall',
                    'deletelog_confirm' => 'deletelog'
  );



view側では、例えばユニークユーザは$helper->uniqueCount()で取得可能だが、”ユニークユーザ”が何であるかは、ResearchController.phpで決められる。なので、時間別アクセス数のページで、Adsenseクリック数のユニークユーザーを表示させるには工夫が必要。(前述のメソッドをコールすると、当然ながら時間別アクセス数のUUが表示されるので)


アクセスログ表示画面に対する$helper->uniqueCount()の実態は、ReserchHelper.phpで定義されている。

  public function uniqueCount() {
    print $this->getFormatNumber($this->result->get('uniqueCount'));
  }




ReserchHelper.phpを見ると、clickAdsenseCount()メソッドとか有るので、これをコールすれだけかと思いきや、残念ながら常に0が返ってくるだけ。


なぜかというと、Log.phpで、logtypeがCLICK_ADSENSEのときしか値を取ってないから。
これがCLICK_ADSENSEになるのは、アドセンスログのログ画面を表示させるときだけだから、今回やりたい事にとっては、役に立たない。

  private function _extractDetailCount() {
    switch($this->getValue('logtype')) {
    case Config::NORMAL_ACCESS:
      ++$this->_totalCount;
      break;
    case Config::CLICK_LINK:
      ++$this->_clickLinkCount;
      break;
    case Config::CLICK_BTN:
      ++$this->_clickBtnCount;
      break;
    case Config::CLICK_ADSENSE:
      ++$this->_clickAdsenseCount;
      break;
    }




結局のところ、特定のcontrollerから複数のhelperをコールしたいのだけど、MenuConfigでcontroller:helperが1:1に紐付けられているので、対応が難しい…という感じっぽい
どうしたものか…

関連記事

コメントを残す

メールアドレスが公開されることはありません。