/** * セッションのデータをDBに書き込む. * * @param string $id セッションID * @param string $sess_data セッションデータの値 * @return bool セッションの書き込みに成功した場合 true */ function sfSessWrite($id, $sess_data) { $objQuery = new SC_Query_Ex(); $count = $objQuery->count("dtb_session", "sess_id = ?", array($id)); $sqlval = array(); if ($count > 0) { // レコード更新 $sqlval['sess_data'] = $sess_data; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->update("dtb_session", $sqlval, "sess_id = ?", array($id)); } else { // セッションデータがある場合は、レコード作成 if (strlen($sess_data) > 0) { $sqlval['sess_id'] = $id; $sqlval['sess_data'] = $sess_data; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $objQuery->insert("dtb_session", $sqlval); } } return true; }
/** * 空メール管理テーブルに新規エントリーを登録し、トークンを返す。 * * @param string $next_url 空メール受け付け後に遷移させるページ (モバイルサイトトップからの相対URL) * @param string $session_id セッションID (省略した場合は現在のセッションID) * @return string|false トークンを返す。エラーが発生した場合はfalseを返す。 */ function gfPrepareKaraMail($next_url, $session_id = null) { if (!isset($session_id)) { $session_id = session_id(); } $objQuery = new SC_Query_Ex(); // GC $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME); $objQuery->delete('dtb_mobile_kara_mail', 'email IS NULL AND create_date < ?', array($time)); $objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id)); $arrValues = array('session_id' => $session_id, 'next_url' => $next_url); $try = 10; while ($try > 0) { $arrValues['token'] = $token = $this->lfGenerateKaraMailToken(); $arrValues['kara_mail_id'] = $objQuery->nextVal('dtb_mobile_kara_mail_kara_mail_id'); $objQuery->insert('dtb_mobile_kara_mail', $arrValues); $count = $objQuery->count('dtb_mobile_kara_mail', 'token = ?', array($token)); if ($count == 1) { break; } $objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id)); $token = false; --$try; } return $token; }
function lfDeleteFavoriteProduct($customer_id, $product_id) { $objQuery = new SC_Query_Ex(); $count = $objQuery->count("dtb_customer_favorite_products", "customer_id = ? AND product_id = ?", array($customer_id, $product_id)); if ($count > 0) { $objQuery->begin(); $objQuery->delete('dtb_customer_favorite_products', "customer_id = ? AND product_id = ?", array($customer_id, $product_id)); $objQuery->commit(); } }
/** * dtb_moduleを更新する * * @param object $objRet */ function updateMdlTable($objRet) { $table = 'dtb_module'; $where = 'module_id = ?'; $objQuery = new SC_Query_Ex(); $count = $objQuery->count($table, $where, array($objRet->product_id)); if ($count) { $arrUpdate = array('module_code' => $objRet->product_code, 'module_name' => $objRet->product_name, 'update_date' => 'CURRENT_TIMESTAMP'); $objQuery->update($table, $arrUpdate, $where, array($objRet->product_id)); } else { $arrInsert = array('module_id' => $objRet->product_id, 'module_code' => $objRet->product_code, 'module_name' => $objRet->product_name, 'auto_update_flg' => '0', 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP'); $objQuery->insert($table, $arrInsert); } }
/** * 同名画像ファイル登録の有無を確認する. * * 画像ファイルの削除可否判定用。 * 同名ファイルの登録がある場合には画像ファイルの削除を行わない。 * 戻り値: 同名ファイル有り(true) 同名ファイル無し(false) * * @param string $product_id 商品ID * @param string $arrImageKey 対象としない画像カラム名 * @param string $image_file_name 画像ファイル名 * @return boolean */ function lfHasSameProductImage($product_id, $arrImageKey, $image_file_name) { if (!SC_Utils_Ex::sfIsInt($product_id)) { return false; } if (!$arrImageKey) { return false; } if (!$image_file_name) { return false; } $arrWhere = array(); $sqlval = array('0', $product_id); foreach ($arrImageKey as $image_key) { $arrWhere[] = "{$image_key} = ?"; $sqlval[] = $image_file_name; } $where = implode(" OR ", $arrWhere); $where = "del_flg = ? AND ((product_id <> ? AND ({$where}))"; $arrKeyName = $this->objUpFile->keyname; foreach ($arrKeyName as $key => $keyname) { if (in_array($keyname, $arrImageKey)) { continue; } $where .= " OR {$keyname} = ?"; $sqlval[] = $image_file_name; } $where .= ")"; $objQuery = new SC_Query_Ex(); $count = $objQuery->count('dtb_products', $where, $sqlval); if (!$count) { return false; } return true; }
/** * DBへ入力内容を登録する. * * @param array $arrSettingsData オーナーズストア設定の連想配列 * @return void */ function registerOwnersStoreSettings($arrSettingsData) { $table = 'dtb_ownersstore_settings'; $objQuery = new SC_Query_Ex(); $count = $objQuery->count($table); if ($count) { $objQuery->update($table, $arrSettingsData); } else { $objQuery->insert($table, $arrSettingsData); } }
/** * 携帯端末IDが一致する会員が存在するかどうかをチェックする。 * FIXME * @return boolean 該当する会員が存在する場合は true、それ以外の場合 * は false を返す。 */ function checkMobilePhoneId() { //docomo用にデータを取り出す。 if (SC_MobileUserAgent_Ex::getCarrier() == 'docomo') { if ($_SESSION['mobile']['phone_id'] == "" && strlen($_SESSION['mobile']['phone_id']) == 0) { $_SESSION['mobile']['phone_id'] = SC_MobileUserAgent_Ex::getId(); } } if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) { return false; } // 携帯端末IDが一致し、本登録された会員を検索する。 $sql = 'SELECT count(*) FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2'; $objQuery = new SC_Query_Ex(); $result = $objQuery->count("dtb_customer", "mobile_phone_id = ? AND del_flg = 0 AND status = 2", array($_SESSION['mobile']['phone_id'])); return $result > 0; }