/** * 同一ユーザー識別子によるアクセスの有無を判定します。 */ 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; }
/** * 成果テーブルに追加します。 * または、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; } }
/** * カスタム仕様(最新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; } }
/** * 成果テーブルに退会情報を追加します。 * @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; }
/** * 再訪フラグを取得します */ 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; }
/** * 成果データの重複をチェックします。 * @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."); } } }