Changeset 20426
- Timestamp:
- 2011/02/27 00:30:27 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/products/LC_Page_Products_Review.php
r20420 r20426 79 79 */ 80 80 function action() { 81 $objQuery = new SC_Query(); 82 83 //---- 登録用カラム配列 84 $arrRegistColumn = array( 85 array( "column" => "review_id", "convert" => "aKV" ), 86 array( "column" => "product_id", "convert" => "aKV" ), 87 array( "column" => "reviewer_name", "convert" => "aKV" ), 88 array( "column" => "reviewer_url", "convert" => "a"), 89 array( "column" => "sex", "convert" => "n" ), 90 array( "column" => "email", "convert" => "a" ), 91 array( "column" => "recommend_level", "convert" => "n" ), 92 array( "column" => "title", "convert" => "aKV" ), 93 array( "column" => "comment", "convert" => "aKV" ), 94 95 ); 81 $objFormParam = new SC_FormParam(); 82 $this->lfInitParam($objFormParam); 83 $objFormParam->setParam($_POST); 84 $objFormParam->convParam(); 96 85 97 86 switch ($this->getMode()){ 98 87 case 'confirm': 99 $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn); 100 $this->arrErr = $this->lfErrorCheck($arrForm); 101 //重複メッセージの判定 102 $flag = $objQuery->count("dtb_review","product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title'])); 103 104 if ($flag > 0){ 105 $this->arrErr['title'] .= "重複したタイトルは登録できません。"; 106 } 88 $this->arrErr = $this->lfCheckError($objFormParam); 107 89 108 90 //エラーチェック 109 91 if (empty($this->arrErr)) { 110 92 //重複タイトルでない 111 if($flag == 0){ 112 //商品名の取得 113 $arrForm['name'] = $objQuery->get("name", "dtb_products", "product_id = ? ", array($arrForm['product_id'])); 114 $this->arrForm = $arrForm; 115 $this->tpl_mainpage = 'products/review_confirm.tpl'; 116 } 117 } else { 118 //商品名の取得 119 $arrForm['name'] = $objQuery->get("name", "dtb_products", "product_id = ? ", array($arrForm['product_id'])); 120 $this->arrForm = $arrForm; 93 $this->tpl_mainpage = 'products/review_confirm.tpl'; 121 94 } 122 95 break; 123 96 124 97 case 'return': 125 foreach($_POST as $key => $val){ 126 $this->arrForm[ $key ] = $val; 127 } 128 129 //商品名の取得 130 $this->arrForm['name'] = $objQuery->get("name", "dtb_products", "product_id = ? ", array($this->arrForm['product_id'])); 131 if(empty($this->arrForm['name'])) { 132 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR); 98 break; 99 100 case 'complete': 101 $this->arrErr = $this->lfCheckError($objFormParam); 102 //エラーチェック 103 if (empty($this->arrErr)) { 104 //登録実行 105 $this->lfRegistRecommendData($objFormParam); 106 107 //レビュー書き込み完了ページへ 108 SC_Response_Ex::sendRedirect('review_complete.php'); 109 exit; 133 110 } 134 111 break; 135 112 136 case 'complete':137 $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);138 $arrErr = $this->lfErrorCheck($arrForm);139 //重複メッセージの判定140 $flag = $objQuery->count("dtb_review","product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title']));141 //エラーチェック142 if (empty($this->arrErr)) {143 //重複タイトルでない144 if($flag == 0) {145 //登録実行146 $this->lfRegistRecommendData($arrForm, $arrRegistColumn);147 //レビュー書き込み完了ページへ148 SC_Response_Ex::sendRedirect('review_complete.php');149 exit;150 }151 } else {152 if($flag > 0) {153 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);154 }155 }156 break;157 158 113 default: 159 if(SC_Utils_Ex::sfIsInt($_GET['product_id'])) {160 //商品情報の取得161 $arrForm = $objQuery->select("product_id, name", "dtb_products", "del_flg = 0 AND status = 1 AND product_id=?", array($_GET['product_id']));162 if(empty($arrForm)) { 163 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);164 } 165 $this->arrForm = $arrForm[0];166 }167 break;168 114 // 最初のproduct_idは、$_GETで渡ってくる。 115 $objFormParam->setParam($_GET); 116 } 117 118 $this->arrForm = $objFormParam->getHashArray(); 119 120 //商品名の取得 121 $this->arrForm['name'] = $this->lfGetProductName($this->arrForm['product_id']); 122 if (empty($this->arrForm['name'])) { 123 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR); 169 124 } 170 125 … … 181 136 } 182 137 183 //エラーチェック 184 185 function lfErrorCheck() { 186 $objErr = new SC_CheckError(); 187 $objErr->doFunc(array("商品ID", "product_id", INT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 188 $objErr->doFunc(array("投稿者名", "reviewer_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 189 $objErr->doFunc(array("投稿者URL", "reviewer_url", MTEXT_LEN), array("NO_SPTAB", "SPTAB_CHECK", "MAX_LENGTH_CHECK", "URL_CHECK")); 190 $objErr->doFunc(array("おすすめレベル", "recommend_level"), array("SELECT_CHECK")); 191 $objErr->doFunc(array("タイトル", "title", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 192 $objErr->doFunc(array("コメント", "comment", LTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 138 /** 139 * パラメータ情報の初期化を行う. 140 * 141 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 142 * @return void 143 */ 144 function lfInitParam(&$objFormParam) { 145 $objFormParam->addParam("レビューID", "review_id", INT_LEN, "aKV"); 146 $objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 147 $objFormParam->addParam("投稿者名", "reviewer_name", STEXT_LEN, "aKV", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 148 $objFormParam->addParam("投稿者URL", "reviewer_url", MTEXT_LEN, "a", array("NO_SPTAB", "SPTAB_CHECK", "MAX_LENGTH_CHECK", "URL_CHECK")); 149 $objFormParam->addParam("性別", "sex", INT_LEN, "n", array("NUM_CHECK", "MAX_LENGTH_CHECK")); 150 $objFormParam->addParam("おすすめレベル", "recommend_level", INT_LEN, "n", array("EXIST_CHECK", "SELECT_CHECK")); 151 $objFormParam->addParam("タイトル", "title", STEXT_LEN, "aKV", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 152 $objFormParam->addParam("コメント", "comment", LTEXT_LEN, "aKV", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 153 } 154 155 /** 156 * 入力内容のチェックを行う. 157 * 158 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 159 * @return array エラーメッセージの配列 160 */ 161 function lfCheckError(&$objFormParam) { 162 $arrErr = $objFormParam->checkError(); 163 164 $arrForm = $objFormParam->getHashArray(); 165 166 //重複メッセージの判定 167 $objQuery =& SC_Query::getSingletonInstance(); 168 $flag = $objQuery->count("dtb_review","product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title'])); 169 if ($flag > 0){ 170 $arrErr['title'] .= "重複したタイトルは登録できません。"; 171 } 193 172 194 173 if (REVIEW_ALLOW_URL == false) { 174 $objErr = new SC_CheckError($objFormParam->getHashArray()); 195 175 // コメント欄へのURLの入力を禁止 196 176 $objErr->doFunc(array("URL", "comment", $this->arrReviewDenyURL), array("PROHIBITED_STR_CHECK")); 197 } 198 199 return $objErr->arrErr; 200 } 201 202 //---- 取得文字列の変換 203 function lfConvertParam($array, $arrRegistColumn) { 204 /* 205 * 文字列の変換 206 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 207 * C : 「全角ひら仮名」を「全角かた仮名」に変換 208 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 209 * n : 「全角」数字を「半角(ハンカク)」に変換 210 * a : 全角英数字を半角英数字に変換する 211 */ 212 // カラム名とコンバート情報 213 foreach ($arrRegistColumn as $data) { 214 $arrConvList[ $data["column"] ] = $data["convert"]; 215 } 216 // 文字変換 217 foreach ($arrConvList as $key => $val) { 218 // POSTされてきた値のみ変換する。 219 if(!empty($array[$key])) { 220 $array[$key] = mb_convert_kana($array[$key] ,$val); 221 } 222 } 223 return $array; 177 $arrErr += $objErr->arrErr; 178 } 179 180 return $arrErr; 181 } 182 183 /** 184 * 商品名を取得 185 * 186 * @param integer $product_id 商品ID 187 * @return string $product_name 商品名 188 */ 189 function lfGetProductName($product_id) { 190 $objQuery =& SC_Query::getSingletonInstance(); 191 192 return $objQuery->get("name", "dtb_products", "product_id = ? ", array($product_id)); 224 193 } 225 194 226 195 //登録実行 227 function lfRegistRecommendData ($array, $arrRegistColumn) { 228 // 仮登録 229 foreach ($arrRegistColumn as $data) { 230 if (strlen($array[ $data["column"] ]) > 0 ) { 231 $arrRegist[ $data["column"] ] = $array[ $data["column"] ]; 232 } 233 } 196 function lfRegistRecommendData (&$objFormParam) { 197 $objQuery =& SC_Query::getSingletonInstance(); 198 $arrRegist = $objFormParam->getDbArray(); 199 234 200 $arrRegist['create_date'] = 'now()'; 235 201 $arrRegist['update_date'] = 'now()'; 236 202 $arrRegist['creator_id'] = '0'; 203 237 204 //-- 登録実行 238 $objQuery = new SC_Query();239 205 $objQuery->begin(); 240 206 $arrRegist['review_id'] = $objQuery->nextVal('dtb_review_review_id');
Note: See TracChangeset
for help on using the changeset viewer.