Ejemplo n.º 1
0
 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"));
 }
Ejemplo n.º 3
0
 /**
  * セッションのデータを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);
 }
Ejemplo n.º 5
0
 /**
  * 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);
 }
Ejemplo n.º 6
0
                     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));
 }
Ejemplo n.º 8
0
 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;
}
Ejemplo n.º 10
0
 /**
  * 会員編集登録処理を行う.
  *
  * @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));
 }
Ejemplo n.º 13
0
 /**
  * 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);
 }
Ejemplo n.º 14
0
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;
 }
Ejemplo n.º 17
0
    /**
     * カテゴリ数の登録を行う.
     *
     *
     * @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"));
 }
Ejemplo n.º 25
0
 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;
 }
Ejemplo n.º 26
0
 $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");
Ejemplo n.º 27
0
 /**
  * カテゴリ変更時の移動処理を行う.
  *
  * ※この関数って、どこからも呼ばれていないのでは??
  *
  * @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));
     }
 }
Ejemplo n.º 30
0
 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を返す
 }