Changeset 16623
- Timestamp:
- 2007/10/30 19:46:05 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/pages/upgrade/LC_Page_Upgrade_Download.php
r16582 r16623 23 23 24 24 // {{{ requires 25 require_once CLASS_PATH . 'pages/upgrade/LC_Page_Upgrade_Base.php'; 26 error_reporting(E_ALL); 25 require_once CLASS_PATH . 'pages/LC_Page.php'; 26 require_once 'utils/LC_Utils_Upgrade.php'; 27 require_once 'utils/LC_Utils_Upgrade_Log.php'; 28 27 29 /** 28 * ダウンロード処理を担当する.30 * オーナーズストアからダウンロードデータを取得する. 29 31 * 30 32 * TODO 要リファクタリング … … 34 36 * @version $Id$ 35 37 */ 36 class LC_Page_Upgrade_Download extends LC_Page_Upgrade_Base { 37 38 /** SC_Sessionオブジェクト */ 39 var $objSession = null; 40 /** Services_Jsonオブジェクト */ 41 var $objJson = null; 42 /** HTTP_Requestオブジェクト */ 43 var $objReq = null; 44 /** SC_FromParamオブジェクト */ 45 var $objForm = null; 38 class LC_Page_Upgrade_Download extends LC_Page { 46 39 47 40 // }}} … … 54 47 */ 55 48 function init() { 56 $this->objSess = new SC_Session();57 49 $this->objJson = new Services_Json(); 58 $rhis->objReq = new HTTP_Request(); 50 $this->objLog = new LC_Utils_Upgrade_Log('Download'); 51 59 52 $this->objForm = new SC_FormParam(); 60 53 $this->objForm->addParam( … … 63 56 ); 64 57 $this->objForm->setParam($_POST); 65 } 66 67 /** 68 * 使用してません 69 * こんな感じで書けたら楽かな... 70 */ 71 function _process() { 72 $result = $this->_try(); 73 if ($e = $this->_catch($result)) { 74 GC_Utils::gfPrintLog(sprintf($e->log_format, $e->stacktrace)); 75 $this->_throw($e->json); 76 exit; 77 } 78 echo $result; 58 79 59 } 80 60 … … 85 65 */ 86 66 function process() { 87 $errFormat = '* error! code:%s / debug:%s'; 88 89 GC_Utils::gfPrintLog('###Download Start###'); 67 $this->objLog->start(); 90 68 91 69 // 管理画面ログインチェック 92 GC_Utils::gfPrintLog('* admin auth start');93 if ( $this->objSess->isSuccess() !== SUCCESS) {70 $this->objLog->log('* admin auth start'); 71 if (LC_Utils_Upgrade::isLoggedInAdminPage() !== true) { 94 72 $arrErr = array( 95 73 'status' => OWNERSSTORE_STATUS_ERROR, 96 74 'errcode' => OWNERSSTORE_ERR_DL_ADMIN_AUTH, 97 'body' => '管理画面にログインしていません' 98 ); 99 echo $this->objJson->encode($arrErr); 100 GC_Utils::gfPrintLog( 101 sprintf($errFormat, $arrErr['errcode'], serialize($_SESSION)) 102 ); 75 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_ADMIN_AUTH) 76 ); 77 echo $this->objJson->encode($arrErr); 78 $this->objLog->errLog($arrErr['errcode']); 103 79 exit; 104 80 } 105 81 106 82 // パラメーチェック 107 GC_Utils::gfPrintLog('* post parameter check start');83 $this->objLog->log('* post parameter check start'); 108 84 if ($this->objForm->checkError()) { 109 85 $arrErr = array( 110 86 'status' => OWNERSSTORE_STATUS_ERROER, 111 87 'errcode' => OWNERSSTORE_ERR_DL_POST_PARAM, 112 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_POST_PARAM 113 ); 114 echo $this->objJson->encode($arrErr); 115 GC_Utils::gfPrintLog( 116 sprintf($errFormat, $arrErr['errcode'], serialize($_POST)) 117 ); 88 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_POST_PARAM) 89 ); 90 echo $this->objJson->encode($arrErr); 91 $this->objLog->errLog($arrErr['errcode'], $_POST); 118 92 exit; 119 93 } … … 122 96 123 97 // ダウンロードリクエストを開始 124 GC_Utils::gfPrintLog('* http request start');125 $ resp = $this->request(98 $this->objLog->log('* http request start'); 99 $objReq = LC_Utils_Upgrade::request( 126 100 'download', 127 101 array('product_id' => $this->objForm->getValue('product_id')) 128 102 ); 129 103 130 // リクエストの エラーチェック131 GC_Utils::gfPrintLog('* http responsecheck start');132 if (PEAR::isError($ resp)) {104 // リクエストの懸賞 105 $this->objLog->log('* http request check start'); 106 if (PEAR::isError($objReq)) { 133 107 $arrErr = array( 134 108 'status' => OWNERSSTORE_STATUS_ERROR, 135 109 'errcode' => OWNERSSTORE_ERR_DL_HTTP_REQ, 136 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_HTTP_REQ 137 ); 138 echo $this->objJson->encode($arrErr); 139 GC_Utils::gfPrintLog( 140 sprintf($errFormat, $arrErr['errcode'], serialize($resp)) 141 ); 110 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_HTTP_REQ) 111 ); 112 echo $this->objJson->encode($arrErr); 113 $this->objLog->errLog($arrErr['errcode'], $objReq); 114 exit; 115 } 116 117 // レスポンスの検証 118 $this->objLog->log('* http response check start'); 119 if ($objReq->getResponseCode() !== 200) { 120 $arrErr = array( 121 'status' => OWNERSSTORE_STATUS_ERROR, 122 'errcode' => OWNERSSTORE_ERR_DL_HTTP_RESP_CODE, 123 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_HTTP_RESP_CODE) 124 ); 125 echo $this->objJson->encode($arrErr); 126 $this->objLog->errLog($arrErr['errcode'], $objReq); 142 127 exit; 143 128 } 144 129 145 130 // JSONデータの検証 146 $jsonData = $resp->getResponseBody(); 147 $objRet = $this->objJson->decode($resp->getResponseBody($jsonData)); 148 GC_Utils::gfPrintLog('* json data check start'); 131 $body = $objReq->getResponseBody(); 132 $objRet = $this->objJson->decode($body); 133 134 $this->objLog->log('* json data check start'); 149 135 if (empty($objRet)) { 150 136 $arrErr = array( 151 137 'status' => OWNERSSTORE_STATUS_ERROR, 152 138 'errcode' => OWNERSSTORE_ERR_DL_INVALID_JSON_DATA, 153 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_INVALID_JSON_DATA 154 ); 155 echo $this->objJson->encode($arrErr); 156 GC_Utils::gfPrintLog( 157 sprintf($errFormat, $arrErr['errcode'], serialize($resp)) 158 ); 139 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_INVALID_JSON_DATA) 140 ); 141 echo $this->objJson->encode($arrErr); 142 $this->objLog->errLog($arrErr['errcode'], $objReq); 159 143 exit; 160 144 } 161 145 // ダウンロードデータの保存 162 146 if ($objRet->status === OWNERSSTORE_STATUS_SUCCESS) { 163 GC_Utils::gfPrintLog('* save file start');147 $this->objLog->log('* save file start'); 164 148 $time = time(); 165 149 $dir = DATA_PATH . 'downloads/tmp/'; … … 175 159 'status' => OWNERSSTORE_STATUS_ERROR, 176 160 'errcode' => OWNERSSTORE_ERR_DL_FILE_WRITE, 177 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_FILE_WRITE161 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_FILE_WRITE) 178 162 ); 179 163 echo $this->objJson->encode($arrErr); 180 GC_Utils::gfPrintLog( 181 sprintf($errFormat, $arrErr['errcode'], serialize($dir . $filename)) 182 ); 164 $this->objLog->errLog($arrErr['errcode'], $dir . $filename); 183 165 exit; 184 166 } 167 185 168 // ダウンロードアーカイブを展開する 186 169 $exract_dir = $dir . $time; … … 189 172 'status' => OWNERSSTORE_STATUS_ERROR, 190 173 'errcode' => OWNERSSTORE_ERR_DL_MKDIR, 191 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_MKDIR174 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_MKDIR) 192 175 ); 193 176 echo $this->objJson->encode($arrErr); 194 GC_Utils::gfPrintLog( 195 sprintf($errFormat, $arrErr['errcode'], serialize($exract_dir)) 196 ); 177 $this->objLog->errLog($arrErr['errcode'], $exract_dir); 197 178 exit; 198 179 } … … 205 186 $arrCopyLog = $objBatch->execute($exract_dir); 206 187 207 $this->notifyDownload($resp->getResponseCookies(), $objRet->product_data);208 188 // テーブルの更新 209 // $this->updateMdlTable($objRet); 189 $this->updateMdlTable($objRet->product_data); 190 191 // 配信サーバへ通知 192 $this->notifyDownload($objReq->getResponseCookies()); 210 193 211 194 $arrParam = array( … … 214 197 ); 215 198 echo $this->objJson->encode($arrParam); 216 GC_Utils::gfPrintLog('* file save ok');199 $this->objLog->log('* file save ok'); 217 200 exit; 218 201 } else { 219 echo $jsonData; 220 GC_Utils::gfPrintLog( 221 sprintf($errFormat, $objRet->errcode, serialize(array($resp, $objRet))) 222 ); 202 echo $body; 203 $this->objLog->errLog($arrErr['errcode'], array($objRet, $objReq)); 223 204 exit; 224 205 } … … 231 212 */ 232 213 function destroy() { 233 GC_Utils::gfPrintLog('###Download End###');214 $this->objLog->end(); 234 215 } 235 216 … … 241 222 function updateMdlTable($objRet) { 242 223 $table = 'dtb_module'; 224 $where = 'module_id = ?'; 243 225 $objQuery = new SC_Query; 244 226 245 $count = $objQuery->count($ objRet, 'module_id=?', array($objRet->product_id));227 $count = $objQuery->count($table, $where, array($objRet->product_id)); 246 228 if ($count) { 247 $arrUpdate = array(); 248 $objQuery->update($table, $arrUpdate); 229 $arrUpdate = array( 230 'module_name' => $objRet->name, 231 'update_date' => 'NOW()' 232 ); 233 $objQuery->update($table, $arrUpdate ,$where, array($objRet->product_id)); 249 234 } else { 250 $arrInsert = array(); 235 $arrInsert = array( 236 'module_id' => $objRet->product_id, 237 'module_name' => $objRet->name, 238 'auto_update_flg' => '0', 239 'create_date' => 'NOW()', 240 'update_date' => 'NOW()' 241 ); 251 242 $objQuery->insert($table, $arrInsert); 252 243 } … … 261 252 */ 262 253 function notifyDownload($arrCookies) { 263 $objReq = new HTTP_Request(); 264 $objReq->setUrl('http://cube-shopaccount/upgrade/index.php'); 265 $objReq->setMethod('POST'); 266 $objReq->addPostData('mode', 'download_log'); 267 268 // Cookie追加 269 foreach ($arrCookies as $cookie) { 270 $objReq->addCookie($cookie['name'], $cookie['value']); 271 } 272 273 $e = $objReq->sendRequest(); 274 if (PEAR::isError($e)) { 275 $arrErr = array( 276 'status' => OWNERSSTORE_STATUS_ERROR, 277 'errcode' => 999, 278 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . 999 279 ); 280 return $arrErr; 281 } 282 283 if ($objReq->getResponseCode() !== 200) { 284 $arrErr = array( 285 'status' => OWNERSSTORE_STATUS_ERROR, 286 'errcode' => 999, 287 'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . 999 288 ); 289 return $arrErr; 290 } 291 echo $objReq->getResponseBody(); 292 // TODO STATUSチェック 254 $objReq = LC_Utils_Upgrade::request('download_log', array(), $arrCookies); 255 293 256 return true; 294 257 }
Note: See TracChangeset
for help on using the changeset viewer.