示例#1
0
    /**
     * 提携メディア情報を取得します。
     * @param string $mediaId メディアID
     */
    public function &getTeikeiMedia($mediaId)
    {
        $db =& $this->_core->getDB();
        try {
            // 該当提携メディア
            $code = $this->_code;
            $name = CampaignDbTableNames::getName_TeikeiMedia($code);
            $sql = <<<SQL
select
anken_id,
media_id,
redirect_url,
teikei_from,
teikei_to,
price,
oroshi_price
from {$name}
where
media_id=?
SQL;
            $param = array($mediaId);
            $data =& $db->query($sql, $param);
        } catch (Exception $e) {
            // テーブルなし
            throw new TeikeiMediaNotFountException('sql exception', $e);
        }
        if (count($data) != 1) {
            // 提携メディア特定できない
            throw new TeikeiMediaNotFountException('media teikei not fount!!');
        }
        return $data[0];
    }
示例#2
0
	/**
	 * PVテーブルカウントアップ処理します
	 * @param array $session セッション情報
	 * @param array $clickId クリックID(ex. c01)
	 * @see insertPv
	 * @see updatePv
	 */
	public function countUpPv($session, $clickId) {
		// クリックタイプを取得
		$type = "click";

		$this->_log->debug('get.type.pv.' . $type);
		$mediaId = $session['media_id'];

		// DB処理
		$db =& $this->_core->getDB();
		$today = date('Y-m-d');
		$name = CampaignDbTableNames::getName_PV($this->_code);
		$sql = <<<SQL
select
count(*) as cnt
from {$name}
where
reg_date=?
and media_id=?
and pv_syubetsu=?
SQL;
		$param = array($today, $mediaId, $type);
		$data =& $db->query($sql, $param);
		$count = $data[0]["cnt"];
		if ($count == 0) {
			// 初回
			$this->insertPv($session, $type);
			$this->_log->debug('db.countup.pv.insert');
		} else {
			// カウントアップ
			$this->updatePv($session, $type);
			$this->_log->debug('db.countup.pv.update');
		}
	}
示例#3
0
	/**
	 * セッション情報とメディアタグ情報を取得します。
	 * @param string $cookieId クッキーID
	 */
	public function & getSessionAndMediaUrl($cookieId) {
		$db =& $this->_core->getDB();
		// テーブル名取得
		$table_name_session = CampaignDbTableNames::getName_Session($this->_code);
		$table_name_media = CampaignDbTableNames::getName_TeikeiMedia($this->_code);
		// SQL
		$sql = <<<SQL
select
S.session_id,
S.anken_id,
S.media_id,
S.media_user_id,
S.cookie_id,
S.reg_time,
S.remote_add,
S.referer,
S.lpo_pattern_id,
S.mail,
M.media_url
from {$table_name_session} as S
inner join {$table_name_media} as M
on S.anken_id = M.anken_id
and S.media_id = M.media_id
where cookie_id=?
SQL;
		$param = array($cookieId);
		$data =& $db->query($sql, $param);
		if (count($data) != 1) {
			throw new Action_SessionNotFountException($cookieId);
		}
		return $data[0];
	}
示例#4
0
    /**
     * 同一ユーザー識別子によるアクセスの有無を判定します。
     */
    public function isCidExists()
    {
        $db =& $this->_core->getDB();
        // テーブル名取得
        $table_name_seika = CampaignDbTableNames::getName_Seika($this->_code);
        // SQL
        $sql = <<<SQL
select
count(client_user_id) as cnt
from {$table_name_seika}
where client_user_id=?
SQL;
        $param = $this->_clientUserId;
        $data =& $db->query($sql, $param);
        if ($data[0]["cnt"] != 0) {
            return true;
        }
        return false;
    }
