- Timestamp:
- 2007/07/20 15:58:59 (17 years ago)
- 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
-
Property
svn:ignore
set to
-
branches/feature-module-update/html/admin/system/update.php
r12157 r15078 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.