/** * 事前処理 */ protected function prepare() { // 案件IDをチェック $ankenId = $this->_request['aid']; if (empty($ankenId) == true) { throw new RequestParamsException(); } // 案件IDをテンプレートに設定 $this->_dataFrom['anken_id'] = $ankenId; // 画面初期化 // 種別名称を追加 $enum = new TeikeiMediaStatusEnum(); $status =& $enum->getArray(); $this->_dataFrom['teikei_media_status'] =& $status; // 成果反映方法 $enum = new TeikeiAspSeikaKindEnum(); $aspSeikaKind = $enum->getArray(); $this->_dataFrom['asp_seika_kind'] =& $aspSeikaKind; // デフォルト検索条件設定 $this->_like['teikei_media_status'] = array_keys($status); // 検索条件 if (isset($this->_request['search'])) { $this->_like['teikei_media_status'] = $this->_request['teikei_media_status']; } // 検索条件保持 $this->_dataFrom['search'] =& $this->_like; }
/** * 画面表示のためのテンプレート初期化 */ public function &Anken_TeikeiEdit_getInitData() { $data = array(); // 成果反映方法 $enum = new TeikeiAspSeikaKindEnum(); $data['asp_seika_kind'] = $enum->getArray(); return $data; }
/** * 実行 */ protected function perform() { // コア $core =& $this->_core; // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // ログデータ格納用 $logDataList = ""; // 単価と卸値の初期値を案件情報から取得 $anken =& $m->getAnkenData($ankenId); $priceTypeCd = $anken['price_type_cd']; $deviceCd = $anken['device_cd']; $useOprionPrice = $anken['use_option_price']; // 単価・卸値のチェックパターン $pattarnDigit = '^[0-9]{1,10}$'; //↓↓===========nm00251 2011/05/20 start=================================== //$pattarnDecimal = '^[0-9]{1,10}\.[0-9]{1,1}$'; $pattarnDecimal = '^[0-9]{1,10}\\.[0-9]{1,2}$'; //↑↑===========nm00251 2011/05/20 end=================================== // tmpファイル if (empty($ankenId) == false && is_uploaded_file($_FILES['upload']['tmp_name'])) { // キャンペーンコード $code = $anken['campaign_code']; $filename = md5(time() . rand(0, 100)); $path = ABS_DATAROOT . 'tmp/' . $filename; try { // メディア取得 $mediaIdList =& $m->Anken_TeikeiNewAllUpload_getMediaIdList(); move_uploaded_file($_FILES['upload']['tmp_name'], $path); $results = array(); $lines = file($path); // キー情報 $keys = array('media_id'); //---------------------------------------------- // 単価タイプにより項目を変える //---------------------------------------------- if ($priceTypeCd == "2") { // 定率 $keys = array_merge($keys, array('price', 'extra_price', 'oroshi_price', 'extra_oroshi')); } else { if ($useOprionPrice == "1") { // ID別売上・原価設定 $price =& $m->Anken_TeikeiNewAllUpload_getAddPriceList($ankenId); $keys = array_merge($keys, $price); } else { // 定額 $keys = array_merge($keys, array('price', 'oroshi_price')); } } // 共通項目を追加 $keys = array_merge($keys, array('download_flag', 'redirect_url')); //---------------------------------------------- // モバイルの場合、キャリア別飛び先URLを追加 //---------------------------------------------- if ($deviceCd == "2") { $keys = array_merge($keys, array('docomo_url', 'au_url', 'softbank_url')); } //↓↓===========nm00240 2011/05/05 start=================================== //デバイス対応の場合、スマートフォン飛び先URLを追加 $checkDevice = $m->checkDevice($ankenId); if ($deviceCd == "1" && $checkDevice == true) { $keys = array_merge($keys, array('smartphone_url')); } //↑↑===========nm00240 2011/05/05 end=================================== //↓↓===========nm00166 2009/10/06 start=================================== // 追加パラメータ使用の場合 if ($useOprionPrice == "1" && $priceTypeCd == "1") { // ID別成果報告URL設定 $MediaUrl =& $m->Anken_TeikeiNewAllUpload_getAddMediaUrlList($ankenId); $keys = array_merge($keys, $MediaUrl); // 追加パラメータ使用しないの場合 } // 共通項目を追加(成果報告URL除外) //$keys = array_merge($keys, array('media_url', 'teikei_from', 'teikei_to', 'suspend_from', 'suspend_to', 'free1_cd')); //↓↓===========nm00220 2010/10/27 start=================================== //$keys = array_merge($keys, array('teikei_from', 'teikei_to', 'suspend_from', 'suspend_to','free1_cd')); $keys = array_merge($keys, array('teikei_from', 'teikei_to', 'suspend_from', 'suspend_to', 'asp_admin_url', 'asp_login_id', 'asp_password', 'asp_seika_kind', 'asp_op_memo')); $keys = array_merge($keys, array('expire_type')); if ($deviceCd == "1") { $keys = array_merge($keys, array('expire_id_cookie')); } else { if ($deviceCd == "2") { $keys = array_merge($keys, array('expire_uid_mob')); } } $keys = array_merge($keys, array('advertise_from', 'advertise_to', 'expire_advertise', 'free1_cd')); //↑↑===========nm00220 2010/10/27 end===================================== //↑↑===========nm00166 2009/10/06 end===================================== foreach ($lines as $index => $line) { try { // 空白行は無視します if (trim($line) == "") { continue; } // 例外配列初期化 $eList = array(); // 配列化 $values = explode(',', $line); // 配列の数が合わない // 数を合わせる if (count($keys) != count($values)) { $new = array(); $count = count($keys); for ($i = 0; $i < $count; $i++) { // 値を初期化 $new[$i] = ""; // 値とコピー $v = trim($values[$i]); if ($v != "") { $new[$i] = $v; } } // 変数を置き換える unset($values); $values = $new; } // データ配列を生成 $data =& array_combine($keys, $values); //---------------------------------------------- // メディアID (省略不可) //---------------------------------------------- // メディアIDフォーマット $mediaId = trim($data['media_id']); if (empty($mediaId) == true && is_numeric($mediaId) == false) { $eList[] = new MediaId_NullException(); } else { if (in_array($mediaId, $mediaIdList) == false) { // 選択可能なメディアID $eList[] = new MediaId_NotFountException(); } else { //↓↓===========nm00220 2010/12/06 start=================================== // 既に登録されているメディアチェックを削除 $data['media_id'] = $mediaId; //// 既に登録されているメディアID //$count = $m->Anken_TeikeiNewAllUpload_getTeikeiMedieCount($code, $mediaId); //if ($count !== 0) { // $eList[] = new MediaId_ExistsException(); //} else { // $data['media_id'] = $mediaId; //} //↑↑===========nm00220 2010/12/06 end===================================== } } //---------------------------------------------- // 定率の場合 //---------------------------------------------- if ($priceTypeCd == "2") { //---------------------------------------------- // 売上率1 //---------------------------------------------- // フォーマット $price = trim($data['price']); if (empty($price) == false) { if (ereg($pattarnDigit, $price) == true || ereg($pattarnDecimal, $price) == true) { $data['price'] = $price; } else { $e = new Price_FormatException(); $eList[] = $e; } } else { // 省略 $data['price'] = $anken['price']; } //---------------------------------------------- // 売上率2 //---------------------------------------------- // フォーマット $price = trim($data['extra_price']); if (empty($price) == false) { if (ereg($pattarnDigit, $price) == true || ereg($pattarnDecimal, $price) == true) { $data['extra_price'] = $price; } else { $e = new Price_FormatException(); $eList[] = $e; } } else { // 省略 $data['extra_price'] = $anken['price2']; } //---------------------------------------------- // 原価率1 //---------------------------------------------- $oroshi = trim($data['oroshi_price']); if (empty($oroshi) == false) { if (ereg($pattarnDigit, $oroshi) == true || ereg($pattarnDecimal, $oroshi) == true) { $data['oroshi_price'] = $oroshi; } else { $e = new OroshiPrice_FormatException(); $eList[] = $e; } } else { // 省略時 $data['oroshi_price'] = $anken['price3']; } //---------------------------------------------- // 原価率2 //---------------------------------------------- // フォーマット $oroshi = trim($data['extra_oroshi']); if (empty($oroshi) == false) { if (ereg($pattarnDigit, $oroshi) == true || ereg($pattarnDecimal, $oroshi) == true) { $data['extra_oroshi'] = $oroshi; } else { $e = new OroshiPrice_FormatException(); $eList[] = $e; } } else { // 省略時 $data['extra_oroshi'] = $anken['price4']; } //---------------------------------------------- // ID別売上・原価設定 //---------------------------------------------- } else { if ($useOprionPrice == "1") { $i = 1; foreach ($data as $key => $value) { if (ereg("^price([0-9]+)\$", $key, $match) == true) { // 値ID $id = $match[1]; $priceKey = "price{$id}"; $oroshiKey = "oroshi{$id}"; //---------------------------------------------- // 売上 //---------------------------------------------- // フォーマット $price = trim($data[$priceKey]); if (empty($price) == false) { if (ereg($pattarnDigit, $price) == false) { $e = new Price_FormatException("金額{$i}"); $eList[] = $e; } else { $data[$priceKey] = $price; } } else { // 省略 $data[$priceKey] = 0; } //---------------------------------------------- // 原価 //---------------------------------------------- // フォーマット $oroshi = trim($data[$oroshiKey]); if (empty($oroshi) == false) { if (ereg($pattarnDigit, $oroshi) == false) { $e = new OroshiPrice_FormatException("金額{$i}"); $eList[] = $e; } else { $data[$oroshiKey] = $oroshi; } } else { // 省略時 $data[$oroshiKey] = 0; } $i++; } } //---------------------------------------------- // 定額 //---------------------------------------------- } else { //---------------------------------------------- // 売上 //---------------------------------------------- // フォーマット $price = trim($data['price']); if (empty($price) == false) { if (ereg($pattarnDigit, $price) == false) { $e = new Price_FormatException(); $eList[] = $e; } else { $data['price'] = $price; } } else { // 省略 $data['price'] = 0; } //---------------------------------------------- // 原価 //---------------------------------------------- // フォーマット $oroshi = trim($data['oroshi_price']); if (empty($oroshi) == false) { if (ereg($pattarnDigit, $oroshi) == false) { $e = new OroshiPrice_FormatException(); $eList[] = $e; } else { $data['oroshi_price'] = $oroshi; } } else { // 省略時 $data['oroshi_price'] = 0; } } } //---------------------------------------------- // ダウンロード許可 //---------------------------------------------- // フォーマット $flag = trim($data['download_flag']); if (is_numeric($flag) == true) { if ($flag != 0 && $flag != 1) { $e = new DownloadFlag_FormatException(); $eList[] = $e; } else { $data['download_flag'] = $flag; } } else { // デフォルト許可 $data['download_flag'] = 1; } //---------------------------------------------- // クライアントURL //---------------------------------------------- $url = trim($data['redirect_url']); if (empty($url) == false) { $data['redirect_url'] = $url; } else { $data['redirect_url'] = null; } //---------------------------------------------- // キャリア別飛び先URL //---------------------------------------------- if ($deviceCd == "2") { // DoCoMo $url = trim($data['docomo_url']); if (empty($url) == false) { $data['docomo_url'] = $url; } else { $data['docomo_url'] = null; } // au $url = trim($data['au_url']); if (empty($url) == false) { $data['au_url'] = $url; } else { $data['au_url'] = null; } // SoftBank $url = trim($data['softbank_url']); if (empty($url) == false) { $data['softbank_url'] = $url; } else { $data['softbank_url'] = null; } } //↓↓===========nm00240 2011/05/05 start=================================== //---------------------------------------------- // スマートフォン飛び先URL //---------------------------------------------- if ($deviceCd == "1" && $checkDevice == true) { $url = trim($data['smartphone_url']); if (empty($url) == false) { $data['smartphone_url'] = $url; } else { $data['smartphone_url'] = null; } } //↑↑===========nm00240 2011/05/05 end=================================== //---------------------------------------------- // 成果報告用URL //---------------------------------------------- //↓↓===========nm00166 2009/10/06 start=================================== //$url = trim($data['media_url']); //if (empty($url) == false) { // $data['media_url'] = $url; //} else { // $data['media_url'] = null; //} // 追加パラメータ使用の場合 if ($useOprionPrice == "1" && $priceTypeCd == "1") { // ID別成果報告用URLのチェック foreach ($data as $key => $value) { if (ereg("^media_url([0-9]+)\$", $key, $match) == true) { // 値ID $id = $match[1]; $media_urlKey = "media_url{$id}"; //---------------------------------------------- // 成果報告URL //---------------------------------------------- // フォーマット $media_url = trim($data[$media_urlKey]); if (empty($media_url) == false) { $data[$media_urlKey] = $media_url; } else { $data[$media_urlKey] = null; } $i++; } } // 追加パラメータ使用しないの場合 } else { // ID別成果報告用URLのチェック $url = trim($data['media_url']); if (empty($url) == false) { $data['media_url'] = $url; } else { $data['media_url'] = null; } } //↑↑===========nm00166 2009/10/06 end===================================== //---------------------------------------------- // 提携期間開始(YYYY-MM-DD)と終了(YYYY-MM-DD) //---------------------------------------------- $from = trim($data['teikei_from']); $to = trim($data['teikei_to']); $data['teikei_from'] = null; $data['teikei_to'] = null; if (empty($from) == true && empty($to) == true) { // 両方未入力 } else { if (empty($from) == false && empty($to) == false) { $ifrom = strtotime($from); $ito = strtotime($to); if ($ifrom == false || $ito == false) { // 形式エラー $eList[] = new Kikan_FormatException(); } else { if ($ito < $ifrom) { // 順番エラー $eList[] = new Kikan_OrderException(); } else { $data['teikei_from'] = date('Y-m-d', $ifrom); $data['teikei_to'] = date('Y-m-d', $ito); } } } else { // 片方未入力 $eList[] = new Kikan_FormatException(); $data['teikei_from'] = null; $data['teikei_to'] = null; } } //---------------------------------------------- // 休止期間 //---------------------------------------------- $suspendFrom = trim($data['suspend_from']); $suspendTo = trim($data['suspend_to']); if (empty($suspendFrom) == true && empty($suspendTo) == true) { // 両方未入力 } else { if (empty($suspendFrom) == false && empty($suspendTo) == false) { // 配列化 $suspendFromDate = explode('-', $suspendFrom); $suspendToDate = explode('-', $suspendTo); if (count($suspendFromDate) !== 4 || count($suspendToDate) !== 4) { $eList[] = new SuspendKikan_FormatException(); $data['suspend_from'] = null; $data['suspend_to'] = null; } else { $date = $suspendFromDate[0] . "-" . $suspendFromDate[1] . "-" . $suspendFromDate[2]; $isuspendFromDate = strtotime($date); $date = $suspendToDate[0] . "-" . $suspendToDate[1] . "-" . $suspendToDate[2]; $isuspendToDate = strtotime($date); if ($isuspendFromDate == false || $isuspendToDate == false) { $eList[] = new SuspendKikan_FormatException(); $data['suspend_from'] = null; $data['suspend_to'] = null; } else { // 休止期間時刻 $suspendFromHour = trim($suspendFromDate[3]); $suspendToHour = trim($suspendToDate[3]); if (strlen($suspendFromHour) == 0 || strlen($suspendToHour) == 0 || (is_numeric($suspendFromHour) == false || is_numeric($suspendToHour) == false) || ($suspendFromHour < 0 || 23 < $suspendFromHour || ($suspendToHour < 0 || 23 < $suspendToHour))) { $eList[] = new SuspendKikan_FormatException(); $data['suspend_from'] = null; $data['suspend_to'] = null; } else { $from = strtotime(date("Y-m-d", $isuspendFromDate) . " {$suspendFromHour}:00:00"); $to = strtotime(date("Y-m-d", $isuspendToDate) . " {$suspendToHour}:59:59"); $data['suspend_from'] = date("Y-m-d H:i:s", $from); $data['suspend_to'] = date("Y-m-d H:i:s", $to); // 期間チェック if (strtotime($data['suspend_from']) > strtotime($data['suspend_to'])) { $eList[] = new SuspendKikan_OrderException(); $data['suspend_from'] = null; $data['suspend_to'] = null; } } } } } else { // 片方未入力 $eList[] = new SuspendKikan_FormatException(); $data['suspend_from'] = null; $data['suspend_to'] = null; } } //↓↓===========nm00220 2010/10/27 start=================================== //---------------------------------------------- // 管理画面情報 //---------------------------------------------- //管理画面URL $aspAdminUrl = trim($data['asp_admin_url']); if (empty($aspAdminUrl) == false) { $data['asp_admin_url'] = $aspAdminUrl; } else { $data['asp_admin_url'] = null; } // ログインID $aspLoginId = trim($data['asp_login_id']); $aspLoginId = mb_convert_encoding($aspLoginId, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspLoginId) == false) { $data['asp_login_id'] = $aspLoginId; } else { // 省略 $data['asp_login_id'] = null; } // パスワード $aspPassword = trim($data['asp_password']); $aspPassword = mb_convert_encoding($aspPassword, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspPassword) == false) { $data['asp_password'] = $aspPassword; } else { // 省略 $data['asp_password'] = null; } // 成果反映方法 $aspSeikaKind = trim($data['asp_seika_kind']); $enum = new TeikeiAspSeikaKindEnum(); if (array_key_exists($aspSeikaKind, $enum->getArray())) { // デフォルト成果反映方法 $data['asp_seika_kind'] = $aspSeikaKind; //未入力の場合,デフォルトを設定する } else { if (empty($aspSeikaKind)) { $data['asp_seika_kind'] = 0; } else { $e = new AspSeikaKind_FormatException(); $eList[] = $e; } } // OPメモ $aspOpMemo = trim($data['asp_op_memo']); $aspOpMemo = mb_convert_encoding($aspOpMemo, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspOpMemo) == false) { $data['asp_op_memo'] = $aspOpMemo; } else { // 省略 $data['asp_op_memo'] = null; } //---------------------------------------------- // 広告有効期限タイプ //---------------------------------------------- $expireType = trim($data['expire_type']); $expireType = mb_convert_encoding($expireType, 'UTF-8', 'CP932, SJIS, euc-jp'); if ($deviceCd == 1) { $enum = new ExpireTypePcEnum(); } else { if ($deviceCd == 2) { $enum = new ExpireTypeMbEnum(); } } if (array_key_exists($expireType, $enum->getArray())) { $data['expire_type'] = $expireType; } else { $e = new ExpireType_FormatException(); $eList[] = $e; } $expireMatchString = '/^[0-9]+$/'; if ($deviceCd == 1) { $expireIdCookie = trim($data['expire_id_cookie']); $expireIdCookie = mb_convert_encoding($expireIdCookie, 'UTF-8', 'CP932, SJIS, euc-jp'); if (preg_match($expireMatchString, $expireIdCookie) == true || empty($expireIdCookie) == true) { $data['expire_id_cookie'] = $expireIdCookie; } else { $e = new ExpireCookie_FormatException(); $eList[] = $e; } } else { if ($deviceCd == 2) { $expireUidMob = trim($data['expire_uid_mob']); $expireUidMob = mb_convert_encoding($expireUidMob, 'UTF-8', 'CP932, SJIS, euc-jp'); if (preg_match($expireMatchString, $expireUidMob) == true || empty($expireUidMob) == true) { $data['expire_uid_mob'] = $expireUidMob; } else { $e = new ExpireMobUid_FormatException(); $eList[] = $e; } } } //---------------------------------------------- // 広告掲載期間開始(YYYY-MM-DD)と終了(YYYY-MM-DD) //---------------------------------------------- $from = trim($data['advertise_from']); $to = trim($data['advertise_to']); $data['advertise_from'] = null; $data['advertise_to'] = null; if ($expireType == 2) { if (empty($from) == true || empty($to) == true) { // 片方未入力 $eList[] = new AdvertiseKikan_NullException(); } } if (empty($from) == false || empty($to) == false) { $ifrom = strtotime($from); $ito = strtotime($to); if ($ifrom == false || $ito == false) { // 形式エラー $eList[] = new AdvertiseKikan_FormatException(); } else { if ($ito < $ifrom) { // 順番エラー $eList[] = new AdvertiseKikan_OrderException(); } else { $data['advertise_from'] = date('Y-m-d', $ifrom); $data['advertise_to'] = date('Y-m-d', $ito); } } } //---------------------------------------------- // 広告有効期限 //---------------------------------------------- $advertiseExpire = trim($data['expire_advertise']); $advertiseExpire = mb_convert_encoding($advertiseExpire, 'UTF-8', 'CP932, SJIS, euc-jp'); if (preg_match($expireMatchString, $advertiseExpire) == true || empty($advertiseExpire) == true) { $data['expire_advertise'] = $advertiseExpire; } else { $eList[] = new ExpireAdvertise_FormatException(); } //↑↑===========nm00220 2010/10/27 end===================================== //---------------------------------------------- // 備考 //---------------------------------------------- // フォーマット $free = trim($data['free1_cd']); $free = mb_convert_encoding($free, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($free) == false) { $data['free1_cd'] = $free; } else { // 省略 $data['free1_cd'] = null; } //---------------------------------------------- // オブジェクト生成 //---------------------------------------------- //↓↓===========nm00220 2010/12/06 start=================================== //$o = new DataAnken_Media_v3($code); // 既に登録されているメディア取得 $oldTeikeiMedia = $m->Anken_TeikeiNewAllUpload_getExistTeikeiMedie($code, $mediaId); // 登録されていないメディアIDの場合 if (empty($oldTeikeiMedia) == true) { $o = new DataAnken_Media_953($code); // 既に登録されているメディアIDの場合 } else { $o = $oldTeikeiMedia; $old = clone $oldTeikeiMedia; } //↑↑===========nm00220 2010/12/06 end===================================== $o->setData($data); $o->getField('anken_id')->setValue($ankenId); //---------------------------------------------- // 値チェック //---------------------------------------------- $check =& $o->getChecker(); $check->checkAll(); if ($check->getErrorCount() != 0) { $msg = $check->getErrorMessage(); $eList[] = new CheckerException($msg); } //---------------------------------------------- // モバイルの場合、クライアントURL、キャリア別URLチェック追加 //---------------------------------------------- if ($deviceCd == 2) { //↓↓===========nm00189 2010/04/13 start=================================== $seikaCountType = $anken['seika_count_type']; // 成果計測方法「セッション」の場合、文字--NMID--有無チェック要 if ($seikaCountType == 1) { //↑↑===========nm00189 2010/04/13 end===================================== $check =& $o->getCheckerForMobileUrl(); //↓↓===========nm00189 2010/04/13 start=================================== // 成果計測方法「端末ID」の場合、文字--NMID--有無チェック不要 } elseif ($seikaCountType == 2) { $check =& $o->getCheckerForMobileUrlByMobUid(); // 他の場合、対応なし } else { } //↑↑===========nm00189 2010/04/13 end===================================== $check->checkAll(); if ($check->getErrorCount() != 0) { $msg = $check->getErrorMessage(); $eList[] = new CheckerException($msg); } } //---------------------------------------------- // DB insert //---------------------------------------------- if (count($eList) == 0) { $loginUserId = $this->_core->getLoginLoginId(); $o->getField('upd_user_id')->setValue($loginUserId); //↓↓===========nm00220 2010/12/06 start=================================== //$m->insert($o); // 登録されていないメディアID if (empty($oldTeikeiMedia) == true) { $m->insert($o); // 更新フラグ設定:新規 $updateFlg = "0"; // 既に登録されているメディアID } else { $m->update($o); // 更新フラグ設定:更新 $updateFlg = "1"; } //↑↑===========nm00220 2010/12/06 end===================================== // ログ用データ $logDataList .= $this->makeLogData($old, $o); // ID別売上・原価設定 //↓↓===========nm00166 2009/10/06 start=================================== // ID別成果報告URL設定 //↑↑===========nm00166 2009/10/06 end===================================== if ($priceTypeCd == "1" && $useOprionPrice == "1") { //↓↓===========nm00220 2010/12/06 start=================================== //$m->Anken_TeikeiNewAllUpload_insertSeikaOptionPrice($ankenId, $data); // 登録されていないメディアIDの場合、ID別売上・原価を追加 if (empty($oldTeikeiMedia) == true) { $m->Anken_TeikeiNewAllUpload_insertSeikaOptionPrice($ankenId, $data); // 既に登録されているメディアIDの場合、ID別売上・原価を更新 } else { $m->Anken_TeikeiNewAllUpload_updateSeikaOptionPrice($ankenId, $data); } //↑↑===========nm00220 2010/12/06 end===================================== } } //---------------------------------------------- // 表示用処理 //---------------------------------------------- $num = $index + 1; //↓↓===========nm00220 2010/12/06 start=================================== //$results[$num] = array("data"=>$data, "eListCount"=>count($eList), "eList"=>$eList); // 更新フラグ設定 $results[$num] = array("data" => $data, "eListCount" => count($eList), "eList" => $eList, "updateFlg" => $updateFlg); //↑↑===========nm00220 2010/12/06 end===================================== } catch (TeikeiNewAllException $e) { # 続けて処理できない例外 $num = $index + 1; $results[$num] = array("data" => $data, "eListCount" => 1, "eList" => array($e)); } catch (Exception $e) { throw $e; } } // ログファイル作成 $this->makeLogFile($logDataList); // ログ出力 $upd_user_id = $core->getLoginLoginId(); $ip = $core->getLoginIp(); $log =& $core->getLogger(); $log->info("anken_teikei_new_all_upload:{$upd_user_id}:{$ip}"); // 結果表示 $this->_dataFrom['anken_id'] = $ankenId; $this->_dataFrom['price_type_cd'] = $priceTypeCd; $this->_dataFrom['list'] = $results; } catch (Exception $e) { $e->display(); } // ファイル削除 if (is_file($path) == true) { @unlink($path); } } }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // tmpファイル if (empty($ankenId) == false && is_uploaded_file($_FILES['upload']['tmp_name'])) { // キャンペーンコード $code =& $m->getCampaignCode($ankenId); $filename = md5(time() . rand(0, 100)); $path = ABS_DATAROOT . 'tmp/' . $filename; try { $mediaIdList =& $m->getMediaIdList(); move_uploaded_file($_FILES['upload']['tmp_name'], $path); $results = array(); $lines = file($path); $keys = array('media_id', 'price_1', 'oroshi_1', 'price_2', 'oroshi_2', 'price_3', 'oroshi_3', 'price_4', 'oroshi_4', 'price_5', 'oroshi_5', 'price_6', 'oroshi_6', 'price_7', 'oroshi_7', 'price_8', 'oroshi_8', 'price_9', 'oroshi_9', 'price_10', 'oroshi_10', 'download_flag', 'redirect_url', 'media_url', 'teikei_from', 'teikei_to', 'asp_admin_url', 'asp_login_id', 'asp_password', 'asp_seika_kind', 'asp_op_memo', 'free1_cd'); foreach ($lines as $index => $line) { try { // 空白行は無視します if (trim($line) == "") { continue; } // 例外配列初期化 $eList = array(); // 配列化 $values = explode(',', $line); // 配列の数が合わない // 数を合わせる if (count($keys) != count($values)) { $new = array(); $count = count($keys); for ($i = 0; $i < $count; $i++) { // 値を初期化 $new[$i] = ""; // 値とコピー $v = trim($values[$i]); if ($v != "") { $new[$i] = $v; } } // 変数を置き換える unset($values); $values = $new; } // データ配列を生成 $data =& array_combine($keys, $values); //////////////////////////////////////////////////// // メディアID (省略不可) //////////////////////////////////////////////////// // メディアIDフォーマット $mediaId = trim($data['media_id']); if (empty($mediaId) == true && is_numeric($mediaId) == false) { $eList[] = new MediaId_NullException(); } else { if (in_array($mediaId, $mediaIdList) == false) { // 選択可能なメディアID $eList[] = new MediaId_NotFountException(); } else { // 既に登録されているメディアID $count = $m->getTeikeiMedieCount($code, $mediaId); if ($count !== 0) { $eList[] = new MediaId_ExistsException(); } else { $data['media_id'] = $mediaId; } } } //////////////////////////////////////////////////// // 金額設定ループ //////////////////////////////////////////////////// for ($i = 1; $i <= 10; $i++) { // 金額1単価 $label = "price_" . $i; // フォーマット $price = trim($data[$label]); if (empty($price) == false) { if (is_numeric($price) == false) { $e = new Price_FormatException("金額{$i}の単価"); $eList[] = $e; } else { $data[$label] = $price; } } else { // 省略 $data[$label] = 0; } // 金額1卸値 $label = "oroshi_" . $i; // フォーマット $oroshi = trim($data[$label]); if (empty($oroshi) == false) { if (is_numeric($oroshi) == false) { $e = new OroshiPrice_FormatException("金額{$i}の卸値"); $eList[] = $e; } else { $data[$label] = $oroshi; } } else { // 省略時 $data[$label] = 0; } } //////////////////////////////////////////////////// // ダウンロード許可 //////////////////////////////////////////////////// // フォーマット $flag = trim($data['download_flag']); if (is_numeric($flag) == true) { if ($flag != 0 && $flag != 1) { $e = new DownloadFlag_FormatException(); $eList[] = $e; } else { $data['download_flag'] = $flag; } } else { // デフォルト許可 $data['download_flag'] = 1; } //////////////////////////////////////////////////// // クライアントURL //////////////////////////////////////////////////// $url = trim($data['redirect_url']); if (empty($url) == false) { $data['redirect_url'] = $url; } else { $data['redirect_url'] = null; } //////////////////////////////////////////////////// // 成果報告用URL //////////////////////////////////////////////////// $url = trim($data['media_url']); if (empty($url) == false) { $data['media_url'] = $url; } else { $data['media_url'] = null; } //////////////////////////////////////////////////// // 提携期間開始(YYYY-MM-DD)と終了(YYYY-MM-DD) //////////////////////////////////////////////////// $from = trim($data['teikei_from']); $to = trim($data['teikei_to']); $data['teikei_from'] = null; $data['teikei_to'] = null; if (empty($from) == true && empty($to) == true) { // 両方未入力 } else { if (empty($from) == false && empty($to) == false) { $ifrom = strtotime($from); $ito = strtotime($to); if ($ifrom == false || $ito == false) { // 形式エラー $eList[] = new Kikan_FormatException(); } else { if ($ito < $ifrom) { // 順番エラー $eList[] = new Kikan_OrderException(); } else { $data['teikei_from'] = date('Y-m-d', $ifrom); $data['teikei_to'] = date('Y-m-d', $ito); } } } else { // 片方未入力 $eList[] = new Kikan_FormatException(); $data['teikei_from'] = null; $data['teikei_to'] = null; } } //↓↓===========nm00220 2010/10/29 start=================================== //////////////////////////////////////////////////// // 管理画面情報 //////////////////////////////////////////////////// //管理画面URL $aspAdminUrl = trim($data['asp_admin_url']); if (empty($aspAdminUrl) == false) { $data['asp_admin_url'] = $aspAdminUrl; } else { $data['asp_admin_url'] = null; } // ログインID $aspLoginId = trim($data['asp_login_id']); $aspLoginId = mb_convert_encoding($aspLoginId, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspLoginId) == false) { $data['asp_login_id'] = $aspLoginId; } else { // 省略 $data['asp_login_id'] = null; } // パスワード $aspPassword = trim($data['asp_password']); $aspPassword = mb_convert_encoding($aspPassword, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspPassword) == false) { $data['asp_password'] = $aspPassword; } else { // 省略 $data['asp_password'] = null; } // 成果反映方法 $aspSeikaKind = trim($data['asp_seika_kind']); $enum = new TeikeiAspSeikaKindEnum(); if (array_key_exists($aspSeikaKind, $enum->getArray())) { // デフォルト成果反映方法 $data['asp_seika_kind'] = $aspSeikaKind; //未入力の場合,デフォルトを設定する } else { if (empty($aspSeikaKind)) { $data['asp_seika_kind'] = 0; } else { $e = new AspSeikaKind_FormatException(); $eList[] = $e; } } // OPメモ $aspOpMemo = trim($data['asp_op_memo']); $aspOpMemo = mb_convert_encoding($aspOpMemo, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($aspOpMemo) == false) { $data['asp_op_memo'] = $aspOpMemo; } else { // 省略 $data['asp_op_memo'] = null; } //↑↑===========nm00220 2010/10/29 end===================================== //////////////////////////////////////////////////// // 任意コード //////////////////////////////////////////////////// // フォーマット $free = trim($data['free1_cd']); $free = mb_convert_encoding($free, 'UTF-8', 'CP932, SJIS, euc-jp'); if (empty($free) == false) { $data['free1_cd'] = $free; } else { // 省略 $data['free1_cd'] = null; } //////////////////////////////////////////////////// // オブジェクト生成 //////////////////////////////////////////////////// $o = new DataAnken_Media_282($code); $o->setData($data); $o->getField('anken_id')->setValue($ankenId); //////////////////////////////////////////////////// // 値チェック //////////////////////////////////////////////////// $check =& $o->getChecker(); $check->checkAll(); if ($check->getErrorCount() != 0) { $msg = $check->getErrorMessage(); $eList[] = new CheckerException($msg); } //////////////////////////////////////////////////// // DB insert //////////////////////////////////////////////////// if (count($eList) == 0) { $loginUserId = $this->_core->getLoginLoginId(); $o->getField('upd_user_id')->setValue($loginUserId); $m->insert($o); } //////////////////////////////////////////////////// // 表示用処理 //////////////////////////////////////////////////// $num = $index + 1; $results[$num] = array("data" => $data, "eListCount" => count($eList), "eList" => $eList); } catch (TeikeiNewAllException $e) { # 続けて処理できない例外 $num = $index + 1; $results[$num] = array("data" => $data, "eListCount" => 1, "eList" => array($e)); } catch (Exception $e) { throw $e; } } // 結果表示 $this->_dataFrom['anken_id'] = $ankenId; $this->_dataFrom['list'] = $results; } catch (Exception $e) { $e->display(); } // ファイル削除 if (is_file($path) == true) { @unlink($path); } } }