Changeset 16623


Ignore:
Timestamp:
2007/10/30 19:46:05 (16 years ago)
Author:
adachi
Message:

リファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/data/class/pages/upgrade/LC_Page_Upgrade_Download.php

    r16582 r16623  
    2323 
    2424// {{{ requires 
    25 require_once CLASS_PATH . 'pages/upgrade/LC_Page_Upgrade_Base.php'; 
    26 error_reporting(E_ALL); 
     25require_once CLASS_PATH . 'pages/LC_Page.php'; 
     26require_once 'utils/LC_Utils_Upgrade.php'; 
     27require_once 'utils/LC_Utils_Upgrade_Log.php'; 
     28 
    2729/** 
    28  * ダウンロード処理を担当する. 
     30 * オーナーズストアからダウンロードデータを取得する. 
    2931 * 
    3032 * TODO 要リファクタリング 
     
    3436 * @version $Id$ 
    3537 */ 
    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; 
     38class LC_Page_Upgrade_Download extends LC_Page { 
    4639 
    4740    // }}} 
     
    5447     */ 
    5548    function init() { 
    56         $this->objSess = new SC_Session(); 
    5749        $this->objJson = new Services_Json(); 
    58         $rhis->objReq  = new HTTP_Request(); 
     50        $this->objLog = new LC_Utils_Upgrade_Log('Download'); 
     51 
    5952        $this->objForm = new SC_FormParam(); 
    6053        $this->objForm->addParam( 
     
    6356        ); 
    6457        $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 
    7959    } 
    8060 
     
    8565     */ 
    8666    function process() { 
    87         $errFormat = '* error! code:%s / debug:%s'; 
    88  
    89         GC_Utils::gfPrintLog('###Download Start###'); 
     67        $this->objLog->start(); 
    9068 
    9169        // 管理画面ログインチェック 
    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) { 
    9472            $arrErr = array( 
    9573                'status'  => OWNERSSTORE_STATUS_ERROR, 
    9674                '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']); 
    10379            exit; 
    10480        } 
    10581 
    10682        // パラメーチェック 
    107         GC_Utils::gfPrintLog('* post parameter check start'); 
     83        $this->objLog->log('* post parameter check start'); 
    10884        if ($this->objForm->checkError()) { 
    10985            $arrErr = array( 
    11086                'status'  => OWNERSSTORE_STATUS_ERROER, 
    11187                '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); 
    11892            exit; 
    11993        } 
     
    12296 
    12397        // ダウンロードリクエストを開始 
    124         GC_Utils::gfPrintLog('* http request start'); 
    125         $resp = $this->request( 
     98        $this->objLog->log('* http request start'); 
     99        $objReq = LC_Utils_Upgrade::request( 
    126100            'download', 
    127101            array('product_id' => $this->objForm->getValue('product_id')) 
    128102        ); 
    129103 
    130         // リクエストのエラーチェック 
    131         GC_Utils::gfPrintLog('* http response check start'); 
    132         if (PEAR::isError($resp)) { 
     104        // リクエストの懸賞 
     105        $this->objLog->log('* http request check start'); 
     106        if (PEAR::isError($objReq)) { 
    133107            $arrErr = array( 
    134108                'status'  => OWNERSSTORE_STATUS_ERROR, 
    135109                '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); 
    142127            exit; 
    143128        } 
    144129 
    145130        // 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'); 
    149135        if (empty($objRet)) { 
    150136            $arrErr = array( 
    151137                'status'  => OWNERSSTORE_STATUS_ERROR, 
    152138                '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); 
    159143            exit; 
    160144        } 
    161145        // ダウンロードデータの保存 
    162146        if ($objRet->status === OWNERSSTORE_STATUS_SUCCESS) { 
    163             GC_Utils::gfPrintLog('* save file start'); 
     147           $this->objLog->log('* save file start'); 
    164148            $time = time(); 
    165149            $dir  = DATA_PATH . 'downloads/tmp/'; 
     
    175159                    'status'  => OWNERSSTORE_STATUS_ERROR, 
    176160                    'errcode' => OWNERSSTORE_ERR_DL_FILE_WRITE, 
    177                     'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_FILE_WRITE 
     161                    'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_FILE_WRITE) 
    178162                ); 
    179163                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); 
    183165                exit; 
    184166            } 
     167 
    185168            // ダウンロードアーカイブを展開する 
    186169            $exract_dir = $dir . $time; 
     
    189172                    'status'  => OWNERSSTORE_STATUS_ERROR, 
    190173                    'errcode' => OWNERSSTORE_ERR_DL_MKDIR, 
    191                     'body' => '配信サーバとの通信中にエラーが発生しました。エラーコード:' . OWNERSSTORE_ERR_DL_MKDIR 
     174                    'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_MKDIR) 
    192175                ); 
    193176                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); 
    197178                exit; 
    198179            } 
     
    205186            $arrCopyLog = $objBatch->execute($exract_dir); 
    206187 
    207             $this->notifyDownload($resp->getResponseCookies(), $objRet->product_data); 
    208188            // テーブルの更新 
    209             // $this->updateMdlTable($objRet); 
     189            $this->updateMdlTable($objRet->product_data); 
     190 
     191            // 配信サーバへ通知 
     192            $this->notifyDownload($objReq->getResponseCookies()); 
    210193 
    211194            $arrParam = array( 
     
    214197            ); 
    215198            echo $this->objJson->encode($arrParam); 
    216             GC_Utils::gfPrintLog('* file save ok'); 
     199            $this->objLog->log('* file save ok'); 
    217200            exit; 
    218201        } 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)); 
    223204            exit; 
    224205        } 
     
    231212     */ 
    232213    function destroy() { 
    233         GC_Utils::gfPrintLog('###Download End###'); 
     214        $this->objLog->end(); 
    234215    } 
    235216 
     
    241222    function updateMdlTable($objRet) { 
    242223        $table = 'dtb_module'; 
     224        $where = 'module_id = ?'; 
    243225        $objQuery = new SC_Query; 
    244226 
    245         $count = $objQuery->count($objRet, 'module_id=?', array($objRet->product_id)); 
     227        $count = $objQuery->count($table, $where, array($objRet->product_id)); 
    246228        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)); 
    249234        } 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            ); 
    251242            $objQuery->insert($table, $arrInsert); 
    252243        } 
     
    261252     */ 
    262253    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 
    293256        return true; 
    294257    } 
Note: See TracChangeset for help on using the changeset viewer.