/** * セッションテーブルに追加します */ public function Result_HotenUpload_insertSession($code, &$data) { $tables = new CampaignDbTables($code); $name = $tables->getTableName_Session(); $db =& $this->_core->getDBForUpdate(); $sql = <<<SQL insert into {$name} (anken_id,media_id,reg_time) values (?,?,now()) SQL; $param = array($data['anken_id'], $data['media_id']); $db->execute($sql, $param); return mysql_insert_id(); }
/** * セッション情報を取得します。 * @param string $code キャンペーンコード * @param string $sessionId セッションID * @param string $deviceCd デバイスコード */ public function &Result_HotenActionIdUpload_getSession($code, $sessionId, $deviceCd) { $db =& $this->_core->getDB(); $tables = new CampaignDbTables($code); $table_name_session = $tables->getTableName_Session(); $addField = ""; if ($deviceCd == 2) { $addField = ", mob_carrier, mob_uid"; } $sql = <<<SQL select session_id, anken_id, media_id, media_user_id, cookie_id, reg_time, remote_add, referer, lpo_pattern_id, bid, option1, option2, option3, option4, option5 {$addField} from {$table_name_session} where session_id=? SQL; $param = array($sessionId); $data =& $db->query($sql, $param); if (count($data) != 1) { throw new SessionNotFountException(); } return $data[0]; }
/** * デバイス対応制御。 */ public function checkDevice($ankenId) { $db =& $this->_core->getDB(); $anken =& $this->getAnkenData($ankenId); $tables = new CampaignDbTables($anken['campaign_code']); $name_media = $tables->getTableName_Media(); $name_seika = $tables->getTableName_Seika(); $name_session = $tables->getTableName_Session(); //テーブル存在するかどうかを判断する $sql = <<<SQL SHOW TABLES LIKE '{$name_media}' SQL; $data = $db->query($sql); if (empty($data)) { return false; } else { // カラム(smartphone_url, $seika_device, $session_device)存在するかどうかを判断する $sql = <<<SQL Describe {$name_media} smartphone_url SQL; $smartphone_url = $db->query($sql); } $sql = <<<SQL SHOW TABLES LIKE '{$name_seika}' SQL; $data = $db->query($sql); if (empty($data)) { return false; } else { $sql = <<<SQL Describe {$name_seika} device SQL; $seika_device = $db->query($sql); } $sql = <<<SQL SHOW TABLES LIKE '{$name_session}' SQL; $data = $db->query($sql); if (empty($data)) { return false; } else { $sql = <<<SQL Describe {$name_session} device SQL; $session_device = $db->query($sql); } if (empty($smartphone_url) == false && empty($seika_device) == false && empty($session_device) == false) { return true; } else { return false; } }
/** * セッションIDから提携メディア情報を取得します。 * @param string $code 案件コード * @param string $sessionId セッションID */ public function &Result_HotenItemActionIdUpload_getTeikeiMediaBySessionId($code, $sessionId) { $db =& $this->_core->getDB(); try { // 該当提携メディア $tables = new CampaignDbTables($code); $mediaTbl = $tables->getTableName_Media(); $sessionTbl = $tables->getTableName_Session(); $sql = <<<SQL select price, oroshi_price, extra_price, extra_oroshi, oroshi_rounding_type from {$mediaTbl} where media_id= (select media_id from {$sessionTbl} where session_id = ?) SQL; $param = array($sessionId); $data =& $db->query($sql, $param); } catch (Exception $e) { // テーブルなし throw new MediaNotFountException('sql exception', $e); } if (count($data) != 1) { // 提携メディア特定できない throw new MediaNotFountException(); } return $data[0]; }