source: branches/feature-module-update/html/admin/mail/inc_mailmagazine.php @ 15078

Revision 15078, 11.7 KB checked in by nanasess, 17 years ago (diff)

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 *
7 * CSV配信機能実装のため、共通部分を外部ファイル化しました。<br>
8 * @author hirokazu_fukuda
9 * @version 2005/12/27
10 */
11
12
13//---- 検索用項目配列
14$objPage->arrHtmlmail = array( "" => "両方",  1 => "HTML", 2 => "TEXT" );
15
16
17//---- 配列内容専用項目の配列
18$arrRegistColumn = array(
19                             array(  "column" => "template_id",     "convert" => "n" )
20                            ,array(  "column" => "mail_method",     "convert" => "n" )
21                            ,array(  "column" => "send_year",       "convert" => "n" )
22                            ,array(  "column" => "send_month",      "convert" => "n" )
23                            ,array(  "column" => "send_day",        "convert" => "n" )
24                            ,array(  "column" => "send_hour",       "convert" => "n" )
25                            ,array(  "column" => "send_minutes",    "convert" => "n" )
26                            ,array(  "column" => "subject",         "convert" => "aKV" )
27                            ,array(  "column" => "body",            "convert" => "KV" )
28                        );
29
30//---- メルマガ会員種別
31$arrCustomerType = array(
32                        1 => "会員",
33                        2 => "非会員",
34                        //3 => "CSV登録"
35                        );
36
37//---- 検索項目
38$arrSearchColumn = array(
39                            array(  "column" => "name",             "convert" => "aKV"),
40                            array(  "column" => "pref",             "convert" => "n" ),
41                            array(  "column" => "kana",             "convert" => "CKV"),
42                            array(  "column" => "sex",              "convert" => "" ),
43                            array(  "column" => "tel",              "convert" => "n" ),
44                            array(  "column" => "job",              "convert" => "" ),
45                            array(  "column" => "email",            "convert" => "a" ),
46                            array(  "column" => "email_mobile",     "convert" => "a" ),                         
47                            array(  "column" => "htmlmail",         "convert" => "n" ),
48                            array(  "column" => "customer",         "convert" => "" ),
49                            array(  "column" => "buy_total_from",   "convert" => "n" ),
50                            array(  "column" => "buy_total_to",     "convert" => "n" ),
51                            array(  "column" => "buy_times_from",   "convert" => "n" ),
52                            array(  "column" => "buy_times_to",     "convert" => "n" ),
53                            array(  "column" => "birth_month",      "convert" => "n" ),
54                            array(  "column" => "b_start_year",     "convert" => "n" ),
55                            array(  "column" => "b_start_month",    "convert" => "n" ),
56                            array(  "column" => "b_start_day",      "convert" => "n" ),
57                            array(  "column" => "b_end_year",       "convert" => "n" ),
58                            array(  "column" => "b_end_month",      "convert" => "n" ),
59                            array(  "column" => "b_end_day",        "convert" => "n" ),
60                            array(  "column" => "start_year",       "convert" => "n" ),
61                            array(  "column" => "start_month",      "convert" => "n" ),
62                            array(  "column" => "start_day",        "convert" => "n" ),
63                            array(  "column" => "end_year",         "convert" => "n" ),
64                            array(  "column" => "end_month",        "convert" => "n" ),
65                            array(  "column" => "end_day",          "convert" => "n" ),
66                            array(  "column" => "buy_start_year",   "convert" => "n" ),
67                            array(  "column" => "buy_start_month",  "convert" => "n" ),
68                            array(  "column" => "buy_start_day",    "convert" => "n" ),
69                            array(  "column" => "buy_end_year",     "convert" => "n" ),
70                            array(  "column" => "buy_end_month",    "convert" => "n" ),
71                            array(  "column" => "buy_end_day",      "convert" => "n" ),
72                            array(  "column" => "buy_product_code", "convert" => "aKV" )
73                            ,array(  "column" => "buy_product_name",    "convert" => "aKV" )
74                            ,array(  "column" => "category_id", "convert" => "" )           
75                            ,array(  "column" => "buy_total_from",  "convert" => "n" )     
76                            ,array(  "column" => "buy_total_to",    "convert" => "n" )
77                            ,array(  "column" => "campaign_id", "convert" => "" )
78                            ,array(  "column" => "mail_type",           "convert" => "" )
79
80                    );
81
82//--------------------------------------------------------------------------------------------------------------------------------------
83
84//---- HTMLテンプレートを使用する場合、データを取得する。 
85function lfGetHtmlTemplateData($id) {
86   
87    global $conn;
88    $sql = "SELECT * FROM dtb_mailmaga_template WHERE template_id = ?";
89    $result = $conn->getAll($sql, array($id));
90    $list_data = $result[0];
91
92    // メイン商品の情報取得
93    $sql = "SELECT name, main_image, point_rate, deliv_fee, price01_min, price01_max, price02_min, price02_max FROM vw_products_allclass AS allcls WHERE product_id = ?";
94    $main = $conn->getAll($sql, array($list_data["main_product_id"]));
95    $list_data["main"] = $main[0];
96
97    // サブ商品の情報取得
98    $sql = "SELECT product_id, name, main_list_image, price01_min, price01_max, price02_min, price02_max FROM vw_products_allclass AS allcls WHERE product_id = ?";
99    $k = 0;
100    $l = 0;
101    for ($i = 1; $i <= 12; $i ++) {
102        if ($l == 4) {
103            $l = 0;
104            $k ++;
105        }
106        $result = "";
107        $j = sprintf("%02d", $i);
108        if ($i > 0 && $i < 5 ) $k = 0;
109        if ($i > 4 && $i < 9 ) $k = 1;
110        if ($i > 8 && $i < 13 ) $k = 2;
111       
112        if (is_numeric($list_data["sub_product_id" .$j])) {
113            $result = $conn->getAll($sql, array($list_data["sub_product_id" .$j]));
114            $list_data["sub"][$k][$l] = $result[0];
115            $list_data["sub"][$k]["data_exists"] = "OK";    //当該段にデータが1つ以上存在するフラグ
116        }
117        $l ++;
118    }
119    return $list_data;
120}
121
122//---   テンプレートの種類を返す
123function lfGetTemplateMethod($conn, $templata_id){
124   
125    if ( sfCheckNumLength($template_id) ){
126        $sql = "SELECT mail_method FROM dtb_mailmaga_template WEHRE template_id = ?";
127    }   
128}
129
130//---   hidden要素出力用配列の作成
131function lfGetHidden( $array ){
132    if ( is_array($array) ){
133        foreach( $array as $key => $val ){
134            if ( is_array( $val )){
135                for ( $i=0; $i<count($val); $i++){
136                    $return[ $key.'['.$i.']'] = $val[$i];
137                }               
138            } else {
139                $return[$key] = $val;           
140            }
141        }
142    }
143    return $return;
144}
145
146//---- 取得文字列の変換
147function lfConvertParam($array, $arrSearchColumn) {
148   
149    // 文字変換
150    foreach ($arrSearchColumn as $data) {
151        $arrConvList[ $data["column"] ] = $data["convert"];
152    }
153
154    $new_array = array();
155    foreach ($arrConvList as $key => $val) {
156        if ( strlen($array[$key]) > 0 ){                        // データのあるものだけ返す
157            $new_array[$key] = $array[$key];
158            if( strlen($val) > 0) {
159                $new_array[$key] = mb_convert_kana($new_array[$key] ,$val);
160            }
161        }
162    }
163    return $new_array;
164   
165}
166
167
168//---- 入力エラーチェック
169function lfErrorCheck($array, $flag = '') {
170
171    // flag は登録時用
172   
173    $objErr = new SC_CheckError($array);
174   
175    $objErr->doFunc(array("顧客コード", "customer_id", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
176    $objErr->doFunc(array("都道府県", "pref", 2), array("NUM_CHECK","MAX_LENGTH_CHECK"));
177    $objErr->doFunc(array("顧客名", "name", STEXT_LEN), array("MAX_LENGTH_CHECK"));
178    $objErr->doFunc(array("顧客名(カナ)", "kana", STEXT_LEN), array("KANA_CHECK", "MAX_LENGTH_CHECK"));
179
180    $objErr->doFunc(array('メールアドレス', "email", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
181    $objErr->doFunc(array("電話番号", "tel", TEL_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
182       
183    $objErr->doFunc(array("購入回数(開始)", "buy_times_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
184    $objErr->doFunc(array("購入回数(終了)", "buy_times_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
185    if ((is_numeric($array["buy_total_from"]) && is_numeric($array["buy_total_to"]) ) && ($array["buy_times_from"] > $array["buy_times_to"]) ) $objErr->arrErr["buy_times_from"] .= "※ 購入回数の指定範囲が不正です。";
186   
187    $objErr->doFunc(array("誕生月", "birth_month", 2), array("NUM_CHECK","MAX_LENGTH_CHECK"));
188   
189    $objErr->doFunc(array("誕生日(開始日)", "b_start_year", "b_start_month", "b_start_day",), array("CHECK_DATE"));
190    $objErr->doFunc(array("誕生日(終了日)", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_DATE")); 
191    $objErr->doFunc(array("誕生日(開始日)","誕生日(終了日)", "b_start_year", "b_start_month", "b_start_day", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_SET_TERM"));
192   
193    $objErr->doFunc(array("登録・更新日(開始日)", "start_year", "start_month", "start_day",), array("CHECK_DATE"));
194    $objErr->doFunc(array("登録・更新日(終了日)", "end_year", "end_month", "end_day"), array("CHECK_DATE"));
195    $objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)", "start_year", "start_month", "start_day", "end_year", "end_month", "end_day"), array("CHECK_SET_TERM"));
196   
197    $objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE"));
198    $objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE"));   
199    $objErr->doFunc(array("最終購入日(開始日)","登録・更新日(終了日)", "buy_start_year", "buy_start_month", "buy_start_day", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_SET_TERM"));
200   
201    $objErr->doFunc(array("購入商品コード", "buy_product_code", STEXT_LEN), array("MAX_LENGTH_CHECK"));
202
203    $objErr->doFunc(array("購入商品名", "buy_product_name", STEXT_LEN), array("MAX_LENGTH_CHECK"));
204   
205    $objErr->doFunc(array("購入金額(開始)", "buy_total_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));   
206    $objErr->doFunc(array("購入金額(終了)", "buy_total_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
207
208    $objErr->doFunc(array("キャンペーン", "campaign_id", INT_LEN), array("NUM_CHECK"));   
209       
210    //購入金額(from) > 購入金額(to) の場合はエラーとする
211    if ( (is_numeric($array["buy_total_from"]) && is_numeric($array["buy_total_to"]) ) &&
212         ($array["buy_total_from"] > $array["buy_total_to"]) ) {
213         $objErr->arrErr["buy_total_from"] .= "※ 購入金額の指定範囲が不正です。";
214     }
215
216    if ( $flag ){
217        $objErr->doFunc(array("テンプレート", "template_id"), array("EXIST_CHECK", "NUM_CHECK"));
218        $objErr->doFunc(array("メール送信法法", "mail_method"), array("EXIST_CHECK", "NUM_CHECK"));
219       
220        if(MELMAGA_BATCH_MODE) {
221            $objErr->doFunc(array("配信日(年)","send_year"), array("EXIST_CHECK", "NUM_CHECK"));
222            $objErr->doFunc(array("配信日(月)","send_month"), array("EXIST_CHECK", "NUM_CHECK"));
223            $objErr->doFunc(array("配信日(日)","send_day"), array("EXIST_CHECK", "NUM_CHECK"));
224            $objErr->doFunc(array("配信日(時)","send_hour"), array("EXIST_CHECK", "NUM_CHECK"));
225            $objErr->doFunc(array("配信日(分)","send_minutes"), array("EXIST_CHECK", "NUM_CHECK"));
226            $objErr->doFunc(array("配信日", "send_year", "send_month", "send_day"), array("CHECK_DATE"));
227            $objErr->doFunc(array("配信日", "send_year", "send_month", "send_day","send_hour", "send_minutes"), array("ALL_EXIST_CHECK"));
228        }
229        $objErr->doFunc(array("Subject", "subject", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
230        $objErr->doFunc(array("本文", 'body', LLTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));  // HTMLテンプレートを使用しない場合
231    }
232   
233    return $objErr->arrErr;
234}
235
236/* テンプレートIDとsubjectの配列を返す */
237function getTemplateList($conn){
238    global $arrMagazineTypeAll;
239   
240    $sql = "SELECT template_id, subject, mail_method FROM dtb_mailmaga_template WHERE del_flg = 0 ";
241    if ($_POST["htmlmail"] == 2 || $_POST['mail_type'] == 2) {
242        $sql .= " AND mail_method = 2 ";    //TEXT希望者へのTESTメールテンプレートリスト
243    }
244    $sql .= " ORDER BY template_id DESC";
245    $result = $conn->getAll($sql);
246   
247    if ( is_array($result) ){
248        foreach( $result as $line ){
249            $return[$line['template_id']] = "【" . $arrMagazineTypeAll[$line['mail_method']] . "】" . $line['subject']; 
250        }
251    }
252   
253    return $return;
254}
255
256/* テンプレートIDからテンプレートデータを取得 */
257function getTemplateData($conn, $id){
258   
259    if ( sfCheckNumLength($id) ){
260        $sql = "SELECT * FROM dtb_mailmaga_template WHERE template_id = ? ORDER BY template_id DESC";
261        $result = $conn->getAll( $sql, array($id) );
262        if ( is_array($result) ) {
263            $return = $result[0];
264        }
265    }
266    return $return;
267}
268
269
270
271?>
Note: See TracBrowser for help on using the repository browser.