Source for file LC_Page_Admin_Mail.php
Documentation is available at LC_Page_Admin_Mail.php
* This file is part of EC-CUBE
* Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
* http://www.lockon.co.jp/
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
require_once(CLASS_PATH .
"pages/LC_Page.php");
* @author LOCKON CO.,LTD.
$this->tpl_subnavi =
'mail/subnavi.tpl';
$this->tpl_subno =
"index";
$this->tpl_pager =
TEMPLATE_DIR .
'admin/pager.tpl';
$this->tpl_subtitle =
'配信内容設定';
$this->arrPref =
$masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
$this->arrJob =
$masterData->getMasterData("mtb_job");
$this->arrJob["不明"] =
"不明";
$this->arrSex =
$masterData->getMasterData("mtb_sex");
$this->arrMailType =
$masterData->getMasterData("mtb_mail_type");
$this->arrPageRows =
$masterData->getMasterData("mtb_page_rows");
$this->tpl_pageno = isset
($_POST['search_pageno']) ?
$_POST['search_pageno'] :
"";
$this->arrMAILMAGATYPE =
$masterData->getMasterData("mtb_mail_magazine_type");
$this->arrHtmlmail[''] =
"すべて";
$this->arrHtmlmail[1] =
$this->arrMAILMAGATYPE[1];
$this->arrHtmlmail[2] =
$this->arrMAILMAGATYPE[2];
$this->arrMagazineTypeAll =
$masterData->getMasterData("mtb_magazine_type");
$this->arrHtmlmail =
array( "" =>
"両方", 1 =>
"HTML", 2 =>
"TEXT" );
$this->arrRegistColumn =
array(
array( "column" =>
"template_id", "convert" =>
"n" ),
array( "column" =>
"mail_method", "convert" =>
"n" ),
array( "column" =>
"send_year", "convert" =>
"n" ),
array( "column" =>
"send_month", "convert" =>
"n" ),
array( "column" =>
"send_day", "convert" =>
"n" ),
array( "column" =>
"send_hour", "convert" =>
"n" ),
array( "column" =>
"send_minutes", "convert" =>
"n" ),
array( "column" =>
"subject", "convert" =>
"aKV" ),
array( "column" =>
"body", "convert" =>
"KV" )
$this->arrCustomerType =
array(1 =>
"会員",
$this->arrSearchColumn =
array(
array( "column" =>
"name", "convert" =>
"aKV"),
array( "column" =>
"pref", "convert" =>
"n" ),
array( "column" =>
"kana", "convert" =>
"CKV"),
array( "column" =>
"sex", "convert" =>
"" ),
array( "column" =>
"tel", "convert" =>
"n" ),
array( "column" =>
"job", "convert" =>
"" ),
array( "column" =>
"email", "convert" =>
"a" ),
array( "column" =>
"email_mobile", "convert" =>
"a" ),
array( "column" =>
"htmlmail", "convert" =>
"n" ),
array( "column" =>
"customer", "convert" =>
"" ),
array( "column" =>
"buy_total_from", "convert" =>
"n" ),
array( "column" =>
"buy_total_to", "convert" =>
"n" ),
array( "column" =>
"buy_times_from", "convert" =>
"n" ),
array( "column" =>
"buy_times_to", "convert" =>
"n" ),
array( "column" =>
"birth_month", "convert" =>
"n" ),
array( "column" =>
"b_start_year", "convert" =>
"n" ),
array( "column" =>
"b_start_month", "convert" =>
"n" ),
array( "column" =>
"b_start_day", "convert" =>
"n" ),
array( "column" =>
"b_end_year", "convert" =>
"n" ),
array( "column" =>
"b_end_month", "convert" =>
"n" ),
array( "column" =>
"b_end_day", "convert" =>
"n" ),
array( "column" =>
"start_year", "convert" =>
"n" ),
array( "column" =>
"start_month", "convert" =>
"n" ),
array( "column" =>
"start_day", "convert" =>
"n" ),
array( "column" =>
"end_year", "convert" =>
"n" ),
array( "column" =>
"end_month", "convert" =>
"n" ),
array( "column" =>
"end_day", "convert" =>
"n" ),
array( "column" =>
"buy_start_year", "convert" =>
"n" ),
array( "column" =>
"buy_start_month", "convert" =>
"n" ),
array( "column" =>
"buy_start_day", "convert" =>
"n" ),
array( "column" =>
"buy_end_year", "convert" =>
"n" ),
array( "column" =>
"buy_end_month", "convert" =>
"n" ),
array( "column" =>
"buy_end_day", "convert" =>
"n" ),
array( "column" =>
"buy_product_code", "convert" =>
"aKV" ),
array( "column" =>
"buy_product_name", "convert" =>
"aKV" ),
array( "column" =>
"category_id", "convert" =>
"" ),
array( "column" =>
"buy_total_from", "convert" =>
"n" ),
array( "column" =>
"buy_total_to", "convert" =>
"n" ),
array( "column" =>
"campaign_id", "convert" =>
"" ),
array( "column" =>
"mail_type", "convert" =>
"" )
if (!isset
($_POST['htmlmail'])) $_POST['htmlmail'] =
"";
if (!isset
($_POST['mail_type'])) $_POST['mail_type'] =
"";
if (!isset
($_POST['mode'])) $_POST['mode'] =
"";
if (!isset
($_POST['buy_product_code'])) $_POST['buy_product_code'] =
"";
if (!isset
($_GET['mode'])) $_GET['mode'] =
"";
$this->objDate =
$objDate;
if ($_GET["mode"] ==
"query" &&
SC_Utils_Ex::sfCheckNumLength($_GET["send_id"])) {
$sql =
"SELECT search_data FROM dtb_send_history WHERE send_id = ?";
$result =
$conn->getOne($sql, array($_GET["send_id"]));
$tpl_path =
"mail/query.tpl";
$list_data['pref_disp'] =
$this->arrPref[$list_data['pref']];
$list_data['htmlmail_disp'] =
$this->arrHtmlmail[$list_data['htmlmail']];
if (count($list_data['sex']) >
0) {
foreach($list_data['sex'] as $key =>
$val){
$list_data['sex'][$key] =
$this->arrSex[$val];
$sex_disp .=
$list_data['sex'][$key] .
" ";
$list_data['sex_disp'] =
$sex_disp;
if (count($list_data['job']) >
0) {
foreach($list_data['job'] as $key =>
$val){
$list_data['job'][$key] =
$this->arrJob[$val];
$job_disp .=
$list_data['job'][$key] .
" ";
$list_data['job_disp'] =
$job_disp;
$arrCatList =
$objDb->sfGetCategoryList();
$list_data['category_name'] =
$arrCatList[$list_data['category_id']];
$this->list_data =
$list_data;
$objView->assignobj($this);
$objView->display($tpl_path);
if($_POST['mode'] ==
'delete') {
$this->list_data =
$this->lfConvertParam($_POST, $this->arrSearchColumn);
$this->list_data['name'] = isset
($this->list_data['name'])
?
SC_Utils_Ex::sfManualEscape($this->list_data['name']) :
"";
$this->arrHidden =
$this->lfGetHidden($this->list_data);
list
($where, $arrval) =
$objSelect->getWhere();
$linemax =
$objQuery->count($from, $where, $arrval);
$this->tpl_linemax =
$linemax; // 何件が該当しました。表示用
$objNavi =
new SC_PageNavi($this->tpl_pageno, $linemax, SEARCH_PMAX, "fnResultPageNavi", NAVI_PMAX);
$this->arrPagenavi =
$objNavi->arrPagenavi;
$startno =
$objNavi->start_row;
$objQuery->setlimitoffset(SEARCH_PMAX, $startno);
$objQuery->setorder("customer_id DESC");
$col =
$objSelect->getMailMagazineColumn($this->lfGetIsMobile($_POST['mail_type']));
$this->arrResults =
$objQuery->select($col, $from, $where, $arrval);
input:検索結果画面「htmlmail内容設定」ボタン
$this->list_data =
$this->lfConvertParam($_POST, $this->arrSearchColumn);
$this->arrHidden =
$this->lfGetHidden($this->list_data); // hidden要素作成
$this->list_data =
$this->lfConvertParam($_POST, $this->arrSearchColumn);
$this->arrNowDate['year'] = isset
($_POST['send_year']) ?
$_POST['send_year'] :
"";
$this->arrNowDate['month'] = isset
($_POST['send_month']) ?
$_POST['send_month'] :
"";
$this->arrNowDate['day'] = isset
($_POST['send_day']) ?
$_POST['send_day'] :
"";
$this->arrNowDate['hour'] = isset
($_POST['send_hour']) ?
$_POST['send_hour'] :
"";
$this->arrNowDate['minutes'] = isset
($_POST['send_minutes']) ?
$_POST['send_minutes'] :
"";
$this->list_data['name'] = isset
($this->list_data['name']) ?
SC_Utils_Ex::sfManualEscape($this->list_data['name']) :
"";
$this->arrHidden =
$this->lfGetHidden($this->list_data); // hidden要素作成
foreach( $template_data as $key=>
$val ){
$this->list_data[$key] =
$val;
//-- HTMLテンプレートを使用する場合は、HTMLソースを生成してBODYへ挿入
if ( $this->list_data["mail_method"] ==
3) {
$objTemplate->arrInfo =
$objSiteInfo->data;
$objUpFile->addFile("メール担当写真", 'charge_image', array('jpg'), IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
$objUpFile->setDBFileList($objTemplate->list_data);
$objTemplate->arrFile =
$objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL);
$objMakeTemplate->assignobj($objTemplate);
$this->list_data["body"] =
$objMakeTemplate->fetch("mail/html_template.tpl");
regist_back:「テンプレート設定画面へ戻る」
$this->arrCheckColumn =
array_merge( $this->arrSearchColumn, $this->arrRegistColumn );
$this->list_data =
$this->lfConvertParam($_POST, $this->arrCheckColumn);
$this->arrHidden =
$this->lfGetHidden($this->list_data); // hidden要素作成
$this->list_data['name'] =
isset
($this->list_data['name'])
?
SC_Utils_Ex::sfManualEscape($this->list_data['name']) :
"";
if ( $_POST['mode'] ==
'regist_confirm'){
} else if( $_POST['mode'] ==
'regist_complete' ){
if(MELMAGA_SEND ==
true) {
$this->list_data['mail_type'] =
1;
// 配信時間の年を、「現在年~現在年+1」の範囲に設定
for ($year=
date("Y"); $year<=
date("Y") +
1;$year++
){
$this->arrYear =
$arrYear;
$this->arrCatList =
$objDb->sfGetCategoryList();
$objView->assignobj($this);
$objView->display(MAIN_FRAME);
// 商品コードで検索された場合にヒットした受注番号を取得する。
$arrCustomerOrderId =
null;
$col =
"dtb_order.customer_id, dtb_order.order_id";
$from =
"dtb_order LEFT JOIN dtb_order_detail USING(order_id)";
$where =
"product_code LIKE ? AND del_flg = 0";
$objQuery->setgroupby("customer_id, order_id");
$arrRet =
$objQuery->select($col, $from, $where, $arrVal);
$arrCustomerOrderId =
SC_Utils_Ex::sfArrKeyValues($arrRet, "customer_id", "order_id");
return $arrCustomerOrderId;
$arrTitle =
array( 'name01','email');
$sql =
"SELECT name01,email FROM dtb_send_customer WHERE send_id = ? ORDER BY email";
$result =
$conn->getAll($sql, array($send_id) );
$return =
SC_Utils_Ex::getCSVData( $result, $arrTitle);
$nowdate =
date("Y/n/j/G/i");
list
($year, $month, $day, $hour, $minute) =
split("[/]", $nowdate);
$arrNowDate =
array( 'year' =>
$year, 'month' =>
$month, 'day' =>
$day, 'hour' =>
$hour, 'minutes' =>
$minute);
foreach ($arrNowDate as $key =>
$val){
if ($arrNowDate['minutes'] <
30){
$list_date['hour'] =
$hour;
$list_date['hour'] =
$hour +
1;
$search_data =
$conn->getAll($objSelect->getListMailMagazine($this->lfGetIsMobile($_POST['mail_type'])), $objSelect->arrVal);
$dataCnt =
count($search_data);
$dtb_send_history =
array();
$dtb_send_history["send_id"] =
$objQuery->nextval('dtb_send_history', 'send_id');
$dtb_send_history["mail_method"] =
$arrData['mail_method'];
$dtb_send_history["subject"] =
$arrData['subject'];
$dtb_send_history["body"] =
$arrData['body'];
$dtb_send_history["start_date"] =
$arrData['send_year'] .
"/".
$arrData['send_month'].
"/".
$arrData['send_day'].
" ".
$arrData['send_hour'].
":".
$arrData['send_minutes'];
$dtb_send_history["start_date"] =
"now()";
$dtb_send_history["creator_id"] =
$_SESSION['member_id'];
$dtb_send_history["send_count"] =
$dataCnt;
$dtb_send_history["search_data"] =
serialize($arrData);
$dtb_send_history["update_date"] =
"now()";
$dtb_send_history["create_date"] =
"now()";
$objQuery->insert("dtb_send_history", $dtb_send_history );
$dtb_send_history["send_id"] =
$objQuery->nextval('dtb_send_history','send_id');
foreach( $search_data as $line ){
$dtb_send_customer =
array();
$dtb_send_customer["customer_id"] =
$line["customer_id"];
$dtb_send_customer["send_id"] =
$dtb_send_history["send_id"];
$dtb_send_customer["email"] =
$line["email"];
$dtb_send_customer["name"] =
$line["name01"] .
" " .
$line["name02"];
$conn->autoExecute("dtb_send_customer", $dtb_send_customer );
$sql =
"SELECT campaign_id, campaign_name FROM dtb_campaign ORDER BY update_date DESC";
$arrResult =
$objQuery->getall($sql);
foreach($arrResult as $arrVal) {
$arrCampaign[$arrVal['campaign_id']] =
$arrVal['campaign_name'];
//---- HTMLテンプレートを使用する場合、データを取得する。
$sql =
"SELECT * FROM dtb_mailmaga_template WHERE template_id = ?";
$result =
$conn->getAll($sql, array($id));
$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 = ?";
$main =
$conn->getAll($sql, array($list_data["main_product_id"]));
$list_data["main"] =
$main[0];
$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 = ?";
for ($i =
1; $i <=
12; $i ++
) {
if ($i >
0 &&
$i <
5 ) $k =
0;
if ($i >
4 &&
$i <
9 ) $k =
1;
if ($i >
8 &&
$i <
13 ) $k =
2;
if (is_numeric($list_data["sub_product_id" .
$j])) {
$result =
$conn->getAll($sql, array($list_data["sub_product_id" .
$j]));
$list_data["sub"][$k][$l] =
$result[0];
$list_data["sub"][$k]["data_exists"] =
"OK"; //当該段にデータが1つ以上存在するフラグ
$sql =
"SELECT mail_method FROM dtb_mailmaga_template WEHRE template_id = ?";
foreach( $array as $key =>
$val ){
for ( $i=
0; $i<
count($val); $i++
){
$return[ $key.
'['.
$i.
']'] =
$val[$i];
foreach ($arrSearchColumn as $data) {
$arrConvList[ $data["column"] ] =
$data["convert"];
foreach ($arrConvList as $key =>
$val) {
if (isset
($array[$key]) &&
strlen($array[$key]) >
0 ){ // データのあるものだけ返す
$new_array[$key] =
$array[$key];
$objErr->doFunc(array("顧客コード", "customer_id", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("都道府県", "pref", 2), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("顧客名", "name", STEXT_LEN), array("MAX_LENGTH_CHECK"));
$objErr->doFunc(array("顧客名(カナ)", "kana", STEXT_LEN), array("KANA_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array('メールアドレス', "email", STEXT_LEN) ,array("EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
$objErr->doFunc(array("電話番号", "tel", TEL_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("購入回数(開始)", "buy_times_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("購入回数(終了)", "buy_times_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
if (!isset
($array['buy_total_from'])) $array['buy_total_from'] =
"";
if (!isset
($array['buy_total_to'])) $array['buy_total_to'] =
"";
if (!isset
($array['buy_times_from'])) $array['buy_times_from'] =
"";
if (!isset
($array['buy_times_from'])) $array['buy_times_from'] =
"";
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"] .=
"※ 購入回数の指定範囲が不正です。";
$objErr->doFunc(array("誕生月", "birth_month", 2), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("誕生日(開始日)", "b_start_year", "b_start_month", "b_start_day",), array("CHECK_DATE"));
$objErr->doFunc(array("誕生日(終了日)", "b_end_year", "b_end_month", "b_end_day"), array("CHECK_DATE"));
$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"));
$objErr->doFunc(array("登録・更新日(開始日)", "start_year", "start_month", "start_day",), array("CHECK_DATE"));
$objErr->doFunc(array("登録・更新日(終了日)", "end_year", "end_month", "end_day"), array("CHECK_DATE"));
$objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)", "start_year", "start_month", "start_day", "end_year", "end_month", "end_day"), array("CHECK_SET_TERM"));
$objErr->doFunc(array("最終購入日(開始日)", "buy_start_year", "buy_start_month", "buy_start_day",), array("CHECK_DATE"));
$objErr->doFunc(array("最終購入(終了日)", "buy_end_year", "buy_end_month", "buy_end_day"), array("CHECK_DATE"));
$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"));
$objErr->doFunc(array("購入商品コード", "buy_product_code", STEXT_LEN), array("MAX_LENGTH_CHECK"));
$objErr->doFunc(array("購入商品名", "buy_product_name", STEXT_LEN), array("MAX_LENGTH_CHECK"));
$objErr->doFunc(array("購入金額(開始)", "buy_total_from", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("購入金額(終了)", "buy_total_to", INT_LEN), array("NUM_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("キャンペーン", "campaign_id", INT_LEN), array("NUM_CHECK"));
//購入金額(from) > 購入金額(to) の場合はエラーとする
($array["buy_total_from"] >
$array["buy_total_to"]) ) {
$objErr->arrErr["buy_total_from"] .=
"※ 購入金額の指定範囲が不正です。";
$objErr->doFunc(array("テンプレート", "template_id"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("メール送信法法", "mail_method"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日(年)","send_year"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日(月)","send_month"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日(日)","send_day"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日(時)","send_hour"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日(分)","send_minutes"), array("EXIST_CHECK", "NUM_CHECK"));
$objErr->doFunc(array("配信日", "send_year", "send_month", "send_day"), array("CHECK_DATE"));
$objErr->doFunc(array("配信日", "send_year", "send_month", "send_day","send_hour", "send_minutes"), array("ALL_EXIST_CHECK"));
$objErr->doFunc(array("Subject", "subject", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
$objErr->doFunc(array("本文", 'body', LLTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); // HTMLテンプレートを使用しない場合
/* テンプレートIDとsubjectの配列を返す */
$sql =
"SELECT template_id, subject, mail_method FROM dtb_mailmaga_template WHERE del_flg = 0 ";
if ($_POST["htmlmail"] ==
2 ||
$_POST['mail_type'] ==
2) {
$sql .=
" AND mail_method = 2 "; //TEXT希望者へのTESTメールテンプレートリスト
$sql .=
" ORDER BY template_id DESC";
$result =
$conn->getAll($sql);
foreach( $result as $line ){
$return[$line['template_id']] =
"【" .
$this->arrMagazineTypeAll[$line['mail_method']] .
"】" .
$line['subject'];
/* テンプレートIDからテンプレートデータを取得 */
$sql =
"SELECT * FROM dtb_mailmaga_template WHERE template_id = ? ORDER BY template_id DESC";
$result =
$conn->getAll( $sql, array($id) );
Documentation generated on Tue, 28 Apr 2009 18:11:15 +0900 by phpDocumentor 1.4.2