| 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" => "htmlmail", "convert" => "n" ), |
|---|
| 47 | array( "column" => "customer", "convert" => "" ), |
|---|
| 48 | array( "column" => "buy_total_from", "convert" => "n" ), |
|---|
| 49 | array( "column" => "buy_total_to", "convert" => "n" ), |
|---|
| 50 | array( "column" => "buy_times_from", "convert" => "n" ), |
|---|
| 51 | array( "column" => "buy_times_to", "convert" => "n" ), |
|---|
| 52 | array( "column" => "birth_month", "convert" => "n" ), |
|---|
| 53 | array( "column" => "b_start_year", "convert" => "n" ), |
|---|
| 54 | array( "column" => "b_start_month", "convert" => "n" ), |
|---|
| 55 | array( "column" => "b_start_day", "convert" => "n" ), |
|---|
| 56 | array( "column" => "b_end_year", "convert" => "n" ), |
|---|
| 57 | array( "column" => "b_end_month", "convert" => "n" ), |
|---|
| 58 | array( "column" => "b_end_day", "convert" => "n" ), |
|---|
| 59 | array( "column" => "start_year", "convert" => "n" ), |
|---|
| 60 | array( "column" => "start_month", "convert" => "n" ), |
|---|
| 61 | array( "column" => "start_day", "convert" => "n" ), |
|---|
| 62 | array( "column" => "end_year", "convert" => "n" ), |
|---|
| 63 | array( "column" => "end_month", "convert" => "n" ), |
|---|
| 64 | array( "column" => "end_day", "convert" => "n" ), |
|---|
| 65 | array( "column" => "buy_start_year", "convert" => "n" ), |
|---|
| 66 | array( "column" => "buy_start_month", "convert" => "n" ), |
|---|
| 67 | array( "column" => "buy_start_day", "convert" => "n" ), |
|---|
| 68 | array( "column" => "buy_end_year", "convert" => "n" ), |
|---|
| 69 | array( "column" => "buy_end_month", "convert" => "n" ), |
|---|
| 70 | array( "column" => "buy_end_day", "convert" => "n" ), |
|---|
| 71 | array( "column" => "buy_product_code", "convert" => "aKV" ) |
|---|
| 72 | ,array( "column" => "buy_product_name", "convert" => "aKV" ) |
|---|
| 73 | ,array( "column" => "category_id", "convert" => "" ) |
|---|
| 74 | ,array( "column" => "buy_total_from", "convert" => "n" ) |
|---|
| 75 | ,array( "column" => "buy_total_to", "convert" => "n" ) |
|---|
| 76 | ,array( "column" => "campaign_id", "convert" => "" ) |
|---|
| 77 | ); |
|---|
| 78 | |
|---|
| 79 | //-------------------------------------------------------------------------------------------------------------------------------------- |
|---|
| 80 | |
|---|
| 81 | //---- HTMLテンプレートを使用する場合、データを取得する。 |
|---|
| 82 | function lfGetHtmlTemplateData($id) { |
|---|
| 83 | |
|---|
| 84 | global $conn; |
|---|
| 85 | $sql = "SELECT * FROM dtb_mailmaga_template WHERE template_id = ?"; |
|---|
| 86 | $result = $conn->getAll($sql, array($id)); |
|---|
| 87 | $list_data = $result[0]; |
|---|
| 88 | |
|---|
| 89 | // メイン商品の情報取得 |
|---|
| 90 | $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 = ?"; |
|---|
| 91 | $main = $conn->getAll($sql, array($list_data["main_product_id"])); |
|---|
| 92 | $list_data["main"] = $main[0]; |
|---|
| 93 | |
|---|
| 94 | // サブ商品の情報取得 |
|---|
| 95 | $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 = ?"; |
|---|
| 96 | $k = 0; |
|---|
| 97 | $l = 0; |
|---|
| 98 | for ($i = 1; $i <= 12; $i ++) { |
|---|
| 99 | if ($l == 4) { |
|---|
| 100 | $l = 0; |
|---|
| 101 | $k ++; |
|---|
| 102 | } |
|---|
| 103 | $result = ""; |
|---|
| 104 | $j = sprintf("%02d", $i); |
|---|
| 105 | if ($i > 0 && $i < 5 ) $k = 0; |
|---|
| 106 | if ($i > 4 && $i < 9 ) $k = 1; |
|---|
| 107 | if ($i > 8 && $i < 13 ) $k = 2; |
|---|
| 108 | |
|---|
| 109 | if (is_numeric($list_data["sub_product_id" .$j])) { |
|---|
| 110 | $result = $conn->getAll($sql, array($list_data["sub_product_id" .$j])); |
|---|
| 111 | $list_data["sub"][$k][$l] = $result[0]; |
|---|
| 112 | $list_data["sub"][$k]["data_exists"] = "OK"; //当該段にデータが1つ以上存在するフラグ |
|---|
| 113 | } |
|---|
| 114 | $l ++; |
|---|
| 115 | } |
|---|
| 116 | return $list_data; |
|---|
| 117 | } |
|---|
| 118 | |
|---|
| 119 | //--- テンプレートの種類を返す |
|---|
| 120 | function lfGetTemplateMethod($conn, $templata_id){ |
|---|
| 121 | |
|---|
| 122 | if ( sfCheckNumLength($template_id) ){ |
|---|
| 123 | $sql = "SELECT mail_method FROM dtb_mailmaga_template WEHRE template_id = ?"; |
|---|
| 124 | } |
|---|
| 125 | } |
|---|
| 126 | |
|---|
| 127 | //--- hidden要素出力用配列の作成 |
|---|
| 128 | function lfGetHidden( $array ){ |
|---|
| 129 | if ( is_array($array) ){ |
|---|
| 130 | foreach( $array as $key => $val ){ |
|---|
| 131 | if ( is_array( $val )){ |
|---|
| 132 | for ( $i=0; $i<count($val); $i++){ |
|---|
| 133 | $return[ $key.'['.$i.']'] = $val[$i]; |
|---|
| 134 | } |
|---|
| 135 | } else { |
|---|
| 136 | $return[$key] = $val; |
|---|
| 137 | } |
|---|
| 138 | } |
|---|
| 139 | } |
|---|
| 140 | return $return; |
|---|
| 141 | } |
|---|
| 142 | |
|---|
| 143 | //---- 取得文字列の変換 |
|---|
| 144 | function lfConvertParam($array, $arrSearchColumn) { |
|---|
| 145 | |
|---|
| 146 | // 文字変換 |
|---|
| 147 | foreach ($arrSearchColumn as $data) { |
|---|
| 148 | $arrConvList[ $data["column"] ] = $data["convert"]; |
|---|
| 149 | } |
|---|
| 150 | |
|---|
| 151 | $new_array = array(); |
|---|
| 152 | foreach ($arrConvList as $key => $val) { |
|---|
| 153 | if ( strlen($array[$key]) > 0 ){ // データのあるものだけ返す |
|---|
| 154 | $new_array[$key] = $array[$key]; |
|---|
| 155 | if( strlen($val) > 0) { |
|---|
| 156 | $new_array[$key] = mb_convert_kana($new_array[$key] ,$val); |
|---|
| 157 | } |
|---|
| 158 | } |
|---|
| 159 | } |
|---|
| 160 | return $new_array; |
|---|
| 161 | |
|---|
| 162 | } |
|---|
| 163 | |
|---|
| 164 | |
|---|
| 165 | //---- 入力エラーチェック |
|---|
| 166 | function lfErrorCheck($array, $flag = '') { |
|---|
| 167 | |
|---|
| 168 | // flag は登録時用 |
|---|
| 169 | |
|---|
| 170 | $objErr = new SC_CheckError($array); |
|---|
| 171 | |
|---|
| 172 | $objErr->doFunc(array("顧客コード", "customer_id", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 173 | $objErr->doFunc(array("都道府県", "pref", 2), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 174 | $objErr->doFunc(array("顧客名", "name", STEXT_LEN), array("MAX_LENGTH_CHECK")); |
|---|
| 175 | $objErr->doFunc(array("顧客名(カナ)", "kana", STEXT_LEN), array("KANA_CHECK", "MAX_LENGTH_CHECK")); |
|---|
| 176 | |
|---|
| 177 | $objErr->doFunc(array('メールアドレス', "email", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); |
|---|
| 178 | $objErr->doFunc(array("電話番号", "tel", TEL_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 179 | |
|---|
| 180 | $objErr->doFunc(array("購入回数(開始)", "buy_times_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 181 | $objErr->doFunc(array("購入回数(終了)", "buy_times_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 182 | 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"] .= "※ 購入回数の指定範囲が不正です。"; |
|---|
| 183 | |
|---|
| 184 | $objErr->doFunc(array("誕生月", "birth_month", 2), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 185 | |
|---|
| 186 | $objErr->doFunc(array("誕生日(開始日)", "b_start_year", "b_start_month", "b_start_day",), array("CHECK_DATE")); |
|---|
| 187 | $objErr->doFunc(array("誕生日(終了日)", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_DATE")); |
|---|
| 188 | $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")); |
|---|
| 189 | |
|---|
| 190 | $objErr->doFunc(array("登録・更新日(開始日)", "start_year", "start_month", "start_day",), array("CHECK_DATE")); |
|---|
| 191 | $objErr->doFunc(array("登録・更新日(終了日)", "end_year", "end_month", "end_day"), array("CHECK_DATE")); |
|---|
| 192 | $objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)", "start_year", "start_month", "start_day", "end_year", "end_month", "end_day"), array("CHECK_SET_TERM")); |
|---|
| 193 | |
|---|
| 194 | $objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE")); |
|---|
| 195 | $objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE")); |
|---|
| 196 | $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")); |
|---|
| 197 | |
|---|
| 198 | $objErr->doFunc(array("購入商品コード", "buy_product_code", STEXT_LEN), array("MAX_LENGTH_CHECK")); |
|---|
| 199 | |
|---|
| 200 | $objErr->doFunc(array("購入商品名", "buy_product_name", STEXT_LEN), array("MAX_LENGTH_CHECK")); |
|---|
| 201 | |
|---|
| 202 | $objErr->doFunc(array("購入金額(開始)", "buy_total_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 203 | $objErr->doFunc(array("購入金額(終了)", "buy_total_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 204 | |
|---|
| 205 | $objErr->doFunc(array("キャンペーン", "campaign_id", INT_LEN), array("NUM_CHECK")); |
|---|
| 206 | |
|---|
| 207 | //購入金額(from) > 購入金額(to) の場合はエラーとする |
|---|
| 208 | if ( (is_numeric($array["buy_total_from"]) && is_numeric($array["buy_total_to"]) ) && |
|---|
| 209 | ($array["buy_total_from"] > $array["buy_total_to"]) ) { |
|---|
| 210 | $objErr->arrErr["buy_total_from"] .= "※ 購入金額の指定範囲が不正です。"; |
|---|
| 211 | } |
|---|
| 212 | |
|---|
| 213 | if ( $flag ){ |
|---|
| 214 | $objErr->doFunc(array("テンプレート", "template_id"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 215 | $objErr->doFunc(array("メール送信法法", "mail_method"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 216 | |
|---|
| 217 | if(MELMAGA_BATCH_MODE) { |
|---|
| 218 | $objErr->doFunc(array("配信日(年)","send_year"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 219 | $objErr->doFunc(array("配信日(月)","send_month"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 220 | $objErr->doFunc(array("配信日(日)","send_day"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 221 | $objErr->doFunc(array("配信日(時)","send_hour"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 222 | $objErr->doFunc(array("配信日(分)","send_minutes"), array("EXIST_CHECK", "NUM_CHECK")); |
|---|
| 223 | $objErr->doFunc(array("配信日", "send_year", "send_month", "send_day"), array("CHECK_DATE")); |
|---|
| 224 | $objErr->doFunc(array("配信日", "send_year", "send_month", "send_day","send_hour", "send_minutes"), array("ALL_EXIST_CHECK")); |
|---|
| 225 | } |
|---|
| 226 | $objErr->doFunc(array("Subject", "subject", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); |
|---|
| 227 | $objErr->doFunc(array("本文", 'body', LLTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); // HTMLテンプレートを使用しない場合 |
|---|
| 228 | } |
|---|
| 229 | |
|---|
| 230 | return $objErr->arrErr; |
|---|
| 231 | } |
|---|
| 232 | |
|---|
| 233 | /* テンプレートIDとsubjectの配列を返す */ |
|---|
| 234 | function getTemplateList($conn){ |
|---|
| 235 | global $arrMagazineTypeAll; |
|---|
| 236 | |
|---|
| 237 | $sql = "SELECT template_id, subject, mail_method FROM dtb_mailmaga_template WHERE del_flg = 0 "; |
|---|
| 238 | if ($_POST["htmlmail"] == 2) { |
|---|
| 239 | $sql .= " AND mail_method = 2 "; //TEXT希望者へのTESTメールテンプレートリスト |
|---|
| 240 | } |
|---|
| 241 | $sql .= " ORDER BY template_id DESC"; |
|---|
| 242 | $result = $conn->getAll($sql); |
|---|
| 243 | |
|---|
| 244 | if ( is_array($result) ){ |
|---|
| 245 | foreach( $result as $line ){ |
|---|
| 246 | $return[$line['template_id']] = "【" . $arrMagazineTypeAll[$line['mail_method']] . "】" . $line['subject']; |
|---|
| 247 | } |
|---|
| 248 | } |
|---|
| 249 | |
|---|
| 250 | return $return; |
|---|
| 251 | } |
|---|
| 252 | |
|---|
| 253 | /* テンプレートIDからテンプレートデータを取得 */ |
|---|
| 254 | function getTemplateData($conn, $id){ |
|---|
| 255 | |
|---|
| 256 | if ( sfCheckNumLength($id) ){ |
|---|
| 257 | $sql = "SELECT * FROM dtb_mailmaga_template WHERE template_id = ? ORDER BY template_id DESC"; |
|---|
| 258 | $result = $conn->getAll( $sql, array($id) ); |
|---|
| 259 | if ( is_array($result) ) { |
|---|
| 260 | $return = $result[0]; |
|---|
| 261 | } |
|---|
| 262 | } |
|---|
| 263 | return $return; |
|---|
| 264 | } |
|---|
| 265 | |
|---|
| 266 | |
|---|
| 267 | |
|---|
| 268 | ?> |
|---|