Changeset 16294


Ignore:
Timestamp:
2007/10/06 00:17:17 (17 years ago)
Author:
nanasess
Message:

暫定commit

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

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/html/admin/contents/campaign.php

    r15532 r16294  
    55 * http://www.lockon.co.jp/ 
    66 */ 
    7 require_once("../require.php"); 
    8 require_once("./campaign_csv.php"); 
    9 require_once(DATA_PATH . "include/file_manager.inc"); 
    107 
    11 //---- 認証可否の判定 
    12 $objSess = new SC_Session(); 
    13 sfIsSuccess($objSess); 
     8// {{{ requires 
     9require_once("../../require.php"); 
     10require_once(CLASS_PATH . "page_extends/admin/contents/LC_Page_Admin_Contents_Campaign_Ex.php"); 
    1411 
    15 //---- ページ表示クラス 
    16 class LC_Page { 
    17      
    18     function LC_Page() { 
    19         $this->tpl_mainpage = 'contents/campaign.tpl'; 
    20         $this->tpl_subnavi = 'contents/subnavi.tpl'; 
    21         $this->tpl_subno = "campaign"; 
    22         $this->tpl_mainno = 'contents'; 
    23         $this->tpl_subtitle = 'キャンペーン管理'; 
    24         // カートに商品が入っているにチェックが入っているかチェック 
    25         $this->tpl_onload = "fnIsCartOn();"; 
    26     } 
    27 } 
     12// }}} 
     13// {{{ generate page 
    2814 
    29  
    30 $objPage = new LC_Page(); 
    31 $objView = new SC_AdminView(); 
    32 $objQuery = new SC_Query(); 
    33 $objFormParam = new SC_FormParam(); 
    34  
    35 // 認証可否の判定 
    36 sfIsSuccess($objSess); 
    37  
    38 // パラメータ情報の初期化 
    39 lfInitParam(); 
    40 // フォームの値をセット 
    41 $objFormParam->setParam($_POST); 
    42  
    43 // 編集処理の場合は状態を保持 
    44 $objPage->is_update = $_POST['is_update']; 
    45  
    46 // フォームの値をテンプレートへ渡す 
    47 $objPage->arrForm = $objFormParam->getHashArray(); 
    48 $campaign_id = $_POST['campaign_id']; 
    49  
    50 switch($_POST['mode']) { 
    51     // 新規登録/編集登録 
    52     case 'regist': 
    53         // エラーチェック 
    54         $objPage->arrErr = lfErrorCheck($campaign_id); 
    55          
    56         if(count($objPage->arrErr) <= 0) { 
    57             // 登録 
    58             lfRegistCampaign($campaign_id); 
    59              
    60             // キャンペーンTOPへリダイレクト 
    61             header("location: ".URL_CAMPAIGN_TOP); 
    62         } 
    63      
    64         break; 
    65     // 編集押下時 
    66     case 'update': 
    67         // キャンペーン情報を取得 
    68         $objPage->arrForm = lfGetCampaign($campaign_id); 
    69         $objPage->is_update = true; 
    70         break; 
    71     // 削除押下時 
    72     case 'delete': 
    73         // 削除 
    74         lfDeleteCampaign($campaign_id); 
    75         // キャンペーンTOPへリダイレクト 
    76         header("location: ".URL_CAMPAIGN_TOP); 
    77         break; 
    78     // CSV出力 
    79     case 'csv': 
    80         // オプションの指定 
    81         $option = "ORDER BY create_date DESC"; 
    82              
    83         // CSV出力タイトル行の作成 
    84         $arrCsvOutput = sfSwapArray(sfgetCsvOutput(4, " WHERE csv_id = 4 AND status = 1")); 
    85              
    86         if (count($arrCsvOutput) <= 0) break; 
    87              
    88         $arrCsvOutputCols = $arrCsvOutput['col']; 
    89         $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 
    90         $head = sfGetCSVList($arrCsvOutputTitle); 
    91         $data = lfGetCSV("dtb_campaign_order", "campaign_id = ?", $option, array($campaign_id), $arrCsvOutputCols); 
    92              
    93         // CSVを送信する。 
    94         sfCSVDownload($head.$data); 
    95         exit; 
    96         break; 
    97     default: 
    98         break; 
    99 } 
    100  
    101 // キャンペーン一覧取得 
    102 $objPage->arrCampaign = lfGetCampaignList(); 
    103 $objPage->campaign_id = $campaign_id; 
    104  
    105 // キャンペーン期間用 
    106 $objDate = new SC_Date(); 
    107 $objPage->arrYear = $objDate->getYear(); 
    108 $objPage->arrMonth = $objDate->getMonth(); 
    109 $objPage->arrDay = $objDate->getDay(); 
    110 $objPage->arrHour = $objDate->getHour(); 
    111 $objPage->arrMinutes = $objDate->getMinutes(); 
    112  
    113 //---- ページ表示 
    114 $objView->assignobj($objPage); 
    115 $objView->display(MAIN_FRAME); 
    116  
    117  
    118 //--------------------------------------------------------------------------------------------------------------------------------------------------------- 
    119 /*  
    120  * 関数名:lfInitParam 
    121  * 説明 :入力情報の初期化 
    122  */ 
    123 function lfInitParam() { 
    124     global $objFormParam; 
    125          
    126     $objFormParam->addParam("キャンペーン名", "campaign_name", MTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
    127      
    128     $objFormParam->addParam("開始日時", "start_year", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    129     $objFormParam->addParam("開始日時", "start_month", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    130     $objFormParam->addParam("開始日時", "start_day", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    131     $objFormParam->addParam("開始日時", "start_hour", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    132     $objFormParam->addParam("開始日時", "start_minute", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    133  
    134     $objFormParam->addParam("停止日時", "end_year", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    135     $objFormParam->addParam("停止日時", "end_month", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    136     $objFormParam->addParam("停止日時", "end_day", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    137     $objFormParam->addParam("停止日時", "end_hour", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    138     $objFormParam->addParam("停止日時", "end_minute", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    139  
    140     $objFormParam->addParam("ディレクトリ名", "directory_name", MTEXT_LEN, "KVa", array("EXIST_CHECK","ALNUM_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
    141     $objFormParam->addParam("申込数制御", "limit_count", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    142     $objFormParam->addParam("重複申込制御", "orverlapping_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    143     $objFormParam->addParam("カートに商品を入れる", "cart_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    144     $objFormParam->addParam("送料無料設定", "deliv_free_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    145  
    146 } 
    147  
    148 /*  
    149  * 関数名:lfErrorCheck() 
    150  * 引数1 :キャンペーンID 
    151  * 説明 :エラーチェック 
    152  * 戻り値:エラー文字格納配列 
    153  */ 
    154 function lfErrorCheck($campaign_id = "") { 
    155      
    156     global $objQuery; 
    157     global $objFormParam; 
    158  
    159     $arrList = $objFormParam->getHashArray(); 
    160     $objErr = new SC_CheckError($arrList); 
    161     $objErr->arrErr = $objFormParam->checkError(); 
    162      
    163     $objErr->doFunc(array("開始日時", "start_year", "start_month", "start_day", "start_hour", "start_minute", "0"), array("CHECK_DATE2")); 
    164     $objErr->doFunc(array("停止日時", "end_year", "end_month", "end_day", "end_hour", "end_minute", "0"), array("CHECK_DATE2")); 
    165     $objErr->doFunc(array("開始日時", "停止日時", "start_year", "start_month", "start_day", "start_hour", "start_minute", "00", "end_year", "end_month", "end_day", "end_hour", "end_minute", "59"), array("CHECK_SET_TERM2")); 
    166      
    167     if(count($objErr->arrErr) <= 0) { 
    168  
    169         // 編集時用に元のディレクトリ名を取得する。 
    170         if($campaign_id != "") { 
    171             $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 
    172         } else { 
    173             $directory_name = ""; 
    174         } 
    175  
    176         // 同名のフォルダが存在する場合はエラー 
    177         if(file_exists(CAMPAIGN_TEMPLATE_PATH.$arrList['directory_name']) && $directory_name != $arrList['directory_name']) { 
    178             $objErr->arrErr['directory_name'] = "※ 同名のディレクトリがすでに存在します。<br/>"; 
    179         } 
    180         $ret = $objQuery->get("dtb_campaign", "directory_name", "directory_name = ? AND del_flg = 0", array($arrList['directory_name']));                
    181         // DBにすでに登録されていないかチェック 
    182         if($ret != "" && $directory_name != $arrList['directory_name']) { 
    183             $objErr->arrErr['directory_name'] = "※ すでに登録されているディレクトリ名です。<br/>"; 
    184         } 
    185     } 
    186      
    187     return $objErr->arrErr; 
    188 } 
    189  
    190 /*  
    191  * 関数名:lfRegistCampaign() 
    192  * 引数1 :キャンペーンID(アップデート時に指定) 
    193  * 説明 :キャンペーン登録/更新 
    194  * 戻り値:無し 
    195  */ 
    196 function lfRegistCampaign($campaign_id = "") { 
    197  
    198     global $objFormParam; 
    199     global $objQuery; 
    200      
    201     $objSiteInfo = new SC_SiteInfo(); 
    202     $arrInfo = $objSiteInfo->data; 
    203     $arrList = $objFormParam->getHashArray();    
    204  
    205     // 開始日時・終了日時整形 
    206     $start_date = $arrList['start_year']."-".sprintf("%02d", $arrList['start_month'])."-".sprintf("%02d", $arrList['start_day'])." ".sprintf("%02d", $arrList['start_hour']).":".sprintf("%02d", $arrList['start_minute']).":00"; 
    207     $end_date = $arrList['end_year']."-".sprintf("%02d", $arrList['end_month'])."-".sprintf("%02d", $arrList['end_day'])." ".sprintf("%02d", $arrList['end_hour']).":".sprintf("%02d", $arrList['end_minute']).":00"; 
    208  
    209     // ポイントレートは設定されていなければ0を挿入 
    210     if($arrInfo['point_rate'] == "") $arrInfo['point_rate'] = "0"; 
    211     // フラグは設定されていなければ0を挿入 
    212     if(!$arrList['limit_count']) $arrList['limit_count'] = "0"; 
    213     if(!$arrList['orverlapping_flg']) $arrList['orverlapping_flg'] = "0"; 
    214     if(!$arrList['cart_flg']) $arrList['cart_flg'] = "0"; 
    215     if(!$arrList['deliv_free_flg']) $arrList['deliv_free_flg'] = "0"; 
    216      
    217     $sqlval['campaign_name'] = $arrList['campaign_name']; 
    218     $sqlval['campaign_point_rate'] = $arrInfo['point_rate']; 
    219     $sqlval['start_date'] = $start_date; 
    220     $sqlval['end_date'] = $end_date; 
    221     $sqlval['directory_name'] = $arrList['directory_name']; 
    222     $sqlval['limit_count'] = $arrList['limit_count']; 
    223     $sqlval['orverlapping_flg'] = $arrList['orverlapping_flg']; 
    224     $sqlval['cart_flg'] = $arrList['cart_flg']; 
    225     $sqlval['deliv_free_flg'] = $arrList['deliv_free_flg']; 
    226     $sqlval['update_date'] = "now()"; 
    227      
    228     // キャンペーンIDで指定されている場合はupdate 
    229     if($campaign_id != "") { 
    230  
    231         // 元のディレクトリ名を取得名         
    232         $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 
    233         // ファイル名を変更 
    234         @rename(CAMPAIGN_TEMPLATE_PATH . $directory_name , CAMPAIGN_TEMPLATE_PATH . $arrList['directory_name']); 
    235         @rename(CAMPAIGN_PATH . $directory_name , CAMPAIGN_PATH . $arrList['directory_name']); 
    236  
    237         // update 
    238         $objQuery->update("dtb_campaign", $sqlval, "campaign_id = ?", array($campaign_id));  
    239          
    240     } else { 
    241  
    242         // キャンペーンページディレクトリ作成 
    243         lfCreateTemplate(CAMPAIGN_TEMPLATE_PATH, $arrList['directory_name']); 
    244  
    245         $sqlval['create_date'] = "now()";    
    246         // insert 
    247         $objQuery->insert("dtb_campaign", $sqlval);      
    248     } 
    249 } 
    250  
    251 /*  
    252  * 関数名:lfGetCampaignList() 
    253  * 説明 :キャンペーン一覧を取得 
    254  * 戻り値:キャンペーン一覧配列 
    255  */ 
    256 function lfGetCampaignList() { 
    257      
    258     global $objQuery; 
    259      
    260     $col = "campaign_id,campaign_name,directory_name,total_count"; 
    261     $objQuery->setorder("update_date DESC"); 
    262     $arrRet = $objQuery->select($col, "dtb_campaign", "del_flg = 0"); 
    263  
    264     return $arrRet; 
    265 } 
    266  
    267 /*  
    268  * 関数名:lfGetCampaign() 
    269  * 引数1 :キャンペーンID 
    270  * 説明 :キャンペーン情報取得 
    271  * 戻り値:キャンペーン情報配列 
    272  */ 
    273 function lfGetCampaign($campaign_id) { 
    274      
    275     global $objQuery; 
    276      
    277     $col = "campaign_id,campaign_name,start_date,end_date,directory_name,limit_count,orverlapping_flg,cart_flg,deliv_free_flg"; 
    278     $arrRet = $objQuery->select($col, "dtb_campaign", "campaign_id = ?", array($campaign_id)); 
    279  
    280     // 開始日時・停止日時を分解 
    281     $start_date = (date("Y/m/d/H/i/s" , strtotime($arrRet[0]['start_date']))); 
    282     list($arrRet[0]['start_year'],$arrRet[0]['start_month'],$arrRet[0]['start_day'],$arrRet[0]['start_hour'], $arrRet[0]['start_minute'], $arrRet[0]['start_second']) = split("/", $start_date); 
    283     $end_date = (date("Y/m/d/H/i/s" , strtotime($arrRet[0]['end_date']))); 
    284     list($arrRet[0]['end_year'],$arrRet[0]['end_month'],$arrRet[0]['end_day'],$arrRet[0]['end_hour'], $arrRet[0]['end_minute'], $arrRet[0]['end_second']) = split("/", $end_date); 
    285      
    286     return $arrRet[0]; 
    287 } 
    288  
    289 /*  
    290  * 関数名:lfDeleteCampaign() 
    291  * 引数1 :キャンペーンID 
    292  * 説明 :キャンペーン削除 
    293  * 戻り値:無し 
    294  */ 
    295 function lfDeleteCampaign($campaign_id) { 
    296  
    297     global $objQuery; 
    298      
    299     // ディレクトリ名を取得名       
    300     $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 
    301     // ファイルを削除 
    302     sfDeleteDir(CAMPAIGN_TEMPLATE_PATH . $directory_name); 
    303     sfDeleteDir(CAMPAIGN_PATH . $directory_name); 
    304  
    305     $sqlval['del_flg'] = 1;  
    306     $sqlval['update_date'] = "now()";    
    307     // delete 
    308     $objQuery->update("dtb_campaign", $sqlval, "campaign_id = ?", array($campaign_id));      
    309 } 
    310  
    311 /*  
    312  * 関数名:lfCreateTemplate() 
    313  * 引数1 :ディレクトリパス 
    314  * 引数2 :作成ファイル名 
    315  * 説明 :キャンペーンの初期テンプレート作成 
    316  * 戻り値:無し 
    317  */ 
    318 function lfCreateTemplate($dir, $file) { 
    319      
    320     global $objFormParam; 
    321     $arrRet = $objFormParam->getHashArray(); 
    322  
    323      
    324     // 作成ファイルディレクトリ 
    325     $create_dir = $dir . $file; 
    326     $create_active_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 
    327     $create_end_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_END; 
    328     // デフォルトファイルディレクトリ 
    329     $default_dir = $dir . "default"; 
    330     $default_active_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 
    331     $default_end_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_END; 
    332      
    333     $ret = sfCreateFile($create_dir, 0755);  
    334     $ret = sfCreateFile($create_active_dir, 0755);   
    335     $ret = sfCreateFile($create_end_dir, 0755); 
    336  
    337     // キャンペーン実行PHPをコピー 
    338     $ret = sfCreateFile(CAMPAIGN_PATH . $file); 
    339     copy($default_dir . "/src/index.php", CAMPAIGN_PATH . $file . "/index.php"); 
    340     copy($default_dir . "/src/application.php", CAMPAIGN_PATH . $file . "/application.php"); 
    341     copy($default_dir . "/src/complete.php", CAMPAIGN_PATH . $file . "/complete.php"); 
    342     copy($default_dir . "/src/entry.php", CAMPAIGN_PATH . $file . "/entry.php"); 
    343  
    344     // デフォルトテンプレート作成(キャンペーン中) 
    345     $header = lfGetFileContents($default_active_dir."header.tpl"); 
    346     sfWriteFile($header, $create_active_dir."header.tpl", "w"); 
    347     $contents = lfGetFileContents($default_active_dir."contents.tpl"); 
    348     if(!$arrRet['cart_flg']) { 
    349         $contents .= "\n" . '<!--{*ログインフォーム*}-->' . "\n"; 
    350         $contents .= lfGetFileContents(CAMPAIGN_BLOC_PATH . "login.tpl"); 
    351         $contents .= '<!--{*会員登録フォーム*}-->'."\n"; 
    352         $contents .= lfGetFileContents(CAMPAIGN_BLOC_PATH . "entry.tpl"); 
    353     } 
    354     sfWriteFile($contents, $create_active_dir."contents.tpl", "w"); 
    355     $footer = lfGetFileContents($default_active_dir."footer.tpl"); 
    356     sfWriteFile($footer, $create_active_dir."footer.tpl", "w"); 
    357      
    358     // サイトフレーム作成 
    359     $site_frame  = $header."\n"; 
    360     $site_frame .= '<script type="text/javascript" src="<!--{$smarty.const.URL_DIR}-->js/navi.js"></script>'."\n"; 
    361     $site_frame .= '<script type="text/javascript" src="<!--{$smarty.const.URL_DIR}-->js/site.js"></script>'."\n"; 
    362     $site_frame .= '<!--{include file=$tpl_mainpage}-->'."\n"; 
    363     $site_frame .= $footer."\n"; 
    364     sfWriteFile($site_frame, $create_active_dir."site_frame.tpl", "w"); 
    365  
    366     /* デフォルトテンプレート作成(キャンペーン終了) */ 
    367     $header = lfGetFileContents($default_end_dir."header.tpl"); 
    368     sfWriteFile($header, $create_end_dir."header.tpl", "w"); 
    369     $contents = lfGetFileContents($default_end_dir."contents.tpl"); 
    370     sfWriteFile($contents, $create_end_dir."contents.tpl", "w"); 
    371     $footer = lfGetFileContents($default_end_dir."footer.tpl"); 
    372     sfWriteFile($footer, $create_end_dir."footer.tpl", "w"); 
    373 } 
    374  
    375 /*  
    376  * 関数名:lfGetFileContents() 
    377  * 引数1 :ファイルパス 
    378  * 説明 :ファイル読込 
    379  * 戻り値:無し 
    380  */ 
    381 function lfGetFileContents($read_file) { 
    382      
    383     if(file_exists($read_file)) { 
    384         $contents = file_get_contents($read_file); 
    385     } else { 
    386         $contents = "";      
    387     } 
    388      
    389     return $contents; 
    390 } 
     15$objPage = new LC_Page_Admin_Contents_Campaign_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    39119?> 
Note: See TracChangeset for help on using the changeset viewer.