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/update.php

    r12157 r15078  
    77require_once("../require.php"); 
    88 
    9 //¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹ 
     9//ページ管理クラス 
    1010class LC_Page { 
    11     //¥³¥ó¥¹¥È¥é¥¯¥¿ 
     11    //コンストラクタ 
    1212    function LC_Page() { 
    13         //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê 
     13        //メインテンプレートの指定 
    1414        $this->tpl_mainpage = 'system/update.tpl'; 
    1515        $this->tpl_subnavi = 'system/subnavi.tpl'; 
    1616        $this->tpl_mainno = 'system';        
    1717        $this->tpl_subno = 'update'; 
    18         $this->tpl_subtitle = '¥¢¥Ã¥×¥Ç¡¼¥È´ÉÍý'; 
     18        $this->tpl_subtitle = 'アップデート管理'; 
    1919    } 
    2020} 
     
    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$objPage->arrUpdate = $objQuery->select($col, "dtb_update"); 
    5858 
    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(UPDATE_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(); 
     
    134134     
    135135    if(!$fp) { 
    136         sfErrorHeader(">> " . $path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 
     136        sfErrorHeader(">> " . $path . "の取得に失敗しました。"); 
    137137    } else { 
    138138        while (!feof($fp)) { 
     
    143143            } 
    144144                         
    145             // ¥«¥é¥à¿ô¤¬Àµ¾ï¤Ç¤¢¤Ã¤¿¾ì¹ç¤Î¤ß 
     145            // カラム数が正常であった場合のみ 
    146146            if(count($arrCSV) == UPDATE_CSV_COL_MAX) { 
    147                 // ¼èÆÀ¤·¤¿¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¤òDB¤Ë½ñ¤­¹þ¤à 
     147                // 取得したアップデート情報をDBに書き込む 
    148148                $sqlval['module_id'] = $arrCSV[0]; 
    149149                $sqlval['module_name'] = $arrCSV[1]; 
     
    158158                $sqlval['update_date'] = "now()"; 
    159159                $sqlval['release_date'] = $arrCSV[12]; 
    160                 // ´û¸¥ì¥³¡¼¥É¤Î¥Á¥§¥Ã¥¯ 
     160                // 既存レコードのチェック 
    161161                $cnt = $objQuery->count("dtb_update", "module_id = ?", array($sqlval['module_id'])); 
    162162                if($cnt > 0) { 
    163                     // ¤¹¤Ç¤Ë¼èÆÀ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¹¹¿·¤¹¤ë¡£  
     163                    // すでに取得されている場合は更新する。    
    164164                    $objQuery->update("dtb_update", $sqlval, "module_id = ?", array($sqlval['module_id'])); 
    165165                } else { 
    166                     // ¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲà
     166                    // 新規レコードの追加 
    167167                    $sqlval['create_date'] = "now()"; 
    168168                    $objQuery->insert("dtb_update", $sqlval); 
     
    174174} 
    175175 
    176 // ¥¤¥ó¥¹¥È¡¼¥ë½èÍý 
     176// インストール処理 
    177177function lfInstallModule() { 
    178178    global $objPage; 
     
    180180    $objQuery = new SC_Query(); 
    181181    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, latest_version", "dtb_update", "module_id = ?", array($_POST['module_id'])); 
    182     $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 
     182    $flg_ok = true; // 処理の成功判定 
    183183     
    184184    if(count($arrRet) > 0) { 
     
    189189        $arrFiles[] = $arrRet[0]['extern_php']; 
    190190        foreach($arrFiles as $val) { 
    191             // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ 
     191            // 更新ファイルの取得 
    192192            $ret=lfCopyUpdateFile($val); 
    193193            if(!$ret) { 
     
    196196        } 
    197197    } else { 
    198         sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 
     198        sfErrorHeader(">> 対象の機能は、配布を終了しております。"); 
    199199        $flg_ok = false; 
    200200    } 
    201201     
    202     // ɬÍפÊSQLʸ¤Î¼Â¹Ô 
     202    // 必要なSQL文の実行 
    203203    if($arrRet[0]['install_sql'] != "") { 
    204         // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 
     204        // SQL文実行、パラーメータなし、エラー無視 
    205205        $arrInstallSql = split(";",$arrRet[0]['install_sql']); 
    206206        foreach($arrInstallSql as $key => $val){ 
     
    210210        } 
    211211        if(DB::isError($ret)) { 
    212             // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 
     212            // エラー文を取得する 
    213213            ereg("\[(.*)\]", $ret->userinfo, $arrKey); 
    214             $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 
     214            $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>"; 
    215215            $objPage->update_mess.= $arrKey[0] . "<br>"; 
    216216            $flg_ok = false; 
    217217        } else { 
    218             $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 
     218            $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>"; 
    219219        } 
    220220    } 
     
    227227} 
    228228 
    229 // ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë½èÍý 
     229// アンインストール処理 
    230230function lfUninstallModule() { 
    231231    global $objPage; 
     
    233233    $objQuery = new SC_Query(); 
    234234    $arrRet = $objQuery->select("module_id, extern_php, other_files, install_sql, uninstall_sql, latest_version", "dtb_update", "module_id = ?", array($_POST['module_id'])); 
    235     $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 
     235    $flg_ok = true; // 処理の成功判定 
    236236     
    237237    if(count($arrRet) > 0) { 
     
    244244            $path = DATA_PATH . $val; 
    245245            if(file_exists($path)) { 
    246                 // ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë 
     246                // ファイルを削除する 
    247247                if(unlink($path)) { 
    248                     $objPage->update_mess.= ">> " . $path . "¡§ºï½üÀ®¸ù<br>"; 
     248                    $objPage->update_mess.= ">> " . $path . ":削除成功<br>"; 
    249249                } else { 
    250                     $objPage->update_mess.= ">> " . $path . "¡§ºï½ü¼ºÇÔ<br>"; 
     250                    $objPage->update_mess.= ">> " . $path . ":削除失敗<br>"; 
    251251                } 
    252252            } 
    253253        } 
    254254         
    255         // ɬÍפÊSQLʸ¤Î¼Â¹Ô 
     255        // 必要なSQL文の実行 
    256256        if($arrRet[0]['uninstall_sql'] != "") { 
    257             // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 
     257            // SQL文実行、パラーメータなし、エラー無視 
    258258            $ret = $objQuery->query($arrRet[0]['uninstall_sql'],"",true); 
    259259            if(DB::isError($ret)) { 
    260                 // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 
     260                // エラー文を取得する 
    261261                ereg("\[(.*)\]", $ret->userinfo, $arrKey); 
    262                 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 
     262                $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>"; 
    263263                $objPage->update_mess.= $arrKey[0] . "<br>"; 
    264264                $flg_ok = false; 
    265265            } else { 
    266                 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 
     266                $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>"; 
    267267            } 
    268268        }        
    269269    } else { 
    270         sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 
     270        sfErrorHeader(">> 対象の機能は、配布を終了しております。"); 
    271271    } 
    272272     
    273273    if($flg_ok) { 
    274         // ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òºï½ü¤¹¤ë¡£ 
     274        // バージョン情報を削除する。 
    275275        $sqlval['now_version'] = ""; 
    276276        $sqlval['update_date'] = "now()"; 
Note: See TracChangeset for help on using the changeset viewer.