Changeset 15640


Ignore:
Timestamp:
2007/09/07 12:49:03 (17 years ago)
Author:
nanasess
Message:

クラス化に伴う修正

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

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/html/admin/mail/index.php

    r15532 r15640  
    55 * http://www.lockon.co.jp/ 
    66 */ 
    7 require_once("../require.php"); 
    8 require_once("./inc_mailmagazine.php"); 
    97 
    10 class LC_Page { 
    11     var $arrSession; 
    12     var $arrHtmlmail; 
    13     var $arrNowDate; 
    14     function LC_Page() { 
    15         $this->tpl_mainpage = 'mail/index.tpl'; 
    16         $this->tpl_mainno = 'mail'; 
    17         $this->tpl_subnavi = 'mail/subnavi.tpl'; 
    18         $this->tpl_subno = "index"; 
    19         $this->tpl_pager = DATA_PATH . 'Smarty/templates/admin/pager.tpl'; 
    20         $this->tpl_subtitle = '配信内容設定'; 
    21          
    22         global $arrPref; 
    23         $this->arrPref = $arrPref; 
    24         global $arrJob; 
    25         $arrJob["不明"] = "不明"; 
    26         $this->arrJob = $arrJob; 
    27         global $arrSex;      
    28         $this->arrSex = $arrSex; 
    29         global $arrMailType; 
    30         $this->arrMailType = $arrMailType; 
    31         global $arrPageRows; 
    32         $this->arrPageRows = $arrPageRows; 
    33         // ページナビ用 
    34         $this->tpl_pageno = $_POST['search_pageno']; 
    35         global $arrMAILMAGATYPE; 
    36         $this->arrMAILMAGATYPE = $arrMAILMAGATYPE; 
    37         $this->arrHtmlmail[''] = "すべて"; 
    38         $this->arrHtmlmail[1] = $arrMAILMAGATYPE[1]; 
    39         $this->arrHtmlmail[2] = $arrMAILMAGATYPE[2]; 
    40         global $arrCustomerType; 
    41         $this->arrCustomerType = $arrCustomerType; 
    42     } 
    43 } 
     8// {{{ requires 
     9require_once("../../require.php"); 
     10require_once(CLASS_PATH . "page_extends/admin/mail/LC_Page_Admin_Mail_Ex.php"); 
    4411 
    45 class LC_HTMLtemplate { 
    46     var $list_data; 
    47 } 
     12// }}} 
     13// {{{ generate page 
    4814 
    49 //---- ページ初期設定 
    50 $conn = new SC_DBConn(); 
    51 $objPage = new LC_Page(); 
    52 $objView = new SC_AdminView(); 
    53 $objDate = new SC_Date(); 
    54 $objQuery = new SC_Query(); 
    55 $objPage->objDate = $objDate; 
    56 $objPage->arrTemplate = getTemplateList($conn); 
    57  
    58 $objSess = new SC_Session(); 
    59  
    60 // 認証可否の判定 
    61 sfIsSuccess($objSess); 
    62  
    63 /* 
    64     query:配信履歴「確認」 
    65 */ 
    66 if ($_GET["mode"] == "query" && sfCheckNumLength($_GET["send_id"])) { 
    67     // 送信履歴より、送信条件確認画面 
    68     $sql = "SELECT search_data FROM dtb_send_history WHERE send_id = ?"; 
    69     $result = $conn->getOne($sql, array($_GET["send_id"])); 
    70     $tpl_path = "mail/query.tpl"; 
    71          
    72     $list_data = unserialize($result); 
    73      
    74     // 都道府県を変換 
    75     $list_data['pref_disp'] = $objPage->arrPref[$list_data['pref']]; 
    76      
    77     // 配信形式 
    78     $list_data['htmlmail_disp'] = $objPage->arrHtmlmail[$list_data['htmlmail']]; 
    79      
    80     // 性別の変換 
    81     if (count($list_data['sex']) > 0) { 
    82         foreach($list_data['sex'] as $key => $val){ 
    83             $list_data['sex'][$key] = $objPage->arrSex[$val]; 
    84             $sex_disp .= $list_data['sex'][$key] . " "; 
    85         } 
    86         $list_data['sex_disp'] = $sex_disp; 
    87     } 
    88      
    89     // 職業の変換 
    90     if (count($list_data['job']) > 0) { 
    91         foreach($list_data['job'] as $key => $val){ 
    92             $list_data['job'][$key] = $objPage->arrJob[$val]; 
    93             $job_disp .= $list_data['job'][$key] . " "; 
    94         } 
    95         $list_data['job_disp'] = $job_disp; 
    96     } 
    97          
    98     // カテゴリ変換 
    99     $arrCatList = sfGetCategoryList(); 
    100     $list_data['category_name'] = $arrCatList[$list_data['category_id']]; 
    101      
    102     $objPage->list_data = $list_data; 
    103  
    104     $objView->assignobj($objPage); 
    105     $objView->display($tpl_path); 
    106     exit; 
    107 } 
    108  
    109 if($_POST['mode'] == 'delete') { 
    110 } 
    111  
    112 switch($_POST['mode']) { 
    113 /* 
    114     search:「検索」ボタン 
    115     back:検索結果画面「戻る」ボタン 
    116 */ 
    117 case 'delete': 
    118 case 'search': 
    119 case 'back': 
    120     //-- 入力値コンバート 
    121     $objPage->list_data = lfConvertParam($_POST, $arrSearchColumn); 
    122          
    123     //-- 入力エラーのチェック 
    124     $objPage->arrErr = lfErrorCheck($objPage->list_data); 
    125  
    126     //-- 検索開始 
    127     if (!is_array($objPage->arrErr)) { 
    128         $objPage->list_data['name'] = sfManualEscape($objPage->list_data['name']); 
    129         // hidden要素作成 
    130         $objPage->arrHidden = lfGetHidden($objPage->list_data); 
    131  
    132         //-- 検索データ取得     
    133         $objSelect = new SC_CustomerList($objPage->list_data, "magazine"); 
    134         // 生成されたWHERE文を取得する      
    135         list($where, $arrval) = $objSelect->getWhere(); 
    136      
    137         // 「WHERE」部分を削除する。 
    138         $where = ereg_replace("^WHERE", "", $where); 
    139  
    140         // 検索結果の取得 
    141         $objQuery = new SC_Query(); 
    142         $from = "dtb_customer"; 
    143  
    144         // 行数の取得 
    145         $linemax = $objQuery->count($from, $where, $arrval); 
    146         $objPage->tpl_linemax = $linemax;               // 何件が該当しました。表示用 
    147          
    148         // ページ送りの取得 
    149         $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, SEARCH_PMAX, "fnResultPageNavi", NAVI_PMAX); 
    150         $objPage->arrPagenavi = $objNavi->arrPagenavi;   
    151         $startno = $objNavi->start_row; 
    152  
    153         // 取得範囲の指定(開始行番号、行数のセット) 
    154         $objQuery->setlimitoffset(SEARCH_PMAX, $startno); 
    155         // 表示順序 
    156         $objQuery->setorder("customer_id DESC"); 
    157          
    158         // 検索結果の取得   
    159         $col = $objSelect->getMailMagazineColumn(lfGetIsMobile($_POST['mail_type'])); 
    160         $objPage->arrResults = $objQuery->select($col, $from, $where, $arrval); 
    161         //現在時刻の取得 
    162         $objPage->arrNowDate = lfGetNowDate(); 
    163     } 
    164     break; 
    165 /* 
    166     input:検索結果画面「htmlmail内容設定」ボタン 
    167 */ 
    168 case 'input': 
    169     //-- 入力値コンバート 
    170     $objPage->list_data = lfConvertParam($_POST, $arrSearchColumn); 
    171     //-- 入力エラーのチェック 
    172     $objPage->arrErr = lfErrorCheck($objPage->list_data); 
    173     //-- エラーなし 
    174     if (!is_array($objPage->arrErr)) { 
    175         //-- 現在時刻の取得 
    176         $objPage->arrNowDate = lfGetNowDate(); 
    177         $objPage->arrHidden = lfGetHidden($objPage->list_data); // hidden要素作成 
    178         $objPage->tpl_mainpage = 'mail/input.tpl'; 
    179     } 
    180     break; 
    181 /* 
    182     template:テンプレート選択 
    183 */ 
    184 case 'template': 
    185     //-- 入力値コンバート 
    186     $objPage->list_data = lfConvertParam($_POST, $arrSearchColumn); 
    187      
    188     //-- 時刻設定の取得 
    189     $objPage->arrNowDate['year'] = $_POST['send_year']; 
    190     $objPage->arrNowDate['month'] = $_POST['send_month']; 
    191     $objPage->arrNowDate['day'] = $_POST['send_day']; 
    192     $objPage->arrNowDate['hour'] = $_POST['send_hour']; 
    193     $objPage->arrNowDate['minutes'] = $_POST['send_minutes']; 
    194      
    195     //-- 入力エラーのチェック 
    196     $objPage->arrErr = lfErrorCheck($objPage->list_data); 
    197  
    198     //-- 検索開始 
    199     if ( ! is_array($objPage->arrErr)) { 
    200         $objPage->list_data['name'] = sfManualEscape($objPage->list_data['name']); 
    201         $objPage->arrHidden = lfGetHidden($objPage->list_data); // hidden要素作成 
    202      
    203         $objPage->tpl_mainpage = 'mail/input.tpl'; 
    204         $template_data = getTemplateData($conn, $_POST['template_id']); 
    205         if ( $template_data ){ 
    206             foreach( $template_data as $key=>$val ){ 
    207                 $objPage->list_data[$key] = $val; 
    208             } 
    209         } 
    210  
    211         //-- HTMLテンプレートを使用する場合は、HTMLソースを生成してBODYへ挿入 
    212         if ( $objPage->list_data["mail_method"] == 3) { 
    213             $objTemplate = new LC_HTMLtemplate; 
    214             $objTemplate->list_data = lfGetHtmlTemplateData($_POST['template_id']); 
    215             $objSiteInfo = new SC_SiteInfo(); 
    216             $objTemplate->arrInfo = $objSiteInfo->data; 
    217             //メール担当写真の表示 
    218             $objUpFile = new SC_UploadFile(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
    219             $objUpFile->addFile("メール担当写真", 'charge_image', array('jpg'), IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT); 
    220             $objUpFile->setDBFileList($objTemplate->list_data); 
    221             $objTemplate->arrFile = $objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL); 
    222             $objMakeTemplate = new SC_AdminView(); 
    223             $objMakeTemplate->assignobj($objTemplate);       
    224             $objPage->list_data["body"] = $objMakeTemplate->fetch("mail/html_template.tpl"); 
    225         } 
    226     } 
    227     break; 
    228 /* 
    229     regist_confirm:「入力内容を確認」 
    230     regist_back:「テンプレート設定画面へ戻る」 
    231     regist_complete:「登録」 
    232 */   
    233 case 'regist_confirm': 
    234 case 'regist_back': 
    235 case 'regist_complete': 
    236     //-- 入力値コンバート 
    237     $arrCheckColumn = array_merge( $arrSearchColumn, $arrRegistColumn ); 
    238     $objPage->list_data = lfConvertParam($_POST, $arrCheckColumn); 
    239      
    240     //現在時刻の取得 
    241     $objPage->arrNowDate = lfGetNowDate(); 
    242  
    243     //-- 入力エラーのチェック 
    244     $objPage->arrErr = lfErrorCheck($objPage->list_data, 1); 
    245     $objPage->tpl_mainpage = 'mail/input.tpl'; 
    246     $objPage->arrHidden = lfGetHidden($objPage->list_data); // hidden要素作成 
    247      
    248     //-- 検索開始 
    249     if ( ! is_array($objPage->arrErr)) { 
    250             $objPage->list_data['name'] = sfManualEscape($objPage->list_data['name']); 
    251         if ( $_POST['mode'] == 'regist_confirm'){ 
    252             $objPage->tpl_mainpage = 'mail/input_confirm.tpl'; 
    253         } else if( $_POST['mode'] == 'regist_complete' ){ 
    254             lfRegistData($objPage->list_data); 
    255             if(MELMAGA_SEND == true) { 
    256                 if(MELMAGA_BATCH_MODE) { 
    257                     header("Location: " . URL_DIR . "admin/mail/history.php"); 
    258                 } else {     
    259                     header("Location: " . URL_DIR . "admin/mail/sendmail.php?mode=now"); 
    260                 } 
    261                 exit; 
    262             } else { 
    263                 sfErrorHeader(">> 本サイトではメルマガ配信は行えません。"); 
    264             } 
    265         } 
    266     } 
    267     break; 
    268 default: 
    269     $objPage->list_data['mail_type'] = 1; 
    270     break; 
    271 } 
    272  
    273 // 配信時間の年を、「現在年~現在年+1」の範囲に設定 
    274 for ($year=date("Y"); $year<=date("Y") + 1;$year++){ 
    275     $arrYear[$year] = $year; 
    276 } 
    277 $objPage->arrYear = $arrYear; 
    278  
    279 $objPage->arrCustomerOrderId = lfGetCustomerOrderId($_POST['buy_product_code']); 
    280  
    281 $objPage->arrCatList = sfGetCategoryList(); 
    282  
    283 $objPage->arrCampaignList = lfGetCampaignList(); 
    284  
    285 //---- ページ表示 
    286 $objView->assignobj($objPage); 
    287 $objView->display(MAIN_FRAME); 
    288  
    289 //------------------------------------------------------------------------------------------------------------------------------- 
    290  
    291 // 商品コードで検索された場合にヒットした受注番号を取得する。 
    292 function lfGetCustomerOrderId($keyword) { 
    293     if($keyword != "") { 
    294         $col = "dtb_order.customer_id, dtb_order.order_id"; 
    295         $from = "dtb_order LEFT JOIN dtb_order_detail USING(order_id)"; 
    296         $where = "product_code LIKE ? AND del_flg = 0"; 
    297         $val = sfManualEscape($keyword); 
    298         $arrVal[] = "%$val%"; 
    299         $objQuery = new SC_Query(); 
    300         $objQuery->setgroupby("customer_id, order_id"); 
    301         $arrRet = $objQuery->select($col, $from, $where, $arrVal); 
    302         $arrCustomerOrderId = sfArrKeyValues($arrRet, "customer_id", "order_id"); 
    303     } 
    304     return $arrCustomerOrderId;  
    305 } 
    306  
    307 function lfMakeCsvData( $send_id ){ 
    308          
    309     global $conn; 
    310  
    311     $arrTitle  = array(  'name01','email'); 
    312                  
    313     $sql = "SELECT name01,email FROM dtb_send_customer WHERE send_id = ? ORDER BY email"; 
    314     $result = $conn->getAll($sql, array($send_id) ); 
    315      
    316     if ( $result ){ 
    317         $return = lfGetCSVData( $result, $arrTitle); 
    318     } 
    319     return $return;  
    320 } 
    321  
    322 //---- CSV出力用データ取得 
    323 function lfGetCSVData( $array, $arrayIndex){     
    324      
    325     for ($i=0; $i<count($array); $i++){ 
    326          
    327         for ($j=0; $j<count($array[$i]); $j++ ){ 
    328             if ( $j > 0 ) $return .= ","; 
    329             $return .= "\"";             
    330             if ( $arrayIndex ){ 
    331                 $return .= mb_ereg_replace("<","<",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\"";    
    332             } else { 
    333                 $return .= mb_ereg_replace("<","<",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\""; 
    334             } 
    335         } 
    336         $return .= "\n";             
    337     } 
    338     return $return; 
    339 } 
    340  
    341 //現在時刻の取得(配信時間デフォルト値) 
    342 function lfGetNowDate(){ 
    343     $nowdate = date("Y/n/j/G/i"); 
    344     list($year, $month, $day, $hour, $minute) = split("[/]", $nowdate); 
    345     $arrNowDate = array( 'year' => $year, 'month' => $month, 'day' => $day, 'hour' => $hour, 'minutes' => $minute); 
    346     foreach ($arrNowDate as $key => $val){ 
    347         switch ($key){ 
    348             case 'minutes': 
    349             $val = ereg_replace('^[0]','', $val); 
    350             if ($val < 30){ 
    351             $list_date[$key] = '30'; 
    352             }else{ 
    353             $list_date[$key] = '00'; 
    354             } 
    355             break; 
    356             case 'year': 
    357             case 'month': 
    358             case 'day': 
    359             $list_date[$key] = $val; 
    360             break; 
    361         } 
    362     } 
    363         if ($arrNowDate['minutes'] < 30){ 
    364             $list_date['hour'] = $hour; 
    365         }else{ 
    366             $list_date['hour'] = $hour + 1; 
    367         } 
    368     return $list_date; 
    369 } 
    370  
    371 // 配信内容と配信リストを書き込む 
    372 function lfRegistData($arrData){ 
    373      
    374     global $conn; 
    375     global $arrSearchColumn; 
    376      
    377     $objQuery = new SC_Query(); 
    378     $objSelect = new SC_CustomerList( lfConvertParam($arrData, $arrSearchColumn), "magazine" ); 
    379      
    380     $search_data = $conn->getAll($objSelect->getListMailMagazine(lfGetIsMobile($_POST['mail_type'])), $objSelect->arrVal); 
    381     $dataCnt = count($search_data); 
    382      
    383     $dtb_send_history = array(); 
    384     if(DB_TYPE=='pgsql'){ 
    385     $dtb_send_history["send_id"] = $objQuery->nextval('dtb_send_history', 'send_id'); 
    386     } 
    387     $dtb_send_history["mail_method"] = $arrData['mail_method']; 
    388     $dtb_send_history["subject"] = $arrData['subject']; 
    389     $dtb_send_history["body"] = $arrData['body']; 
    390     if(MELMAGA_BATCH_MODE) { 
    391         $dtb_send_history["start_date"] = $arrData['send_year'] ."/".$arrData['send_month']."/".$arrData['send_day']." ".$arrData['send_hour'].":".$arrData['send_minutes']; 
    392     } else { 
    393         $dtb_send_history["start_date"] = "now()"; 
    394     } 
    395     $dtb_send_history["creator_id"] = $_SESSION['member_id']; 
    396     $dtb_send_history["send_count"] = $dataCnt; 
    397     $arrData['body'] = ""; 
    398     $dtb_send_history["search_data"] = serialize($arrData); 
    399     $dtb_send_history["update_date"] = "now()"; 
    400     $dtb_send_history["create_date"] = "now()"; 
    401     $objQuery->insert("dtb_send_history", $dtb_send_history );   
    402     if(DB_TYPE == "mysql"){ 
    403         $dtb_send_history["send_id"] = $objQuery->nextval('dtb_send_history','send_id'); 
    404     } 
    405     if ( is_array( $search_data ) ){ 
    406         foreach( $search_data as $line ){ 
    407             $dtb_send_customer = array(); 
    408             $dtb_send_customer["customer_id"] = $line["customer_id"]; 
    409             $dtb_send_customer["send_id"] = $dtb_send_history["send_id"]; 
    410             $dtb_send_customer["email"] = $line["email"]; 
    411              
    412             $dtb_send_customer["name"] = $line["name01"] . " " . $line["name02"]; 
    413                  
    414             $conn->autoExecute("dtb_send_customer", $dtb_send_customer );                    
    415         }    
    416     }    
    417 } 
    418  
    419 // キャンペーン一覧 
    420 function lfGetCampaignList() { 
    421      
    422     global $objQuery; 
    423      
    424     $sql = "SELECT campaign_id, campaign_name FROM dtb_campaign ORDER BY update_date DESC"; 
    425     $arrResult = $objQuery->getall($sql); 
    426  
    427     foreach($arrResult as $arrVal) { 
    428         $arrCampaign[$arrVal['campaign_id']] = $arrVal['campaign_name']; 
    429     } 
    430  
    431     return $arrCampaign; 
    432 } 
    433  
    434 function lfGetIsMobile($mail_type) { 
    435     // 検索結果の取得           
    436     $is_mobile = false; 
    437     switch($mail_type) { 
    438         case 1: 
    439             $is_mobile = false; 
    440             break; 
    441         case 2: 
    442             $is_mobile = true;       
    443             break; 
    444         default: 
    445             $is_mobile = false; 
    446             break; 
    447     } 
    448      
    449     return $is_mobile; 
    450 } 
     15$objPage = new LC_Page_Admin_Mail_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    45119?> 
Note: See TracChangeset for help on using the changeset viewer.