Ignore:
Timestamp:
2007/07/20 15:58:59 (17 years ago)
Author:
nanasess
Message:

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
Location:
branches/feature-module-update
Files:
1 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update

    • Property svn:ignore set to
      .cache

      .settings

      .projectOptions
  • branches/feature-module-update/html/admin/system/module.php

    r12157 r15078  
    88require_once(DATA_PATH . "module/Request.php"); 
    99 
    10 //¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹ 
     10//ページ管理クラス 
    1111class LC_Page { 
    12     //¥³¥ó¥¹¥È¥é¥¯¥¿ 
     12    //コンストラクタ 
    1313    function LC_Page() { 
    14         //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê 
     14        //メインテンプレートの指定 
    1515        $this->tpl_mainpage = 'system/module.tpl'; 
    1616        $this->tpl_subnavi = 'system/subnavi.tpl'; 
    1717        $this->tpl_mainno = 'system';        
    1818        $this->tpl_subno = 'module'; 
    19         $this->tpl_subtitle = '¥â¥¸¥å¡¼¥ë´ÉÍý'; 
     19        $this->tpl_subtitle = 'モジュール管理'; 
    2020    } 
    2121} 
     
    2424$objQuery = new SC_Query(); 
    2525 
    26 // ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹ 
     26// セッションクラス 
    2727$objSess = new SC_Session(); 
    28 // ǧ¾Ú²ÄÈݤÎȽÄê 
     28// 認証可否の判定 
    2929sfIsSuccess($objSess); 
    3030 
    3131switch($_POST['mode']) { 
    32 // ¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¥Õ¥¡¥¤¥ë¤ò¼èÆÀ 
     32// アップデート情報ファイルを取得 
    3333case 'edit': 
    34     // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 
     34    // 更新情報を最新にする 
    3535    lfLoadUpdateList(); 
    3636    break; 
    37 // ¥¤¥ó¥¹¥È¡¼¥ë 
     37// インストール 
    3838case 'install': 
    39     // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 
     39    // 更新情報を最新にする 
    4040    lfLoadUpdateList(); 
    41     // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë 
     41    // モジュール郡のインストール 
    4242    lfInstallModule(); 
    4343    break; 
    44 // ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë 
     44// アンインストール 
    4545case 'uninstall': 
    46     // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 
     46    // 更新情報を最新にする 
    4747    lfLoadUpdateList(); 
    48     // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë    
     48    // モジュール郡のインストール     
    4949    lfUninstallModule(); 
    5050    break; 
     
    5757 
    5858$objPage->arrUpdate = $arrUpdate; 
    59 $objView->assignobj($objPage);      //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë 
    60 $objView->display(MAIN_FRAME);      //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ 
     59$objView->assignobj($objPage);      //変数をテンプレートにアサインする 
     60$objView->display(MAIN_FRAME);      //テンプレートの出力 
    6161//------------------------------------------------------------------------------------------------------- 
    62 // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ 
     62// 更新ファイルの取得 
    6363function lfCopyUpdateFile($file) { 
    6464    global $objPage; 
     
    6666    $src_path = sfRmDupSlash(UPDATE_HTTP . $file . ".txt"); 
    6767    $dst_path = sfRmDupSlash(MODULE_PATH . $file); 
    68     $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 
     68    $flg_ok = true; // 処理の成功判定 
    6969     
    7070    $src_fp = @fopen($src_path, "rb"); 
    7171     
    7272    if(!$src_fp) { 
    73         sfErrorHeader(">> " . $src_path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 
     73        sfErrorHeader(">> " . $src_path . "の取得に失敗しました。"); 
    7474        $flg_ok = false; 
    7575    } else { 
    76         // ¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤ÆÆɤ߹þ¤à 
     76        // ファイルをすべて読み込む 
    7777        $contents = ''; 
    7878        while (!feof($src_fp)) { 
     
    8181        fclose($src_fp); 
    8282         
    83         // ¥Ç¥£¥ì¥¯¥È¥êºîÀ®¤ò»î¤ß¤ë 
     83        // ディレクトリ作成を試みる 
    8484        lfMakeDirectory($dst_path); 
    85         // ¥Õ¥¡¥¤¥ë½ñ¹þ¤ß        
     85        // ファイル書込み       
    8686        $dst_fp = @fopen($dst_path, "wb"); 
    8787        if(!$dst_fp) { 
    88             sfErrorHeader(">> " . $dst_path . "¤ò¥ª¡¼¥×¥ó¤Ç¤­¤Þ¤»¤ó¡£"); 
     88            sfErrorHeader(">> " . $dst_path . "をオープンできません。"); 
    8989            $flg_ok = false; 
    9090        } else { 
     
    9595     
    9696    if($flg_ok) { 
    97         $objPage->update_mess.= ">> " . $dst_path . "¡§¥³¥Ô¡¼À®¸ù<br>"; 
    98     } else { 
    99         $objPage->update_mess.= ">> " . $dst_path . "¡§¥³¥Ô¡¼¼ºÇÔ<br>";      
     97        $objPage->update_mess.= ">> " . $dst_path . ":コピー成功<br>"; 
     98    } else { 
     99        $objPage->update_mess.= ">> " . $dst_path . ":コピー失敗<br>";        
    100100    } 
    101101     
     
    103103} 
    104104 
    105 // ¤¹¤Ù¤Æ¤Î¥Ñ¥¹¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë 
     105// すべてのパスのディレクトリを作成する 
    106106function lfMakeDirectory($path) { 
    107107    $pos = 0; 
    108     $cnt = 0;               // ̵¸Â¥ë¡¼¥×Âкö 
    109     $len = strlen($path);   // ̵¸Â¥ë¡¼¥×Âкö 
     108    $cnt = 0;               // 無限ループ対策 
     109    $len = strlen($path);   // 無限ループ対策 
    110110     
    111111    while($cnt <= $len) { 
    112112        $pos = strpos($path, "/", $pos); 
    113         // ¤³¤³¤Ç¤ÎȽÄê¤Ï¡¢Åù¹æ3¤Ä¤ò»ÈÍÑ 
     113        // ここでの判定は、等号3つを使用 
    114114        if($pos === false) { 
    115             // ¥¹¥é¥Ã¥·¥å¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¥ë¡¼¥×¤«¤éÈ´¤±¤ë 
     115            // スラッシュが見つからない場合はループから抜ける 
    116116            break; 
    117117        } 
    118         $pos++; // ʸ»úȯ¸«°ÌÃÖ¤ò°ìʸ»ú¿Ê¤á¤ë 
     118        $pos++; // 文字発見位置を一文字進める 
    119119        $dir = substr($path, 0, $pos); 
    120120         
    121         // ¤¹¤Ç¤Ë¸ºß¤¹¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë 
     121        // すでに存在するかどうか調べる 
    122122        if(!file_exists($dir)) { 
    123123            mkdir($dir); 
    124124        } 
    125         $cnt++; // ̵¸Â¥ë¡¼¥×Âкö 
    126     } 
    127 } 
    128  
    129 // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 
     125        $cnt++; // 無限ループ対策 
     126    } 
     127} 
     128 
     129// 更新情報を最新にする 
    130130function lfLoadUpdateList() { 
    131131    $objQuery = new SC_Query(); 
     
    136136         
    137137    if(!$fp) { 
    138         sfErrorHeader(">> " . $path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 
     138        sfErrorHeader(">> " . $path . "の取得に失敗しました。"); 
    139139    } else { 
    140140         
     
    142142            $arrCSV = fgetcsv($fp, UPDATE_CSV_LINE_MAX); 
    143143             
    144             // ¥¨¥¹¥±¡¼¥×½èÍý¤ÎÃÖ´¹ 
     144            // エスケープ処理の置換 
    145145            foreach($arrCSV as $key => $val){ 
    146146                $arrCSV[$key] = str_replace('\"', '"', $val); 
     
    151151            } 
    152152             
    153             // ¥«¥é¥à¿ô¤¬Àµ¾ï¤Ç¤¢¤Ã¤¿¾ì¹ç¤Î¤ß 
     153            // カラム数が正常であった場合のみ 
    154154            if(count($arrCSV) == MODULE_CSV_COL_MAX) { 
    155                     // insert¤¹¤ëmodule_id¤òÇÛÎó¤Ë³ÊǼ 
     155                    // insertするmodule_idを配列に格納 
    156156                    $arrInsID[] = $arrCSV[0]; 
    157157                 
    158                     // ¼èÆÀ¤·¤¿¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¤òDB¤Ë½ñ¤­¹þ¤à 
     158                    // 取得したアップデート情報をDBに書き込む 
    159159                    $sqlval['module_id'] = $arrCSV[0]; 
    160160                    $sqlval['module_name'] = $arrCSV[1]; 
     
    171171                    $sqlval['module_x'] = $arrCSV[14]; 
    172172                    $sqlval['module_y'] = $arrCSV[15]; 
    173                     // ¥â¥¸¥å¡¼¥ë¤¬Âбþ¤·¤Æ¤¤¤ëËÜÂΤΥС¼¥¸¥ç¥ó 
     173                    // モジュールが対応している本体のバージョン 
    174174                    $sqlval['eccube_version'] = $arrCSV[13];                     
    175                     // ´û¸¥ì¥³¡¼¥É¤Î¥Á¥§¥Ã¥¯ 
     175                    // 既存レコードのチェック 
    176176                    $cnt = $objQuery->count("dtb_module", "module_id = ?", array($sqlval['module_id'])); 
    177177                    if($cnt > 0) { 
    178                         // ¤¹¤Ç¤Ë¼èÆÀ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¹¹¿·¤¹¤ë¡£  
     178                        // すでに取得されている場合は更新する。    
    179179                        $objQuery->update("dtb_module", $sqlval, "module_id = ?", array($sqlval['module_id'])); 
    180180                    } else { 
    181                         // ¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲà
     181                        // 新規レコードの追加 
    182182                        $sqlval['create_date'] = "now()"; 
    183183                        $objQuery->insert("dtb_module", $sqlval); 
    184184                    } 
    185185            } else { 
    186                 sfErrorHeader(">> ¥«¥é¥à¿ô¤¬°ìÃפ·¤Þ¤»¤ó¡£¡§".count($arrCSV)); 
    187             } 
    188         } 
    189          
    190         // ÉÔÍפʥǡ¼¥¿¤òºï½ü 
     186                sfErrorHeader(">> カラム数が一致しません。:".count($arrCSV)); 
     187            } 
     188        } 
     189         
     190        // 不要なデータを削除 
    191191        if(count($arrInsID) > 0){ 
    192192            $del_sql = "DELETE FROM dtb_module WHERE module_id NOT IN (?"; 
     
    204204} 
    205205 
    206 // ¥¤¥ó¥¹¥È¡¼¥ë½èÍý 
     206// インストール処理 
    207207function lfInstallModule() { 
    208208    global $objPage; 
     
    210210    $objQuery = new SC_Query(); 
    211211    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, latest_version", "dtb_module", "module_id = ?", array($_POST['module_id'])); 
    212     $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 
     212    $flg_ok = true; // 処理の成功判定 
    213213     
    214214    if(count($arrRet) > 0) { 
     
    219219        $arrFiles[] = $arrRet[0]['extern_php']; 
    220220        foreach($arrFiles as $val) { 
    221             // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ 
     221            // 更新ファイルの取得 
    222222            $ret=lfCopyUpdateFile($val); 
    223223            if(!$ret) { 
     
    226226        } 
    227227    } else { 
    228         sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 
     228        sfErrorHeader(">> 対象の機能は、配布を終了しております。"); 
    229229        $flg_ok = false; 
    230230    } 
    231231     
    232     // ɬÍפÊSQLʸ¤Î¼Â¹Ô 
     232    // 必要なSQL文の実行 
    233233    if($arrRet[0]['install_sql'] != "") { 
    234         // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 
     234        // SQL文実行、パラーメータなし、エラー無視 
    235235        $arrInstallSql = split(";",$arrRet[0]['install_sql']); 
    236236        foreach($arrInstallSql as $key => $val){ 
     
    240240        } 
    241241        if(DB::isError($ret)) { 
    242             // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 
     242            // エラー文を取得する 
    243243            ereg("\[(.*)\]", $ret->userinfo, $arrKey); 
    244             $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 
     244            $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>"; 
    245245            $objPage->update_mess.= $arrKey[0] . "<br>"; 
    246246            $flg_ok = false; 
    247247        } else { 
    248             $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 
     248            $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>"; 
    249249        } 
    250250    } 
     
    258258} 
    259259 
    260 // ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë½èÍý 
     260// アンインストール処理 
    261261function lfUninstallModule() { 
    262262    global $objPage; 
     
    264264    $objQuery = new SC_Query(); 
    265265    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, uninstall_sql, latest_version", "dtb_module", "module_id = ?", array($_POST['module_id'])); 
    266     $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 
     266    $flg_ok = true; // 処理の成功判定 
    267267     
    268268    if(count($arrRet) > 0) { 
    269269         
    270         // ¥â¥¸¥å¡¼¥ë¤òºï½ü¤¹¤ë 
     270        // モジュールを削除する 
    271271        $objQuery->query("UPDATE dtb_payment SET del_flg = 1 WHERE module_id = ?", array($arrRet[0]['module_id'])); 
    272272 
     
    279279        foreach($arrFiles as $val) { 
    280280            $path = MODULE_PATH . $val; 
    281             // ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë 
     281            // ファイルを削除する 
    282282            if(file_exists($path) && unlink($path)) { 
    283                 $objPage->update_mess.= ">> " . $path . "¡§ºï½üÀ®¸ù<br>"; 
     283                $objPage->update_mess.= ">> " . $path . ":削除成功<br>"; 
    284284            } else { 
    285                 $objPage->update_mess.= ">> " . $path . "¡§ºï½ü¼ºÇÔ<br>"; 
    286             } 
    287         } 
    288  
    289         // ɬÍפÊSQLʸ¤Î¼Â¹Ô 
     285                $objPage->update_mess.= ">> " . $path . ":削除失敗<br>"; 
     286            } 
     287        } 
     288 
     289        // 必要なSQL文の実行 
    290290        if($arrRet[0]['uninstall_sql'] != "") { 
    291             // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 
     291            // SQL文実行、パラーメータなし、エラー無視 
    292292            $ret = $objQuery->query($arrRet[0]['uninstall_sql'],"",true); 
    293293            if(DB::isError($ret)) { 
    294                 // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 
     294                // エラー文を取得する 
    295295                ereg("\[(.*)\]", $ret->userinfo, $arrKey); 
    296                 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 
     296                $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>"; 
    297297                $objPage->update_mess.= $arrKey[0] . "<br>"; 
    298298                $flg_ok = false; 
    299299            } else { 
    300                 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 
    301             } 
    302         } 
    303     } else { 
    304         sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 
     300                $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>"; 
     301            } 
     302        } 
     303    } else { 
     304        sfErrorHeader(">> 対象の機能は、配布を終了しております。"); 
    305305    } 
    306306 
    307307    if($flg_ok) { 
    308         // ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òºï½ü¤¹¤ë¡£ 
     308        // バージョン情報を削除する。 
    309309        $sqlval['now_version'] = ""; 
    310310        $sqlval['update_date'] = "now()"; 
Note: See TracChangeset for help on using the changeset viewer.