| 1 | <?php |
|---|
| 2 | $now_dir = realpath(dirname(__FILE__)); |
|---|
| 3 | require_once($now_dir . "/../../../data/lib/slib.php"); |
|---|
| 4 | require_once($now_dir . "/../../../data/class/SC_View.php"); |
|---|
| 5 | require_once($now_dir . "/../../../data/class/SC_Query.php"); |
|---|
| 6 | require_once($now_dir . "/../../../data/class/SC_CheckError.php"); |
|---|
| 7 | require_once($now_dir . "/../../../data/class/SC_FormParam.php"); |
|---|
| 8 | require_once($now_dir . "/../../../data/class/SC_Customer.php"); |
|---|
| 9 | require_once($now_dir . "/../../../data/class/SC_Cookie.php"); |
|---|
| 10 | //require_once($now_dir . "/../../../data/module/Archive/Tar.php"); |
|---|
| 11 | |
|---|
| 12 | //¥Ú¡¼¥¸´ÉÍý¥¯¥é¥¹ |
|---|
| 13 | class LC_Page { |
|---|
| 14 | //¥³¥ó¥¹¥È¥é¥¯¥¿ |
|---|
| 15 | function LC_Page() { |
|---|
| 16 | //¥á¥¤¥ó¥Æ¥ó¥×¥ì¡¼¥È¤Î»ØÄê |
|---|
| 17 | $this->tpl_mainpage = 'system/update.tpl'; |
|---|
| 18 | $this->tpl_subnavi = 'system/subnavi.tpl'; |
|---|
| 19 | $this->tpl_mainno = 'system'; |
|---|
| 20 | $this->tpl_subno = 'update'; |
|---|
| 21 | $this->tpl_subtitle = '¥¢¥Ã¥×¥Ç¡¼¥È´ÉÍý'; |
|---|
| 22 | } |
|---|
| 23 | } |
|---|
| 24 | |
|---|
| 25 | $objPage = new LC_Page(); |
|---|
| 26 | $objView = new SC_AdminView(); |
|---|
| 27 | $objQuery = new SC_Query(); |
|---|
| 28 | |
|---|
| 29 | /* |
|---|
| 30 | //¥¢¥Ã¥×¥Ç¡¼¥È¾ðÊó¤ò¼èÆÀ |
|---|
| 31 | $fp = fopen("csv.php", "r"); |
|---|
| 32 | $i = 0; |
|---|
| 33 | $j = 0; |
|---|
| 34 | $k = 0; |
|---|
| 35 | //¥Õ¥¡¥¤¥ë¼èÆÀÀ®¸ù |
|---|
| 36 | if($fp) { |
|---|
| 37 | //CSV¾ðÊó¤òÇÛÎó¤Ë³ÊǼ |
|---|
| 38 | while(!feof($fp)) { |
|---|
| 39 | $line = fgetcsv($fp, 40000); |
|---|
| 40 | $arrRet[$i]['update_id'] = $line[0]; //¥¢¥Ã¥×¥Ç¡¼¥Èµ¡Ç½ID |
|---|
| 41 | $arrRet[$i]['file_name'] = $line[1]; //¥Õ¥¡¥¤¥ë̾ |
|---|
| 42 | $arrRet[$i]['func_name'] = $line[2]; //µ¡Ç½Ì¾ |
|---|
| 43 | $arrRet[$i]['func_explain'] = $line[3]; //µ¡Ç½ÀâÌÀ |
|---|
| 44 | $arrRet[$i]['version'] = $line[4]; //¥Ð¡¼¥¸¥ç¥ó |
|---|
| 45 | $arrRet[$i]['update_date'] = $line[5]; //ºÇ½ª¹¹¿·Æü»þ |
|---|
| 46 | if($i >= 1) { |
|---|
| 47 | $arrval = array($arrRet[$i]['update_id'], $arrRet[$i]['version']); |
|---|
| 48 | //´û¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëµ¡Ç½¤«¤É¤¦¤«¥Á¥§¥Ã¥¯ |
|---|
| 49 | $arrGet = $objQuery->select("*", "dtb_update_list", "update_id = ? AND version = ? ", $arrval); |
|---|
| 50 | //¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß |
|---|
| 51 | if(count($arrGet) > 0) { |
|---|
| 52 | $arrInstalled[$k] = $arrGet[0]; |
|---|
| 53 | $k++; |
|---|
| 54 | } else { |
|---|
| 55 | $arrUpList[$j] = $arrRet[$i]; |
|---|
| 56 | $j++; |
|---|
| 57 | } |
|---|
| 58 | } |
|---|
| 59 | $i++; |
|---|
| 60 | } |
|---|
| 61 | //¥¤¥ó¥¹¥È¡¼¥ëºÑ¤ß |
|---|
| 62 | $objPage->arrInstalled = $arrInstalled; |
|---|
| 63 | //¥¢¥Ã¥×¥Ç¡¼¥È²Äǽµ¡Ç½°ìÍ÷ |
|---|
| 64 | $objPage->arrUpList = $arrUpList; |
|---|
| 65 | } |
|---|
| 66 | |
|---|
| 67 | //³Îǧ²èÌÌ |
|---|
| 68 | if($_POST['mode'] == 'confirm' && sfIsInt($_POST['update_id'])) { |
|---|
| 69 | //¥Æ¥ó¥×¥ì¡¼¥È»ØÄê |
|---|
| 70 | $objPage->tpl_mainpage = "system/update_confirm.tpl"; |
|---|
| 71 | //¥¢¥Ã¥×¥Ç¡¼¥Èµ¡Ç½ID |
|---|
| 72 | $update_id = $_POST['update_id']; |
|---|
| 73 | //¥Õ¥¡¥¤¥ë̾ |
|---|
| 74 | $comp_file = trim($arrRet[$update_id]['file_name']); |
|---|
| 75 | //FTPÀܳ |
|---|
| 76 | $con = ftp_connect("localhost"); |
|---|
| 77 | if($con != false) { |
|---|
| 78 | //FTP¥í¥°¥¤¥óÀ®¸ù |
|---|
| 79 | if(ftp_login($con, "osuser", "password")) { |
|---|
| 80 | //¥í¡¼¥«¥ë¤ËÊݸ¤¹¤ë¥Ñ¥¹ |
|---|
| 81 | $objPage->local_save_dir = ROOT_DIR . "data/install/"; |
|---|
| 82 | //¥í¡¼¥«¥ë¤ËÊݸ¤¹¤ë¥Õ¥¡¥¤¥ë̾¤ò¥Ñ¥¹»ØÄê |
|---|
| 83 | $local_file = $objPage->local_save_dir . $comp_file; |
|---|
| 84 | //FTP¥À¥¦¥ó¥í¡¼¥ÉÀ®¸ù |
|---|
| 85 | if(ftp_get($con, $local_file, $comp_file, FTP_BINARY)) { |
|---|
| 86 | //FTPÀܳÀÚÃÇ |
|---|
| 87 | ftp_quit($con); |
|---|
| 88 | //¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¡¢¥¤¥ó¥¹¥È¡¼¥ë¥Õ¥©¥ë¥À¤Ë°Ü¹Ô |
|---|
| 89 | $current_dir = getcwd(); |
|---|
| 90 | //¥Ç¥£¥ì¥¯¥È¥ê¤Î°Ü¹Ô |
|---|
| 91 | chdir(ROOT_DIR . "data/install/"); |
|---|
| 92 | //¥¢¡¼¥«¥¤¥Ö´ÉÍý¥¯¥é¥¹ |
|---|
| 93 | $objTar = new Archive_Tar($comp_file); |
|---|
| 94 | //²òÅà¸å¤Î¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ(³ÈÄ¥»Ò¤òºï½ü¤·¤¿¥Õ¥¡¥¤¥ë) |
|---|
| 95 | $extract_file = ereg_replace("\.tar\.gz|\.tar|\.gz|\.tgz", "", $comp_file); |
|---|
| 96 | //¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤òɽ¼¨ |
|---|
| 97 | $arrRet = $objTar->listcontent(); |
|---|
| 98 | foreach($arrRet as $data) { |
|---|
| 99 | //PHP¥Õ¥¡¥¤¥ë¤â¤·¤¯¤Ïtpl¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë |
|---|
| 100 | if(ereg("\.php$|\.tpl$", $data['filename'])) { |
|---|
| 101 | $main_file = ereg_replace($extract_file . "/", "", $data['filename']); |
|---|
| 102 | $arrFile[]['main_file'] = ROOT_DIR . $main_file; |
|---|
| 103 | } |
|---|
| 104 | //sql¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë |
|---|
| 105 | if(ereg("\.sql$", $data['filename'])) { |
|---|
| 106 | //¥Õ¥¡¥¤¥ë̾¤«¤éDB̾¤ò¼èÆÀ¤¹¤ë |
|---|
| 107 | $sql_file = ereg_replace($extract_file . "/", "", $data['filename']); |
|---|
| 108 | $db_name = ereg_replace("\.sql$", "", $sql_file); |
|---|
| 109 | $arrFile[]['sql_file'] = $db_name; |
|---|
| 110 | } |
|---|
| 111 | } |
|---|
| 112 | $objPage->arrFile = $arrFile; |
|---|
| 113 | //°µ½Ì¥Õ¥¡¥¤¥ë¤Îºï½ü |
|---|
| 114 | unlink($comp_file); |
|---|
| 115 | //¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¸µ¤ËÌ᤹ |
|---|
| 116 | chdir($current_dir); |
|---|
| 117 | } else { |
|---|
| 118 | //FTP¥À¥¦¥ó¥í¡¼¥É¥¨¥é¡¼ |
|---|
| 119 | sfDispSiteError(FTP_DOWNLOAD_ERROR); |
|---|
| 120 | } |
|---|
| 121 | } else { |
|---|
| 122 | //FTP¥í¥°¥¤¥ó¥¨¥é¡¼ |
|---|
| 123 | sfDispSiteError(FTP_LOGIN_ERROR); |
|---|
| 124 | } |
|---|
| 125 | } else { |
|---|
| 126 | //FTPÀܳ¥¨¥é¡¼ |
|---|
| 127 | sfDispSiteError(FTP_CONNECT_ERROR); |
|---|
| 128 | } |
|---|
| 129 | } |
|---|
| 130 | |
|---|
| 131 | |
|---|
| 132 | |
|---|
| 133 | //¥¢¥Ã¥×¥Ç¡¼¥Èµ¡Ç½¤Î¥¤¥ó¥¹¥È¡¼¥ë |
|---|
| 134 | if($_POST['mode'] == 'install' && sfIsInt($_POST['update_id'])) { |
|---|
| 135 | //¥¢¥Ã¥×¥Ç¡¼¥Èµ¡Ç½ID |
|---|
| 136 | $update_id = $_POST['update_id']; |
|---|
| 137 | //¥Õ¥¡¥¤¥ë̾ |
|---|
| 138 | $comp_file = trim($arrRet[$update_id]['file_name']); |
|---|
| 139 | //FTPÀܳ |
|---|
| 140 | $con = ftp_connect("localhost"); |
|---|
| 141 | if($con != false) { |
|---|
| 142 | //FTP¥í¥°¥¤¥óÀ®¸ù |
|---|
| 143 | if(ftp_login($con, "osuser", "password")) { |
|---|
| 144 | //¥í¡¼¥«¥ë¤ËÊݸ¤¹¤ë¥Ñ¥¹¤ò»ØÄê |
|---|
| 145 | $objPage->local_save_dir = ROOT_DIR . "data/install/"; |
|---|
| 146 | //¥í¡¼¥«¥ë¤ËÊݸ¤¹¤ë¥Õ¥¡¥¤¥ë̾¤ò¥Ñ¥¹»ØÄê |
|---|
| 147 | $local_file = ROOT_DIR . "data/install/" . $comp_file; |
|---|
| 148 | //FTP¥À¥¦¥ó¥í¡¼¥ÉÀ®¸ù |
|---|
| 149 | if(ftp_get($con, $local_file, $comp_file, FTP_BINARY)) { |
|---|
| 150 | //FTPÀܳÀÚÃÇ |
|---|
| 151 | ftp_quit($con); |
|---|
| 152 | //¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¡¢¥¤¥ó¥¹¥È¡¼¥ë¥Õ¥©¥ë¥À¤Ë°Ü¹Ô |
|---|
| 153 | $current_dir = getcwd(); |
|---|
| 154 | //¥Ç¥£¥ì¥¯¥È¥ê¤Î°Ü¹Ô |
|---|
| 155 | chdir(ROOT_DIR . "data/install/"); |
|---|
| 156 | //¥¢¡¼¥«¥¤¥Ö´ÉÍý¥¯¥é¥¹ |
|---|
| 157 | $objTar = new Archive_Tar($comp_file, true); |
|---|
| 158 | //¥¨¥é¡¼¤Î¾ÜºÙ¤òÊÖ¤¹ |
|---|
| 159 | //$objTar->setErrorHandling(PEAR_ERROR_PRINT); |
|---|
| 160 | //²òÅàÀ®¸ù |
|---|
| 161 | if($objTar->extract("./")) { |
|---|
| 162 | //°µ½Ì¥Õ¥¡¥¤¥ë¤òºï½ü |
|---|
| 163 | unlink($comp_file); |
|---|
| 164 | //²òÅà¸å¤Î¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ(³ÈÄ¥»Ò¤òºï½ü¤·¤¿¥Õ¥¡¥¤¥ë) |
|---|
| 165 | $extract_file = ereg_replace("\.tar\.gz|\.tar|\.gz|\.tgz", "", $comp_file); |
|---|
| 166 | //²òÅà¸å¤Î¿Æ¥Õ¥¡¥¤¥ë¤òÊÑ¿ô¤ËÅϤ¹ |
|---|
| 167 | $extract_top_file = $extract_file; |
|---|
| 168 | //¥¤¥ó¥¹¥È¡¼¥ëÀ®¸ù¤Î¥Õ¥é¥° |
|---|
| 169 | $install_flag = true; |
|---|
| 170 | //²òÅà¥Õ¥¡¥¤¥ë¤Ë¤è¤ê¡¢¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤¹¤ë |
|---|
| 171 | $flag = lfSetExtractFile($extract_file, $extract_top_file, $install_flag); |
|---|
| 172 | //¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤¤¬À®¸ù |
|---|
| 173 | if($flag) { |
|---|
| 174 | //³ÊǼ¤¹¤ë¥¡¼¤ÈÃͤò»ØÄê |
|---|
| 175 | $sqlval['update_id'] = $update_id; |
|---|
| 176 | $sqlval['func_name'] = $arrRet[$update_id]['func_name']; |
|---|
| 177 | $sqlval['func_explain'] = $arrRet[$update_id]['func_explain']; |
|---|
| 178 | $sqlval['version'] = $arrRet[$update_id]['version']; |
|---|
| 179 | $sqlval['update_date'] = 'now()'; |
|---|
| 180 | |
|---|
| 181 | //¥¢¥Ã¥×¥Ç¡¼¥È´ÉÍý¥Æ¡¼¥Ö¥ë¤Ë¾ðÊó¤ò³ÊǼ |
|---|
| 182 | $objQuery->insert("dtb_update_list", $sqlval); |
|---|
| 183 | //¥Õ¥¡¥¤¥ë¤Îºï½ü |
|---|
| 184 | system("rm -rf ". $extract_file); |
|---|
| 185 | //¾ðÊó¤ò¹¹¿· |
|---|
| 186 | sfReload(); |
|---|
| 187 | } else { |
|---|
| 188 | sfDispSiteError(WRITE_FILE_ERROR); |
|---|
| 189 | } |
|---|
| 190 | |
|---|
| 191 | } else { |
|---|
| 192 | //¥Õ¥¡¥¤¥ë²òÅ२¥é¡¼ |
|---|
| 193 | sfDispSiteError(EXTRACT_ERROR); |
|---|
| 194 | } |
|---|
| 195 | //¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¸µ¤ËÌ᤹ |
|---|
| 196 | chdir($current_dir); |
|---|
| 197 | |
|---|
| 198 | } else { |
|---|
| 199 | //FTP¥À¥¦¥ó¥í¡¼¥É¥¨¥é¡¼ |
|---|
| 200 | sfDispSiteError(FTP_DOWNLOAD_ERROR); |
|---|
| 201 | } |
|---|
| 202 | } else { |
|---|
| 203 | //FTP¥í¥°¥¤¥ó¥¨¥é¡¼ |
|---|
| 204 | sfDispSiteError(FTP_LOGIN_ERROR); |
|---|
| 205 | } |
|---|
| 206 | } else { |
|---|
| 207 | //FTPÀܳ¥¨¥é¡¼ |
|---|
| 208 | sfDispSiteError(FTP_CONNECT_ERROR); |
|---|
| 209 | } |
|---|
| 210 | } |
|---|
| 211 | */ |
|---|
| 212 | $objView->assignobj($objPage); //ÊÑ¿ô¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥¢¥µ¥¤¥ó¤¹¤ë |
|---|
| 213 | $objView->display(MAIN_FRAME); //¥Æ¥ó¥×¥ì¡¼¥È¤Î½ÐÎÏ |
|---|
| 214 | |
|---|
| 215 | //------------------------------------------------------------------------------------------------------- |
|---|
| 216 | |
|---|
| 217 | //²òÅà¥Õ¥¡¥¤¥ë¤Ë¤è¤ê¡¢¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤¹¤ë |
|---|
| 218 | function lfSetExtractFile($extract_file, $extract_top_file, $install_success) { |
|---|
| 219 | //¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð |
|---|
| 220 | if(!is_dir($extract_file)) { |
|---|
| 221 | return false; |
|---|
| 222 | } |
|---|
| 223 | |
|---|
| 224 | //¥Ç¥£¥ì¥¯¥È¥ê¤ò³«¤¯ |
|---|
| 225 | if($handle = opendir($extract_file)) { |
|---|
| 226 | //¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¿È¤òÆÉ¤ß¹þ¤à |
|---|
| 227 | while($file = readdir($handle)) { |
|---|
| 228 | //'.'¤È'..'¥Õ¥¡¥¤¥ë¤Ï½ü³° |
|---|
| 229 | if($file != "." && $file != "..") { |
|---|
| 230 | //¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë |
|---|
| 231 | if(is_dir($extract_file . "/" . $file)) { |
|---|
| 232 | //ºÆµ¢¸Æ¤Ó½Ð¤· |
|---|
| 233 | lfSetExtractFile($extract_file . "/" . $file, $extract_top_file, $install_success); |
|---|
| 234 | } else { |
|---|
| 235 | //¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë |
|---|
| 236 | if(is_file($extract_file . "/" . $file)) { |
|---|
| 237 | //sql¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë |
|---|
| 238 | if(ereg("\.sql$", $file)) { |
|---|
| 239 | //¥Õ¥¡¥¤¥ë¤ò¼è¤êÆþ¤ì¤ë |
|---|
| 240 | require_once($extract_file . "/" . $file); |
|---|
| 241 | //¥¯¥¨¥ê¡¼¼Â¹Ô¥¯¥é¥¹ |
|---|
| 242 | $objQuery = new SC_Query; |
|---|
| 243 | //¥¯¥¨¥ê¡¼¤Î¼Â¹Ô |
|---|
| 244 | $objQuery->query($sql); |
|---|
| 245 | } else { |
|---|
| 246 | //²òÅà¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤ò»ØÄê |
|---|
| 247 | $replace_file = ereg_replace("^" . $extract_top_file . "/", "", $extract_file); |
|---|
| 248 | //¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼(¾å½ñ¤)¤¹¤ë |
|---|
| 249 | if(!copy($extract_file . "/" . $file, ROOT_DIR . $replace_file . "/" . $file)) { |
|---|
| 250 | $install_success = false; |
|---|
| 251 | } |
|---|
| 252 | } |
|---|
| 253 | } |
|---|
| 254 | } |
|---|
| 255 | } |
|---|
| 256 | } |
|---|
| 257 | //¥Ç¥£¥ì¥¯¥È¥ê¤òÊĤ¸¤ë |
|---|
| 258 | closedir($handle); |
|---|
| 259 | } else { |
|---|
| 260 | $install_success = false; |
|---|
| 261 | } |
|---|
| 262 | return $install_success; |
|---|
| 263 | |
|---|
| 264 | } |
|---|
| 265 | |
|---|
| 266 | ?> |
|---|