Changeset 20617
- Timestamp:
- 2011/03/12 00:02:29 (13 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20616
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/admin/products/product_class.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fproducts%2Fproduct_class.tpl
data/class/SC_UploadFile.php 18171@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fcomu-ver2%2Fdata%2Fclass%2FSC_UploadFile.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php 15559@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_ProductClass.php
data/module/gdthumb.php 15668@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fmodule%2Fgdthumb.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110311150104-eyf782ssm47r344u- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110311150225-0v81rm3xh533aakt
- bzr:revno:
- 3344
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/class/SC_UploadFile.php ohkouchi@loop-az.jp-20110311150104-eyf782ssm47r344u
data/module/gdthumb.php ohkouchi@loop-az.jp-20110311150104-eyf782ssm47r344u- bzr:timestamp:
- 2011-03-12 00:02:25.581000090 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-03-11T15:02:25.581000Z
- Location:
- branches/version-2_5-dev/data
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/Smarty/templates/admin/products/product_class.tpl
r20612 r20617 66 66 <input type="hidden" name="mode" value="edit" /> 67 67 <input type="hidden" name="product_id" value="<!--{$arrForm.product_id.value|h}-->" /> 68 <input type="hidden" name=" down_key" value="">68 <input type="hidden" name="upload_index" value=""> 69 69 <input type="hidden" name="total" value="<!--{$arrForm.total.value|h}-->" /> 70 70 <!--{* foreach key=name item=item from=$arrHidden *}--> … … 81 81 <th>規格1<span class="attention">*</span></th> 82 82 <td> 83 <!--{assign var=key value=" select_class_id1"}-->83 <!--{assign var=key value="class_id1"}--> 84 84 <!--{if $arrErr[$key]}--> 85 85 <span class="attention"><!--{$arrErr[$key]}--></span> … … 95 95 <th>規格2</th> 96 96 <td> 97 <!--{assign var=key value=" select_class_id2"}-->97 <!--{assign var=key value="class_id2"}--> 98 98 <!--{if $arrErr[$key]}--> 99 99 <span class="attention"><!--{$arrErr[$key]}--></span> … … 129 129 </div> 130 130 131 <!--{assign var=key1 value="class_id1"}-->132 <!--{assign var=key2 value="class_id2"}-->133 <!--{assign var=class_id1 value=$arrForm[$key1].value|h}-->134 <!--{assign var=class_id2 value=$arrForm[$key2].value|h}-->135 <input type="hidden" name="<!--{$key1}-->" value="<!--{$class_id1}-->" />136 <input type="hidden" name="<!--{$key2}-->" value="<!--{$class_id2}-->" />137 131 <!--{if $arrErr.check_empty}--> 138 132 <span class="attention"><!--{$arrErr.check_empty}--></span> … … 249 243 <!--{/if}--> 250 244 <!--{if $arrForm[$key].value[$index] != ""}--> 251 <!--{$arrForm[$key].value[$index]|h}--> 245 <!--{$arrForm[$key].value[$index]|h}--><br /> 252 246 <input type="hidden" name="<!--{$key}-->[<!--{$index}-->]" value="<!--{$arrForm[$key].value[$index]|h}-->" /> 253 <a href="?" onclick="fnFormModeSubmit('form1', ' delete_down', 'down_key[<!--{$index}-->]', '<!--{$key}-->'); return false;">[ファイルの取り消し]</a><br />254 <!--{ /if}-->247 <a href="?" onclick="fnFormModeSubmit('form1', 'file_delete', 'upload_index', '<!--{$index}-->'); return false;">[ファイルの取り消し]</a> 248 <!--{else}--> 255 249 <input type="file" name="<!--{$key}-->[<!--{$index}-->]" size="10" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /><br /> 256 <a class="btn-normal" href="javascript:;" name="btn" onclick="fnFormModeSubmit('form1', 'upload_down', 'down_key', '<!--{$key}-->[<!--{$index}-->]'); return false;">アップロード</a> 250 <a class="btn-normal" href="javascript:;" name="btn" onclick="fnFormModeSubmit('form1', 'file_upload', 'upload_index', '<!--{$index}-->'); return false;">アップロード</a> 251 <!--{/if}--> 257 252 </td> 258 253 </tr> -
branches/version-2_5-dev/data/class/SC_UploadFile.php
r20562 r20617 93 93 94 94 // アップロードされたファイルを保存する。 95 // FIXME see. http://www.php.net/manual/en/features.file-upload.php96 95 function makeTempFile($keyname, $rename = IMAGE_RENAME) { 97 96 $objErr = new SC_CheckError_Ex(); … … 125 124 $this->temp_file[$cnt] = $_FILES[$keyname]['name']; 126 125 } 127 $result = copy($_FILES[$keyname]['tmp_name'], $this->temp_dir . $this->temp_file[$cnt]); 128 GC_Utils_Ex::gfPrintLog($_FILES[$keyname]['name']." -> ". $this->temp_dir . $this->temp_file[$cnt]); 126 if (move_uploaded_file($_FILES[$keyname]['tmp_name'], $this->temp_dir . $this->temp_file[$cnt])) { 127 GC_Utils_Ex::gfPrintLog($_FILES[$keyname]['name']." -> ". $this->temp_dir . $this->temp_file[$cnt]); 128 } else { 129 $objErr->arrErr[$keyname] = '※ ファイルのアップロードに失敗しましたん。<br />'; 130 GC_Utils_Ex::gfPrintLog('File Upload Error!: ' . $_FILES[$keyname]['name']." -> ". $this->temp_dir . $this->temp_file[$cnt]); 131 } 129 132 } 130 133 } -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
r20612 r20617 82 82 // Downファイル管理クラスを初期化 83 83 $this->objDownFile = new SC_UploadFile_Ex(DOWN_TEMP_REALDIR, DOWN_SAVE_REALDIR); 84 $this->initDownFile($count, $this->objDownFile);85 84 86 85 switch ($this->getMode()) { … … 88 87 // 編集実行 89 88 case 'edit': 90 91 89 $this->arrErr = $this->lfCheckProductsClass($objFormParam); 92 90 … … 117 115 case 'delete': 118 116 $this->doDelete($objFormParam->getValue('product_id')); 117 $objFormParam->setValue('check', array()); 119 118 break; 120 119 … … 138 137 139 138 // ダウンロード商品ファイルアップロード 140 case 'upload_down': 141 142 /* TODO 143 $product_id = $objFormParam->getValue('product_id'); 144 $down_key = $objFormParam->getValue('down_key'); 145 // 編集画面用パラメータをセット 146 $this->doPreEdit($product_id, true); 147 // Hiddenからのデータを引き継ぐ 148 $this->objDownFile->setHiddenKikakuFileList($_POST); 149 // ファイル存在チェック 150 $this->arrErr = array_merge((array)$this->arrErr, (array)$this->objDownFile->checkEXISTS($down_key)); 151 // ファイル保存処理 152 $this->arrErr[$down_key] = $this->objDownFile->makeTempDownFile($down_key); 153 // HIDDEN用に配列を渡す。 154 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 155 // Form用に配列を渡す。 156 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 157 // 規格の組み合わせ一覧を表示 158 $this->doDisp($product_id, 159 $objFormParam->getValue('select_class_id1'), 160 $objFormParam->getValue('select_class_id2'), $objFormParam); 161 */ 139 case 'file_upload': 140 $this->doFileUpload($objFormParam); 162 141 break; 163 142 164 143 // ダウンロードファイルの削除 165 case 'delete_down': 166 167 /* TODO 168 $product_id = $objFormParam->getValue('product_id'); 169 $down_key = $objFormParam->getValue('down_key'); 170 // 編集画面用パラメータをセット 171 $this->doPreEdit($product_id, true); 172 // Hiddenからのデータを引き継ぐ 173 $this->objDownFile->setHiddenKikakuFileList($_POST); 174 // ファイル削除処理 175 $this->objDownFile->deleteKikakuFile($down_key); 176 // HIDDEN用に配列を渡す。 177 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList()); 178 // Form用に配列を渡す。 179 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile()); 180 // 規格の組み合わせ一覧を表示 181 $this->doDisp($product_id, 182 $objFormParam->getValue('select_class_id1'), 183 $objFormParam->getValue('select_class_id2'), $objFormParam); 184 */ 144 case 'file_delete': 145 $this->doFileDelete($objFormParam); 185 146 break; 186 147 … … 190 151 $objFormParam->setParam($_POST); 191 152 $objFormParam->convParam(); 192 193 /* TODO194 // Hiddenからのデータを引き継ぐ195 $this->objDownFile->setHiddenFileList($_POST);196 // HIDDEN用に配列を渡す。197 $this->arrHidden = array_merge((array)$this->arrHidden, (array)$this->objDownFile->getHiddenFileList());198 // Form用に配列を渡す。199 $this->arrForm = array_merge((array)$this->arrForm, (array)$this->objDownFile->getFormKikakuDownFile());200 */201 202 153 break; 154 203 155 case 'complete': 204 156 $this->tpl_mainpage = 'products/product_class_complete.tpl'; 205 // TODO $this->objDownFile->setHiddenFileList($_POST);206 207 $this->registerProductClass($objFormParam->getHashArray(),$objFormParam->getValue('product_id'),157 $this->doUploadComplete($objFormParam); 158 $this->registerProductClass($objFormParam->getHashArray(), 159 $objFormParam->getValue('product_id'), 208 160 $objFormParam->getValue('total')); 209 // TODO210 // 一時ファイルを本番ディレクトリに移動する211 // $this->objDownFile->moveTempDownFile();212 161 break; 213 162 … … 229 178 parent::destroy(); 230 179 } 180 231 181 /** 232 182 * パラメータ初期化 … … 255 205 256 206 // 規格プルダウン 257 $objFormParam->addParam("規格1", "select_class_id1", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));258 $objFormParam->addParam("規格2", "select_class_id2", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));259 207 $objFormParam->addParam("規格1", "class_id1", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 260 208 $objFormParam->addParam("規格2", "class_id2", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); … … 275 223 $objFormParam->addParam("商品種別", "product_type_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 276 224 $objFormParam->addParam("削除フラグ", "del_flg", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 277 $objFormParam->addParam(" DLファイル名", "down_filename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));278 $objFormParam->addParam(" DLファイル名", "down_realfilename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK"));225 $objFormParam->addParam("ダウンロード販売用ファイル名", "down_filename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 226 $objFormParam->addParam("ダウンロード販売用ファイル名", "down_realfilename", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 279 227 $objFormParam->addParam("チェックボックス", "check", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 280 $objFormParam->addParam("ファイルアップロード用キー", "down_key", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 281 } 282 283 /** 284 * Downファイル管理クラスを初期化 285 * 286 * @param 行数 $count 287 * @param SC_FormParam $objDownFile 288 */ 289 function initDownFile($count, &$objDownFile) { 290 $i = 1; 291 for ($i = 1; $i < $count; $i++) { 292 $objDownFile->addFile("ダウンロード販売用ファイル", 'down_realfilename'. ":" . $i, explode(",", DOWNLOAD_EXTENSION), DOWN_SIZE, true, 0, 0); 293 } 228 $objFormParam->addParam("ファイルアップロード用キー", "upload_index", STEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 294 229 } 295 230 … … 391 326 $arrPC['create_date'] = "now()"; 392 327 $arrPC['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id'); 328 /* 329 * チェックを入れない商品は product_type_id が NULL になるので, 0 を入れる 330 */ 331 $arrPC['product_type_id'] = SC_Utils_Ex::isBlank($arrPC['product_type_id']) ? 0 : $arrPC['product_type_id']; 393 332 $objQuery->insert("dtb_products_class", $arrPC); 394 333 } … … 416 355 function lfCheckSelectClass() { 417 356 $objErr = new SC_CheckError_Ex(); 418 $objErr->doFunc(array("規格1", " select_class_id1"), array("EXIST_CHECK"));419 $objErr->doFunc(array("規格", " select_class_id1", "select_class_id2"), array("TOP_EXIST_CHECK"));420 $objErr->doFunc(array("規格1", "規格2", " select_class_id1", "select_class_id2"), array("DIFFERENT_CHECK"));357 $objErr->doFunc(array("規格1", "class_id1"), array("EXIST_CHECK")); 358 $objErr->doFunc(array("規格", "class_id1", "select_class_id2"), array("TOP_EXIST_CHECK")); 359 $objErr->doFunc(array("規格1", "規格2", "class_id1", "class_id2"), array("DIFFERENT_CHECK")); 421 360 return $objErr->arrErr; 422 361 } … … 504 443 function doDisp(&$objFormParam) { 505 444 $product_id = $objFormParam->getValue('product_id'); 506 $ select_class_id1 = $objFormParam->getValue('select_class_id1');507 $ select_class_id2 = $objFormParam->getValue('select_class_id2');445 $class_id1 = $objFormParam->getValue('class_id1'); 446 $class_id2 = $objFormParam->getValue('class_id2'); 508 447 509 448 // すべての組み合わせを取得し, フォームに設定 510 $arrClassCat = $this->getAllClassCategory($ select_class_id1, $select_class_id2);449 $arrClassCat = $this->getAllClassCategory($class_id1, $class_id2); 511 450 $total = count($arrClassCat); 512 451 $objFormParam->setValue('total', $total); 513 452 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrClassCat)); 514 453 515 // class_id1, class_id2 は select_class_id1で上書き516 $objFormParam->setValue('class_id1', $ select_class_id1);517 $objFormParam->setValue('class_id2', $ select_class_id2);454 // class_id1, class_id2 を, 入力値で上書き 455 $objFormParam->setValue('class_id1', $class_id1); 456 $objFormParam->setValue('class_id2', $class_id2); 518 457 519 458 // 商品情報を取得し, フォームに設定 … … 546 485 $objFormParam->setValue('class_id1', $class_id1); 547 486 $objFormParam->setValue('class_id2', $class_id2); 548 $objFormParam->setValue('select_class_id1', $class_id1);549 $objFormParam->setValue('select_class_id2', $class_id2);550 487 $this->doDisp($objFormParam); 551 488 … … 567 504 $objFormParam->setValue('check', $arrChecks); 568 505 569 // class_id1, class_id2 を 上書き506 // class_id1, class_id2 を取得値で上書き 570 507 $objFormParam->setValue('class_id1', $class_id1); 571 508 $objFormParam->setValue('class_id2', $class_id2); … … 598 535 $objDb = new SC_Helper_DB_Ex(); 599 536 $objDb->sfCountCategory($objQuery); 537 } 538 } 539 540 /** 541 * ファイルアップロードを行う. 542 * 543 * 以下のチェックを行い, ファイルを一時領域へアップロードする. 544 * 1. ファイルサイズチェック 545 * 2. 拡張子チェック 546 * 547 * TODO 548 * SC_CheckError クラスや, SC_UploadFile クラスが多次元配列に対応して 549 * いないため, 独自のロジックを使用している. 550 * 551 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 552 * @return void 553 */ 554 function doFileUpload(&$objFormParam) { 555 $index = $objFormParam->getValue('upload_index'); 556 $arrDownRealFiles = $objFormParam->getValue('down_realfilename'); 557 558 if ($_FILES['down_realfilename']['size'][$index] <= 0) { 559 $this->arrErr['down_realfilename'][$index] = '※ ファイルがアップロードされていません'; 560 } else if ($_FILES['down_realfilename']['size'][$index] > DOWN_SIZE * 1024 ) { 561 $size = DOWN_SIZE; 562 $byte = 'KB'; 563 if ($size >= 1000) { 564 $size = $size / 1000; 565 $byte = 'MB'; 566 } 567 $this->arrErr['down_realfilename'][$index] = "※ ダウンロード販売用ファイル名のファイルサイズは" . $size . $byte . "以下のものを使用してください。<br />"; 568 } else { 569 $array_ext = explode(".", $_FILES['down_realfilename']['name'][$index]); 570 $is_error = true; 571 $strExt = ""; 572 573 foreach (explode(",", DOWNLOAD_EXTENSION) as $checkExt ) { 574 $ext = ""; 575 // チェック拡張子のピリオドの数を取得('tar.gz'の場合1個、'jpg'のように通常は0個) 576 $count_period = substr_count($checkExt, "."); 577 if($count_period > 0) { 578 for ($i = max(array_keys($array_ext)) - $count_period; $i < count($array_ext); $i++) { 579 $ext .= $array_ext[$i] . "."; 580 } 581 $ext = preg_replace("/.$/", "" ,$ext); 582 } else { 583 $ext = $array_ext[ count ( $array_ext ) - 1 ]; 584 } 585 $ext = strtolower($ext); 586 587 if ($ext == $checkExt) { 588 $is_error = false; 589 } 590 if($strExt == "") { 591 $strExt .= $checkExt; 592 } else { 593 $strExt .= "・$checkExt"; 594 } 595 } 596 if ($is_error) { 597 $this->arrErr['down_realfilename'][$index] = "※ ダウンロード販売用ファイル名で許可されている形式は、" . $strExt . "です。<br />"; 598 } 599 600 $uniqname = date('mdHi') . "_" . uniqid("")."."; 601 $temp_file = preg_replace("/^.*\./", $uniqname, $_FILES['down_realfilename']['name'][$index]); 602 603 if (move_uploaded_file($_FILES['down_realfilename']['tmp_name'][$index], DOWN_TEMP_REALDIR . $temp_file)) { 604 $arrDownRealFiles[$index] = $temp_file; 605 $objFormParam->setValue('down_realfilename', $arrDownRealFiles); 606 GC_Utils_Ex::gfPrintLog($_FILES['down_realfilename']['name'][$index] ." -> ". realpath(DOWN_TEMP_REALDIR . $temp_file)); 607 } else { 608 $objErr->arrErr[$keyname] = '※ ファイルのアップロードに失敗しました。<br />'; 609 GC_Utils_Ex::gfPrintLog('File Upload Error!: ' . $_FILES['down_realfilename']['name'][$index] . " -> " . DOWN_TEMP_REALDIR . $temp_file); 610 } 611 } 612 } 613 614 /** 615 * アップロードしたファイルを削除する. 616 * 617 * TODO 一時ファイルの削除 618 * 619 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 620 * @return void 621 */ 622 function doFileDelete(&$objFormParam) { 623 $objImage = new SC_Image_Ex(DOWN_TEMP_REALDIR); 624 $arrRealFileName = $objFormParam->getValue('down_realfilename'); 625 $index = $objFormParam->getValue('upload_index'); 626 $objImage->deleteImage($arrRealFileName[$index], DOWN_SAVE_REALDIR); 627 $arrRealFileName[$index] = ''; 628 $objFormParam->setValue('down_realfilename', $arrRealFileName); 629 } 630 631 /** 632 * アップロードした一時ファイルを保存する. 633 * 634 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 635 * @return void 636 */ 637 function doUploadComplete(&$objFormParam) { 638 $objImage = new SC_Image_Ex(DOWN_TEMP_REALDIR); 639 $arrRealFileName = $objFormParam->getValue('down_realfilename'); 640 foreach ($arrRealFileName as $real_file_name) { 641 $objImage->moveTempImage($real_file_name, DOWN_SAVE_REALDIR); 600 642 } 601 643 } -
branches/version-2_5-dev/data/module/gdthumb.php
r20116 r20617 147 147 if($re_size[0] == $size[0] && $re_size[1] == $size[1]) { 148 148 // サイズが同じ場合には、そのままコピーする。(画質劣化を防ぐ) 149 copy($path, $dst_file); 149 if (!move_uploaded_file($path, $dst_file)) { 150 return array(0, "アップロードに失敗しました。"); 151 } 150 152 } else { 151 153 imagegif($dst_im, $dst_file); … … 164 166 if($re_size[0] == $size[0] && $re_size[1] == $size[1]) { 165 167 // サイズが同じ場合には、そのままコピーする。(画質劣化を防ぐ) 166 copy($path, $dst_file); 168 if (!move_uploaded_file($path, $dst_file)) { 169 return array(0, "アップロードに失敗しました。"); 170 } 167 171 } else { 168 172 imagepng($dst_im, $dst_file); … … 216 220 if($re_size[0] == $size[0] && $re_size[1] == $size[1]) { 217 221 // サイズが同じ場合には、そのままコピーする。(画質劣化を防ぐ) 218 copy($path, $dst_file); 222 if (!move_uploaded_file($path, $dst_file)) { 223 return array(0, "アップロードに失敗しました。"); 224 } 219 225 } else { 220 226 imageJpeg($dst_im, $dst_file); … … 257 263 if($re_size[0] == $size[0] && $re_size[1] == $size[1]) { 258 264 // サイズが同じ場合には、そのままコピーする。(画質劣化を防ぐ) 259 copy($path, $dst_file); 265 if (!move_uploaded_file($path, $dst_file)) { 266 return array(0, "アップロードに失敗しました。"); 267 } 260 268 } else { 261 269 imagepng($dst_im, $dst_file);
Note: See TracChangeset
for help on using the changeset viewer.