init(); $masterData = new SC_DB_MasterData_Ex(); $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank")); $this->arrSex = $masterData->getMasterData("mtb_sex"); $this->arrDISP = $masterData->getMasterData("mtb_disp"); $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); } // }}} // {{{ functions /** * CSV 項目を出力する. * * @param integer $csv_id CSV ID * @param string $where SQL の WHERE 句 * @param array $arrVal WHERE 句の要素 * @return array CSV 項目の配列 */ function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){ $objQuery = new SC_Query(); $arrData = array(); $ret = array(); $sql = ""; $sql .= " SELECT "; $sql .= " no, "; $sql .= " csv_id, "; $sql .= " col, "; $sql .= " disp_name, "; $sql .= " rank, "; $sql .= " status, "; $sql .= " create_date, "; $sql .= " update_date "; $sql .= " FROM "; $sql .= " dtb_csv "; if ($where != "") { $sql .= $where; $arrData = $arrVal; }elseif($csv_id != ""){ $sql .= " WHERE csv_id = ? "; $arrData = array($csv_id); } $sql .= " ORDER BY "; $sql .= " rank , no"; $sql .= " "; $ret = $objQuery->getall($sql, $arrData); return $ret; } // CSV出力データを作成する。(商品) function lfGetProductsCSV($where, $option, $arrval, $arrOutputCols) { $objDb = new SC_Helper_DB_Ex(); $from = "vw_product_class AS prdcls"; $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true, array('category_id')); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); // 規格分類名一覧 if (!empty($arrOutputCols['classcategory_id1']) || !empty($arrOutputCols['classcategory_id2'])) { $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); } if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 関連商品情報の付与 if (in_array('classcategory_id1', $arrOutputCols)) { $list_data[$i]['classcategory_id1'] = $arrClassCatName[$list_data[$i]['classcategory_id1']]; } if (in_array('classcategory_id2', $arrOutputCols)) { $list_data[$i]['classcategory_id2'] = $arrClassCatName[$list_data[$i]['classcategory_id2']]; } if (in_array('category_id', $arrOutputCols)) { $arrCategory_id = $objQuery->getCol("dtb_product_categories", "category_id", "product_id = ?", array($list_data[$i]['product_id'])); // カテゴリID 付与 for ($j = 0; $j < count($arrCategory_id); $j++) { $list_data[$i]['category_id'] .= $arrCategory_id[$j]; if ($j < count($arrCategory_id) - 1) { $list_data[$i]['category_id'] .= "|"; } } } // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeProductsCSV($list_data[$i], $arrOutputCols); } return $data; } // CSV出力データを作成する。(レビュー) function lfGetReviewCSV($where, $option, $arrval) { $from = "dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id "; $cols = SC_Utils_Ex::sfGetCommaList($this->arrREVIEW_CVSCOL); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeReviewCSV($list_data[$i]); } return $data; } // CSV出力データを作成する。(トラックバック) function lfGetTrackbackCSV($where, $option, $arrval) { $from = "dtb_trackback AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id "; $cols = SC_Utils_Ex::sfGetCommaList($this->arrTRACKBACK_CVSCOL); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeTrackbackCSV($list_data[$i]); } return $data; } // CSV出力データを作成する。(カテゴリ) function lfGetCategoryCSV($where, $option, $arrval, $arrOutputCols) { $objDb = new SC_Helper_DB_Ex(); $from = "dtb_category"; $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeCSV($list_data[$i]); } return $data; } // CSV出力データを作成する。 function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "") { $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); $objQuery = new SC_Query(); $objQuery->setoption($option); $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeCSV($list_data[$i]); } return $data; } // 各項目をCSV出力用に変換する。 function lfMakeCSV($list) { $line = ""; foreach($list as $key => $val) { $tmp = ""; switch($key) { case 'order_pref': $tmp = $this->arrPref[$val]; break; default: $tmp = $val; break; } $tmp = ereg_replace("[\",]", " ", $tmp); $line .= "\"".$tmp."\","; } // 文末の","を変換 $line = $this->replaceLineSuffix($line); return $line; } // 各項目をCSV出力用に変換する。(商品) function lfMakeProductsCSV($list, $arrOutputCols) { $line = ""; if(is_array($list)) { foreach($arrOutputCols as $key) { $tmp = ""; switch($key) { case 'point_rate': if($val == "") { $tmp = '0'; } else { $tmp = $list[$key]; } break; default: $tmp = $list[$key]; break; } $tmp = str_replace("\"", "\\\"", $tmp); $line .= "\"".$tmp."\","; } // 文末の","を変換 $line = $this->replaceLineSuffix($line); } return $line; } // 各項目をCSV出力用に変換する。(レビュー) function lfMakeReviewCSV($list) { $line = ""; foreach($list as $key => $val) { $tmp = ""; switch($key) { case 'sex': $tmp = isset($this->arrSex[$val]) ? $this->arrSex[$val] : ""; break; case 'recommend_level': $tmp = isset($this->arrRECOMMEND[$val]) ? $this->arrRECOMMEND[$val] : ""; break; case 'status': $tmp = isset($this->arrDISP[$val]) ? $this->arrDISP[$val] : ""; break; default: $tmp = $val; break; } $tmp = ereg_replace("[\",]", " ", $tmp); $line .= "\"".$tmp."\","; } // 文末の","を変換 $line = $this->replaceLineSuffix($line); return $line; } // 各項目をCSV出力用に変換する。(トラックバック) function lfMakeTrackbackCSV($list) { $line = ""; foreach($list as $key => $val) { $tmp = ""; switch($key) { case 'status': $tmp = $this->arrTrackBackStatus[$val]; break; default: $tmp = $val; break; } $tmp = ereg_replace("[\",]", " ", $tmp); $line .= "\"".$tmp."\","; } // 文末の","を変換 $line = $this->replaceLineSuffix($line); return $line; } /** * 行末の ',' を CRLF へ変換する. * * @access private * @param string $line CSV出力用の1行分の文字列 * @return string 行末の ',' を CRLF に変換した文字列 */ function replaceLineSuffix($line) { return mb_ereg_replace(",$", "\r\n", $line); } /** * 項目情報を初期化する. * * @access private * @return void */ function init() { $this->arrSubnavi = array( 1 => 'product', 2 => 'customer', 3 => 'order', 4 => 'campaign', 5 => 'category' ); $this->arrSubnaviName = array( 1 => '商品管理', 2 => '顧客管理', 3 => '受注管理', 4 => 'キャンペーン', 5 => 'カテゴリ' ); $this->arrREVIEW_CVSCOL = array( 'B.name', 'A.status', 'A.create_date', 'A.reviewer_name', 'A.sex', 'A.recommend_level', 'A.title', 'A.comment' ); $this->arrREVIEW_CVSTITLE = array( '商品名', 'レビュー表示', '投稿日', '投稿者名', '性別', 'おすすめレベル', 'タイトル', 'コメント' ); $this->arrTRACKBACK_CVSTITLE = array( '商品名', 'ブログ名', 'ブログ記事タイトル', 'ブログ記事内容', '状態', '投稿日' ); $this->arrTRACKBACK_CVSCOL = array( 'B.name', 'A.blog_name', 'A.title', 'A.excerpt', 'A.status', 'A.create_date' ); } } ?>