Beispiel #1
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;
    }
Beispiel #2
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;
        }
    }
Beispiel #3
0
	/**
	 * カスタム仕様(最新idを返します)
	 * 成果テーブルに追加します。
	 * @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 .= ',?';
			}
		}
		// 値
		$values = implode(',', $fieldValue);
		// sql
		$sql = <<<SQL
insert into {$tableName}
(action_date, action_time {$fieldName})
values
(now(), now() {$hatena})
SQL;
		// ファイル落し対応
		$useLogFile = $anken['use_sql_log'];
		if ($useLogFile == '1') {
			// ファイル落し
			$this->saveSqlLogFile($anken, $sql, $fieldValue);
			
		} else {
			// DB更新
			$db =& $this->_core->getDB();
			$tran = "START TRANSACTION";
			$db->execute($tran);
			$db->execute($sql, $fieldValue);
			$seika_id = mysql_insert_id();
			$commit = "COMMIT";
			$db->execute($commit);
			return $seika_id;
		}
	}
Beispiel #4
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;
	}
Beispiel #5
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;
	}
Beispiel #6
0
    /**
     * 成果データの重複をチェックします。
     * @param string  $mediaId メディアID
     * @param string  $cookieId クッキーID
     */
    public function checkSeikaExists($mediaId, $cookieId)
    {
        $db =& $this->_core->getDB();
        $code = $this->_code;
        $name = CampaignDbTableNames::getName_Seika($code);
        $sql = <<<SQL
select
cookie_id,
tid
from {$name}
where
cookie_id=?
SQL;
        $param = array($cookieId);
        $data =& $db->query($sql, $param);
        if ($this->_siteId == "1" || $this->_siteId == "3") {
            if (count($data) > 0) {
                throw new Action_SeikaExistsException($cookieId);
            } else {
                $this->_tId = self::TID1;
            }
        } else {
            if ($this->_siteId == "2" || $this->_siteId == "4") {
                if (count($data) == 0) {
                    $this->_tId = self::TID2;
                } else {
                    if (count($data) == 1 && $data[0]["tid"] == self::TID1) {
                        $this->_tId = self::TID3;
                    } else {
                        throw new Action_SeikaExistsException($cookieId);
                    }
                }
            } else {
                throw new Action_NotHaveParamsException("siteid not correspond.");
            }
        }
    }