示例#5
0
    /**
     * 成果テーブルに追加します。
     * または、SQLをファイル落としします。
     * @param array $anken 案件情報
     * @param array $seika 成果情報配列
     */
    public function insertDbSeika(&$anken, &$seika)
    {
        $code = $this->_code;
        $tableName = CampaignDbTableNames::getName_Seika($code);
        // カラム名称配列
        $fieldName = "";
        // カラム値配列
        $fieldValue = array();
        // バインド文字配列 '?'
        $hatena = "";
        foreach ($seika as $key => $value) {
            if ($value != "") {
                // 名称
                $fieldName .= "," . $key;
                // 値
                $fieldValue[] = $value;
                // バインド文字配列 '?'
                $hatena .= ',?';
            }
        }
        // sql
        $sql = <<<SQL
insert into {$tableName}
(action_flg, action_date, action_time {$fieldName})
values
(1, now(), now() {$hatena})
SQL;
        // ファイル落し対応
        $useLogFile = $anken['use_sql_log'];
        if ($useLogFile != '1') {
            // DB更新
            $db =& $this->_core->getDB();
            $db->execute($sql, $fieldValue);
            // 成果IDを返す
            return mysql_insert_id();
        } else {
            //----------------------------
            // ファイル落し
            //----------------------------
            $this->saveSqlLogFile($anken, $sql, $fieldValue);
            // 成果IDが確定しないためnullを返す
            return null;
        }
    }
示例#6
0
	/**
	 * PVテーブルへモバイルキャリア別カウントのカウントアップ
	 * @param array $teikei 提携メディア情報
	 * @param string $mob_carrier モバイルキャリア
	 */
	protected function updateDbPvMobile(&$teikei, $mob_carrier) {
		$db =& $this->_core->getDB();
		$mediaId = $teikei['media_id'];
		$today = date('Y-m-d');
		$name = CampaignDbTableNames::getName_PV($this->_code);
		$sql = <<<SQL
		update {$name} set
count=count+1
where reg_date=?
and media_id=?
and pv_syubetsu=?
SQL;
		$param = array($today, $mediaId, $mob_carrier);
		$db->execute($sql, $param);
	}
示例#7
0
	/**
	 * 成果テーブルに退会情報を追加します。
	 * @param array $clientUserId 任意のID
	 * @param array $taikaiDate 退会日
	 */
	public function updateDbSeika($clientUserId, $taikaiDate) {
		$table_name_seika = CampaignDbTableNames::getName_Seika($this->_code);
		
		$param = array();
		// 退会日
		if (empty($taikaiDate) == true) {
			$param[] = date('Y-m-d');
		}else{
			$param[] = $taikaiDate;
		}
		// 任意のID
		$param[] = $clientUserId;

		// sql
		$sql = <<<SQL
update {$table_name_seika} set taikai_date=?, taikai_reg_time=now()
where client_user_id=? and taikai_date is null
SQL;
		// DB更新
		$db =& $this->_core->getDB();
		$db->execute($sql, $param);

		return;
	}
示例#8
0
	/**
	 * sessionテーブルへの更新をします。
	 * @param array $session セッション情報
	 */
	public function insertLpoPageStay(&$session, $clickId) {
		if (empty($session['lpo_pattern_id']) == true) {
			return;
		}
		// クリックタイプを取得
		$type = $this->getClickTypeForSession($clickId);
		$this->_log->debug('get.type.session.' . $type);

		$db =& $this->_core->getDB();
		$cookieId = $session['cookie_id'];
		$name = CampaignDbTableNames::getName_Session($this->_code);
		$sql = <<<SQL
insert into lpo_page_stay 
(anken_id, session_id, media_id, pattern_id, area_id, reg_date, reg_time, click_time, stay_second)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
SQL;
		$now = time();
		// 滞在時間
		$s =& $session;
		$staySecond = $now - strtotime($s['reg_time']);
		$now = date('Y-m-d H:i:s', $now);
		$param = array(	$s['anken_id'], $s['session_id'], 
						$s['media_id'], $s['lpo_pattern_id'],
						$type, $s['reg_time'], $s['reg_time'],
						$now, $staySecond);
		$db->execute($sql, $param);
	}
