Changeset 19948 for branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
- Timestamp:
- 2011/01/18 02:51:57 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
r19943 r19948 201 201 $objDb->sfMaker_Count($objQuery); 202 202 // 一時ファイルを本番ディレクトリに移動する 203 $this->objUpFile->moveTempFile(); 203 // TODO: SC_UploadFile::moveTempFileの画像削除条件見直し要 204 $objImage = new SC_Image($this->objUpFile->temp_dir); 205 $arrKeyName = $this->objUpFile->keyname; 206 $arrTempFile = $this->objUpFile->temp_file; 207 $arrSaveFile = $this->objUpFile->save_file; 208 $arrImageKey = array(); 209 foreach ($arrTempFile as $key => $temp_file) { 210 if ($temp_file) { 211 $objImage->moveTempImage($temp_file, $this->objUpFile->save_dir); 212 $arrImageKey[] = $arrKeyName[$key]; 213 if (!empty($arrSaveFile[$key]) && !$this->lfHasSameProductImage($this->arrForm['product_id'], $arrImageKey, $arrSaveFile[$key]) && !in_array($temp_file, $arrSaveFile)) { 214 $objImage->deleteImage($arrSaveFile[$key], $this->objUpFile->save_dir); 215 } 216 } 217 } 204 218 $this->objDownFile->moveTempDownFile(); 205 219 … … 219 233 // 画像の削除 220 234 case 'delete_image': 221 $this->objUpFile->deleteFile($_POST['image_key']); 235 // TODO: SC_UploadFile::deleteFileの画像削除条件見直し要 236 $arrTempFile = $this->objUpFile->temp_file; 237 $arrKeyName = $this->objUpFile->keyname; 238 foreach ($arrKeyName as $key => $keyname) { 239 if ($keyname != $_POST['image_key']) continue; 240 if (!empty($arrTempFile[$key])) { 241 $temp_file = $arrTempFile[$key]; 242 $arrTempFile[$key] = ''; 243 if (!in_array($temp_file, $arrTempFile)) { 244 $this->objUpFile->deleteFile($_POST['image_key']); 245 } else { 246 $this->objUpFile->temp_file[$key] = ''; 247 $this->objUpFile->save_file[$key] = ''; 248 } 249 } else { 250 $this->objUpFile->temp_file[$key] = ''; 251 $this->objUpFile->save_file[$key] = ''; 252 } 253 } 222 254 $this->lfProductPage(); // 商品登録ページ 223 255 break; … … 536 568 // 削除要求のあった既存ファイルの削除 537 569 $arrRet = $this->lfGetProduct($arrList['product_id']); 538 $this->objUpFile->deleteDBFile($arrRet); 570 // TODO: SC_UploadFile::deleteDBFileの画像削除条件見直し要 571 $objImage = new SC_Image($this->objUpFile->temp_dir); 572 $arrKeyName = $this->objUpFile->keyname; 573 $arrSaveFile = $this->objUpFile->save_file; 574 $arrImageKey = array(); 575 foreach ($arrKeyName as $key => $keyname) { 576 if ($arrRet[$keyname] && !$arrSaveFile[$key]) { 577 $arrImageKey[] = $keyname; 578 $has_same_image = $this->lfHasSameProductImage($arrList['product_id'], $arrImageKey, $arrRet[$keyname]); 579 if (!$has_same_image) { 580 $objImage->deleteImage($arrRet[$keyname], $this->objUpFile->save_dir); 581 } 582 } 583 } 539 584 $this->objDownFile->deleteDBDownFile($arrRet); 540 585 … … 898 943 $this->objDownFile->addFile("ダウンロード販売用ファイル", 'down_file', explode(",", DOWNLOAD_EXTENSION),DOWN_SIZE, true, 0, 0); 899 944 } 945 946 /** 947 * 同名画像ファイル登録の有無を確認する. 948 * 949 * 画像ファイルの削除可否判定用。 950 * 同名ファイルの登録がある場合には画像ファイルの削除を行わない。 951 * 戻り値: 同名ファイル有り(true) 同名ファイル無し(false) 952 * 953 * @param string $product_id 商品ID 954 * @param string $arrImageKey 対象としない画像カラム名 955 * @param string $image_file_name 画像ファイル名 956 * @return boolean 957 */ 958 function lfHasSameProductImage($product_id, $arrImageKey, $image_file_name) { 959 if (!SC_Utils_Ex::sfIsInt($product_id)) return false; 960 if (!$arrImageKey) return false; 961 if (!$image_file_name) return false; 962 963 $arrWhere = array(); 964 $sqlval = array('0', $product_id); 965 foreach ($arrImageKey as $image_key) { 966 $arrWhere[] = "{$image_key} = ?"; 967 $sqlval[] = $image_file_name; 968 } 969 $where = implode(" OR ", $arrWhere); 970 $where = "del_flg = ? AND ((product_id <> ? AND ({$where}))"; 971 972 $arrKeyName = $this->objUpFile->keyname; 973 foreach ($arrKeyName as $key => $keyname) { 974 if (in_array($keyname, $arrImageKey)) continue; 975 $where .= " OR {$keyname} = ?"; 976 $sqlval[] = $image_file_name; 977 } 978 $where .= ")"; 979 980 $objQuery = new SC_Query(); 981 $count = $objQuery->count('dtb_products', $where, $sqlval); 982 if (!$count) return false; 983 return true; 984 } 900 985 } 901 986 ?>
Note: See TracChangeset
for help on using the changeset viewer.