- Timestamp:
- 2007/09/03 15:42:43 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/SC_CustomerList.php
r15532 r15561 11 11 class SC_CustomerList extends SC_SelectSql { 12 12 13 var $arrColumnCSV;14 15 function SC_CustomerList($array, $mode = '') {16 parent::SC_SelectSql($array);17 18 if($mode == "") {19 // 会員本登録会員で削除していない会員20 $this->setWhere("status = 2 AND del_flg = 0 "); 21 // 登録日を示すカラム22 $regdate_col = 'dtb_customer.update_date';23 }24 25 if($mode == "customer") {26 // 管理者ページ顧客検索の場合仮登録会員も検索27 $this->setWhere( "(status = 1 OR status = 2) AND del_flg = 0 "); 28 // 登録日を示すカラム29 $regdate_col = 'dtb_customer.update_date';30 }31 32 // メールマガジンの場合 33 if($mode == "magazine") {34 $this->setWhere("(del_flg = 0 OR del_flg IS NULL)");35 $this->setWhere("status = 2");36 37 /* 会員のみ対象とするため削除38 if(is_array($this->arrSql['customer'])) {39 $tmp_where = "";40 foreach($this->arrSql['customer'] as $val) {41 if($tmp_where != "") {42 $tmp_where.= " OR ";43 } 44 switch($val) {45 // 会員46 case '1':47 $tmp_where.= "status = 2";48 break;49 // メルマガ登録50 case '2':51 $tmp_where.= "customer_id IS NULL";52 break;53 // CSV登録54 case '3':55 $tmp_where.= "customer_id IS NULL";56 break;57 default:58 $tmp_where = "";59 break;60 }61 }62 if($tmp_where != "") {63 $tmp_where = "(" . $tmp_where . ")";64 }65 $this->setWhere($tmp_where);66 }67 */68 // 登録日を示すカラム69 $regdate_col = 'dtb_customer.create_date';70 }71 72 // 顧客ID73 if ( strlen($this->arrSql['customer_id']) > 0 ) {74 $this->setWhere( "customer_id = ?" );75 $this->arrVal[] = $this->arrSql['customer_id'];76 }77 78 // 名前79 if ( strlen($this->arrSql['name']) > 0 ) {80 if(DB_TYPE == "pgsql"){81 $this->setWhere("(name01 || name02 LIKE ?)" );82 }elseif(DB_TYPE == "mysql"){83 $this->setWhere("concat(name01,name02) LIKE ?" );84 }85 86 $searchName = $this->addSearchStr($this->arrSql['name']);87 $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchName);88 }89 90 // 名前(カナ)91 if ( strlen($this->arrSql['kana']) > 0 ) {92 if(DB_TYPE == "pgsql"){93 $this->setWhere("(kana01 || kana02 LIKE ?)");94 }elseif(DB_TYPE == "mysql"){95 $this->setWhere("concat(kana01,kana02) LIKE ?" );96 }97 $searchKana = $this->addSearchStr($this->arrSql['kana']);98 $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchKana);99 }100 101 // 都道府県102 if ( strlen($this->arrSql['pref']) > 0 ) {103 $this->setWhere( "pref = ?" );104 $this->arrVal[] = $this->arrSql['pref'];105 }106 107 // 電話番号108 if ( is_numeric( $this->arrSql['tel'] ) ) {109 if(DB_TYPE == "pgsql"){110 $this->setWhere( "(tel01 || tel02 || tel03 LIKE ?)" );111 }elseif(DB_TYPE == "mysql"){112 $this->setWhere("concat(tel01,tel02,tel03) LIKE ?" );113 }114 $searchTel = $this->addSearchStr($this->arrSql['tel']);115 $this->arrVal[] = ereg_replace("-", "", $searchTel);116 }117 118 // 性別119 if ( is_array( $this->arrSql['sex'] ) ){120 $arrSexVal = $this->setItemTerm( $this->arrSql['sex'] ,"sex" );121 foreach ($arrSexVal as $data) {122 $this->arrVal[] = $data;123 }124 }125 126 // 職業127 if ( is_array( $this->arrSql['job'] ) ){128 if ( in_array("不明", $this->arrSql['job'] ) ) {129 $arrJobVal = $this->setItemTermWithNull( $this->arrSql['job'] ,"job" );130 } else {131 $arrJobVal = $this->setItemTerm( $this->arrSql['job'] ,"job" );132 }133 if (is_array($arrJobVal)) {134 foreach ($arrJobVal as $data) {135 $this->arrVal[] = $data;136 }137 }138 }139 140 141 if (strlen($this->arrSql['email']) > 0) {142 //カンマ区切りで複数の条件指定可能に143 $this->arrSql['email'] = explode(",", $this->arrSql['email']);144 $sql_where = "";145 foreach($this->arrSql['email'] as $val) {146 $val = trim($val);147 //検索条件を含まない148 if($this->arrSql['not_emailinc'] == '1') {149 if($sql_where == "") {150 $sql_where .= "dtb_customer.email NOT ILIKE ? ";151 } else {152 $sql_where .= "AND dtb_customer.email NOT ILIKE ? ";153 }154 } else { 155 if($sql_where == "") {156 $sql_where .= "dtb_customer.email ILIKE ? ";157 } else {158 $sql_where .= "OR dtb_customer.email ILIKE ? ";159 }160 }161 $searchEmail = $this->addSearchStr($val);162 $this->arrVal[] = $searchEmail;163 }164 $this->setWhere($sql_where);165 }166 167 // E-MAIL(mobile)168 if (strlen($this->arrSql['email_mobile']) > 0) {169 //カンマ区切りで複数の条件指定可能に170 $this->arrSql['email_mobile'] = explode(",", $this->arrSql['email_mobile']);171 $sql_where = "";172 foreach($this->arrSql['email_mobile'] as $val) {173 $val = trim($val);174 //検索条件を含まない175 if($this->arrSql['not_email_mobileinc'] == '1') {176 if($sql_where == "") {177 $sql_where .= "dtb_customer.email_mobile NOT ILIKE ? ";178 } else {179 $sql_where .= "AND dtb_customer.email_mobile NOT ILIKE ? ";180 }181 } else { 182 if($sql_where == "") {183 $sql_where .= "dtb_customer.email_mobile ILIKE ? ";184 } else {185 $sql_where .= "OR dtb_customer.email_mobile ILIKE ? ";186 }187 }188 $searchemail_mobile = $this->addSearchStr($val);189 $this->arrVal[] = $searchemail_mobile;190 }191 $this->setWhere($sql_where);192 }193 194 // 配信メールアドレス種別195 if ( $mode == 'magazine' ){196 if ( strlen($this->arrSql['mail_type']) > 0 && $this->arrSql['mail_type'] == 2) {197 $this->setWhere( " dtb_customer.email_mobile <> '' ");198 }199 }200 201 // HTML-mail202 if ( $mode == 'magazine' ){203 if ( strlen($this->arrSql['htmlmail']) > 0 ) {204 $this->setWhere( " mailmaga_flg = ? ");205 $this->arrVal[] = $this->arrSql['htmlmail'];206 } else {207 $this->setWhere( " (mailmaga_flg = 1 or mailmaga_flg = 2) ");208 }209 }210 211 // 購入金額指定212 if( is_numeric( $this->arrSql["buy_total_from"] ) || is_numeric( $this->arrSql["buy_total_to"] ) ) {213 $arrBuyTotal = $this->selectRange($this->arrSql["buy_total_from"], $this->arrSql["buy_total_to"], "buy_total");214 foreach ($arrBuyTotal as $data1) {215 $this->arrVal[] = $data1;216 }217 }218 219 // 購入回数指定220 if( is_numeric( $this->arrSql["buy_times_from"] ) || is_numeric( $this->arrSql["buy_times_to"] ) ) {221 $arrBuyTimes = $this->selectRange($this->arrSql["buy_times_from"], $this->arrSql["buy_times_to"], "buy_times");222 foreach ($arrBuyTimes as $data2) {223 $this->arrVal[] = $data2;224 }225 }226 227 // 誕生日期間指定228 if ( (strlen($this->arrSql['b_start_year']) > 0 && strlen($this->arrSql['b_start_month']) > 0 && strlen($this->arrSql['b_start_day']) > 0) ||229 strlen($this->arrSql['b_end_year']) > 0 && strlen($this->arrSql['b_end_month']) > 0 && strlen($this->arrSql['b_end_day']) > 0) {230 231 $arrBirth = $this->selectTermRange($this->arrSql['b_start_year'], $this->arrSql['b_start_month'], $this->arrSql['b_start_day']232 , $this->arrSql['b_end_year'], $this->arrSql['b_end_month'], $this->arrSql['b_end_day'], "birth");233 if (is_array($arrBirth)) {234 foreach ($arrBirth as $data3) {235 $this->arrVal[] = $data3;236 }237 }238 }239 240 // 誕生月の検索241 if (is_numeric($this->arrSql["birth_month"])) {242 $this->setWhere(" EXTRACT(month from birth) = ?"); 243 $this->arrVal[] = $this->arrSql["birth_month"];244 }245 246 // 登録期間指定247 if ( (strlen($this->arrSql['start_year']) > 0 && strlen($this->arrSql['start_month']) > 0 && strlen($this->arrSql['start_day']) > 0 ) || 248 (strlen($this->arrSql['end_year']) > 0 && strlen($this->arrSql['end_month']) >0 && strlen($this->arrSql['end_day']) > 0) ) {249 250 $arrRegistTime = $this->selectTermRange($this->arrSql['start_year'], $this->arrSql['start_month'], $this->arrSql['start_day']251 , $this->arrSql['end_year'], $this->arrSql['end_month'], $this->arrSql['end_day'], $regdate_col);252 if (is_array($arrRegistTime)) {253 foreach ($arrRegistTime as $data4) {254 $this->arrVal[] = $data4;255 }256 }257 }258 259 // 最終購入日指定260 if ( (strlen($this->arrSql['buy_start_year']) > 0 && strlen($this->arrSql['buy_start_month']) > 0 && strlen($this->arrSql['buy_start_day']) > 0 ) || 261 (strlen($this->arrSql['buy_end_year']) > 0 && strlen($this->arrSql['buy_end_month']) >0 && strlen($this->arrSql['buy_end_day']) > 0) ) {262 $arrRegistTime = $this->selectTermRange($this->arrSql['buy_start_year'], $this->arrSql['buy_start_month'], $this->arrSql['buy_start_day']263 , $this->arrSql['buy_end_year'], $this->arrSql['buy_end_month'], $this->arrSql['buy_end_day'], "last_buy_date");264 if (is_array($arrRegistTime)) {265 foreach ($arrRegistTime as $data4) {266 $this->arrVal[] = $data4;267 }268 }269 }270 271 //購入商品コード272 if ( strlen($this->arrSql['buy_product_code']) > 0 ) {273 $this->setWhere( "customer_id IN (SELECT customer_id FROM dtb_order WHERE order_id IN (SELECT order_id FROM dtb_order_detail WHERE product_code LIKE ? ))");274 $search_buyproduct_code = $this->addSearchStr($this->arrSql['buy_product_code']);275 $this->arrVal[] = $search_buyproduct_code;276 }277 278 //購入商品名称279 if ( strlen($this->arrSql['buy_product_name']) > 0 ) {280 $this->setWhere( "customer_id IN (SELECT customer_id FROM dtb_order WHERE order_id IN (SELECT order_id FROM dtb_order_detail WHERE product_name LIKE ? ))");281 $search_buyproduct_name = $this->addSearchStr($this->arrSql['buy_product_name']);282 $this->arrVal[] = $search_buyproduct_name;283 }284 285 //カテゴリーを選択している場合のみ絞込検索を行う286 if ( strlen($this->arrSql['category_id']) != ""){287 //カテゴリーで絞込検索を行うSQL文生成288 list($tmp_where, $tmp_arrval) = sfGetCatWhere(sfManualEscape($this->arrSql['category_id']));289 290 //カテゴリーで絞込みが可能の場合291 if($tmp_where != "") {292 $this->setWhere( " customer_id IN (SELECT distinct customer_id FROM dtb_order WHERE order_id IN (SELECT distinct order_id FROM dtb_order_detail WHERE product_id IN (SELECT product_id FROM dtb_products WHERE ".$tmp_where." ))) ");293 $this->arrVal = array_merge((array)$this->arrVal, (array)$tmp_arrval);294 }295 }296 // 携帯電話番号297 if ( is_numeric( $this->arrSql['cell'] ) ) {298 $this->setWhere( "(cell01 || cell02 || cell03 LIKE ?)" );299 $searchTel = $this->addSearchStr($this->arrSql['cell']);300 $this->arrVal[] = ereg_replace("-", "", $searchTel);301 }302 303 // キャンペーン304 if ( is_numeric( $this->arrSql['campaign_id'] ) ) {305 $this->setWhere( " customer_id IN (SELECT distinct customer_id FROM dtb_campaign_order WHERE campaign_id = ?)" );306 $this->arrVal[] = $this->arrSql['campaign_id'];307 }308 309 $this->setOrder( "customer_id DESC" );310 }311 312 // 検索用SQL313 function getList() {314 $this->select = "SELECT customer_id,name01,name02,kana01,kana02,sex,email,tel01,tel02,tel03,pref,status FROM dtb_customer ";315 return $this->getSql(0); 316 }317 318 function getListMailMagazine($is_mobile = false) {319 320 $colomn = $this->getMailMagazineColumn($is_mobile);321 $this->select = "322 SELECT 323 $colomn324 FROM 325 dtb_customer";326 return $this->getSql(0); 327 }328 329 function getMailMagazineColumn($is_mobile= false) {330 if($is_mobile == true) {331 $email_column = "dtb_customer.email_mobile as email";332 } else {333 $email_column = "dtb_customer.email"; 334 }335 336 $column ="dtb_customer.customer_id,337 dtb_customer.name01,338 dtb_customer.name02,339 dtb_customer.kana01,340 dtb_customer.kana02,341 dtb_customer.sex,342 $email_column, 343 dtb_customer.tel01,344 dtb_customer.tel02,345 dtb_customer.tel03,346 dtb_customer.pref, 347 dtb_customer.mailmaga_flg";348 349 return $column;350 }351 352 // 検索総数カウント用SQL353 function getListCount() {354 $this->select = "SELECT COUNT(customer_id) FROM dtb_customer "; 355 return $this->getSql(1);356 }357 358 // CSVダウンロード用SQL359 function getListCSV($arrColumnCSV) {360 $this->arrColumnCSV = $arrColumnCSV;361 $i = 0;362 foreach ($this->arrColumnCSV as $val) {363 if ($i != 0) $state .= ", ";364 $state .= $val["sql"];365 $i ++;366 }367 368 $this->select = "SELECT " .$state. " FROM dtb_customer ";369 return $this->getSql(2); 370 }371 372 function getWhere() {373 return array($this->where, $this->arrVal);374 }13 var $arrColumnCSV; 14 15 function SC_CustomerList($array, $mode = '') { 16 parent::SC_SelectSql($array); 17 18 if($mode == "") { 19 // 会員本登録会員で削除していない会員 20 $this->setWhere("status = 2 AND del_flg = 0 "); 21 // 登録日を示すカラム 22 $regdate_col = 'dtb_customer.update_date'; 23 } 24 25 if($mode == "customer") { 26 // 管理者ページ顧客検索の場合仮登録会員も検索 27 $this->setWhere( "(status = 1 OR status = 2) AND del_flg = 0 "); 28 // 登録日を示すカラム 29 $regdate_col = 'dtb_customer.update_date'; 30 } 31 32 // メールマガジンの場合 33 if($mode == "magazine") { 34 $this->setWhere("(del_flg = 0 OR del_flg IS NULL)"); 35 $this->setWhere("status = 2"); 36 37 /* 会員のみ対象とするため削除 38 if(is_array($this->arrSql['customer'])) { 39 $tmp_where = ""; 40 foreach($this->arrSql['customer'] as $val) { 41 if($tmp_where != "") { 42 $tmp_where.= " OR "; 43 } 44 switch($val) { 45 // 会員 46 case '1': 47 $tmp_where.= "status = 2"; 48 break; 49 // メルマガ登録 50 case '2': 51 $tmp_where.= "customer_id IS NULL"; 52 break; 53 // CSV登録 54 case '3': 55 $tmp_where.= "customer_id IS NULL"; 56 break; 57 default: 58 $tmp_where = ""; 59 break; 60 } 61 } 62 if($tmp_where != "") { 63 $tmp_where = "(" . $tmp_where . ")"; 64 } 65 $this->setWhere($tmp_where); 66 } 67 */ 68 // 登録日を示すカラム 69 $regdate_col = 'dtb_customer.create_date'; 70 } 71 72 // 顧客ID 73 if ( strlen($this->arrSql['customer_id']) > 0 ) { 74 $this->setWhere( "customer_id = ?" ); 75 $this->arrVal[] = $this->arrSql['customer_id']; 76 } 77 78 // 名前 79 if ( strlen($this->arrSql['name']) > 0 ) { 80 if(DB_TYPE == "pgsql"){ 81 $this->setWhere("(name01 || name02 LIKE ?)" ); 82 }elseif(DB_TYPE == "mysql"){ 83 $this->setWhere("concat(name01,name02) LIKE ?" ); 84 } 85 86 $searchName = $this->addSearchStr($this->arrSql['name']); 87 $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchName); 88 } 89 90 // 名前(カナ) 91 if ( strlen($this->arrSql['kana']) > 0 ) { 92 if(DB_TYPE == "pgsql"){ 93 $this->setWhere("(kana01 || kana02 LIKE ?)"); 94 }elseif(DB_TYPE == "mysql"){ 95 $this->setWhere("concat(kana01,kana02) LIKE ?" ); 96 } 97 $searchKana = $this->addSearchStr($this->arrSql['kana']); 98 $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchKana); 99 } 100 101 // 都道府県 102 if ( strlen($this->arrSql['pref']) > 0 ) { 103 $this->setWhere( "pref = ?" ); 104 $this->arrVal[] = $this->arrSql['pref']; 105 } 106 107 // 電話番号 108 if ( is_numeric( $this->arrSql['tel'] ) ) { 109 if(DB_TYPE == "pgsql"){ 110 $this->setWhere( "(tel01 || tel02 || tel03 LIKE ?)" ); 111 }elseif(DB_TYPE == "mysql"){ 112 $this->setWhere("concat(tel01,tel02,tel03) LIKE ?" ); 113 } 114 $searchTel = $this->addSearchStr($this->arrSql['tel']); 115 $this->arrVal[] = ereg_replace("-", "", $searchTel); 116 } 117 118 // 性別 119 if ( is_array( $this->arrSql['sex'] ) ){ 120 $arrSexVal = $this->setItemTerm( $this->arrSql['sex'] ,"sex" ); 121 foreach ($arrSexVal as $data) { 122 $this->arrVal[] = $data; 123 } 124 } 125 126 // 職業 127 if ( is_array( $this->arrSql['job'] ) ){ 128 if ( in_array("不明", $this->arrSql['job'] ) ) { 129 $arrJobVal = $this->setItemTermWithNull( $this->arrSql['job'] ,"job" ); 130 } else { 131 $arrJobVal = $this->setItemTerm( $this->arrSql['job'] ,"job" ); 132 } 133 if (is_array($arrJobVal)) { 134 foreach ($arrJobVal as $data) { 135 $this->arrVal[] = $data; 136 } 137 } 138 } 139 140 // E-MAIL 141 if (strlen($this->arrSql['email']) > 0) { 142 //カンマ区切りで複数の条件指定可能に 143 $this->arrSql['email'] = explode(",", $this->arrSql['email']); 144 $sql_where = ""; 145 foreach($this->arrSql['email'] as $val) { 146 $val = trim($val); 147 //検索条件を含まない 148 if($this->arrSql['not_emailinc'] == '1') { 149 if($sql_where == "") { 150 $sql_where .= "dtb_customer.email NOT ILIKE ? "; 151 } else { 152 $sql_where .= "AND dtb_customer.email NOT ILIKE ? "; 153 } 154 } else { 155 if($sql_where == "") { 156 $sql_where .= "dtb_customer.email ILIKE ? "; 157 } else { 158 $sql_where .= "OR dtb_customer.email ILIKE ? "; 159 } 160 } 161 $searchEmail = $this->addSearchStr($val); 162 $this->arrVal[] = $searchEmail; 163 } 164 $this->setWhere($sql_where); 165 } 166 167 // E-MAIL(mobile) 168 if (strlen($this->arrSql['email_mobile']) > 0) { 169 //カンマ区切りで複数の条件指定可能に 170 $this->arrSql['email_mobile'] = explode(",", $this->arrSql['email_mobile']); 171 $sql_where = ""; 172 foreach($this->arrSql['email_mobile'] as $val) { 173 $val = trim($val); 174 //検索条件を含まない 175 if($this->arrSql['not_email_mobileinc'] == '1') { 176 if($sql_where == "") { 177 $sql_where .= "dtb_customer.email_mobile NOT ILIKE ? "; 178 } else { 179 $sql_where .= "AND dtb_customer.email_mobile NOT ILIKE ? "; 180 } 181 } else { 182 if($sql_where == "") { 183 $sql_where .= "dtb_customer.email_mobile ILIKE ? "; 184 } else { 185 $sql_where .= "OR dtb_customer.email_mobile ILIKE ? "; 186 } 187 } 188 $searchemail_mobile = $this->addSearchStr($val); 189 $this->arrVal[] = $searchemail_mobile; 190 } 191 $this->setWhere($sql_where); 192 } 193 194 // 配信メールアドレス種別 195 if ( $mode == 'magazine' ){ 196 if ( strlen($this->arrSql['mail_type']) > 0 && $this->arrSql['mail_type'] == 2) { 197 $this->setWhere( " dtb_customer.email_mobile <> '' "); 198 } 199 } 200 201 // HTML-mail 202 if ( $mode == 'magazine' ){ 203 if ( strlen($this->arrSql['htmlmail']) > 0 ) { 204 $this->setWhere( " mailmaga_flg = ? "); 205 $this->arrVal[] = $this->arrSql['htmlmail']; 206 } else { 207 $this->setWhere( " (mailmaga_flg = 1 or mailmaga_flg = 2) "); 208 } 209 } 210 211 // 購入金額指定 212 if( is_numeric( $this->arrSql["buy_total_from"] ) || is_numeric( $this->arrSql["buy_total_to"] ) ) { 213 $arrBuyTotal = $this->selectRange($this->arrSql["buy_total_from"], $this->arrSql["buy_total_to"], "buy_total"); 214 foreach ($arrBuyTotal as $data1) { 215 $this->arrVal[] = $data1; 216 } 217 } 218 219 // 購入回数指定 220 if( is_numeric( $this->arrSql["buy_times_from"] ) || is_numeric( $this->arrSql["buy_times_to"] ) ) { 221 $arrBuyTimes = $this->selectRange($this->arrSql["buy_times_from"], $this->arrSql["buy_times_to"], "buy_times"); 222 foreach ($arrBuyTimes as $data2) { 223 $this->arrVal[] = $data2; 224 } 225 } 226 227 // 誕生日期間指定 228 if ( (strlen($this->arrSql['b_start_year']) > 0 && strlen($this->arrSql['b_start_month']) > 0 && strlen($this->arrSql['b_start_day']) > 0) || 229 strlen($this->arrSql['b_end_year']) > 0 && strlen($this->arrSql['b_end_month']) > 0 && strlen($this->arrSql['b_end_day']) > 0) { 230 231 $arrBirth = $this->selectTermRange($this->arrSql['b_start_year'], $this->arrSql['b_start_month'], $this->arrSql['b_start_day'] 232 , $this->arrSql['b_end_year'], $this->arrSql['b_end_month'], $this->arrSql['b_end_day'], "birth"); 233 if (is_array($arrBirth)) { 234 foreach ($arrBirth as $data3) { 235 $this->arrVal[] = $data3; 236 } 237 } 238 } 239 240 // 誕生月の検索 241 if (is_numeric($this->arrSql["birth_month"])) { 242 $this->setWhere(" EXTRACT(month from birth) = ?"); 243 $this->arrVal[] = $this->arrSql["birth_month"]; 244 } 245 246 // 登録期間指定 247 if ( (strlen($this->arrSql['start_year']) > 0 && strlen($this->arrSql['start_month']) > 0 && strlen($this->arrSql['start_day']) > 0 ) || 248 (strlen($this->arrSql['end_year']) > 0 && strlen($this->arrSql['end_month']) >0 && strlen($this->arrSql['end_day']) > 0) ) { 249 250 $arrRegistTime = $this->selectTermRange($this->arrSql['start_year'], $this->arrSql['start_month'], $this->arrSql['start_day'] 251 , $this->arrSql['end_year'], $this->arrSql['end_month'], $this->arrSql['end_day'], $regdate_col); 252 if (is_array($arrRegistTime)) { 253 foreach ($arrRegistTime as $data4) { 254 $this->arrVal[] = $data4; 255 } 256 } 257 } 258 259 // 最終購入日指定 260 if ( (strlen($this->arrSql['buy_start_year']) > 0 && strlen($this->arrSql['buy_start_month']) > 0 && strlen($this->arrSql['buy_start_day']) > 0 ) || 261 (strlen($this->arrSql['buy_end_year']) > 0 && strlen($this->arrSql['buy_end_month']) >0 && strlen($this->arrSql['buy_end_day']) > 0) ) { 262 $arrRegistTime = $this->selectTermRange($this->arrSql['buy_start_year'], $this->arrSql['buy_start_month'], $this->arrSql['buy_start_day'] 263 , $this->arrSql['buy_end_year'], $this->arrSql['buy_end_month'], $this->arrSql['buy_end_day'], "last_buy_date"); 264 if (is_array($arrRegistTime)) { 265 foreach ($arrRegistTime as $data4) { 266 $this->arrVal[] = $data4; 267 } 268 } 269 } 270 271 //購入商品コード 272 if ( strlen($this->arrSql['buy_product_code']) > 0 ) { 273 $this->setWhere( "customer_id IN (SELECT customer_id FROM dtb_order WHERE order_id IN (SELECT order_id FROM dtb_order_detail WHERE product_code LIKE ? ))"); 274 $search_buyproduct_code = $this->addSearchStr($this->arrSql['buy_product_code']); 275 $this->arrVal[] = $search_buyproduct_code; 276 } 277 278 //購入商品名称 279 if ( strlen($this->arrSql['buy_product_name']) > 0 ) { 280 $this->setWhere( "customer_id IN (SELECT customer_id FROM dtb_order WHERE order_id IN (SELECT order_id FROM dtb_order_detail WHERE product_name LIKE ? ))"); 281 $search_buyproduct_name = $this->addSearchStr($this->arrSql['buy_product_name']); 282 $this->arrVal[] = $search_buyproduct_name; 283 } 284 285 //カテゴリーを選択している場合のみ絞込検索を行う 286 if ( strlen($this->arrSql['category_id']) != ""){ 287 //カテゴリーで絞込検索を行うSQL文生成 288 list($tmp_where, $tmp_arrval) = sfGetCatWhere(sfManualEscape($this->arrSql['category_id'])); 289 290 //カテゴリーで絞込みが可能の場合 291 if($tmp_where != "") { 292 $this->setWhere( " customer_id IN (SELECT distinct customer_id FROM dtb_order WHERE order_id IN (SELECT distinct order_id FROM dtb_order_detail WHERE product_id IN (SELECT product_id FROM dtb_products WHERE ".$tmp_where." ))) "); 293 $this->arrVal = array_merge((array)$this->arrVal, (array)$tmp_arrval); 294 } 295 } 296 // 携帯電話番号 297 if ( is_numeric( $this->arrSql['cell'] ) ) { 298 $this->setWhere( "(cell01 || cell02 || cell03 LIKE ?)" ); 299 $searchTel = $this->addSearchStr($this->arrSql['cell']); 300 $this->arrVal[] = ereg_replace("-", "", $searchTel); 301 } 302 303 // キャンペーン 304 if ( is_numeric( $this->arrSql['campaign_id'] ) ) { 305 $this->setWhere( " customer_id IN (SELECT distinct customer_id FROM dtb_campaign_order WHERE campaign_id = ?)" ); 306 $this->arrVal[] = $this->arrSql['campaign_id']; 307 } 308 309 $this->setOrder( "customer_id DESC" ); 310 } 311 312 // 検索用SQL 313 function getList() { 314 $this->select = "SELECT customer_id,name01,name02,kana01,kana02,sex,email,tel01,tel02,tel03,pref,status FROM dtb_customer "; 315 return $this->getSql(0); 316 } 317 318 function getListMailMagazine($is_mobile = false) { 319 320 $colomn = $this->getMailMagazineColumn($is_mobile); 321 $this->select = " 322 SELECT 323 $colomn 324 FROM 325 dtb_customer"; 326 return $this->getSql(0); 327 } 328 329 function getMailMagazineColumn($is_mobile= false) { 330 if($is_mobile == true) { 331 $email_column = "dtb_customer.email_mobile as email"; 332 } else { 333 $email_column = "dtb_customer.email"; 334 } 335 336 $column ="dtb_customer.customer_id, 337 dtb_customer.name01, 338 dtb_customer.name02, 339 dtb_customer.kana01, 340 dtb_customer.kana02, 341 dtb_customer.sex, 342 $email_column, 343 dtb_customer.tel01, 344 dtb_customer.tel02, 345 dtb_customer.tel03, 346 dtb_customer.pref, 347 dtb_customer.mailmaga_flg"; 348 349 return $column; 350 } 351 352 // 検索総数カウント用SQL 353 function getListCount() { 354 $this->select = "SELECT COUNT(customer_id) FROM dtb_customer "; 355 return $this->getSql(1); 356 } 357 358 // CSVダウンロード用SQL 359 function getListCSV($arrColumnCSV) { 360 $this->arrColumnCSV = $arrColumnCSV; 361 $i = 0; 362 foreach ($this->arrColumnCSV as $val) { 363 if ($i != 0) $state .= ", "; 364 $state .= $val["sql"]; 365 $i ++; 366 } 367 368 $this->select = "SELECT " .$state. " FROM dtb_customer "; 369 return $this->getSql(2); 370 } 371 372 function getWhere() { 373 return array($this->where, $this->arrVal); 374 } 375 375 } 376 376 ?>
Note: See TracChangeset
for help on using the changeset viewer.
