function install(array $arrPlugin, SC_Plugin_Installer $installer) { $plugin_dir = dirname(__FILE__) . DIRECTORY_SEPARATOR; $upload_plugin_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"] . DIRECTORY_SEPARATOR; $backup_plugin_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"] . "_" . date("Ymd") . DIRECTORY_SEPARATOR; if (!is_dir($backup_plugin_dir)) { SC_Utils_Ex::sfCopyDir($upload_plugin_dir, $backup_plugin_dir); } SC_Helper_FileManager_Ex::deleteFile($upload_plugin_dir, false); SC_Utils_Ex::sfCopyDir($plugin_dir . "/", $upload_plugin_dir); SC_Utils_Ex::sfCopyDir($plugin_dir . "/copy/Smarty/templates/admin/", TEMPLATE_ADMIN_REALDIR); SC_Utils_Ex::sfCopyDir($plugin_dir . "/copy/modules/", DATA_REALDIR . "module/"); // logo コピー $installer->copyDirectory("copy/plugin_dir/", ""); $table = "dtb_products"; $fields = array('auto_display_status' => $this->intColumn('自動公開'), 'auto_display_start_date' => $this->timestampColumn('公開開始日'), 'auto_display_end_date' => $this->timestampColumn('公開終了日')); $type = "timestamp"; $definition = compact("type"); foreach ($fields as $name => $define) { $this->objDb->sfColumnExists($table, $name, $define["type"], "", true); $this->fieldComment($installer, $table, $name, $define["comment"]); switch ($define["type"]) { case "timestamp": break; default: continue; } $change = array(); $change[$name] = compact('definition'); $this->objManager->alterTable($table, compact("change"), false); } $this->objQuery->update("dtb_products", array(), "auto_display_start_date IS NULL", array(), array("auto_display_start_date" => "create_date")); $masterfields = array("id" => $this->intColumn("ID"), "name" => $this->textColumn("NAME"), "rank" => $this->intColumn("RANK")); $table = "atd_mtb_auto_display_status"; if ($this->objDb->sfColumnExists($table, "id") == false) { $this->objManager->createTable($table, $masterfields); } foreach ($masterfields as $name => $define) { $this->objDb->sfColumnExists($table, $name, $define["type"], "", true); $this->fieldComment($installer, $table, $name, $define["comment"]); } $this->masterdata->deleteMasterData($table); $this->masterdata->clearCache($table); $this->masterdata->registMasterData($table, array(), explode(",", "常時公開,時限公開")); // $this->insertMasterData ( "PRODUCTS_RESULT_ROWSPAN", 1, '管理画面/商品管理一覧 行結合数' ); // $this->insertMasterData ( "PRODUCTS_RESULT_COLUMN", 5, '管理画面/商品管理一覧 列位置' ); // $this->insertMasterData ( "PRODUCTS_SEARCH_AUTO_DISPLAY", 1, '検索画面表示設定(1: ON/ 0:OFF)' ); // $this->insertMasterData ( "PRODUCTS_DETAIL_AUTO_DISPLAY", 1, '検索画面表示設定(1: ON/ 0:OFF)' ); }
/** * 公開状態変更 * * @param unknown $device_id */ static function changeStatus($device_id, SC_Query $objQuery) { $objQuery->update("cp_dtb_device", array("update_date" => "CURRENT_TIMESTAMP"), "device_id=? AND del_flg=0", (array) $device_id, array("status" => "CASE WHEN status = 1 THEN 2 ELSE 1 END")); }
/** * セッションのデータをDBに書き込む. * * @param string $id セッションID * @param string $sess_data セッションデータの値 * @return bool セッションの書き込みに成功した場合 true */ function sfSessWrite($id, $sess_data) { if (!$this->objDb->sfTabaleExists("dtb_session")) { return false; } $objQuery = new SC_Query(); $count = $objQuery->count("dtb_session", "sess_id = ?", array($id)); $sqlval = array(); if ($count > 0) { // レコード更新 $sqlval['sess_data'] = $sess_data; $sqlval['update_date'] = 'Now()'; $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'] = 'Now()'; $sqlval['create_date'] = 'Now()'; $objQuery->insert("dtb_session", $sqlval); } } return true; }
function lfUpdateData() { // 入力データを渡す。 $sqlval = $this->objFormParam->getHashArray(); $sqlval['update_date'] = 'Now()'; $objQuery = new SC_Query(); // UPDATEの実行 $ret = $objQuery->update("dtb_baseinfo", $sqlval); }
/** * Page のプロセス. * * @return void */ function process() { $conn = new SC_DBConn(); $objView = new SC_AdminView(); $objDb = new SC_Helper_DB_Ex(); $objSess = new SC_Session(); // パラメータ管理クラス $this->objFormParam = new SC_FormParam(); // パラメータ情報の初期化 $this->lfInitParam(); $this->objFormParam->setParam($_POST); $this->objFormParam->splitParamCheckBoxes('search_order_sex'); $this->objFormParam->splitParamCheckBoxes('search_payment_id'); // 検索ワードの引き継ぎ foreach ($_POST as $key => $val) { if (ereg("^search_", $key)) { switch ($key) { case 'search_order_sex': case 'search_payment_id': $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); break; default: $this->arrHidden[$key] = $val; break; } } } // ページ送り用 $this->arrHidden['search_pageno'] = isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } if (!isset($arrRet)) { $arrRet = array(); } if ($_POST['mode'] == 'delete') { if (SC_Utils_Ex::sfIsInt($_POST['order_id'])) { $objQuery = new SC_Query(); $where = "order_id = ?"; $sqlval['del_flg'] = '1'; $objQuery->update("dtb_order", $sqlval, $where, array($_POST['order_id'])); } } switch ($_POST['mode']) { case 'delete': case 'csv': case 'pdf': case 'delete_all': case 'search': // 入力値の変換 $this->objFormParam->convParam(); $this->arrErr = $this->lfCheckError($arrRet); $arrRet = $this->objFormParam->getHashArray(); // 入力なし if (count($this->arrErr) == 0) { $where = "del_flg = 0"; foreach ($arrRet as $key => $val) { if ($val == "") { continue; } $val = SC_Utils_Ex::sfManualEscape($val); switch ($key) { case 'search_order_name': if (DB_TYPE == "pgsql") { $where .= " AND order_name01||order_name02 ILIKE ?"; } elseif (DB_TYPE == "mysql") { $where .= " AND concat(order_name01,order_name02) ILIKE ?"; } $nonsp_val = mb_ereg_replace("[ ]+", "", $val); $arrval[] = "%{$nonsp_val}%"; break; case 'search_order_kana': if (DB_TYPE == "pgsql") { $where .= " AND order_kana01||order_kana02 ILIKE ?"; } elseif (DB_TYPE == "mysql") { $where .= " AND concat(order_kana01,order_kana02) ILIKE ?"; } $nonsp_val = mb_ereg_replace("[ ]+", "", $val); $arrval[] = "%{$nonsp_val}%"; break; case 'search_order_id1': $where .= " AND order_id >= ?"; $arrval[] = $val; break; case 'search_order_id2': $where .= " AND order_id <= ?"; $arrval[] = $val; break; case 'search_order_sex': $tmp_where = ""; foreach ($val as $element) { if ($element != "") { if ($tmp_where == "") { $tmp_where .= " AND (order_sex = ?"; } else { $tmp_where .= " OR order_sex = ?"; } $arrval[] = $element; } } if ($tmp_where != "") { $tmp_where .= ")"; $where .= " {$tmp_where} "; } break; case 'search_order_tel': if (DB_TYPE == "pgsql") { $where .= " AND (order_tel01 || order_tel02 || order_tel03) LIKE ?"; } elseif (DB_TYPE == "mysql") { $where .= " AND concat(order_tel01,order_tel02,order_tel03) LIKE ?"; } $nonmark_val = ereg_replace("[()-]+", "", $val); $arrval[] = "%{$nonmark_val}%"; break; case 'search_order_email': $where .= " AND order_email ILIKE ?"; $arrval[] = "%{$val}%"; break; case 'search_payment_id': $tmp_where = ""; foreach ($val as $element) { if ($element != "") { if ($tmp_where == "") { $tmp_where .= " AND (payment_id = ?"; } else { $tmp_where .= " OR payment_id = ?"; } $arrval[] = $element; } } if ($tmp_where != "") { $tmp_where .= ")"; $where .= " {$tmp_where} "; } break; case 'search_total1': $where .= " AND total >= ?"; $arrval[] = $val; break; case 'search_total2': $where .= " AND total <= ?"; $arrval[] = $val; break; case 'search_sorderyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sorderyear'], $_POST['search_sordermonth'], $_POST['search_sorderday']); $where .= " AND create_date >= ?"; $arrval[] = $date; break; case 'search_eorderyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eorderyear'], $_POST['search_eordermonth'], $_POST['search_eorderday'], true); $where .= " AND create_date <= ?"; $arrval[] = $date; break; case 'search_supdateyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_supdateyear'], $_POST['search_supdatemonth'], $_POST['search_supdateday']); $where .= " AND update_date >= ?"; $arrval[] = $date; break; case 'search_eupdateyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eupdateyear'], $_POST['search_eupdatemonth'], $_POST['search_eupdateday'], true); $where .= " AND update_date <= ?"; $arrval[] = $date; break; case 'search_sbirthyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sbirthyear'], $_POST['search_sbirthmonth'], $_POST['search_sbirthday']); $where .= " AND order_birth >= ?"; $arrval[] = $date; break; case 'search_ebirthyear': $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_ebirthyear'], $_POST['search_ebirthmonth'], $_POST['search_ebirthday'], true); $where .= " AND order_birth <= ?"; $arrval[] = $date; break; case 'search_order_status': $where .= " AND status = ?"; $arrval[] = $val; break; default: if (!isset($arrval)) { $arrval = array(); } break; } } $order = "update_date DESC"; switch ($_POST['mode']) { case 'csv': require_once CLASS_EX_PATH . "helper_extends/SC_Helper_CSV_Ex.php"; $objCSV = new SC_Helper_CSV_Ex(); // オプションの指定 $option = "ORDER BY {$order}"; // CSV出力タイトル行の作成 $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(3, " WHERE csv_id = 3 AND status = 1")); if (count($arrCsvOutput) <= 0) { break; } $arrCsvOutputCols = $arrCsvOutput['col']; $arrCsvOutputTitle = $arrCsvOutput['disp_name']; $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle); $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols); // CSVを送信する。 SC_Utils_Ex::sfCSVDownload($head . $data); exit; break; case 'pdf': $objFpdf = new SC_Fpdf(1, '納品書'); $objFpdf->setData($arrRet); $objFpdf->createPdf(); break; case 'delete_all': // 検索結果をすべて削除 $sqlval['del_flg'] = 1; $objQuery = new SC_Query(); $objQuery->update("dtb_order", $sqlval, $where, $arrval); break; default: // 読み込む列とテーブルの指定 $col = "*"; $from = "dtb_order"; $objQuery = new SC_Query(); // 行数の取得 $linemax = $objQuery->count($from, $where, $arrval); $this->tpl_linemax = $linemax; // 何件が該当しました。表示用 // ページ送りの処理 if (is_numeric($_POST['search_page_max'])) { $page_max = $_POST['search_page_max']; } else { $page_max = SEARCH_PMAX; } // ページ送りの取得 $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], $linemax, $page_max, "fnNaviSearchPage", NAVI_PMAX); $startno = $objNavi->start_row; $this->arrPagenavi = $objNavi->arrPagenavi; // 取得範囲の指定(開始行番号、行数のセット) $objQuery->setlimitoffset($page_max, $startno); // 表示順序 $objQuery->setorder($order); // 検索結果の取得 $this->arrResults = $objQuery->select($col, $from, $where, $arrval); } } break; default: break; } $objDate = new SC_Date(); // 登録・更新日検索用 $objDate->setStartYear(RELEASE_YEAR); $objDate->setEndYear(DATE("Y")); $this->arrRegistYear = $objDate->getYear(); // 生年月日検索用 $objDate->setStartYear(BIRTH_YEAR); $objDate->setEndYear(DATE("Y")); $this->arrBirthYear = $objDate->getYear(); // 月日の設定 $this->arrMonth = $objDate->getMonth(); $this->arrDay = $objDate->getDay(); // 入力値の取得 $this->arrForm = $this->objFormParam->getFormParamList(); // 支払い方法の取得 $arrRet = $objDb->sfGetPayment(); $this->arrPayment = SC_Utils_Ex::sfArrKeyValue($arrRet, 'payment_id', 'payment_method'); $objView->assignobj($this); $objView->display(MAIN_FRAME); }
break; //ミニストップ、デイリーヤマザキ、ヤマザキデイリーストア //ミニストップ、デイリーヤマザキ、ヤマザキデイリーストア case '5': $arrRet['cv_type'] = '5'; //コンビニの種類 $arrRet['cv_payment_url'] = $arrResult[RES_HARAIKOMI_URL]; //払込票URL(PC) break; } //支払期限 $arrRet['cv_payment_limit'] = lfGetPayLimit(); //コンビニ決済情報を格納 $sqlval['conveni_data'] = serialize($arrRet); $objQuery = new SC_Query(); $objQuery->update("dtb_order_temp", $sqlval, "order_temp_id = ? ", array($uniqid)); // 正常に登録されたことを記録しておく $objSiteSess->setRegistFlag(); //購入完了ページへ header("Location: " . URL_SHOP_COMPLETE); //失敗 } else { $objPage->arrErr = 'エラーが発生しました。'; } # ログ出力(ここまで) $logger->logprint('DEBUG', '<<< 支払結果画面処理終了. >>>'); } break; //戻る //戻る case 'return':
function lfUpdateCat($category_id) { $objQuery = new SC_Query(); // 入力データを渡す。 $sqlval = $this->objFormParam->getHashArray(); $sqlval['update_date'] = "Now()"; $where = "category_id = ?"; $objQuery->update("dtb_category", $sqlval, $where, array($category_id)); }
function lfCopyDeliv($uniqid, $arrData) { $objQuery = new SC_Query(); // 別のお届け先を指定していない場合、配送先に登録住所をコピーする。 if ($arrData["deliv_check"] != "1") { $sqlval['deliv_name01'] = $arrData['order_name01']; $sqlval['deliv_name02'] = $arrData['order_name02']; $sqlval['deliv_kana01'] = $arrData['order_kana01']; $sqlval['deliv_kana02'] = $arrData['order_kana02']; $sqlval['deliv_pref'] = $arrData['order_pref']; $sqlval['deliv_zip01'] = $arrData['order_zip01']; $sqlval['deliv_zip02'] = $arrData['order_zip02']; $sqlval['deliv_addr01'] = $arrData['order_addr01']; $sqlval['deliv_addr02'] = $arrData['order_addr02']; $sqlval['deliv_tel01'] = $arrData['order_tel01']; $sqlval['deliv_tel02'] = $arrData['order_tel02']; $sqlval['deliv_tel03'] = $arrData['order_tel03']; $where = "order_temp_id = ?"; $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid)); } }
function lfDispComplete($objPage) { global $objWebParam; global $objDBParam; // hiddenに入力値を保持 $objPage->arrHidden = $objWebParam->getHashArray(); // hiddenに入力値を保持 $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray()); $arrDsn = getArrayDsn($objDBParam); $sqlval['id'] = 1; $sqlval['shop_name'] = $objWebParam->getValue('shop_name'); $sqlval['email01'] = $objWebParam->getValue('admin_mail'); $sqlval['email02'] = $objWebParam->getValue('admin_mail'); $sqlval['email03'] = $objWebParam->getValue('admin_mail'); $sqlval['email04'] = $objWebParam->getValue('admin_mail'); $sqlval['email05'] = $objWebParam->getValue('admin_mail'); $sqlval['top_tpl'] = 'default1'; $sqlval['product_tpl'] = 'default1'; $sqlval['detail_tpl'] = 'default1'; $sqlval['mypage_tpl'] = 'default1'; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery = new SC_Query($arrDsn); $cnt = $objQuery->count('dtb_baseinfo'); if ($cnt > 0) { $objQuery->update('dtb_baseinfo', $sqlval); } else { $objQuery->insert('dtb_baseinfo', $sqlval); } // 管理者登録 $login_id = $objWebParam->getValue('login_id'); $salt = SC_Utils_Ex::sfGetRandomString(10); $login_pass = SC_Utils_Ex::sfGetHashString($objWebParam->getValue('login_pass'), $salt); $arrVal = array('login_id' => $login_id, 'password' => $login_pass, 'salt' => $salt, 'work' => 1, 'del_flg' => 0, 'update_date' => 'CURRENT_TIMESTAMP'); $member_id = $objQuery->get('member_id', 'dtb_member', 'login_id = ? AND del_flg = 0', array($login_id)); if (strlen($member_id) == 0) { $member_id = $objQuery->nextVal('dtb_member_member_id'); $arrVal['member_id'] = $member_id; $arrVal['name'] = '管理者'; $arrVal['creator_id'] = 0; $arrVal['authority'] = 0; $arrVal['rank'] = 1; $objQuery->insert('dtb_member', $arrVal); } else { $objQuery->update('dtb_member', $arrVal, 'member_id = ?', array($member_id)); } $objPage->arrHidden['db_skip'] = $_POST['db_skip']; $objPage->tpl_mainpage = 'complete.tpl'; $objPage->tpl_mode = 'complete'; $secure_url = $objWebParam->getValue('secure_url'); // 語尾に'/'をつける $secure_url = rtrim($secure_url, '/') . '/'; $objPage->tpl_sslurl = $secure_url; //EC-CUBEオフィシャルサイトからのお知らせURL $objPage->install_info_url = INSTALL_INFO_URL; return $objPage; }
/** * 会員編集登録処理を行う. * * @param array $array パラメータの配列 * @param array $arrRegistColumn 登録するカラムの配列 * @return void */ function sfEditCustomerData($array, $arrRegistColumn) { $objQuery = new SC_Query(); foreach ($arrRegistColumn as $data) { if ($data["column"] != "password") { if ($array[$data['column']] != "") { $arrRegist[$data["column"]] = $array[$data["column"]]; } else { $arrRegist[$data['column']] = NULL; } } } if (strlen($array["year"]) > 0 && strlen($array["month"]) > 0 && strlen($array["day"]) > 0) { $arrRegist["birth"] = $array["year"] . "/" . $array["month"] . "/" . $array["day"] . " 00:00:00"; } else { $arrRegist["birth"] = NULL; } //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない) if ($array["password"] != DEFAULT_PASSWORD) { $arrRegist["password"] = sha1($array["password"] . ":" . AUTH_MAGIC); } $arrRegist["update_date"] = "NOW()"; //-- 編集登録実行 $objQuery->begin(); $objQuery->update("dtb_customer", $arrRegist, "customer_id = ? ", array($array['customer_id'])); $objQuery->commit(); }
/** * Page のプロセス. * * @return void */ function process() { $objQuery = new SC_Query(); $objView = new SC_AdminView(); $objSess = new SC_Session(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); $arrActive = array("0" => "稼働", "1" => "非稼働"); $arrQuestion = array("0" => "使用しない", "1" => "テキストエリア", "2" => "テキストボックス", "3" => "チェックボックス", "4" => "ラジオボタン"); $result = $objQuery->select('*, cast(create_date as date) as disp_date', 'dtb_question', 'del_flg = 0 ORDER BY question_id'); $this->list_data = $result; if (!isset($_GET['mode'])) { $_GET['mode'] = ""; } // アンケートを作成ボタン押下時 if ($_GET['mode'] == 'regist') { for ($i = 0; $i < count($_POST["question"]); $i++) { $_POST['question'][$i]['name'] = mb_convert_kana(trim($_POST['question'][$i]['name']), "K"); for ($j = 0; $j < count($_POST['question'][$i]['option']); $j++) { $_POST['question'][$i]['option'][$j] = mb_convert_kana(trim($_POST['question'][$i]['option'][$j])); } } $error = $this->lfErrCheck(); if (!$error) { // 新規登録 if (!is_numeric($_POST['question_id'])) { //登録 $value = serialize($_POST); if (DB_TYPE == "pgsql") { $question_id = $objQuery->nextval('dtb_question', 'question_id'); } $sql_val = array('question' => $value, 'question_name' => $_POST['title'], 'question_id' => $question_id, 'create_date' => 'now()'); $objQuery->insert('dtb_question', $sql_val); $this->MESSAGE = "登録が完了しました"; if (DB_TYPE == "mysql") { $question_id = $objQuery->nextval('dtb_question', 'question_id'); } $this->QUESTION_ID = $question_id; $this->reload(null, true); // 編集 } else { //編集 $value = serialize($_POST); $sql_val = array('question' => $value, 'question_name' => $_POST['title']); $objQuery->update('dtb_question', $sql_val, 'question_id = ?', array($_POST['question_id'])); $this->MESSAGE = "編集が完了しました"; $this->QUESTION_ID = $_POST['question_id']; $this->reload(null, true); } } else { //エラー表示 $this->ERROR = $error; $this->QUESTION_ID = $_REQUEST['question_id']; $this->ERROR_COLOR = $this->lfGetErrColor($error, ERR_COLOR); } // 削除ボタン押下時 } elseif ($_GET['mode'] == 'delete' && SC_Utils_Ex::sfCheckNumLength($_GET['question_id'])) { $sqlval = array('del_flg' => 1); $objQuery->update('dtb_question', $sqlval, 'question_id = ?', array($_GET['question_id'])); $this->reload(null, true); // CSVダウンロードボタン押下時 } elseif ($_GET['mode'] == 'csv' && SC_Utils_Ex::sfCheckNumLength($_GET['question_id'])) { require_once CLASS_EX_PATH . "helper_extends/SC_Helper_CSV_Ex.php"; $objCSV = new SC_Helper_CSV_Ex(); $head = SC_Utils_Ex::sfGetCSVList($this->arrCVSTITLE); $sql = <<<__EOS__ SELECT dtb_question_result.result_id ,dtb_question_result.question_id ,dtb_question_result.create_date ,dtb_question.question_name ,dtb_question_result.name01 ,dtb_question_result.name02 ,dtb_question_result.kana01 ,dtb_question_result.kana02 ,dtb_question_result.zip01 ,dtb_question_result.zip02 ,dtb_question_result.pref ,dtb_question_result.addr01 ,dtb_question_result.addr02 ,dtb_question_result.tel01 ,dtb_question_result.tel02 ,dtb_question_result.tel03 ,dtb_question_result.mail01 ,dtb_question_result.question01 ,dtb_question_result.question02 ,dtb_question_result.question03 ,dtb_question_result.question04 ,dtb_question_result.question05 ,dtb_question_result.question06 FROM dtb_question_result LEFT JOIN dtb_question ON dtb_question_result.question_id = dtb_question.question_id WHERE 0=0 AND dtb_question_result.del_flg = 0 AND dtb_question_result.question_id = ? ORDER BY dtb_question_result.result_id ASC __EOS__; $list_data = $objQuery->getAll($sql, array($_GET['question_id'])); $data = ""; for ($i = 0; $i < count($list_data); $i++) { // 各項目をCSV出力用に変換する。 $data .= $objCSV->lfMakeCSV($list_data[$i]); } // CSVを送信する SC_Utils_Ex::sfCSVDownload($head . $data); exit; // 初回表示 or 編集ボタン押下時 } else { if (!isset($_GET['question_id'])) { $_GET['question_id'] = ""; } if (is_numeric($_GET['question_id'])) { $sql = "SELECT question FROM dtb_question WHERE question_id = ?"; $result = $objQuery->getOne($sql, array($_GET['question_id'])); if ($result) { $_POST = unserialize($result); $this->QUESTION_ID = $_GET['question_id']; } } } //各ページ共通 $this->cnt_question = 6; $this->arrActive = $arrActive; $this->arrQuestion = $arrQuestion; //---- ページ表示 $objView->assignobj($this); $objView->display(MAIN_FRAME); }
/** * 管理者データをUpdateする. * * @param array 管理者データの連想配列 * @return void */ function updateMemberData($member_id, $arrMemberData) { $objQuery = new SC_Query(); // Updateする値を作成する. $sqlVal = array(); $sqlVal['name'] = $arrMemberData['name']; $sqlVal['department'] = $arrMemberData['department']; $sqlVal['login_id'] = $arrMemberData['login_id']; $sqlVal['authority'] = $arrMemberData['authority']; $sqlVal['update_date'] = 'NOW()'; if ($arrMemberData['password'] != DUMMY_PASS) { $sqlVal['password'] = sha1($arrMemberData['password'] . ":" . AUTH_MAGIC); } $where = "member_id = ?"; // UPDATEの実行 $objQuery->update("dtb_member", $sqlVal, $where, array($member_id)); }
/** * Page のプロセス(モバイル). * * @return void */ function mobileProcess() { // 買い物を続ける場合 if (!isset($_REQUEST['continue'])) { $_REQUEST['continue'] = ""; } if ($_REQUEST['continue']) { $this->sendRedirect($this->getLocation(MOBILE_URL_SITE_TOP), true); exit; } $objView = new SC_MobileView(false); $objCartSess = new SC_CartSession("", false); $objSiteSess = new SC_SiteSession(); $objSiteInfo = $objView->objSiteInfo; $objCustomer = new SC_Customer(); $objDb = new SC_Helper_DB_Ex(); // 基本情報の取得 $arrInfo = $objSiteInfo->data; // 商品購入中にカート内容が変更された。 if ($objCartSess->getCancelPurchase()) { $this->tpl_message = "商品購入中にカート内容が変更されましたので、お手数ですが購入手続きをやり直して下さい。"; } if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } switch ($_POST['mode']) { case 'confirm': // カート内情報の取得 $arrRet = $objCartSess->getCartList(); $max = count($arrRet); $cnt = 0; for ($i = 0; $i < $max; $i++) { // 商品規格情報の取得 $arrData = $objDb->sfGetProductsClass($arrRet[$i]['id']); // DBに存在する商品 if ($arrData != "") { $cnt++; } } // カート商品が1件以上存在する場合 if ($cnt > 0) { // 正常に登録されたことを記録しておく $objSiteSess->setRegistFlag(); $pre_uniqid = $objSiteSess->getUniqId(); // 注文一時IDの発行 $objSiteSess->setUniqId(); $uniqid = $objSiteSess->getUniqId(); // エラーリトライなどで既にuniqidが存在する場合は、設定を引き継ぐ if ($pre_uniqid != "") { $sqlval['order_temp_id'] = $uniqid; $where = "order_temp_id = ?"; $objQuery = new SC_Query(); $objQuery->update("dtb_order_temp", $sqlval, $where, array($pre_uniqid)); } // カートを購入モードに設定 $objCartSess->saveCurrentCart($uniqid); // 購入ページへ $this->sendRedirect(MOBILE_URL_SHOP_TOP, true); exit; } break; default: break; } if (!isset($_GET['mode'])) { $_GET['mode'] = ""; } /* * FIXME sendRedirect() を使った方が良いが無限ループしてしまう... */ switch ($_GET['mode']) { case 'up': $objCartSess->upQuantity($_GET['cart_no']); SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); break; case 'down': $objCartSess->downQuantity($_GET['cart_no']); SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); break; case 'delete': $objCartSess->delProduct($_GET['cart_no']); SC_Utils_Ex::sfReload(session_name() . "=" . session_id()); break; } // カート集計処理 if (empty($arrData)) { $arrData = array(); } $objDb->sfTotalCart($this, $objCartSess, $arrInfo); $this->arrData = $objDb->sfTotalConfirm($arrData, $this, $objCartSess, $arrInfo, $objCustomer); $this->arrInfo = $arrInfo; // ログイン判定 if ($objCustomer->isLoginSuccess(true)) { $this->tpl_login = true; $this->tpl_user_point = $objCustomer->getValue('point'); $this->tpl_name = $objCustomer->getValue('name01'); } // 送料無料までの金額を計算 $tpl_deliv_free = $this->arrInfo['free_rule'] - $this->tpl_total_pretax; $this->tpl_deliv_free = $tpl_deliv_free; // 前頁のURLを取得 $this->tpl_prev_url = $objCartSess->getPrevURL(); $objView->assignobj($this); $objView->display(SITE_FRAME); }
function lfUninstallModule() { global $objPage; $objQuery = new SC_Query(); $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, uninstall_sql, latest_version", "dtb_module", "module_id = ?", array($_POST['module_id'])); $flg_ok = true; // 処理の成功判定 if (count($arrRet) > 0) { // モジュールを削除する $objQuery->query("UPDATE dtb_payment SET del_flg = 1 WHERE module_id = ?", array($arrRet[0]['module_id'])); $arrFiles = array(); if ($arrRet[0]['other_files'] != "") { $arrFiles = split("\\|", $arrRet[0]['other_files']); } $arrFiles[] = $arrRet[0]['extern_php']; foreach ($arrFiles as $val) { $path = MODULE_PATH . $val; // ファイルを削除する if (file_exists($path) && unlink($path)) { $objPage->update_mess .= ">> " . $path . ":削除成功<br>"; } else { $objPage->update_mess .= ">> " . $path . ":削除失敗<br>"; } } // 必要なSQL文の実行 if ($arrRet[0]['uninstall_sql'] != "") { // SQL文実行、パラーメータなし、エラー無視 $ret = $objQuery->query($arrRet[0]['uninstall_sql'], "", true); if (DB::isError($ret)) { // エラー文を取得する ereg("\\[(.*)\\]", $ret->userinfo, $arrKey); $objPage->update_mess .= ">> テーブル構成の変更に失敗しました。<br>"; $objPage->update_mess .= $arrKey[0] . "<br>"; $flg_ok = false; } else { $objPage->update_mess .= ">> テーブル構成の変更を行いました。<br>"; } } } else { sfErrorHeader(">> 対象の機能は、配布を終了しております。"); } if ($flg_ok) { // バージョン情報を削除する。 $sqlval['now_version'] = ""; $sqlval['update_date'] = "now()"; $objQuery->update("dtb_module", $sqlval, "module_id = ?", array($arrRet[0]['module_id'])); } }
/** * 商品規格登録を行う. * * @param SC_Query $objQuery SC_Queryインスタンス * @param array $arrList 商品規格情報配列 * @param integer $product_id 商品ID * @param integer $product_class_id 商品規格ID * @return void */ function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id) { $sqlval['product_code'] = $arrList["product_code"]; $sqlval['stock'] = $arrList["stock"]; if ($sqlval['stock'] == "") { $sqlval['stock_unlimited'] = '1'; } else { $sqlval['stock_unlimited'] = '0'; } $sqlval['price01'] = $arrList['price01']; $sqlval['price02'] = $arrList['price02']; $sqlval['creator_id'] = $_SESSION['member_id']; // TODO $sqlval['member_id'] は何処から出てくる? if ($sqlval['member_id'] == "") { $sqlval['creator_id'] = '0'; } if ($product_class_id == "") { // 新規登録 $where = "product_id = ?"; // 念のために既存の規格を削除 $objQuery->delete("dtb_products_class", $where, array($product_id)); $sqlval['product_id'] = $product_id; $sqlval['classcategory_id1'] = '0'; $sqlval['classcategory_id2'] = '0'; $sqlval['create_date'] = "now()"; $objQuery->insert("dtb_products_class", $sqlval); } else { // 既存編集 $where = "product_id = ? AND product_class_id = ?"; $objQuery->update("dtb_products_class", $sqlval, $where, array($product_id, $product_class_id)); } }
/** * カテゴリ登録を行う. * * FIXME: 登録の実処理自体は、LC_Page_Admin_Products_Categoryと共通化して欲しい。 * * @param SC_Query $objQuery SC_Queryインスタンス * @param string|integer $line 処理中の行数 * @return integer カテゴリID */ function lfRegistCategory($objQuery, $line, &$objFormParam) { // 登録データ対象取得 $arrList = $objFormParam->getHashArray(); // 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、すべて同一の時間になってしまう) $arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line); // 登録情報を生成する。 // テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。 $sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrRegistColumn); // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetCategoryDefaultData($sqlval); if ($sqlval['category_id'] != '') { // 同じidが存在すればupdate存在しなければinsert $where = 'category_id = ?'; $category_exists = $objQuery->exists('dtb_category', $where, array($sqlval['category_id'])); if ($category_exists) { // UPDATEの実行 $where = 'category_id = ?'; $objQuery->update('dtb_category', $sqlval, $where, array($sqlval['category_id'])); } else { $sqlval['create_date'] = $arrList['update_date']; // 新規登録 $category_id = $this->registerCategory($sqlval['parent_category_id'], $sqlval['category_name'], $_SESSION['member_id'], $sqlval['category_id']); } $category_id = $sqlval['category_id']; // TODO: 削除時処理 } else { // 新規登録 $category_id = $this->registerCategory($sqlval['parent_category_id'], $sqlval['category_name'], $_SESSION['member_id']); } return $category_id; }
/** * カテゴリ数の登録を行う. * * * @param SC_Query $objQuery SC_Query インスタンス * @param boolean $is_force_all_count 全カテゴリの集計を強制する場合 true * @return void */ function sfCountCategory($objQuery = NULL, $is_force_all_count = false) { $objProduct = new SC_Product_Ex(); if ($objQuery == NULL) { $objQuery =& SC_Query_Ex::getSingletonInstance(); } $is_out_trans = false; if (!$objQuery->inTransaction()) { $objQuery->begin(); $is_out_trans = true; } //共通のfrom/where文の構築 $sql_where = 'alldtl.del_flg = 0 AND alldtl.status = 1'; // 在庫無し商品の非表示 if (NOSTOCK_HIDDEN === true) { $sql_where_dtl = 'stock_max >= 1 OR stock_unlimited_max = 1'; $from = $objProduct->alldtlSQL($sql_where_dtl); } else { $from = " dtb_products as alldtl "; } //dtb_category_countの構成 // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを含まない。 //まずテーブル内容の元を取得 if (!$is_force_all_count) { $arrCategoryCountOld = $objQuery->select('category_id,product_count', 'dtb_category_count'); } else { $arrCategoryCountOld = array(); } //各カテゴリ内の商品数を数えて取得 $sql = <<<__EOS__ SELECT T1.category_id, count(T2.category_id) as product_count FROM dtb_category AS T1 LEFT JOIN dtb_product_categories AS T2 ON T1.category_id = T2.category_id LEFT JOIN {$from} ON T2.product_id = alldtl.product_id WHERE {$sql_where} GROUP BY T1.category_id, T2.category_id __EOS__; $arrCategoryCountNew = $objQuery->getAll($sql); // 各カテゴリに所属する商品の数を集計。集計対象には子カテゴリを「含む」。 //差分を取得して、更新対象カテゴリだけを確認する。 //各カテゴリ毎のデータ値において以前との差を見る //古いデータの構造入れ替え $arrOld = array(); foreach ($arrCategoryCountOld as $item) { $arrOld[$item['category_id']] = $item['product_count']; } //新しいデータの構造入れ替え $arrNew = array(); foreach ($arrCategoryCountNew as $item) { $arrNew[$item['category_id']] = $item['product_count']; } $arrDiffCategory_id = array(); //新しいカテゴリ一覧から見て商品数が異なるデータが無いか確認 foreach ($arrNew as $cid => $count) { if ($arrOld[$cid] != $count) { $arrDiffCategory_id[] = $cid; } } //削除カテゴリを想定して、古いカテゴリ一覧から見て商品数が異なるデータが無いか確認。 foreach ($arrOld as $cid => $count) { if ($arrNew[$cid] != $count && $count > 0) { $arrDiffCategory_id[] = $cid; } } //対象IDが無ければ終了 if (count($arrDiffCategory_id) == 0) { if ($is_out_trans) { $objQuery->commit(); } return; } //差分対象カテゴリIDの重複を除去 $arrDiffCategory_id = array_unique($arrDiffCategory_id); //dtb_category_countの更新 差分のあったカテゴリだけ更新する。 foreach ($arrDiffCategory_id as $cid) { $sqlval = array(); $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $sqlval['product_count'] = (string) $arrNew[$cid]; if ($sqlval['product_count'] == "") { $sqlval['product_count'] = (string) '0'; } if (isset($arrOld[$cid])) { $objQuery->update('dtb_category_count', $sqlval, 'category_id = ?', array($cid)); } else { if ($is_force_all_count) { $ret = $objQuery->update('dtb_category_count', $sqlval, 'category_id = ?', array($cid)); if ($ret > 0) { continue; } } $sqlval['category_id'] = $cid; $objQuery->insert('dtb_category_count', $sqlval); } } //差分があったIDとその親カテゴリIDのリストを取得する $arrTgtCategory_id = array(); foreach ($arrDiffCategory_id as $parent_category_id) { $arrTgtCategory_id[] = $parent_category_id; $arrParentID = $this->sfGetParents('dtb_category', 'parent_category_id', 'category_id', $parent_category_id); $arrTgtCategory_id = array_merge($arrTgtCategory_id, $arrParentID); } //重複を取り除く $arrTgtCategory_id = array_unique($arrTgtCategory_id); //dtb_category_total_count 集計処理開始 //更新対象カテゴリIDだけ集計しなおす。 $arrUpdateData = array(); foreach ($arrTgtCategory_id as $category_id) { $arrval = array(); list($tmp_where, $tmp_arrval) = $this->sfGetCatWhere($category_id); if ($tmp_where != "") { $sql_where_product_ids = "product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")"; $arrval = array_merge((array) $tmp_arrval, (array) $tmp_arrval); } else { $sql_where_product_ids = '0<>0'; // 一致させない } $where = "({$sql_where}) AND ({$sql_where_product_ids})"; $from = $objProduct->alldtlSQL($sql_where_product_ids); $sql = "SELECT count(*) FROM {$from} WHERE {$where} "; $arrUpdateData[$category_id] = $objQuery->getOne($sql, $arrval); } // 更新対象だけを更新。 foreach ($arrUpdateData as $cid => $count) { $sqlval = array(); $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; $sqlval['product_count'] = $count; if ($sqlval['product_count'] == "") { $sqlval['product_count'] = (string) '0'; } $ret = $objQuery->update('dtb_category_total_count', $sqlval, 'category_id = ?', array($cid)); if (!$ret) { $sqlval['category_id'] = $cid; $ret = $objQuery->insert('dtb_category_total_count', $sqlval); } } // トランザクション終了処理 if ($is_out_trans) { $objQuery->commit(); } }
/** * 配送情報を登録する * * @return $deliv_id */ function lfRegistData() { $arrRet = $this->objFormParam->getHashArray(); $objQuery = new SC_Query(); $objQuery->begin(); // 入力データを渡す。 $sqlval['name'] = $arrRet['name']; $sqlval['service_name'] = $arrRet['service_name']; $sqlval['confirm_url'] = $arrRet['confirm_url']; $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['update_date'] = 'Now()'; // deliv_id が決まっていた場合 if ($_POST['deliv_id'] != "") { $deliv_id = $_POST['deliv_id']; $where = "deliv_id = ?"; $objQuery->update("dtb_deliv", $sqlval, $where, array($deliv_id)); // 配送時間の登録 $table = "dtb_delivtime"; $where = "deliv_id = ? AND time_id = ?"; for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { $sqlval = array(); $keyname = "deliv_time" . $cnt; $arrval = array($deliv_id, $cnt * $deliv_id); // 既存データの有無を確認 $curData = $objQuery->select("*", $table, $where, $arrval); if (strcmp($arrRet[$keyname], "") != 0) { $sqlval['deliv_time'] = $arrRet[$keyname]; // 入力が空ではなく、DBに情報があれば更新 if (count($curData)) { $objQuery->update($table, $sqlval, $where, $arrval); } else { $sqlval['deliv_id'] = $deliv_id; $sqlval['time_id'] = $cnt * $deliv_id; $objQuery->insert($table, $sqlval); } } else { if (count($curData)) { $objQuery->delete($table, $where, $arrval); } } } // 配送料の登録 if (INPUT_DELIV_FEE) { for ($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) { $keyname = "fee" . $cnt; if (strcmp($arrRet[$keyname], "") != 0) { $sqlval = array('fee' => $arrRet[$keyname]); $objQuery->update("dtb_delivfee", $sqlval, "deliv_id = ? AND pref = ?", array($deliv_id, $cnt)); } } } } else { // 登録する配送業者IDの取得 if (DB_TYPE == "pgsql") { $deliv_id = $objQuery->nextval('dtb_deliv', 'deliv_id'); $sqlval['deliv_id'] = $deliv_id; } $sqlval['rank'] = $objQuery->max("dtb_deliv", "rank") + 1; $sqlval['create_date'] = 'Now()'; // INSERTの実行 $objQuery->insert("dtb_deliv", $sqlval); if (DB_TYPE == "mysql") { $deliv_id = $objQuery->nextval('dtb_deliv', 'deliv_id'); } $sqlval = array(); // 配送時間の設定 for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { $keyname = "deliv_time{$cnt}"; if ($arrRet[$keyname] != "") { $sqlval['deliv_id'] = $deliv_id; $sqlval['time_id'] = $cnt * $deliv_id; $sqlval['deliv_time'] = $arrRet[$keyname]; // INSERTの実行 $objQuery->insert("dtb_delivtime", $sqlval); } } if (INPUT_DELIV_FEE) { $sqlval = array(); // 配送料金の設定 for ($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) { $keyname = "fee{$cnt}"; if ($arrRet[$keyname] != "") { $sqlval['deliv_id'] = $deliv_id; $sqlval['fee'] = $arrRet[$keyname]; $sqlval['pref'] = $cnt; // INSERTの実行 $objQuery->insert("dtb_delivfee", $sqlval); } } } } $objQuery->commit(); return $deliv_id; }
/** * 商品登録を行う. * * FIXME: 商品登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。 * * @param SC_Query $objQuery * SC_Queryインスタンス * @param string|integer $line * 処理中の行数 * @return void */ public function lfRegistProduct($objQuery, $line = '', &$objFormParam) { // 登録データ対象取得 $arrList = $objFormParam->getDbArray(); // 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、全て同一の時間になってしまう) $arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line); // 商品登録情報を生成する。 // 商品テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。 $sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductColumn); // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetProductDefaultData($sqlval); GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE); $sqlval = $objQuery->extractOnlyColsOf($this->table, $sqlval); if ($sqlval[$this->id_column] != '') { // 同じidが存在すればupdate存在しなければinsert $where = $this->id_column . ' = ?'; $product_exists = $objQuery->exists($this->table, $where, array($sqlval[$this->id_column])); if ($product_exists) { GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE); $objQuery->update($this->table, $sqlval, $where, array($sqlval[$this->id_column])); } else { $sqlval['create_date'] = $arrList['update_date']; // INSERTの実行 GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE); $objQuery->insert($this->table, $sqlval); // シーケンスの調整 $seq_count = $objQuery->currVal($this->seq_name); if ($seq_count < $sqlval[$this->id_column]) { $objQuery->setVal($this->seq_name, $sqlval[$this->id_column] + 1); } } $product_id = $sqlval[$this->id_column]; } else { // 新規登録 $sqlval[$this->id_column] = $objQuery->nextVal($this->seq_name); $product_id = $sqlval[$this->id_column]; $sqlval['create_date'] = $arrList['update_date']; // INSERTの実行 GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE); $objQuery->insert($this->table, $sqlval); } $objDb = new SC_Helper_DB_Ex(); // カテゴリ登録 if (isset($arrList['category_ids'])) { if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) { $objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column])); $arrCategory_id = explode(',', $arrList['category_ids']); $rank = 1; foreach ($arrCategory_id as $category_id) { $sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $category_id, "rank" => $rank++); $sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2); $objQuery->insert($this->categories_table, $sqlval2); } } } elseif (count($this->arrCategory) == 1) { if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) { $objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column])); $keys = array_keys($this->arrCategory); $sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $keys[0], "rank" => 1); $sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2); $objQuery->insert($this->categories_table, $sqlval2); } } }
/** * 商品規格登録を行う. * * FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。 * * @param SC_Query $objQuery SC_Queryインスタンス * @param array $arrList 商品規格情報配列 * @param integer $product_id 商品ID * @param integer $product_class_id 商品規格ID * @return void */ function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id) { $objProduct = new SC_Product_Ex(); // 商品規格登録情報を生成する。 // 商品規格テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。 $sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductClassColumn); if ($product_class_id == '') { // 新規登録 // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetProductClassDefaultData($sqlval); $sqlval['product_id'] = $product_id; $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); $sqlval['create_date'] = $arrList['update_date']; // INSERTの実行 $objQuery->insert('dtb_products_class', $sqlval); $product_class_id = $sqlval['product_class_id']; } else { // UPDATEの実行 // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetProductClassDefaultData($sqlval, true); $where = 'product_class_id = ?'; $objQuery->update('dtb_products_class', $sqlval, $where, array($product_class_id)); } }
function lfUpdateClass() { $objQuery = new SC_Query(); // UPDATEする値を作成する。 $sqlval['name'] = $_POST['name']; $sqlval['update_date'] = "Now()"; $where = "classcategory_id = ?"; // UPDATEの実行 $ret = $objQuery->update("dtb_classcategory", $sqlval, $where, array($_POST['classcategory_id'])); return $ret; }
/** * DBへ入力内容を登録する. * * @param array $arrSettingsData オーナーズストア設定の連想配列 * @return void */ function registerOwnersStoreSettings($arrSettingsData) { $table = 'dtb_ownersstore_settings'; $objQuery = new SC_Query(); $count = $objQuery->count($table); if ($count) { $objQuery->update($table, $arrSettingsData); } else { $objQuery->insert($table, $arrSettingsData); } }
/** * カテゴリ登録を行う. * * @param SC_Query $objQuery SC_Queryインスタンス * @param string|integer $line 処理中の行数 * @return void */ function lfRegistProduct($objQuery, $line = "") { $objDb = new SC_Helper_DB_Ex(); $arrRet = $this->objFormParam->getHashArray(); //カテゴリID if ($arrRet['category_id'] == 0) { $category_id = $objQuery->max("dtb_category", "category_id") + 1; $sqlval['category_id'] = $category_id; $update = false; } else { $sqlval['category_id'] = $arrRet['category_id']; $update = true; } // カテゴリ名 $sqlval['category_name'] = $arrRet['category_name']; // 親カテゴリID、レベル if ($arrRet['parent_category_id'] == 0) { $sqlval['parent_category_id'] = "0"; $sqlval['level'] = 1; } else { $sqlval['parent_category_id'] = $arrRet['parent_category_id']; $parent_level = $objQuery->get("dtb_category", "level", "category_id = ?", array($sqlval['parent_category_id'])); $sqlval['level'] = $parent_level + 1; } // その他 $time = date("Y-m-d H:i:s"); if ($line != "") { $microtime = sprintf("%06d", $line); $time .= ".{$microtime}"; } $sqlval['update_date'] = $time; $sqlval['creator_id'] = $_SESSION['member_id']; // 更新 if ($update) { echo "UPDATE "; $where = "category_id = ?"; $objQuery->update("dtb_category", $sqlval, $where, array($sqlval['category_id'])); // 新規登録 } else { echo "INSERT "; $sqlval['create_date'] = $time; // ランク if ($sqlval['parent_category_id'] == 0) { // ROOT階層で最大のランクを取得する。 $where = "parent_category_id = ?"; $sqlval['rank'] = $objQuery->max("dtb_category", "rank", $where, array($sqlval['parent_category_id'])) + 1; } else { // 親のランクを自分のランクとする。 $where = "category_id = ?"; $sqlval['rank'] = $objQuery->get("dtb_category", "rank", $where, array($sqlval['parent_category_id'])); // 追加レコードのランク以上のレコードを一つあげる。 $sqlup = "UPDATE dtb_category SET rank = (rank + 1) WHERE rank >= ?"; $objQuery->exec($sqlup, array($sqlval['rank'])); } $objQuery->insert("dtb_category", $sqlval); } }
/** * 使用するテンプレートをDBへ登録する */ function lfRegisterTemplate($template_code) { $objQuery = new SC_Query(); $sqlval['name'] = "\"" . $template_code . "\""; $objQuery->update("mtb_constants", $sqlval, "id = ?", array('TEMPLATE_NAME')); // キャッシュを生成 $masterData = new SC_DB_MasterData_Ex(); // 更新したデータを取得 $mtb_constants = $masterData->getDBMasterData("mtb_constants"); $masterData->clearCache("mtb_constants"); $masterData->createCache("mtb_constants", $mtb_constants, true, array("id", "remarks", "rank")); }
function lfGetSecretKey($email, &$objConn) { $sql = "SELECT secret_key FROM dtb_customer_mail WHERE email = ?"; $uniqid = $objConn->getOne($sql, array($email)); if ($uniqid == '') { $count = 1; while ($count != 0) { $uniqid = SC_Utils_Ex::sfGetUniqRandomId("t"); $count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_mail WHERE secret_key = ?", array($uniqid)); } $objQuery = new SC_Query(); $objQuery->update("dtb_customer_mail", array('secret_key' => $uniqid), "email = " . SC_Utils_Ex::sfQuoteSmart($email)); } return $uniqid; }
$arrRet = $objDBParam->getHashArray(); $dsn = $arrRet['db_type'] . "://" . $arrRet['db_user'] . ":" . $arrRet['db_password'] . "@" . $arrRet['db_server'] . ":" . $arrRet['db_port'] . "/" . $arrRet['db_name']; $sqlval['shop_name'] = $objWebParam->getValue('shop_name'); $sqlval['email01'] = $objWebParam->getValue('admin_mail'); $sqlval['email02'] = $objWebParam->getValue('admin_mail'); $sqlval['email03'] = $objWebParam->getValue('admin_mail'); $sqlval['email04'] = $objWebParam->getValue('admin_mail'); $sqlval['email05'] = $objWebParam->getValue('admin_mail'); $sqlval['top_tpl'] = "default1"; $sqlval['product_tpl'] = "default1"; $sqlval['detail_tpl'] = "default1"; $sqlval['mypage_tpl'] = "default1"; $objQuery = new SC_Query($dsn); $cnt = $objQuery->count("dtb_baseinfo"); if ($cnt > 0) { $objQuery->update("dtb_baseinfo", $sqlval); } else { $objQuery->insert("dtb_baseinfo", $sqlval); } // 管理者登録 $login_id = $objWebParam->getValue('login_id'); $login_pass = sha1($objWebParam->getValue('login_pass') . ":" . AUTH_MAGIC); $sql = "DELETE FROM dtb_member WHERE login_id = ?"; $objQuery->query($sql, array($login_id)); $sql = "INSERT INTO dtb_member (name, login_id, password, creator_id, authority, work, del_flg, rank, create_date, update_date)\n VALUES ('管理者',?,?,0,0,1,0,1, now(), now());"; $objQuery->query($sql, array($login_id, $login_pass)); global $GLOBAL_ERR; $GLOBAL_ERR = ""; $objPage = lfDispComplete($objPage); // サイト情報を送信 $req = new HTTP_Request("http://www.ec-cube.net/mall/use_site.php");
/** * カテゴリ変更時の移動処理を行う. * * ※この関数って、どこからも呼ばれていないのでは?? * * @param SC_Query $objQuery SC_Query インスタンス * @param string $table テーブル名 * @param string $id_name ID名 * @param string $cat_name カテゴリ名 * @param integer $old_catid 旧カテゴリID * @param integer $new_catid 新カテゴリID * @param integer $id ID * @return void */ public function sfMoveCatRank($objQuery, $table, $id_name, $cat_name, $old_catid, $new_catid, $id) { if ($old_catid == $new_catid) { return; } // 旧カテゴリでのランク削除処理 // 移動レコードのランクを取得する。 $sqlval = array(); $where = "{$id_name} = ?"; $rank = $objQuery->get('rank', $table, $where, array($id)); // 削除レコードのランクより上のレコードを一つ下にずらす。 $where = "rank > ? AND {$cat_name} = ?"; $arrWhereVal = array($rank, $old_catid); $arrRawSql = array('rank' => '(rank - 1)'); $objQuery->update($table, $sqlval, $where, $arrWhereVal, $arrRawSql); // 新カテゴリでの登録処理 // 新カテゴリの最大ランクを取得する。 $max_rank = $objQuery->max('rank', $table, "{$cat_name} = ?", array($new_catid)) + 1; $sqlval = array('rank' => $max_rank); $where = "{$id_name} = ?"; $arrWhereVal = array($id); $objQuery->update($table, $sqlval, $where, $arrWhereVal); }
/** * 商品規格登録を行う. * * FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。 * * @param SC_Query $objQuery SC_Queryインスタンス * @param array $arrList 商品規格情報配列 * @param integer $product_id 商品ID * @param integer $product_class_id 商品規格ID * @return void */ public function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id) { $objProduct = new SC_Product_Ex(); // FIXME: dtb_csvテーブルの中で古いカラム名(右辺)が設定されている。sfArrayIntersectKeysでフィルタされてしまうので、名称を変更する必要がある if (array_key_exists('classcategory_id', $arrList) && $arrList['classcategory_id'] != '') { $arrList['classcategory_id1'] = $arrList['classcategory_id']; } if (array_key_exists('parent_classcategory_id', $arrList) && $arrList['classcategory_id'] != '') { $arrList['classcategory_id2'] = $arrList['parent_classcategory_id']; } // 商品規格登録情報を生成する。 // 商品規格テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。 $sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductClassColumn); if ($product_class_id == '') { // 新規登録 // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetProductClassDefaultData($sqlval); $sqlval['product_id'] = $product_id; $sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); $sqlval['create_date'] = $arrList['update_date']; // INSERTの実行 $objQuery->insert('dtb_products_class', $sqlval); $product_class_id = $sqlval['product_class_id']; } else { // UPDATEの実行 // 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定 $sqlval = $this->lfSetProductClassDefaultData($sqlval, true); $where = 'product_class_id = ?'; $objQuery->update('dtb_products_class', $sqlval, $where, array($product_class_id)); } }
function lfRegistData($payment_id = "") { $objQuery = new SC_Query(); $sqlval = $this->objFormParam->getHashArray(); $arrRet = $this->objUpFile->getDBFileList(); // ファイル名の取得 $sqlval = array_merge($sqlval, $arrRet); $sqlval['update_date'] = 'Now()'; if ($sqlval['fix'] != '1') { $sqlval['fix'] = 2; // 自由設定 } // 新規登録 if ($payment_id == "") { // INSERTの実行 $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['rank'] = $objQuery->max("dtb_payment", "rank") + 1; $sqlval['create_date'] = 'Now()'; $objQuery->insert("dtb_payment", $sqlval); // 既存編集 } else { $where = "payment_id = ?"; $objQuery->update("dtb_payment", $sqlval, $where, array($payment_id)); } }
function lfRegistData($array) { $objQuery = new SC_Query(); $this->arrInfo; do { $secret = SC_Utils_Ex::sfGetUniqRandomId("r"); } while (($result = $objQuery->getOne("SELECT COUNT(*) FROM dtb_customer WHERE secret_key = ?", array($secret))) != 0); $sql = "SELECT email FROM dtb_customer WHERE secret_key = ? AND status = 1"; $email = $objQuery->getOne($sql, array($array["id"])); $objQuery->begin(); $arrRegist["secret_key"] = $secret; // 本登録ID発行 $arrRegist["status"] = 2; $arrRegist["update_date"] = "NOW()"; $where = "secret_key = ? AND status = 1"; $arrRet = $objQuery->select("point", "dtb_customer", $where, array($array["id"])); // 会員登録時の加算ポイント(購入時会員登録の場合は、ポイント加算) $arrRegist['point'] = $arrRet[0]['point'] + $arrInfo['welcome_point']; $objQuery->update("dtb_customer", $arrRegist, $where, array($array["id"])); /* 購入時の自動会員登録は行わないためDEL // 購入時登録の場合、その回の購入を会員購入とみなす。 // 会員情報の読み込み $where1 = "secret_key = ? AND status = 2"; $customer = $objQuery->select("*", "dtb_customer", $where1, array($secret)); // 初回購入情報の読み込み $order_temp_id = $objQuery->get("dtb_order_temp", "order_temp_id"); // 購入情報の更新 if ($order_temp_id != null) { $arrCustomer['customer_id'] = $customer[0]['customer_id']; $where3 = "order_temp_id = ?"; $objQuery->update("dtb_order_temp", $arrCustomer, $where3, array($order_temp_id)); $objQuery->update("dtb_order", $arrCustomer, $where3, array($order_temp_id)); } */ $sql = "SELECT mailmaga_flg FROM dtb_customer WHERE email = ?"; $result = $objQuery->getOne($sql, array($email)); switch ($result) { // 仮HTML case '4': $arrRegistMail["mailmaga_flg"] = 1; break; // 仮TEXT // 仮TEXT case '5': $arrRegistMail["mailmaga_flg"] = 2; break; // 仮なし // 仮なし case '6': $arrRegistMail["mailmaga_flg"] = 3; break; default: $arrRegistMail["mailmaga_flg"] = $result; break; } $objQuery->update("dtb_customer", $arrRegistMail, "email = " . SC_Utils_Ex::sfQuoteSmart($email) . " AND del_flg = 0"); $objQuery->commit(); return $secret; // 本登録IDを返す }