Changeset 15682


Ignore:
Timestamp:
2007/09/12 11:32:15 (17 years ago)
Author:
nanasess
Message:

クラス化に伴う修正

Location:
branches/feature-module-update
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/html/admin/design/main_edit.php

    r15532 r15682  
    55 * http://www.lockon.co.jp/ 
    66 */ 
     7 
     8// {{{ requires 
    79require_once("../../require.php"); 
    8 require_once(DATA_PATH . "include/page_layout.inc"); 
     10require_once(CLASS_PATH . "page_extends/admin/design/LC_Page_Admin_Design_MainEdit_Ex.php"); 
    911 
    10 class LC_Page { 
    11     var $arrForm; 
    12     var $arrHidden; 
     12// }}} 
     13// {{{ generate page 
    1314 
    14     function LC_Page() { 
    15         $this->tpl_mainpage = 'design/main_edit.tpl'; 
    16         $this->tpl_subnavi  = 'design/subnavi.tpl'; 
    17         $this->user_URL     = USER_URL; 
    18         $this->text_row     = 13; 
    19         $this->tpl_subno = "main_edit"; 
    20         $this->tpl_mainno = "design"; 
    21         $this->tpl_subtitle = 'ページ詳細設定'; 
    22     } 
    23 } 
    24 $objPage = new LC_Page(); 
    25 $objView = new SC_AdminView(); 
    26  
    27 // 認証可否の判定 
    28 $objSess = new SC_Session(); 
    29 sfIsSuccess($objSess); 
    30  
    31 // ページ一覧を取得 
    32 $objPage->arrPageList = lfgetPageData(); 
    33  
    34 // ブロックIDを取得 
    35 if (isset($_POST['page_id'])) { 
    36     $page_id = $_POST['page_id']; 
    37 }else if ($_GET['page_id']){ 
    38     $page_id = $_GET['page_id']; 
    39 }else{ 
    40     $page_id = ''; 
    41 } 
    42  
    43 $objPage->page_id = $page_id; 
    44  
    45 // メッセージ表示 
    46 if ($_GET['msg'] == "on"){ 
    47     $objPage->tpl_onload="alert('登録が完了しました。');"; 
    48 } 
    49  
    50 // page_id が指定されている場合にはテンプレートデータの取得 
    51 if (is_numeric($page_id) and $page_id != '') { 
    52     $arrPageData = lfgetPageData(" page_id = ? " , array($page_id)); 
    53  
    54     if ($arrPageData[0]['tpl_dir'] === "") { 
    55         $objPage->arrErr['page_id_err'] = "※ 指定されたページは編集できません。"; 
    56         // 画面の表示 
    57         $objView->assignobj($objPage); 
    58         $objView->display(MAIN_FRAME); 
    59         exit; 
    60     } 
    61  
    62     // テンプレートファイルが存在していれば読み込む 
    63     $tpl_file = HTML_PATH . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl"; 
    64     if (file_exists($tpl_file)){ 
    65         $arrPageData[0]['tpl_data'] = file_get_contents($tpl_file);      
    66     } 
    67  
    68     // チェックボックスの値変更 
    69     $arrPageData[0]['header_chk'] = sfChangeCheckBox($arrPageData[0]['header_chk'], true); 
    70     $arrPageData[0]['footer_chk'] = sfChangeCheckBox($arrPageData[0]['footer_chk'], true); 
    71  
    72     // ディレクトリを画面表示用に編集 
    73     $arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']); 
    74      
    75     $objPage->arrPageData = $arrPageData[0]; 
    76 } 
    77  
    78 // プレビュー処理 
    79 if ($_POST['mode'] == 'preview') { 
    80      
    81     $page_id_old = $page_id; 
    82     $page_id = "0"; 
    83     $url = uniqid(""); 
    84  
    85     $_POST['page_id'] = $page_id; 
    86     $_POST['url'] = $url; 
    87      
    88     $arrPreData = lfgetPageData(" page_id = ? " , array($page_id)); 
    89  
    90     // tplファイルの削除 
    91     $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 
    92     if (file_exists($del_tpl)){ 
    93         unlink($del_tpl);    
    94     } 
    95  
    96     // DBへデータを更新する 
    97     lfEntryPageData($_POST); 
    98  
    99     // TPLファイル作成 
    100     $cre_tpl = USER_PATH . "templates/" . $url . '.tpl'; 
    101     lfCreateFile($cre_tpl); 
    102      
    103     // blocposition を削除 
    104     $objDBConn = new SC_DbConn;     // DB操作オブジェクト 
    105     $sql = 'delete from dtb_blocposition where page_id = 0'; 
    106     $ret = $objDBConn->query($sql); 
    107      
    108     if ($page_id_old != "") { 
    109         // 登録データを取得 
    110         $sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?"; 
    111         $ret = $objDBConn->getAll($sql,array($page_id_old)); 
    112          
    113         if (count($ret) > 0) { 
    114              
    115             // blocposition を複製 
    116             $sql = " insert into dtb_blocposition ("; 
    117             $sql .= "     page_id,"; 
    118             $sql .= "     target_id,"; 
    119             $sql .= "     bloc_id,"; 
    120             $sql .= "     bloc_row"; 
    121             $sql .= "     )values(?, ?, ?, ?)"; 
    122              
    123             // 取得件数文INSERT実行 
    124             foreach($ret as $key => $val){ 
    125                 $ret = $objDBConn->query($sql,$val); 
    126             } 
    127         } 
    128  
    129     } 
    130      
    131     $_SESSION['preview'] = "ON"; 
    132      
    133     header("location: " . URL_DIR . "preview/index.php"); 
    134 } 
    135  
    136 // データ登録処理 
    137 if ($_POST['mode'] == 'confirm') { 
    138      
    139     // エラーチェック 
    140     $objPage->arrErr = lfErrorCheck($_POST); 
    141  
    142     // エラーがなければ更新処理を行う   
    143     if (count($objPage->arrErr) == 0) { 
    144  
    145         // DBへデータを更新する 
    146         lfEntryPageData($_POST); 
    147          
    148         // ベースデータでなければファイルを削除し、PHPファイルを作成する 
    149         if (!lfCheckBaseData($page_id)) { 
    150             // ファイル削除 
    151             lfDelFile($arrPageData[0]); 
    152              
    153             // PHPファイル作成 
    154             $cre_php = USER_PATH . $_POST['url'] . ".php"; 
    155             lfCreatePHPFile($cre_php); 
    156         } 
    157  
    158         // TPLファイル作成 
    159         $cre_tpl = dirname(USER_PATH . "templates/" . $_POST['url']) . "/" . basename($_POST['url']) . '.tpl'; 
    160  
    161         lfCreateFile($cre_tpl); 
    162  
    163         // 編集可能ページの場合にのみ処理を行う 
    164         if ($arrPageData[0]['edit_flg'] != 2) { 
    165             // 新規作成した場合のために改にページIDを取得する 
    166             $arrPageData = lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php")); 
    167             $page_id = $arrPageData[0]['page_id']; 
    168         } 
    169  
    170         header("location: ./main_edit.php?page_id=$page_id&msg=on"); 
    171     }else{ 
    172         // エラーがあれば入力時のデータを表示する 
    173         $objPage->arrPageData = $_POST; 
    174         $objPage->arrPageData['header_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['header_chk']), true); 
    175         $objPage->arrPageData['footer_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['footer_chk']), true); 
    176         $objPage->arrPageData['directory'] = $_POST['url']; 
    177         $objPage->arrPageData['filename'] = ""; 
    178     } 
    179 } 
    180  
    181 // データ削除処理 ベースデータでなければファイルを削除 
    182 if ($_POST['mode'] == 'delete' and  !lfCheckBaseData($page_id)) { 
    183     lfDelPageData($_POST['page_id']); 
    184 } 
    185  
    186 // 画面の表示 
    187 $objView->assignobj($objPage); 
    188 $objView->display(MAIN_FRAME); 
    189  
    190 //--------------------------------------------------------------------------------------------------------------------------------------------------------- 
    191 /************************************************************************************************************** 
    192  * 関数名  :lfEntryPageData 
    193  * 処理内容 :ブロック情報を更新する 
    194  * 引数1  :$arrData  ・・・ 更新データ 
    195  * 戻り値  :更新結果 
    196  **************************************************************************************************************/ 
    197 function lfEntryPageData($arrData){ 
    198     $objDBConn = new SC_DbConn;     // DB操作オブジェクト 
    199     $sql = "";                      // データ更新SQL生成用 
    200     $ret = "";                      // データ更新結果格納用 
    201     $arrUpdData = array();          // 更新データ生成用 
    202     $arrChk = array();              // 排他チェック用 
    203  
    204     // 更新データ生成 
    205     $arrUpdData = lfGetUpdData($arrData); 
    206      
    207     // データが存在しているかチェックを行う 
    208     if($arrData['page_id'] !== ''){ 
    209         $arrChk = lfgetPageData(" page_id = ?", array($arrData['page_id'])); 
    210     } 
    211  
    212     // page_id が空 若しくは データが存在していない場合にはINSERTを行う 
    213     if ($arrData['page_id'] === '' or !isset($arrChk[0])) { 
    214         // SQL生成 
    215         $sql = " INSERT INTO dtb_pagelayout "; 
    216         $sql .= " ( "; 
    217         $sql .= "     page_name"; 
    218         $sql .= "     ,url"; 
    219         $sql .= "     ,php_dir"; 
    220         $sql .= "     ,tpl_dir"; 
    221         $sql .= "     ,filename"; 
    222         $sql .= "     ,header_chk"; 
    223         $sql .= "     ,footer_chk"; 
    224         $sql .= "     ,update_url"; 
    225         $sql .= "     ,create_date"; 
    226         $sql .= "     ,update_date"; 
    227         $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )"; 
    228         $sql .= " "; 
    229     }else{ 
    230         // データが存在してる場合にはアップデートを行う 
    231         // SQL生成 
    232         $sql = " UPDATE dtb_pagelayout "; 
    233         $sql .= " SET"; 
    234         $sql .= "     page_name = ? "; 
    235         $sql .= "     ,url = ? "; 
    236         $sql .= "     ,php_dir = ? "; 
    237         $sql .= "     ,tpl_dir = ? "; 
    238         $sql .= "     ,filename = ? "; 
    239         $sql .= "     ,header_chk = ? "; 
    240         $sql .= "     ,footer_chk = ? "; 
    241         $sql .= "     ,update_url = ? "; 
    242         $sql .= "     ,update_date = now() "; 
    243         $sql .= " WHERE page_id = ?"; 
    244         $sql .= " "; 
    245  
    246         // 更新データにブロックIDを追加 
    247         array_push($arrUpdData, $arrData['page_id']); 
    248     } 
    249  
    250     // SQL実行 
    251     $ret = $objDBConn->query($sql,$arrUpdData); 
    252      
    253     return $ret; 
    254 } 
    255  
    256 /************************************************************************************************************** 
    257  * 関数名  :lfGetUpdData 
    258  * 処理内容 :DBへ更新を行うデータを生成する 
    259  * 引数1  :$arrData  ・・・ 更新データ 
    260  * 戻り値  :更新データ 
    261  **************************************************************************************************************/ 
    262 function lfGetUpdData($arrData){ 
    263      
    264     // ベースデータの場合には変更しない。 
    265     if (lfCheckBaseData($arrData['page_id'])) { 
    266         $arrPageData = lfgetPageData( ' page_id = ? ' , array($arrData['page_id'])); 
    267  
    268         $name = $arrPageData[0]['page_name'] ; 
    269         $url = $arrPageData[0]['url']; 
    270         $php_dir = $arrPageData[0]['php_dir']; 
    271         $tpl_dir = $arrPageData[0]['tpl_dir']; 
    272         $filename = $arrPageData[0]['filename']; 
    273     }else{ 
    274         $name = $arrData['page_name'] ; 
    275         $url = USER_URL.$arrData['url'].".php"; 
    276         $php_dir = dirname(USER_DIR.$arrData['url'])."/"; 
    277         $tpl_dir = dirname(USER_DIR."templates/".$arrData['url'])."/"; 
    278         $filename = basename($arrData['url']); 
    279     } 
    280  
    281     // 更新データ配列の作成 
    282     $arrUpdData = array( 
    283                     $name                                       // 名称    
    284                     ,$url                                       // URL 
    285                     ,$php_dir                                   // PHPディレクトリ 
    286                     ,$tpl_dir                                   // TPLディレクトリ 
    287                     ,$filename                                  // ファイル名 
    288                     ,sfChangeCheckBox($arrData['header_chk'])   // ヘッダー使用 
    289                     ,sfChangeCheckBox($arrData['footer_chk'])   // フッター使用 
    290                     ,$_SERVER['HTTP_REFERER']                   // 更新URL 
    291                     ); 
    292                      
    293     return $arrUpdData; 
    294 } 
    295  
    296 /************************************************************************************************************** 
    297  * 関数名  :lfErrorCheck 
    298  * 処理内容 :入力項目のエラーチェックを行う 
    299  * 引数1  :$arrData  ・・・ 入力データ 
    300  * 戻り値  :エラー情報 
    301  **************************************************************************************************************/ 
    302 function lfErrorCheck($array) { 
    303     global $objPage; 
    304      
    305     $objErr = new SC_CheckError($array); 
    306     $objErr->doFunc(array("名称", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    307     $objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    308  
    309     // URLチェック 
    310     if (substr(strrev(trim($array['url'])),0,1) == "/") { 
    311         $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 
    312     } 
    313      
    314     $check_url = USER_URL . $array['url'] . ".php"; 
    315     if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9_~=&\?\.\/-])+$", $check_url ) ) { 
    316         $objErr->arrErr['url'] = "※ URLを正しく入力してください。<br />"; 
    317     } 
    318  
    319     // 同一のURLが存在している場合にはエラー 
    320     if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){ 
    321         $arrChk = lfgetPageData(" url = ? " , array(USER_URL . $array['url'].".php")); 
    322  
    323         if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) { 
    324             $objErr->arrErr['url'] = '※ 同じURLのデータが存在しています。別のURLを付けてください。'; 
    325         } 
    326     } 
    327      
    328     return $objErr->arrErr; 
    329 } 
    330  
    331 /************************************************************************************************************** 
    332  * 関数名  :lfCreateFile 
    333  * 処理内容 :ファイルを作成する 
    334  * 引数1  :$path・・・テンプレートファイルのパス 
    335  * 戻り値  :なし 
    336  **************************************************************************************************************/ 
    337 function lfCreateFile($path){ 
    338      
    339     // ディレクトリが存在していなければ作成する      
    340     if (!is_dir(dirname($path))) { 
    341         mkdir(dirname($path)); 
    342     } 
    343  
    344     // ファイル作成 
    345     $fp = fopen($path,"w"); 
    346     fwrite($fp, $_POST['tpl_data']); 
    347     fclose($fp); 
    348 } 
    349  
    350 /************************************************************************************************************** 
    351  * 関数名  :lfCreatePHPFile 
    352  * 処理内容 :PHPファイルを作成する 
    353  * 引数1  :$path・・・PHPファイルのパス 
    354  * 戻り値  :なし 
    355  **************************************************************************************************************/ 
    356 function lfCreatePHPFile($path){ 
    357  
    358     // php保存先ディレクトリが存在していなければ作成する 
    359     if (!is_dir(dirname($path))) { 
    360         mkdir(dirname($path)); 
    361     } 
    362      
    363     // ベースとなるPHPファイルの読み込み 
    364     if (file_exists(USER_DEF_PHP)){ 
    365         $php_data = file_get_contents(USER_DEF_PHP);         
    366     } 
    367      
    368     // require.phpの場所を書き換える 
    369     $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data); 
    370      
    371     // phpファイルの作成 
    372     $fp = fopen($path,"w"); 
    373     fwrite($fp, $php_data); 
    374     fclose($fp); 
    375 } 
     15$objPage = new LC_Page_Admin_Design_MainEdit_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
     19?> 
Note: See TracChangeset for help on using the changeset viewer.