Changeset 18791


Ignore:
Timestamp:
2010/08/25 16:38:50 (13 years ago)
Author:
nanasess
bzr:base-revision:
ohkouchi@loop-az.jp-20100824055828-2oy1qb3wcp85i76l
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/class/helper/SC_Helper_CSV.php 15535@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_CSV.php
data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php 16251@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fsystem%2FLC_Page_Admin_System_Bkup.php
html/install/index.php 16809@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Findex.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/drop_table.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_table.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
bzr:mapping-version:
v4
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20100825073846-mzg8ka4y21o1nk6o
bzr:revno:
2274
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-parents:

data/class/helper/SC_Helper_CSV.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18781
data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php ohkouchi@loop-az.jp-20100819104758-beubop5hq0pwdqhx
html/install/sql/create_table_mysql.sql ohkouchi@loop-az.jp-20100819104758-beubop5hq0pwdqhx
html/install/sql/create_table_pgsql.sql ohkouchi@loop-az.jp-20100819104758-beubop5hq0pwdqhx
html/install/sql/drop_table.sql ohkouchi@loop-az.jp-20100818061055-lqje64n4qlsd2ke9
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20100819104758-beubop5hq0pwdqhx
bzr:timestamp:
2010-08-25 16:38:46.040999889 +0900
bzr:user-agent:
bzr2.1.2+bzr-svn1.0.2
svn:original-date:
2010-08-25T07:38:46.041000Z
Message:

