Changeset 11730 for branches/comu/html/admin/system/update.php
- Timestamp:
- 2007/03/11 06:27:25 (19 years ago)
- File:
-
- 1 edited
-
branches/comu/html/admin/system/update.php (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/comu/html/admin/system/update.php
r11729 r11730 7 7 require_once("../require.php"); 8 8 9 // ページ管理クラス9 //¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹ 10 10 class LC_Page { 11 // コンストラクタ11 //¥³¥ó¥¹¥È¥é¥¯¥¿ 12 12 function LC_Page() { 13 // メインテンプレートの指定13 //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê 14 14 $this->tpl_mainpage = 'system/update.tpl'; 15 15 $this->tpl_subnavi = 'system/subnavi.tpl'; 16 16 $this->tpl_mainno = 'system'; 17 17 $this->tpl_subno = 'update'; 18 $this->tpl_subtitle = ' アップデート管理';18 $this->tpl_subtitle = '¥¢¥Ã¥×¥Ç¡¼¥È´ÉÍý'; 19 19 } 20 20 } … … 24 24 $objQuery = new SC_Query(); 25 25 26 // セッションクラス26 // ¥»¥Ã¥·¥ç¥ó¥¯¥é¥¹ 27 27 $objSess = new SC_Session(); 28 // 認証可否の判定28 // ǧ¾Ú²ÄÈݤÎȽÄê 29 29 sfIsSuccess($objSess); 30 30 31 31 switch($_POST['mode']) { 32 // アップデート情報ファイルを取得32 // ¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¥Õ¥¡¥¤¥ë¤ò¼èÆÀ 33 33 case 'edit': 34 // 更新情報を最新にする34 // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 35 35 lfLoadUpdateList(); 36 36 break; 37 // インストール37 // ¥¤¥ó¥¹¥È¡¼¥ë 38 38 case 'install': 39 // 更新情報を最新にする39 // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 40 40 lfLoadUpdateList(); 41 // モジュール郡のインストール41 // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë 42 42 lfInstallModule(); 43 43 break; 44 // アンインストール44 // ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë 45 45 case 'uninstall': 46 // 更新情報を最新にする46 // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 47 47 lfLoadUpdateList(); 48 // モジュール郡のインストール48 // ¥â¥¸¥å¡¼¥ë·´¤Î¥¤¥ó¥¹¥È¡¼¥ë 49 49 lfUninstallModule(); 50 50 break; … … 57 57 $objPage->arrUpdate = $objQuery->select($col, "dtb_update"); 58 58 59 $objView->assignobj($objPage); // 変数をテンプレートにアサインする60 $objView->display(MAIN_FRAME); // テンプレートの出力59 $objView->assignobj($objPage); //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë 60 $objView->display(MAIN_FRAME); //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ 61 61 //------------------------------------------------------------------------------------------------------- 62 // 更新ファイルの取得62 // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ 63 63 function lfCopyUpdateFile($file) { 64 64 global $objPage; … … 66 66 $src_path = sfRmDupSlash(UPDATE_HTTP . $file . ".txt"); 67 67 $dst_path = sfRmDupSlash(UPDATE_PATH . $file); 68 $flg_ok = true; // 処理の成功判定68 $flg_ok = true; // ½èÍý¤ÎÀ®¸ùȽÄê 69 69 70 70 $src_fp = @fopen($src_path, "rb"); 71 71 72 72 if(!$src_fp) { 73 sfErrorHeader(">> " . $src_path . " の取得に失敗しました。");73 sfErrorHeader(">> " . $src_path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 74 74 $flg_ok = false; 75 75 } else { 76 // ファイルをすべて読み込む76 // ¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤ÆÆÉ¤ß¹þ¤à 77 77 $contents = ''; 78 78 while (!feof($src_fp)) { … … 81 81 fclose($src_fp); 82 82 83 // ディレクトリ作成を試みる83 // ¥Ç¥£¥ì¥¯¥È¥êºîÀ®¤ò»î¤ß¤ë 84 84 lfMakeDirectory($dst_path); 85 // ファイル書込み85 // ¥Õ¥¡¥¤¥ë½ñ¹þ¤ß 86 86 $dst_fp = @fopen($dst_path, "wb"); 87 87 if(!$dst_fp) { 88 sfErrorHeader(">> " . $dst_path . " をオープンできません。");88 sfErrorHeader(">> " . $dst_path . "¤ò¥ª¡¼¥×¥ó¤Ç¤¤Þ¤»¤ó¡£"); 89 89 $flg_ok = false; 90 90 } else { … … 95 95 96 96 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>"; 100 100 } 101 101 … … 103 103 } 104 104 105 // すべてのパスのディレクトリを作成する105 // ¤¹¤Ù¤Æ¤Î¥Ñ¥¹¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë 106 106 function lfMakeDirectory($path) { 107 107 $pos = 0; 108 $cnt = 0; // 無限ループ対策109 $len = strlen($path); // 無限ループ対策108 $cnt = 0; // ̵¸Â¥ë¡¼¥×Âкö 109 $len = strlen($path); // ̵¸Â¥ë¡¼¥×Âкö 110 110 111 111 while($cnt <= $len) { 112 112 $pos = strpos($path, "/", $pos); 113 // ここでの判定は、等号3つを使用113 // ¤³¤³¤Ç¤ÎȽÄê¤Ï¡¢Åù¹æ3¤Ä¤ò»ÈÍÑ 114 114 if($pos === false) { 115 // スラッシュが見つからない場合はループから抜ける115 // ¥¹¥é¥Ã¥·¥å¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¥ë¡¼¥×¤«¤éÈ´¤±¤ë 116 116 break; 117 117 } 118 $pos++; // 文字発見位置を一文字進める118 $pos++; // ʸ»úȯ¸«°ÌÃÖ¤ò°ìʸ»ú¿Ê¤á¤ë 119 119 $dir = substr($path, 0, $pos); 120 120 121 // すでに存在するかどうか調べる121 // ¤¹¤Ç¤Ë¸ºß¤¹¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë 122 122 if(!file_exists($dir)) { 123 123 mkdir($dir); 124 124 } 125 $cnt++; // 無限ループ対策126 } 127 } 128 129 // 更新情報を最新にする125 $cnt++; // ̵¸Â¥ë¡¼¥×Âкö 126 } 127 } 128 129 // ¹¹¿·¾ðÊó¤òºÇ¿·¤Ë¤¹¤ë 130 130 function lfLoadUpdateList() { 131 131 $objQuery = new SC_Query(); … … 134 134 135 135 if(!$fp) { 136 sfErrorHeader(">> " . $path . " の取得に失敗しました。");136 sfErrorHeader(">> " . $path . "¤Î¼èÆÀ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"); 137 137 } else { 138 138 while (!feof($fp)) { … … 143 143 } 144 144 145 // カラム数が正常であった場合のみ145 // ¥«¥é¥à¿ô¤¬Àµ¾ï¤Ç¤¢¤Ã¤¿¾ì¹ç¤Î¤ß 146 146 if(count($arrCSV) == UPDATE_CSV_COL_MAX) { 147 // 取得したアップデート情報をDBに書き込む147 // ¼èÆÀ¤·¤¿¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¤òDB¤Ë½ñ¤¹þ¤à 148 148 $sqlval['module_id'] = $arrCSV[0]; 149 149 $sqlval['module_name'] = $arrCSV[1]; … … 158 158 $sqlval['update_date'] = "now()"; 159 159 $sqlval['release_date'] = $arrCSV[12]; 160 // 既存レコードのチェック160 // ´û¸¥ì¥³¡¼¥É¤Î¥Á¥§¥Ã¥¯ 161 161 $cnt = $objQuery->count("dtb_update", "module_id = ?", array($sqlval['module_id'])); 162 162 if($cnt > 0) { 163 // すでに取得されている場合は更新する。163 // ¤¹¤Ç¤Ë¼èÆÀ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¹¹¿·¤¹¤ë¡£ 164 164 $objQuery->update("dtb_update", $sqlval, "module_id = ?", array($sqlval['module_id'])); 165 165 } else { 166 // 新規レコードの追加166 // ¿·µ¬¥ì¥³¡¼¥É¤ÎÄɲà 167 167 $sqlval['create_date'] = "now()"; 168 168 $objQuery->insert("dtb_update", $sqlval); … … 174 174 } 175 175 176 // インストール処理176 // ¥¤¥ó¥¹¥È¡¼¥ë½èÍý 177 177 function lfInstallModule() { 178 178 global $objPage; … … 180 180 $objQuery = new SC_Query(); 181 181 $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; // ½èÍý¤ÎÀ®¸ùȽÄê 183 183 184 184 if(count($arrRet) > 0) { … … 189 189 $arrFiles[] = $arrRet[0]['extern_php']; 190 190 foreach($arrFiles as $val) { 191 // 更新ファイルの取得191 // ¹¹¿·¥Õ¥¡¥¤¥ë¤Î¼èÆÀ 192 192 $ret=lfCopyUpdateFile($val); 193 193 if(!$ret) { … … 196 196 } 197 197 } else { 198 sfErrorHeader(">> 対象の機能は、配布を終了しております。");198 sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 199 199 $flg_ok = false; 200 200 } 201 201 202 // 必要なSQL文の実行202 // ɬÍפÊSQLʸ¤Î¼Â¹Ô 203 203 if($arrRet[0]['install_sql'] != "") { 204 // SQL 文実行、パラーメータなし、エラー無視204 // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 205 205 $arrInstallSql = split(";",$arrRet[0]['install_sql']); 206 206 foreach($arrInstallSql as $key => $val){ … … 210 210 } 211 211 if(DB::isError($ret)) { 212 // エラー文を取得する212 // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 213 213 ereg("\[(.*)\]", $ret->userinfo, $arrKey); 214 $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>";214 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 215 215 $objPage->update_mess.= $arrKey[0] . "<br>"; 216 216 $flg_ok = false; 217 217 } else { 218 $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>";218 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 219 219 } 220 220 } … … 227 227 } 228 228 229 // アンインストール処理229 // ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë½èÍý 230 230 function lfUninstallModule() { 231 231 global $objPage; … … 233 233 $objQuery = new SC_Query(); 234 234 $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; // ½èÍý¤ÎÀ®¸ùȽÄê 236 236 237 237 if(count($arrRet) > 0) { … … 244 244 $path = DATA_PATH . $val; 245 245 if(file_exists($path)) { 246 // ファイルを削除する246 // ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë 247 247 if(unlink($path)) { 248 $objPage->update_mess.= ">> " . $path . " :削除成功<br>";248 $objPage->update_mess.= ">> " . $path . "¡§ºï½üÀ®¸ù<br>"; 249 249 } else { 250 $objPage->update_mess.= ">> " . $path . " :削除失敗<br>";250 $objPage->update_mess.= ">> " . $path . "¡§ºï½ü¼ºÇÔ<br>"; 251 251 } 252 252 } 253 253 } 254 254 255 // 必要なSQL文の実行255 // ɬÍפÊSQLʸ¤Î¼Â¹Ô 256 256 if($arrRet[0]['uninstall_sql'] != "") { 257 // SQL 文実行、パラーメータなし、エラー無視257 // SQLʸ¼Â¹Ô¡¢¥Ñ¥é¡¼¥á¡¼¥¿¤Ê¤·¡¢¥¨¥é¡¼Ìµ»ë 258 258 $ret = $objQuery->query($arrRet[0]['uninstall_sql'],"",true); 259 259 if(DB::isError($ret)) { 260 // エラー文を取得する260 // ¥¨¥é¡¼Ê¸¤ò¼èÆÀ¤¹¤ë 261 261 ereg("\[(.*)\]", $ret->userinfo, $arrKey); 262 $objPage->update_mess.=">> テーブル構成の変更に失敗しました。<br>";262 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£<br>"; 263 263 $objPage->update_mess.= $arrKey[0] . "<br>"; 264 264 $flg_ok = false; 265 265 } else { 266 $objPage->update_mess.=">> テーブル構成の変更を行いました。<br>";266 $objPage->update_mess.=">> ¥Æ¡¼¥Ö¥ë¹½À®¤ÎÊѹ¹¤ò¹Ô¤¤¤Þ¤·¤¿¡£<br>"; 267 267 } 268 268 } 269 269 } else { 270 sfErrorHeader(">> 対象の機能は、配布を終了しております。");270 sfErrorHeader(">> Âоݤε¡Ç½¤Ï¡¢ÇÛÉÛ¤ò½ªÎ»¤·¤Æ¤ª¤ê¤Þ¤¹¡£"); 271 271 } 272 272 273 273 if($flg_ok) { 274 // バージョン情報を削除する。274 // ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òºï½ü¤¹¤ë¡£ 275 275 $sqlval['now_version'] = ""; 276 276 $sqlval['update_date'] = "now()";
Note: See TracChangeset
for help on using the changeset viewer.
