Changeset 16294
- Timestamp:
- 2007/10/06 00:17:17 (16 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/html/admin/contents/campaign.php
r15532 r16294 5 5 * http://www.lockon.co.jp/ 6 6 */ 7 require_once("../require.php");8 require_once("./campaign_csv.php");9 require_once(DATA_PATH . "include/file_manager.inc");10 7 11 // ---- 認証可否の判定12 $objSess = new SC_Session();13 sfIsSuccess($objSess);8 // {{{ requires 9 require_once("../../require.php"); 10 require_once(CLASS_PATH . "page_extends/admin/contents/LC_Page_Admin_Contents_Campaign_Ex.php"); 14 11 15 //---- ページ表示クラス 16 class LC_Page { 17 18 function LC_Page() { 19 $this->tpl_mainpage = 'contents/campaign.tpl'; 20 $this->tpl_subnavi = 'contents/subnavi.tpl'; 21 $this->tpl_subno = "campaign"; 22 $this->tpl_mainno = 'contents'; 23 $this->tpl_subtitle = 'キャンペーン管理'; 24 // カートに商品が入っているにチェックが入っているかチェック 25 $this->tpl_onload = "fnIsCartOn();"; 26 } 27 } 12 // }}} 13 // {{{ generate page 28 14 29 30 $objPage = new LC_Page(); 31 $objView = new SC_AdminView(); 32 $objQuery = new SC_Query(); 33 $objFormParam = new SC_FormParam(); 34 35 // 認証可否の判定 36 sfIsSuccess($objSess); 37 38 // パラメータ情報の初期化 39 lfInitParam(); 40 // フォームの値をセット 41 $objFormParam->setParam($_POST); 42 43 // 編集処理の場合は状態を保持 44 $objPage->is_update = $_POST['is_update']; 45 46 // フォームの値をテンプレートへ渡す 47 $objPage->arrForm = $objFormParam->getHashArray(); 48 $campaign_id = $_POST['campaign_id']; 49 50 switch($_POST['mode']) { 51 // 新規登録/編集登録 52 case 'regist': 53 // エラーチェック 54 $objPage->arrErr = lfErrorCheck($campaign_id); 55 56 if(count($objPage->arrErr) <= 0) { 57 // 登録 58 lfRegistCampaign($campaign_id); 59 60 // キャンペーンTOPへリダイレクト 61 header("location: ".URL_CAMPAIGN_TOP); 62 } 63 64 break; 65 // 編集押下時 66 case 'update': 67 // キャンペーン情報を取得 68 $objPage->arrForm = lfGetCampaign($campaign_id); 69 $objPage->is_update = true; 70 break; 71 // 削除押下時 72 case 'delete': 73 // 削除 74 lfDeleteCampaign($campaign_id); 75 // キャンペーンTOPへリダイレクト 76 header("location: ".URL_CAMPAIGN_TOP); 77 break; 78 // CSV出力 79 case 'csv': 80 // オプションの指定 81 $option = "ORDER BY create_date DESC"; 82 83 // CSV出力タイトル行の作成 84 $arrCsvOutput = sfSwapArray(sfgetCsvOutput(4, " WHERE csv_id = 4 AND status = 1")); 85 86 if (count($arrCsvOutput) <= 0) break; 87 88 $arrCsvOutputCols = $arrCsvOutput['col']; 89 $arrCsvOutputTitle = $arrCsvOutput['disp_name']; 90 $head = sfGetCSVList($arrCsvOutputTitle); 91 $data = lfGetCSV("dtb_campaign_order", "campaign_id = ?", $option, array($campaign_id), $arrCsvOutputCols); 92 93 // CSVを送信する。 94 sfCSVDownload($head.$data); 95 exit; 96 break; 97 default: 98 break; 99 } 100 101 // キャンペーン一覧取得 102 $objPage->arrCampaign = lfGetCampaignList(); 103 $objPage->campaign_id = $campaign_id; 104 105 // キャンペーン期間用 106 $objDate = new SC_Date(); 107 $objPage->arrYear = $objDate->getYear(); 108 $objPage->arrMonth = $objDate->getMonth(); 109 $objPage->arrDay = $objDate->getDay(); 110 $objPage->arrHour = $objDate->getHour(); 111 $objPage->arrMinutes = $objDate->getMinutes(); 112 113 //---- ページ表示 114 $objView->assignobj($objPage); 115 $objView->display(MAIN_FRAME); 116 117 118 //--------------------------------------------------------------------------------------------------------------------------------------------------------- 119 /* 120 * 関数名:lfInitParam 121 * 説明 :入力情報の初期化 122 */ 123 function lfInitParam() { 124 global $objFormParam; 125 126 $objFormParam->addParam("キャンペーン名", "campaign_name", MTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 127 128 $objFormParam->addParam("開始日時", "start_year", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 129 $objFormParam->addParam("開始日時", "start_month", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 130 $objFormParam->addParam("開始日時", "start_day", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 131 $objFormParam->addParam("開始日時", "start_hour", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 132 $objFormParam->addParam("開始日時", "start_minute", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 133 134 $objFormParam->addParam("停止日時", "end_year", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 135 $objFormParam->addParam("停止日時", "end_month", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 136 $objFormParam->addParam("停止日時", "end_day", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 137 $objFormParam->addParam("停止日時", "end_hour", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 138 $objFormParam->addParam("停止日時", "end_minute", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 139 140 $objFormParam->addParam("ディレクトリ名", "directory_name", MTEXT_LEN, "KVa", array("EXIST_CHECK","ALNUM_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 141 $objFormParam->addParam("申込数制御", "limit_count", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 142 $objFormParam->addParam("重複申込制御", "orverlapping_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 143 $objFormParam->addParam("カートに商品を入れる", "cart_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 144 $objFormParam->addParam("送料無料設定", "deliv_free_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 145 146 } 147 148 /* 149 * 関数名:lfErrorCheck() 150 * 引数1 :キャンペーンID 151 * 説明 :エラーチェック 152 * 戻り値:エラー文字格納配列 153 */ 154 function lfErrorCheck($campaign_id = "") { 155 156 global $objQuery; 157 global $objFormParam; 158 159 $arrList = $objFormParam->getHashArray(); 160 $objErr = new SC_CheckError($arrList); 161 $objErr->arrErr = $objFormParam->checkError(); 162 163 $objErr->doFunc(array("開始日時", "start_year", "start_month", "start_day", "start_hour", "start_minute", "0"), array("CHECK_DATE2")); 164 $objErr->doFunc(array("停止日時", "end_year", "end_month", "end_day", "end_hour", "end_minute", "0"), array("CHECK_DATE2")); 165 $objErr->doFunc(array("開始日時", "停止日時", "start_year", "start_month", "start_day", "start_hour", "start_minute", "00", "end_year", "end_month", "end_day", "end_hour", "end_minute", "59"), array("CHECK_SET_TERM2")); 166 167 if(count($objErr->arrErr) <= 0) { 168 169 // 編集時用に元のディレクトリ名を取得する。 170 if($campaign_id != "") { 171 $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 172 } else { 173 $directory_name = ""; 174 } 175 176 // 同名のフォルダが存在する場合はエラー 177 if(file_exists(CAMPAIGN_TEMPLATE_PATH.$arrList['directory_name']) && $directory_name != $arrList['directory_name']) { 178 $objErr->arrErr['directory_name'] = "※ 同名のディレクトリがすでに存在します。<br/>"; 179 } 180 $ret = $objQuery->get("dtb_campaign", "directory_name", "directory_name = ? AND del_flg = 0", array($arrList['directory_name'])); 181 // DBにすでに登録されていないかチェック 182 if($ret != "" && $directory_name != $arrList['directory_name']) { 183 $objErr->arrErr['directory_name'] = "※ すでに登録されているディレクトリ名です。<br/>"; 184 } 185 } 186 187 return $objErr->arrErr; 188 } 189 190 /* 191 * 関数名:lfRegistCampaign() 192 * 引数1 :キャンペーンID(アップデート時に指定) 193 * 説明 :キャンペーン登録/更新 194 * 戻り値:無し 195 */ 196 function lfRegistCampaign($campaign_id = "") { 197 198 global $objFormParam; 199 global $objQuery; 200 201 $objSiteInfo = new SC_SiteInfo(); 202 $arrInfo = $objSiteInfo->data; 203 $arrList = $objFormParam->getHashArray(); 204 205 // 開始日時・終了日時整形 206 $start_date = $arrList['start_year']."-".sprintf("%02d", $arrList['start_month'])."-".sprintf("%02d", $arrList['start_day'])." ".sprintf("%02d", $arrList['start_hour']).":".sprintf("%02d", $arrList['start_minute']).":00"; 207 $end_date = $arrList['end_year']."-".sprintf("%02d", $arrList['end_month'])."-".sprintf("%02d", $arrList['end_day'])." ".sprintf("%02d", $arrList['end_hour']).":".sprintf("%02d", $arrList['end_minute']).":00"; 208 209 // ポイントレートは設定されていなければ0を挿入 210 if($arrInfo['point_rate'] == "") $arrInfo['point_rate'] = "0"; 211 // フラグは設定されていなければ0を挿入 212 if(!$arrList['limit_count']) $arrList['limit_count'] = "0"; 213 if(!$arrList['orverlapping_flg']) $arrList['orverlapping_flg'] = "0"; 214 if(!$arrList['cart_flg']) $arrList['cart_flg'] = "0"; 215 if(!$arrList['deliv_free_flg']) $arrList['deliv_free_flg'] = "0"; 216 217 $sqlval['campaign_name'] = $arrList['campaign_name']; 218 $sqlval['campaign_point_rate'] = $arrInfo['point_rate']; 219 $sqlval['start_date'] = $start_date; 220 $sqlval['end_date'] = $end_date; 221 $sqlval['directory_name'] = $arrList['directory_name']; 222 $sqlval['limit_count'] = $arrList['limit_count']; 223 $sqlval['orverlapping_flg'] = $arrList['orverlapping_flg']; 224 $sqlval['cart_flg'] = $arrList['cart_flg']; 225 $sqlval['deliv_free_flg'] = $arrList['deliv_free_flg']; 226 $sqlval['update_date'] = "now()"; 227 228 // キャンペーンIDで指定されている場合はupdate 229 if($campaign_id != "") { 230 231 // 元のディレクトリ名を取得名 232 $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 233 // ファイル名を変更 234 @rename(CAMPAIGN_TEMPLATE_PATH . $directory_name , CAMPAIGN_TEMPLATE_PATH . $arrList['directory_name']); 235 @rename(CAMPAIGN_PATH . $directory_name , CAMPAIGN_PATH . $arrList['directory_name']); 236 237 // update 238 $objQuery->update("dtb_campaign", $sqlval, "campaign_id = ?", array($campaign_id)); 239 240 } else { 241 242 // キャンペーンページディレクトリ作成 243 lfCreateTemplate(CAMPAIGN_TEMPLATE_PATH, $arrList['directory_name']); 244 245 $sqlval['create_date'] = "now()"; 246 // insert 247 $objQuery->insert("dtb_campaign", $sqlval); 248 } 249 } 250 251 /* 252 * 関数名:lfGetCampaignList() 253 * 説明 :キャンペーン一覧を取得 254 * 戻り値:キャンペーン一覧配列 255 */ 256 function lfGetCampaignList() { 257 258 global $objQuery; 259 260 $col = "campaign_id,campaign_name,directory_name,total_count"; 261 $objQuery->setorder("update_date DESC"); 262 $arrRet = $objQuery->select($col, "dtb_campaign", "del_flg = 0"); 263 264 return $arrRet; 265 } 266 267 /* 268 * 関数名:lfGetCampaign() 269 * 引数1 :キャンペーンID 270 * 説明 :キャンペーン情報取得 271 * 戻り値:キャンペーン情報配列 272 */ 273 function lfGetCampaign($campaign_id) { 274 275 global $objQuery; 276 277 $col = "campaign_id,campaign_name,start_date,end_date,directory_name,limit_count,orverlapping_flg,cart_flg,deliv_free_flg"; 278 $arrRet = $objQuery->select($col, "dtb_campaign", "campaign_id = ?", array($campaign_id)); 279 280 // 開始日時・停止日時を分解 281 $start_date = (date("Y/m/d/H/i/s" , strtotime($arrRet[0]['start_date']))); 282 list($arrRet[0]['start_year'],$arrRet[0]['start_month'],$arrRet[0]['start_day'],$arrRet[0]['start_hour'], $arrRet[0]['start_minute'], $arrRet[0]['start_second']) = split("/", $start_date); 283 $end_date = (date("Y/m/d/H/i/s" , strtotime($arrRet[0]['end_date']))); 284 list($arrRet[0]['end_year'],$arrRet[0]['end_month'],$arrRet[0]['end_day'],$arrRet[0]['end_hour'], $arrRet[0]['end_minute'], $arrRet[0]['end_second']) = split("/", $end_date); 285 286 return $arrRet[0]; 287 } 288 289 /* 290 * 関数名:lfDeleteCampaign() 291 * 引数1 :キャンペーンID 292 * 説明 :キャンペーン削除 293 * 戻り値:無し 294 */ 295 function lfDeleteCampaign($campaign_id) { 296 297 global $objQuery; 298 299 // ディレクトリ名を取得名 300 $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($campaign_id)); 301 // ファイルを削除 302 sfDeleteDir(CAMPAIGN_TEMPLATE_PATH . $directory_name); 303 sfDeleteDir(CAMPAIGN_PATH . $directory_name); 304 305 $sqlval['del_flg'] = 1; 306 $sqlval['update_date'] = "now()"; 307 // delete 308 $objQuery->update("dtb_campaign", $sqlval, "campaign_id = ?", array($campaign_id)); 309 } 310 311 /* 312 * 関数名:lfCreateTemplate() 313 * 引数1 :ディレクトリパス 314 * 引数2 :作成ファイル名 315 * 説明 :キャンペーンの初期テンプレート作成 316 * 戻り値:無し 317 */ 318 function lfCreateTemplate($dir, $file) { 319 320 global $objFormParam; 321 $arrRet = $objFormParam->getHashArray(); 322 323 324 // 作成ファイルディレクトリ 325 $create_dir = $dir . $file; 326 $create_active_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 327 $create_end_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_END; 328 // デフォルトファイルディレクトリ 329 $default_dir = $dir . "default"; 330 $default_active_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE; 331 $default_end_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_END; 332 333 $ret = sfCreateFile($create_dir, 0755); 334 $ret = sfCreateFile($create_active_dir, 0755); 335 $ret = sfCreateFile($create_end_dir, 0755); 336 337 // キャンペーン実行PHPをコピー 338 $ret = sfCreateFile(CAMPAIGN_PATH . $file); 339 copy($default_dir . "/src/index.php", CAMPAIGN_PATH . $file . "/index.php"); 340 copy($default_dir . "/src/application.php", CAMPAIGN_PATH . $file . "/application.php"); 341 copy($default_dir . "/src/complete.php", CAMPAIGN_PATH . $file . "/complete.php"); 342 copy($default_dir . "/src/entry.php", CAMPAIGN_PATH . $file . "/entry.php"); 343 344 // デフォルトテンプレート作成(キャンペーン中) 345 $header = lfGetFileContents($default_active_dir."header.tpl"); 346 sfWriteFile($header, $create_active_dir."header.tpl", "w"); 347 $contents = lfGetFileContents($default_active_dir."contents.tpl"); 348 if(!$arrRet['cart_flg']) { 349 $contents .= "\n" . '<!--{*ログインフォーム*}-->' . "\n"; 350 $contents .= lfGetFileContents(CAMPAIGN_BLOC_PATH . "login.tpl"); 351 $contents .= '<!--{*会員登録フォーム*}-->'."\n"; 352 $contents .= lfGetFileContents(CAMPAIGN_BLOC_PATH . "entry.tpl"); 353 } 354 sfWriteFile($contents, $create_active_dir."contents.tpl", "w"); 355 $footer = lfGetFileContents($default_active_dir."footer.tpl"); 356 sfWriteFile($footer, $create_active_dir."footer.tpl", "w"); 357 358 // サイトフレーム作成 359 $site_frame = $header."\n"; 360 $site_frame .= '<script type="text/javascript" src="<!--{$smarty.const.URL_DIR}-->js/navi.js"></script>'."\n"; 361 $site_frame .= '<script type="text/javascript" src="<!--{$smarty.const.URL_DIR}-->js/site.js"></script>'."\n"; 362 $site_frame .= '<!--{include file=$tpl_mainpage}-->'."\n"; 363 $site_frame .= $footer."\n"; 364 sfWriteFile($site_frame, $create_active_dir."site_frame.tpl", "w"); 365 366 /* デフォルトテンプレート作成(キャンペーン終了) */ 367 $header = lfGetFileContents($default_end_dir."header.tpl"); 368 sfWriteFile($header, $create_end_dir."header.tpl", "w"); 369 $contents = lfGetFileContents($default_end_dir."contents.tpl"); 370 sfWriteFile($contents, $create_end_dir."contents.tpl", "w"); 371 $footer = lfGetFileContents($default_end_dir."footer.tpl"); 372 sfWriteFile($footer, $create_end_dir."footer.tpl", "w"); 373 } 374 375 /* 376 * 関数名:lfGetFileContents() 377 * 引数1 :ファイルパス 378 * 説明 :ファイル読込 379 * 戻り値:無し 380 */ 381 function lfGetFileContents($read_file) { 382 383 if(file_exists($read_file)) { 384 $contents = file_get_contents($read_file); 385 } else { 386 $contents = ""; 387 } 388 389 return $contents; 390 } 15 $objPage = new LC_Page_Admin_Contents_Campaign_Ex(); 16 $objPage->init(); 17 $objPage->process(); 18 register_shutdown_function(array($objPage, "destroy")); 391 19 ?>
Note: See TracChangeset
for help on using the changeset viewer.