示例#9
0
    /**
     * セッションテーブルへの書き込みします
     * @param string $cookieId クッキーID
     * @param array $teikei 提携メディア情報
     * @return string セッションID
     */
    public function insertDbSeesionForOld($sessionId, $cookieId, &$teikei)
    {
        $db =& $this->_core->getDB();
        $ankenId = $teikei['anken_id'];
        $mediaId = $teikei['media_id'];
        $mediaUserId = $this->_mediaUserId;
        $remoteAdd = $_SERVER['HTTP_X_FORWARDED_FOR'];
        $referer = $_SERVER["HTTP_REFERER"];
        $name = CampaignDbTableNames::getName_Session($this->_code);
        $sql = <<<SQL
insert into {$name}
(session_id, anken_id, media_id, media_user_id, cookie_id, remote_add, referer)
values
(?, ?, ?, ?, ?, ?, ?)
SQL;
        $param = array($sessionId, $ankenId, $mediaId, $mediaUserId, $cookieId, $remoteAdd, $referer);
        $db->execute($sql, $param);
        return mysql_insert_id();
    }
示例#10
0
    /**
     * PVテーブルのカウントアップします。
     * @param array $teikei 提携メディア情報
     * @param string $patternId パターンID
     */
    public function countUpLpoPv(&$teikei, $patternId)
    {
        if ($patternId == null) {
            return;
        }
        $db =& $this->_core->getDB();
        $mediaId = $teikei['media_id'];
        $ankenId = $teikei['anken_id'];
        $today = date('Y-m-d');
        $name = CampaignDbTableNames::getName_PV($this->_code);
        $sql = <<<SQL
select
count(media_id) as cnt
from {$name}
where
reg_date=?
and media_id=?
and pv_syubetsu=?
SQL;
        $syubetsu = 'lpo' . $patternId . '_' . self::DEFAULT_PV_SYUBETSU;
        $param = array($today, $mediaId, $syubetsu);
        $data =& $db->query($sql, $param);
        $count = $data[0]["cnt"];
        if ($count == 0) {
            $sql = <<<SQL
insert into {$name}
(reg_date, media_id, pv_syubetsu, anken_id, count)
values
(?, ?, ?, ?, 1)
SQL;
            $param = array($today, $mediaId, $syubetsu, $ankenId);
            $db->execute($sql, $param);
        } else {
            $sql = <<<SQL
update {$name} set
count=count+1
where reg_date=?
and media_id=?
and pv_syubetsu=?
SQL;
            $param = array($today, $mediaId, $syubetsu);
            $db->execute($sql, $param);
        }
    }
示例#11
0
    /**
     * アクセス情報を更新する
     */
    public function getSessionId(&$mob)
    {
        //--------------------------
        // DB(セッションテーブル)からセッションID取得
        //--------------------------
        $db =& $this->_core->getDB();
        $name = CampaignDbTableNames::getName_Session($this->_code);
        $param = array($mob->_uid);
        $sql = <<<SQL
select
session_id
from {$name}
where mob_uid=?
order by reg_time desc
limit 1
SQL;
        $data =& $db->query($sql, $param);
        if (count($data) == 1) {
            return $data[0]['session_id'];
        } else {
            return null;
        }
    }
示例#12
0
 /**
  * sessionテーブルへの更新をします。
  * @param array $session セッション情報
  */
 public function countUpSession(&$session, $clickId)
 {
     // クリックタイプを取得
     $type = $this->getClickTypeForSession($clickId);
     $this->_log->debug('get.type.session.' . $type);
     $db =& $this->_core->getDB();
     $sessionId = $session['session_id'];
     $name = CampaignDbTableNames::getName_Session($this->_code);
     $now = date('Y-m-d H:i:s');
     $sql = "update {$name} set click=?, click_time=? where session_id=?";
     $param = array($type, $now, $sessionId);
     $db->execute($sql, $param);
 }
