Ignore:
Timestamp:
2011/01/19 14:20:39 (10 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:19965
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/class/pages/admin/design/LC_Page_Admin_Design_Template.php 16430@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Template.php
data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php 16677@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Up_Down.php
data/mtb_constants_init.php 16505@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fmtb_constants_init.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql
bzr:mapping-version:
v4
bzr:merge:

ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20110119052036-djhmmdrf0dtm52gp
bzr:revno:
2695
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-revisions:

data/class/pages/admin/design/LC_Page_Admin_Design_Template.php ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
data/mtb_constants_init.php ohkouchi@loop-az.jp-20110119025119-1ia8tvnnvxr55rdf
html/install/sql/create_table_mysql.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
html/install/sql/create_table_pgsql.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
html/install/sql/insert_data.sql ohkouchi@loop-az.jp-20110119051747-xgpjy36dee20bpe0
bzr:timestamp:
2011-01-19 14:20:36.427000046 +0900
bzr:user-agent:
bzr2.2.1+bzr-svn1.0.4
svn:original-date:
2011-01-19T05:20:36.427000Z
Message:

#748(モバイル/スマートフォンのデザイン管理)

  • テンプレート設定/追加を修正
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/design/LC_Page_Admin_Design_Up_Down.php

    r19807 r19966  
    4646    function init() { 
    4747        parent::init(); 
    48         $this->tpl_mainpage = 'design/up_down.tpl'; 
    49         $this->tpl_subnavi  = 'design/subnavi.tpl'; 
    50         $this->tpl_subno    = 'up_down'; 
    51         $this->tpl_mainno   = "design"; 
    52         $this->tpl_subtitle = 'テンプレート追加'; 
    53         $this->arrErr  = array(); 
    54         $this->arrForm = array(); 
    55         ini_set("max_execution_time", 300); 
     48        $this->tpl_mainpage = 'design/up_down.tpl'; 
     49        $this->tpl_subnavi  = 'design/subnavi.tpl'; 
     50        $this->tpl_subno    = 'up_down'; 
     51        $this->tpl_mainno   = "design"; 
     52        $this->tpl_subtitle = 'テンプレート追加'; 
     53        $this->arrErr  = array(); 
     54        $this->arrForm = array(); 
     55        ini_set("max_execution_time", 300); 
    5656    } 
    5757 
     
    7575    function action() { 
    7676        // ログインチェック 
    77             $objSession = new SC_Session(); 
    78             SC_Utils::sfIsSuccess($objSession); 
    79             $this->now_template = $this->lfGetNowTemplate(); 
    80              
    81             // uniqidをテンプレートへ埋め込み 
    82             $this->uniqid = $objSession->getUniqId(); 
    83              
    84             switch($this->lfGetMode()) { 
    85              
    86             // ダウンロードボタン押下時の処理 
    87             case 'download': 
    88                 break; 
    89             // アップロードボタン押下時の処理 
    90             case 'upload': 
    91                 // 画面遷移の正当性チェック 
    92                 if (!SC_Utils::sfIsValidTransition($objSession)) { 
    93                     SC_Utils::sfDispError(''); 
    94                 } 
    95                 // フォームパラメータ初期化 
    96                 $objForm = $this->lfInitUpload(); 
    97                 // エラーチェック 
    98                 if ($arrErr = $this->lfValidateUpload($objForm)) { 
    99                     $this->arrErr  = $arrErr; 
    100                     $this->arrForm = $objForm->getFormParamList(); 
    101                     break; 
    102                 } 
    103                 // アップロードファイル初期化 
    104                 $objUpFile = $this->lfInitUploadFile($objForm); 
    105                 // 一時ファイルへ保存 
    106                 $errMsg = $objUpFile->makeTempFile('template_file', false); 
    107                 // 書き込みエラーチェック 
    108                 if(isset($errMsg)) { 
    109                     $this->arrErr['template_file'] = $errMsg; 
    110                     $this->arrForm = $objForm->getFormParamList(); 
    111                     break; 
    112                 } 
    113                 $this->lfAddTemplates($objForm, $objUpFile); 
    114                 $this->tpl_onload = "alert('テンプレートファイルをアップロードしました。');"; 
    115                 break; 
    116              
    117             // 初回表示 
    118             default: 
    119                 break; 
    120             } 
    121             $this->device_type_id = $device_type_id; 
     77        $objSession = new SC_Session(); 
     78        SC_Utils::sfIsSuccess($objSession); 
     79 
     80        // 端末種別IDを取得 
     81        if (isset($_REQUEST['device_type_id']) 
     82            && is_numeric($_REQUEST['device_type_id'])) { 
     83            $device_type_id = $_REQUEST['device_type_id']; 
     84        } else { 
     85            $device_type_id = DEVICE_TYPE_PC; 
     86        } 
     87 
     88 
     89        // uniqidをテンプレートへ埋め込み 
     90        $this->uniqid = $objSession->getUniqId(); 
     91 
     92        switch($this->lfGetMode()) { 
     93 
     94            // ダウンロードボタン押下時の処理 
     95        case 'download': 
     96            break; 
     97            // アップロードボタン押下時の処理 
     98        case 'upload': 
     99            // 画面遷移の正当性チェック 
     100            if (!SC_Utils::sfIsValidTransition($objSession)) { 
     101                SC_Utils::sfDispError(''); 
     102            } 
     103            // フォームパラメータ初期化 
     104            $objForm = $this->lfInitUpload(); 
     105            // エラーチェック 
     106            if ($arrErr = $this->lfValidateUpload($objForm)) { 
     107                $this->arrErr  = $arrErr; 
     108                $this->arrForm = $objForm->getFormParamList(); 
     109                break; 
     110            } 
     111            // アップロードファイル初期化 
     112            $objUpFile = $this->lfInitUploadFile($objForm); 
     113            // 一時ファイルへ保存 
     114            $errMsg = $objUpFile->makeTempFile('template_file', false); 
     115            // 書き込みエラーチェック 
     116            if(isset($errMsg)) { 
     117                $this->arrErr['template_file'] = $errMsg; 
     118                $this->arrForm = $objForm->getFormParamList(); 
     119                break; 
     120            } 
     121            $this->lfAddTemplates($objForm, $objUpFile, $device_type_id); 
     122            $this->tpl_onload = "alert('テンプレートファイルをアップロードしました。');"; 
     123            break; 
     124 
     125            // 初回表示 
     126        default: 
     127            break; 
     128        } 
     129        $this->device_type_id = $device_type_id; 
    122130    } 
    123131 
     
    131139    } 
    132140 
    133     /** 
    134      * POSTされるmodeパラメータを取得する. 
    135      * 
    136      * @param void 
    137      * @return string modeパラメータ, 無ければnull 
    138      */ 
    139     function lfGetMode(){ 
    140         if (isset($_POST['mode'])) return $_POST['mode']; 
    141     } 
    142     /** 
    143      * SC_UploadFileクラスの初期化. 
    144      * 
    145      * @param object $objForm SC_FormParamのインスタンス 
    146      * @return object SC_UploadFileのインスタンス 
    147      */ 
    148     function lfInitUploadFile($objForm) { 
    149         $pkg_dir = SMARTY_TEMPLATES_REALDIR . $objForm->getValue('template_code'); 
    150         $objUpFile = new SC_UploadFile(TEMPLATE_TEMP_REALDIR, $pkg_dir); 
    151         $objUpFile->addFile("テンプレートファイル", 'template_file', array(), TEMPLATE_SIZE, true, 0, 0, false); 
    152      
    153         return $objUpFile; 
    154     } 
    155     /** 
    156      * SC_FormParamクラスの初期化. 
    157      * 
    158      * @param void 
    159      * @return object SC_FormParamのインスタンス 
    160      */ 
    161     function lfInitUpload() { 
    162         $objForm = new SC_FormParam; 
    163      
    164         $objForm->addParam("テンプレートコード", "template_code", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "ALNUM_CHECK")); 
    165         $objForm->addParam("テンプレート名", "template_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
    166         $objForm->setParam($_POST); 
    167      
    168         return $objForm; 
    169     } 
    170     /** 
    171      * uploadモードのパラメータ検証を行う. 
    172      * 
    173      * @param object $objForm SC_FormParamのインスタンス 
    174      * @return array エラー情報を格納した連想配列, エラーが無ければ(多分)nullを返す 
    175      */ 
    176     function lfValidateUpload($objForm) { 
    177         $arrErr = $objForm->checkError(); 
    178         if (!empty($arrErr)) { 
    179             return $arrErr; 
    180         } 
    181      
    182         $arrForm = $objForm->getHashArray(); 
    183      
    184         // 同名のフォルダが存在する場合はエラー 
    185         if(file_exists(USER_TEMPLATE_REALDIR . $arrForm['template_code'])) { 
    186             $arrErr['template_code'] = "※ 同名のファイルがすでに存在します。<br/>"; 
    187         } 
    188      
    189         // 登録不可の文字列チェック 
    190         $arrIgnoreCode = array( 
    191             'admin', 'mobile', 'default' 
    192         ); 
    193         if(in_array($arrForm['template_code'], $arrIgnoreCode)) { 
    194             $arrErr['template_code'] = "※ このテンプレートコードは使用できません。<br/>"; 
    195         } 
    196      
    197         // DBにすでに登録されていないかチェック 
    198         $objQuery = new SC_Query(); 
    199         $ret = $objQuery->count("dtb_templates", "template_code = ?", array($arrForm['template_code'])); 
    200         if(!empty($ret)) { 
    201             $arrErr['template_code'] = "※ すでに登録されているテンプレートコードです。<br/>"; 
    202         } 
    203      
    204         // ファイルの拡張子チェック(.tar/tar.gzのみ許可) 
    205         $errFlag = true; 
    206         $array_ext = explode(".", $_FILES['template_file']['name']); 
    207         $ext = $array_ext[ count ( $array_ext ) - 1 ]; 
    208         $ext = strtolower($ext); 
    209         // .tarチェック 
    210         if ($ext == 'tar') { 
    211             $errFlag = false; 
    212         } 
    213         $ext = $array_ext[ count ( $array_ext ) - 2 ].".".$ext; 
    214         $ext = strtolower($ext); 
    215         // .tar.gzチェック 
    216         if ($ext== 'tar.gz') { 
    217             $errFlag = false; 
    218         } 
    219      
    220         if($errFlag) { 
    221             $arrErr['template_file'] = "※ アップロードするテンプレートファイルで許可されている形式は、tar/tar.gzです。<br />"; 
    222         } 
    223      
    224         return $arrErr; 
    225     } 
    226     /** 
    227      * DBおよびTPL_PKG_PATHにテンプレートパッケージを追加する. 
    228      * 
    229      * @param object $objForm SC_FormParamのインスタンス 
    230      * @param object $objUpFile SC_UploadFileのインスタンス 
    231      * @return void 
    232      */ 
    233     function lfAddTemplates($objForm, $objUpFile) { 
    234         $template_code = $objForm->getValue('template_code'); 
    235         $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code; 
    236         $compile_dir  = DATA_REALDIR . "Smarty/templates_c/" . $template_code; 
    237         // フォルダ作成 
    238         if(!file_exists($template_dir)) { 
    239             mkdir($template_dir); 
    240         } 
    241         if(!file_exists($compile_dir)) { 
    242             mkdir($compile_dir); 
    243         } 
    244                  
    245         // 一時フォルダから保存ディレクトリへ移動 
    246         $objUpFile->moveTempFile(); 
    247          
    248         // 解凍 
    249         SC_Helper_FileManager::unpackFile($template_dir . "/" . $_FILES['template_file']['name']); 
    250         // ユーザデータの下のファイルをコピーする 
    251         $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/";       
    252         $to_dir = USER_REALDIR . "packages/" . $template_code . "/"; 
    253         SC_Utils::sfMakeDir($to_dir); 
     141    /** 
     142     * POSTされるmodeパラメータを取得する. 
     143     * 
     144     * @param void 
     145     * @return string modeパラメータ, 無ければnull 
     146     */ 
     147    function lfGetMode(){ 
     148        if (isset($_POST['mode'])) return $_POST['mode']; 
     149    } 
     150    /** 
     151     * SC_UploadFileクラスの初期化. 
     152     * 
     153     * @param object $objForm SC_FormParamのインスタンス 
     154     * @return object SC_UploadFileのインスタンス 
     155     */ 
     156    function lfInitUploadFile($objForm) { 
     157        $pkg_dir = SMARTY_TEMPLATES_REALDIR . $objForm->getValue('template_code'); 
     158        $objUpFile = new SC_UploadFile(TEMPLATE_TEMP_REALDIR, $pkg_dir); 
     159        $objUpFile->addFile("テンプレートファイル", 'template_file', array(), TEMPLATE_SIZE, true, 0, 0, false); 
     160 
     161        return $objUpFile; 
     162    } 
     163    /** 
     164     * SC_FormParamクラスの初期化. 
     165     * 
     166     * @param void 
     167     * @return object SC_FormParamのインスタンス 
     168     */ 
     169    function lfInitUpload() { 
     170        $objForm = new SC_FormParam; 
     171 
     172        $objForm->addParam("テンプレートコード", "template_code", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "ALNUM_CHECK")); 
     173        $objForm->addParam("テンプレート名", "template_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
     174        $objForm->setParam($_POST); 
     175 
     176        return $objForm; 
     177    } 
     178    /** 
     179     * uploadモードのパラメータ検証を行う. 
     180     * 
     181     * @param object $objForm SC_FormParamのインスタンス 
     182     * @return array エラー情報を格納した連想配列, エラーが無ければ(多分)nullを返す 
     183     */ 
     184    function lfValidateUpload($objForm) { 
     185        $arrErr = $objForm->checkError(); 
     186        if (!empty($arrErr)) { 
     187            return $arrErr; 
     188        } 
     189 
     190        $arrForm = $objForm->getHashArray(); 
     191 
     192        // 同名のフォルダが存在する場合はエラー 
     193        if(file_exists(USER_TEMPLATE_REALDIR . $arrForm['template_code'])) { 
     194            $arrErr['template_code'] = "※ 同名のファイルがすでに存在します。<br/>"; 
     195        } 
     196 
     197        // 登録不可の文字列チェック 
     198        $arrIgnoreCode = array('admin', 
     199                               MOBILE_DEFAULT_TEMPLATE_NAME, 
     200                               SMARTPHONE_DEFAULT_TEMPLATE_NAME, 
     201                               DEFAULT_TEMPLATE_NAME); 
     202        if(in_array($arrForm['template_code'], $arrIgnoreCode)) { 
     203            $arrErr['template_code'] = "※ このテンプレートコードは使用できません。<br/>"; 
     204        } 
     205 
     206        // DBにすでに登録されていないかチェック 
     207        $objQuery = new SC_Query(); 
     208        $ret = $objQuery->count("dtb_templates", "template_code = ?", array($arrForm['template_code'])); 
     209        if(!empty($ret)) { 
     210            $arrErr['template_code'] = "※ すでに登録されているテンプレートコードです。<br/>"; 
     211        } 
     212 
     213        // ファイルの拡張子チェック(.tar/tar.gzのみ許可) 
     214        $errFlag = true; 
     215        $array_ext = explode(".", $_FILES['template_file']['name']); 
     216        $ext = $array_ext[ count ( $array_ext ) - 1 ]; 
     217        $ext = strtolower($ext); 
     218        // .tarチェック 
     219        if ($ext == 'tar') { 
     220            $errFlag = false; 
     221        } 
     222        $ext = $array_ext[ count ( $array_ext ) - 2 ].".".$ext; 
     223        $ext = strtolower($ext); 
     224        // .tar.gzチェック 
     225        if ($ext== 'tar.gz') { 
     226            $errFlag = false; 
     227        } 
     228 
     229        if($errFlag) { 
     230            $arrErr['template_file'] = "※ アップロードするテンプレートファイルで許可されている形式は、tar/tar.gzです。<br />"; 
     231        } 
     232 
     233        return $arrErr; 
     234    } 
     235    /** 
     236     * DBおよびTPL_PKG_PATHにテンプレートパッケージを追加する. 
     237     * 
     238     * @param object $objForm SC_FormParamのインスタンス 
     239     * @param object $objUpFile SC_UploadFileのインスタンス 
     240     * @return void 
     241     */ 
     242    function lfAddTemplates($objForm, $objUpFile, $device_type_id) { 
     243        $template_code = $objForm->getValue('template_code'); 
     244        $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code; 
     245        $compile_dir  = DATA_REALDIR . "Smarty/templates_c/" . $template_code; 
     246        // フォルダ作成 
     247        if(!file_exists($template_dir)) { 
     248            mkdir($template_dir); 
     249        } 
     250        if(!file_exists($compile_dir)) { 
     251            mkdir($compile_dir); 
     252        } 
     253 
     254        // 一時フォルダから保存ディレクトリへ移動 
     255        $objUpFile->moveTempFile(); 
     256 
     257        // 解凍 
     258        SC_Helper_FileManager::unpackFile($template_dir . "/" . $_FILES['template_file']['name']); 
     259        // ユーザデータの下のファイルをコピーする 
     260        $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . "/_packages/"; 
     261        $to_dir = USER_REALDIR . "packages/" . $template_code . "/"; 
     262        SC_Utils::sfMakeDir($to_dir); 
    254263        SC_Utils::sfCopyDir($from_dir, $to_dir); 
    255          
    256         // DBにテンプレート情報を保存 
    257         $this->lfRegisterTemplates($objForm->getHashArray()); 
    258     } 
    259      
    260     /** 
    261     * dtb_templatesへ入力内容を登録する. 
    262     * 
    263     * @param array $arrForm POSTされたパラメータ 
    264     * @return void 
    265     */ 
    266     function lfRegisterTemplates($arrForm) { 
     264 
     265        // DBにテンプレート情報を保存 
     266        $this->lfRegisterTemplates($objForm->getHashArray(), $device_type_id); 
     267    } 
     268 
     269    /** 
     270    * dtb_templatesへ入力内容を登録する. 
     271    * 
     272    * @param array $arrForm POSTされたパラメータ 
     273    * @return void 
     274    */ 
     275    function lfRegisterTemplates($arrForm, $device_type_id) { 
    267276        $objQuery = new SC_Query(); 
    268277        $sqlval = $arrForm; 
     278        $sqlval['device_type_id'] = $device_type_id; 
    269279        $sqlval['create_date'] = "now()"; 
    270280        $sqlval['update_date'] = "now()"; 
    271281        $objQuery->insert('dtb_templates', $sqlval); 
    272     } 
    273  
    274     /** 
    275      * デザイン管理で作成されたファイルをupload/temp_template/以下にコピーする 
    276      * 
    277      * @param string $to 
    278      * @return void 
    279      */ 
    280     function lfCopyUserEdit($to) { 
    281         $arrDirs = array( 
    282             'css', 
    283             'include', 
    284             'templates' 
    285         ); 
    286      
    287         foreach ($arrDirs as $dir) { 
    288             $from = USER_REALDIR .  $dir; 
    289             SC_Utils::sfCopyDir($from, $to, '', true); 
    290         } 
    291     } 
    292     /** 
    293      * 現在選択しているテンプレートパッケージをupload/temp_template/以下にコピーする 
    294      * 
    295      * @param string $to 保存先パス 
    296      * @return void 
    297      */ 
    298     function lfCopyTplPackage($to) { 
    299         $nowTpl = $this->lfGetNowTemplate(); 
    300         if (!$nowTpl) return; 
    301      
    302         $from = TPL_PKG_PATH . $nowTpl . '/'; 
    303         SC_Utils::sfCopyDir($from, $to, ''); 
    304     } 
    305     /** 
    306      * 現在適用しているテンプレートパッケージ名を取得する. 
    307      * 
    308      * @param void 
    309      * @return string テンプレートパッケージ名 
    310      */ 
    311     function lfGetNowTemplate() { 
    312         $objQuery = new SC_Query(); 
    313         $arrRet = $objQuery->select('top_tpl', 'dtb_baseinfo'); 
    314         if (isset($arrRet[0]['top_tpl'])) { 
    315             return $arrRet[0]['top_tpl']; 
    316         } 
    317         return null; 
    318     }     
     282    } 
    319283} 
    320284?> 
Note: See TracChangeset for help on using the changeset viewer.