Example #1
0
 /**
  * 事前処理
  */
 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;
 }
Example #2
0
 /**
  * 画面表示のためのテンプレート初期化
  */
 public function &Anken_TeikeiEdit_getInitData()
 {
     $data = array();
     // 成果反映方法
     $enum = new TeikeiAspSeikaKindEnum();
     $data['asp_seika_kind'] = $enum->getArray();
     return $data;
 }
Example #3
0
 /**
  * 実行
  */
 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);
         }
     }
 }
Example #4
0
 /**
  * 実行
  */
 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);
         }
     }
 }