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テンプレートを使用する場合、データを取得する。 |
---|
85 | function 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 | //--- テンプレートの種類を返す |
---|
123 | function 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要素出力用配列の作成 |
---|
131 | function 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 | //---- 取得文字列の変換 |
---|
147 | function 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 | //---- 入力エラーチェック |
---|
169 | function 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の配列を返す */ |
---|
237 | function 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からテンプレートデータを取得 */ |
---|
257 | function 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 | ?> |
---|