DB_TYPE で条件分岐している箇所の抽象化(#801)

  • SC_Helper_CSV
    • convert を mb_convert_kana_option へ変更
    • PEAR::DB の定数を MDB2 の定数へ修正
  • LC_Page_Admin_System_Bkup
    • DB_TYPE を使用している箇所を抽象化
    • シーケンス値バックアップファイルのフォーマット変更
  • html/install/index.php
    • 管理ユーザーの追加ができなくなっていたのを修正
  • html/install/sql/create_table_mysql.sql, html/install/sql/create_table_pgsql.sql
    • dtb_csv.convert を dtb_csv.mb_convert_kana_option へ変更
    • dtb_bkup を追加
  • html/install/sql/drop_table.sql
    • dtb_bkup を追加
  • html/install/sql/insert_data.sql
    • NOT NULL のフィールドが空文字にならないよう修正
Location:
branches/version-2_5-dev
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php

    r18781 r18791  
    7878                create_date, 
    7979                update_date, 
    80                 "convert" 
     80                mb_convert_kana_option 
    8181            FROM 
    8282                dtb_csv 
     
    262262        $objQuery->setOption($option); 
    263263 
    264         $list_data = $objQuery->select($cols, $from, $where, $arrval, DB_FETCHMODE_ORDERED); 
     264        $list_data = $objQuery->select($cols, $from, $where, $arrval, MDB2_FETCHMODE_ORDERED); 
    265265 
    266266        $csv = ''; 
  • branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php

    r18788 r18791  
    6969        SC_Utils_Ex::sfIsSuccess($objSess); 
    7070 
    71         // バックアップテーブルがなければ作成する 
    72         $this->lfCreateBkupTable(); 
    73  
    7471        if (!isset($_POST['mode'])) $_POST['mode'] = ""; 
    7572 
     
    207204        // 実行時間を制限しない 
    208205        set_time_limit(0); 
    209          
     206 
    210207        $objQuery = new SC_Query(); 
    211208        $csv_data = ""; 
     
    218215 
    219216        // 全テーブル取得 
    220         $arrTableList = $this->lfGetTableList(); 
     217        $arrTableList = $objQuery->listTables(); 
    221218 
    222219        // 各テーブル情報を取得する 
     
    224221 
    225222            if (!($val == "dtb_bkup" || $val == "mtb_zip")) { 
    226  
    227                 // 自動採番型の構成を取得する 
    228                 if ( 
    229                 $csv_autoinc .= $this->lfGetAutoIncrement($val); 
    230223 
    231224                // 全データを取得 
     
    252245                    $csv_data .= $val . "\r\n"; 
    253246                    $csv_data .= $arrKyes . "\r\n"; 
    254                     $csv_data .= $data; 
    255                     $csv_data .= "\r\n"; 
     247                    $csv_data .= $data . "\r\n"; 
    256248                } 
    257249 
     
    260252            } 
    261253        } 
     254 
     255        // 自動採番型の構成を取得する 
     256        $csv_autoinc = $this->lfGetAutoIncrement(); 
    262257 
    263258        $csv_file = $bkup_dir . "bkup_data.csv"; 
     
    358353    } 
    359354 
    360     // 全テーブルリストを取得する 
    361     function lfGetTableList(){ 
     355    /** 
     356     * シーケンス一覧をCSV出力形式に変換する. 
     357     * 
     358     * シーケンス名,シーケンス値 の形式に出力する. 
     359     * 
     360     * @return string シーケンス一覧の文字列 
     361     */ 
     362    function lfGetAutoIncrement() { 
    362363        $objQuery = new SC_Query(); 
    363  
    364         if(DB_TYPE == "pgsql"){ 
    365             $sql = "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; "; 
    366             $arrRet = $objQuery->getAll($sql, array(DB_USER)); 
    367             $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); 
    368             $arrRet = $arrRet['tablename']; 
    369         }else if(DB_TYPE == "mysql"){ 
    370             $sql = "SHOW TABLES;"; 
    371             $arrRet = $objQuery->getAll($sql); 
    372             $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); 
    373  
    374             // キーを取得 
    375             $arrKey = array_keys($arrRet); 
    376  
    377             $arrRet = $arrRet[$arrKey[0]]; 
    378         } 
    379         return $arrRet; 
    380     } 
    381  
    382     // 自動採番型をCSV出力形式に変換する 
    383     // FIXME MDB2 のシーケンス関数を使用した実装へ要改修 
    384     function lfGetAutoIncrement($table_name){ 
    385         $arrColList = $this->lfGetColumnList($table_name); 
    386         $ret = ""; 
    387  
    388         if(DB_TYPE == "pgsql"){ 
    389             $match = 'nextval(\''; 
    390         }else if(DB_TYPE == "mysql"){ 
    391             $match = "auto_incr"; 
    392         } 
    393  
    394         foreach($arrColList['col_def'] as $key => $val){ 
    395  
    396             if (substr($val,0,9) == $match) { 
    397                 $col = $arrColList['col_name'][$key]; 
    398                 $autoVal = $this->lfGetAutoIncrementVal($table_name, $col); 
    399                 $ret .= "$table_name,$col,$autoVal\n"; 
    400             } 
    401         } 
    402  
    403         return $ret; 
    404     } 
    405  
    406     // テーブル構成を取得する 
    407     Function LfgetColumnlist($table_name){ 
    408         $objQuery = new SC_Query(); 
    409  
    410         if(DB_TYPE == "pgsql"){ 
    411             $sql = "SELECT 
    412                     a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description 
    413                 FROM 
    414                     pg_class c, 
    415                     pg_type t, 
    416                     pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum) 
    417                                    left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid) 
    418                 WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0 
    419                 ORDER BY fldnum"; 
    420             $arrColList = $objQuery->getAll($sql, array($table_name)); 
    421             $arrColList = SC_Utils_Ex::sfSwapArray($arrColList); 
    422  
    423             $arrRet['col_def'] = $arrColList['defval']; 
    424             $arrRet['col_name'] = $arrColList['attname']; 
    425         }else if(DB_TYPE == "mysql"){ 
    426             $sql = "SHOW COLUMNS FROM $table_name"; 
    427             $arrColList = $objQuery->getAll($sql); 
    428             $arrColList = SC_Utils_Ex::sfSwapArray($arrColList); 
    429  
    430             $arrRet['col_def'] = $arrColList['Extra']; 
    431             $arrRet['col_name'] = $arrColList['Field']; 
    432         } 
    433         return $arrRet; 
    434     } 
    435  
    436     // 自動採番型の値を取得する 
    437     function lfGetAutoIncrementVal($table_name , $colname = ""){ 
    438         $objQuery = new SC_Query(); 
    439         $ret = ""; 
    440  
    441         if(DB_TYPE == "pgsql"){ 
    442             $ret = $objQuery->nextval($table_name, $colname) - 1; 
    443         }else if(DB_TYPE == "mysql"){ 
    444             $sql = "SHOW TABLE STATUS LIKE ?"; 
    445             $arrData = $objQuery->getAll($sql, array($table_name)); 
    446             $ret = $arrData[0]['Auto_increment']; 
     364        $arrSequences = $objQuery->listSequences(); 
     365        $result = ""; 
     366 
     367        foreach($arrSequences as $val){ 
     368            $seq = $objQuery->currVal($val); 
     369 
     370            $ret .= $val . ","; 
     371            $ret .= is_null($seq) ? "0" : $seq; 
     372            $ret .= "\r\n"; 
    447373        } 
    448374        return $ret; 
     
    473399        // 実行時間を制限しない 
    474400        set_time_limit(0); 
    475          
     401 
    476402        $objQuery = new SC_Query("", false); 
    477403        $csv_data = ""; 
     
    546472 
    547473    // CSVファイルからインサート実行 
    548     function lfExeInsertSQL($objQuery, $csv){ 
     474    function lfExeInsertSQL(&$objQuery, $csv){ 
    549475 
    550476        $sql = ""; 
     
    604530 
    605531            // エラーがあれば終了 
    606             if ($err->message != ""){ 
     532            if (PEAR::isError($err)){ 
    607533                SC_Utils_Ex::sfErrorHeader(">> " . $objQuery->getlastquery(false)); 
    608534                return false; 
     
    625551 
    626552    // 自動採番をセット 
    627     function lfSetAutoInc($objQuery, $csv){ 
     553    function lfSetAutoInc(&$objQuery, $csv){ 
    628554        // csvファイルからデータの取得 
    629555        $arrCsvData = file($csv); 
    630556 
    631         foreach($arrCsvData as $key => $val){ 
     557        foreach($arrCsvData as $val){ 
    632558            $arrData = split(",", trim($val)); 
    633559 
    634             if ($arrData[2] == 0)   $arrData[2] = 1; 
    635             $objQuery->setval($arrData[0] . "_" . $arrData[1], $arrData[2]); 
     560             $objQuery->setval($arrData[0], $arrData[1]); 
    636561        } 
    637562    } 
    638563 
    639564    // DBを全てクリアする 
    640     function lfDeleteAll($objQuery){ 
     565    function lfDeleteAll(&$objQuery){ 
    641566        $ret = true; 
    642567 
    643         $arrTableList = $this->lfGetTableList(); 
    644  
    645         foreach($arrTableList as $key => $val){ 
     568        $arrTableList = $objQuery->listTables(); 
     569 
     570        foreach($arrTableList as $val){ 
    646571            // バックアップテーブルは削除しない 
    647572            if ($val != "dtb_bkup") { 
    648                 $trun_sql = "DELETE FROM $val;"; 
     573                $trun_sql = "DELETE FROM $val"; 
    649574                $ret = $objQuery->query($trun_sql); 
    650  
    651                 if (!$ret) return $ret; 
    652             } 
    653         } 
    654  
    655         return $ret; 
    656     } 
    657  
    658     // バックアップテーブルを作成する 
    659     function lfCreateBkupTable(){ 
    660         $objQuery = new SC_Query(); 
    661  
    662         // テーブルの存在チェック 
    663         $arrTableList = $this->lfGetTableList(); 
    664  
    665         if(!in_array("dtb_bkup", $arrTableList)){ 
    666             // 存在していなければ作成 
    667             // MySQL でプライマリキーを設定するため bkup_name は varchar(50) とした。 
    668             $cre_sql = " 
    669             create table dtb_bkup 
    670             ( 
    671                 bkup_name   varchar(50), 
    672                 bkup_memo   text, 
    673                 create_date timestamp, 
    674                 PRIMARY KEY (bkup_name) 
    675             ); 
    676         "; 
    677  
    678             $objQuery->query($cre_sql); 
    679         } 
     575                if (PEAR::isError($ret)) return false; 
     576            } 
     577        } 
     578 
     579        return true; 
    680580    } 
    681581} 
  • branches/version-2_5-dev/html/install/index.php

    r18790 r18791  
    276276    $objQuery->query($sql, array($login_id)); 
    277277 
    278     $sql = "INSERT INTO dtb_member (name, login_id, password, creator_id, authority, work, del_flg, rank, create_date, update_date) 
    279             VALUES ('管理者',?,?,0,0,1,0,1, now(), now());"; 
    280  
    281     $objQuery->query($sql, array($login_id, $login_pass)); 
     278    $sql = "INSERT INTO dtb_member (member_id, name, login_id, password, creator_id, authority, work, del_flg, rank, create_date, update_date) 
     279            VALUES (?,'管理者',?,?,0,0,1,0,1, now(), now());"; 
     280    $member_id = $objQuery->nextVal("dtb_member_member_id"); 
     281    $objQuery->query($sql, array($member_id, $login_id, $login_pass)); 
    282282 
    283283    $GLOBAL_ERR = ""; 
  • branches/version-2_5-dev/html/install/sql/create_table_mysql.sql

    r18788 r18791  
    841841    create_date datetime NOT NULL, 
    842842    update_date datetime NOT NULL, 
    843     `convert` text, 
     843    mb_convert_kana_option text, 
    844844    PRIMARY KEY (no) 
    845845) TYPE=InnoDB; 
     
    12321232    update_date datetime NOT NULL, 
    12331233    PRIMARY KEY (trackback_id) 
     1234) TYPE=InnoDB; 
     1235 
     1236CREATE TABLE dtb_bkup ( 
     1237    bkup_name varchar(50), 
     1238    bkup_memo text, 
     1239    create_date datetime, 
     1240    PRIMARY KEY (bkup_name) 
    12341241) TYPE=InnoDB; 
    12351242 
  • branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql

    r18788 r18791  
    842842    create_date timestamp NOT NULL DEFAULT now(), 
    843843    update_date timestamp NOT NULL DEFAULT now(), 
    844     convert text, 
     844    mb_convert_kana_option text, 
    845845    PRIMARY KEY (no) 
    846846); 
     
    12301230); 
    12311231 
     1232CREATE TABLE dtb_bkup ( 
     1233    bkup_name   varchar(50), 
     1234    bkup_memo   text, 
     1235    create_date timestamp, 
     1236    PRIMARY KEY (bkup_name) 
     1237); 
     1238 
    12321239CREATE INDEX dtb_customer_mobile_phone_id_key ON dtb_customer (mobile_phone_id); 
    12331240CREATE INDEX dtb_products_class_product_id_key ON dtb_products_class(product_id); 
  • branches/version-2_5-dev/html/install/sql/drop_table.sql

    r18787 r18791  
    9494DROP TABLE dtb_site_control; 
    9595DROP TABLE dtb_trackback; 
    96  
     96DROP TABLE dtb_bkup; 
  • branches/version-2_5-dev/html/install/sql/insert_data.sql

    r18788 r18791  
    371371INSERT INTO dtb_mailtemplate (template_id, subject, header, footer, creator_id, del_flg, create_date, update_date) VALUES (5, 'お問い合わせを受け付けました', '', '', 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    372372 
    373 INSERT INTO dtb_member (member_id, name, department, login_id, password, authority, rank, work, del_flg, creator_id, update_date, create_date, login_date) VALUES (1, 'dummy', NULL, 'dummy', ' ', 0, 0, 1, 1, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL); 
    374 INSERT INTO dtb_member (member_id, name, department, login_id, password, authority, rank, work, del_flg, creator_id, update_date, create_date, login_date) VALUES (2, '管理者', NULL, 'admin', '2c19f4a742398150cecc80b3e76b673a35b8c19c', 0, 1, 1, 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL); 
     373INSERT INTO dtb_member (member_id, name, department, login_id, password, authority, rank, work, del_flg, creator_id, update_date, create_date, login_date) VALUES (1, 'dummy', NULL, 'dummy', 'dummy', 0, 0, 1, 1, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL); 
    375374 
    376375INSERT INTO dtb_module (module_id, module_code, module_name, sub_data, auto_update_flg, del_flg, create_date, update_date) VALUES (0, '0', 'patch', NULL, 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
     
    382381INSERT INTO dtb_pagelayout (page_id, page_name, url, php_dir, tpl_dir, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (3, '商品詳細ページ', 'products/detail.php', ' ', 'user_data/templates/', 'detail', 1, 1, 2, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    383382INSERT INTO dtb_pagelayout (page_id, page_name, url, php_dir, tpl_dir, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (4, 'MYページ', 'mypage/index.php', ' ', '', '', 1, 1, 2, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    384 INSERT INTO dtb_pagelayout (page_id, page_name, url, php_dir, tpl_dir, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (0, 'プレビューデータ', ' ', NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
     383INSERT INTO dtb_pagelayout (page_id, page_name, url, php_dir, tpl_dir, filename, header_chk, footer_chk, edit_flg, author, description, keyword, update_url, create_date, update_date) VALUES (0, 'プレビューデータ', 'preview', NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 
    385384 
    386385INSERT INTO dtb_payment (payment_id, payment_method, charge, rule, deliv_id, rank, note, fix, status, del_flg, creator_id, create_date, update_date, payment_image, upper_rule, charge_flg, rule_min, upper_rule_max, module_id, module_path, memo01, memo02, memo03, memo04, memo05, memo06, memo07, memo08, memo09, memo10) VALUES (1, 'クレジット', 0, NULL, 1, 5, NULL, 2, 1, 0, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 
Note: See TracChangeset for help on using the changeset viewer.