示例#13
0
	/**
	 * 再訪フラグを取得します
	 */
	public function getRevisitFlg() {
		// 初期値設定
		// 今回の再訪フラグ
		$revisitFlg = 0;
		// 前回の再訪フラグ
		$lastRevisitFlg = null;
		// クッキーID取得
		$cookieId = $this->getCookieId();

		// クッキーIDありの場合
		if (empty($cookieId) == false) {

			$db =& $this->_core->getDB();
			$code = $this->_code;

			// セッションレコードが存在により、再訪を判断します
			$name = CampaignDbTableNames::getName_Session($code);
			$sql = <<<SQL
select 
cookie_id,
revisit_flg
from {$name}
where
cookie_id=?
SQL;
			$param = array($cookieId);
			$sessionData =& $db->query($sql, $param);
			// 前回アクセス(セッションレコード)存在の場合、リピーターを設定
			if (count($sessionData) == 1) {
				$lastRevisitFlg = $sessionData[0]['revisit_flg'];
				// 前回アクセスは初回の場合
				if ($lastRevisitFlg == 0){
					$revisitFlg = 1;
				// 前回アクセスはリピーターの場合
				} else {
					$revisitFlg = $lastRevisitFlg;
				}
			}

			// 前回のアクセスが再訪以外の場合、成果レコードが存在により再訪を設定します
			if ($lastRevisitFlg != 2){
				// 成果レコードが存在により、再訪を判断します
				$name = CampaignDbTableNames::getName_Seika($code);
				$sql = <<<SQL
select count(cookie_id) as cnt
from {$name}
where
cookie_id=?
SQL;
				$param = array($cookieId);
				$seikaData =& $db->query($sql, $param);
				// 成果レコード存在の場合、再訪を設定
				if ($seikaData[0]["cnt"] != 0) {
					$revisitFlg = 2;
				}
			}
		}
		return $revisitFlg;
	}
示例#14
0
    /**
     * セッションテーブルへの書き込みします
     * @param string $cookieId クッキーID
     * @param array $teikei 提携メディア情報
     * @param string $patternId LPOパターンID
     * @return string セッションID
     */
    public function insertDbSeesion($cookieId, &$teikei)
    {
        $db =& $this->_core->getDB();
        $name = CampaignDbTableNames::getName_Session($this->_code);
        $ankenId = $teikei['anken_id'];
        $mediaId = $teikei['media_id'];
        $remoteAdd = $this->_ip;
        $referer = $this->_referer;
        $regTime = date('Y-m-d H:i:s');
        $this->_regDate = date('Y-m-d', strtotime($regTime));
        $sql = <<<SQL
insert into {$name}
(anken_id, media_id, cookie_id,
 reg_time, remote_add, referer,
 nyuko_url, keyword, sem_kind, bid)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
SQL;
        $param = array($ankenId, $mediaId, $cookieId, $regTime, $remoteAdd, $referer, $this->_nyukoUrl, $this->_keyWord, $this->_semKind, $this->_bannerId);
        $db->execute($sql, $param);
        return mysql_insert_id();
    }
示例#15
0
    /**
     * 提携メディア情報を取得します。
     * @param string $mediaId メディアID
     */
    public function &getTeikeiMedia($mediaId)
    {
        $db =& $this->_core->getDB();
        try {
            // 該当提携メディア
            $code = $this->_code;
            $name = CampaignDbTableNames::getName_TeikeiMedia($code);
            $sql = <<<SQL
select
anken_id,
media_id,
redirect_url,
docomo_url,
au_url,
softbank_url,
teikei_from,
teikei_to,
price,
oroshi_price,
extra_price,
extra_oroshi,
suspend_from,
suspend_to,
advertise_from,
advertise_to,
expire_id_cookie,
expire_uid_mob,
expire_advertise,
expire_type
from {$name}
where
media_id=?
SQL;
            $param = array($mediaId);
            $data =& $db->query($sql, $param);
        } catch (Exception $e) {
            // テーブルなし
            throw new TeikeiMediaNotFountException('sql exception', $e);
        }
        if (count($data) != 1) {
            // 提携メディア特定できない
            throw new TeikeiMediaNotFountException('media teikei not found!');
        }
        return $data[0];
    }