示例#1
0
 /**
  * 提携メディアIDから提携メディアオブジェクトを取得します。<br>
  * 見つからない場合nullを返します。
  * @param array $ankenData 案件情報
  * @param string $teikei_media_id 提携メディアID
  */
 public function &getObjectByID(&$ankenData, $teikei_media_id)
 {
     $code = $ankenData['campaign_code'];
     $o = new DataAnken_Media_2dankai($code);
     $o->getField('teikei_media_id')->setValue($teikei_media_id);
     $db =& $this->_core->getDB();
     $sql = $o->getSelectSQL_Bind_ChangedField();
     $data =& $o->getChangedFieldValues();
     $data =& $db->query($sql, $data);
     if (count($data) == 1) {
         $o->setData($data[0], true);
     } else {
         unset($o);
     }
     return $o;
 }
示例#2
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', 'oroshi_price', 'extra_price', 'extra_oroshi', 'download_flag', 'redirect_url', 'media_url', 'teikei_from', 'teikei_to', '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;
                             }
                         }
                     }
                     ////////////////////////////////////////////////////
                     // クラシック単価
                     ////////////////////////////////////////////////////
                     // フォーマット
                     $price = trim($data['price']);
                     if (empty($price) == false) {
                         if (is_numeric($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 (is_numeric($oroshi) == false) {
                             $e = new OroshiPrice_FormatException();
                             $eList[] = $e;
                         } else {
                             $data['oroshi_price'] = $oroshi;
                         }
                     } else {
                         // 省略時
                         $data['oroshi_price'] = 0;
                     }
                     ////////////////////////////////////////////////////
                     // ゴールド単価
                     ////////////////////////////////////////////////////
                     // フォーマット
                     $price = trim($data['extra_price']);
                     if (empty($price) == false) {
                         if (is_numeric($price) == false) {
                             $e = new Price_FormatException();
                             $eList[] = $e;
                         } else {
                             $data['extra_price'] = $price;
                         }
                     } else {
                         // 省略
                         $data['extra_price'] = 0;
                     }
                     ////////////////////////////////////////////////////
                     // ゴールド卸値
                     ////////////////////////////////////////////////////
                     // フォーマット
                     $oroshi = trim($data['extra_oroshi']);
                     if (empty($oroshi) == false) {
                         if (is_numeric($oroshi) == false) {
                             $e = new OroshiPrice_FormatException();
                             $eList[] = $e;
                         } else {
                             $data['extra_oroshi'] = $oroshi;
                         }
                     } else {
                         // 省略時
                         $data['extra_oroshi'] = 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;
                         }
                     }
                     ////////////////////////////////////////////////////
                     // 任意コード
                     ////////////////////////////////////////////////////
                     // フォーマット
                     $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_2dankai($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);
         }
     }
 }
示例#3
0
 /**
  * 提携メディアIDから提携メディアオブジェクトを取得します。<br>
  * 見つからない場合nullを返します。
  * @param array $ankenData 案件情報
  * @param string $teikei_media_id 提携メディアID
  */
 public function &getObjectByID(&$ankenData, $teikei_media_id)
 {
     $code = $ankenData['campaign_code'];
     $o = new DataAnken_Media_2dankai($code);
     $o->getField('teikei_media_id')->setValue($teikei_media_id);
     $db =& $this->_core->getDB();
     $sql = $o->getSelectSQL_Bind_ChangedField();
     $data =& $o->getChangedFieldValues();
     $data =& $db->query($sql, $data);
     if (count($data) == 1) {
         $o->setData($data[0], true);
         // 純広情報の変数を追加
         $cg =& $o->addField(new DataField('client_junkoukingaku'));
         $ct =& $o->addField(new DataField('client_junkoutsuki'));
         $ct->setValue(date("Y-m-d"));
         $mg =& $o->addField(new DataField('media_junkoukingaku'));
         $mt =& $o->addField(new DataField('media_junkoutsuki'));
         $mt->setValue(date("Y-m-d"));
         // 純広情報取得、代入
         $junkou = new DataJunkou();
         $ankenId = $ankenData["anken_id"];
         $teikeiMediaId = $o->getField('teikei_media_id')->getValue();
         $junkou->getField('anken_id')->setValue($ankenId);
         $junkou->getField('teikei_media_id')->setValue($teikeiMediaId);
         $sql = $junkou->getSelectSQL_Bind_ChangedField();
         $param =& $junkou->getChangedFieldValues();
         $data =& $db->query($sql, $param);
         if (count($data) == 1) {
             $junkou->setData($data[0]);
             $s = $junkou->getField('client_junkoukingaku')->getValue();
             $cg->setValue($s);
             $s = $junkou->getField('client_junkoutsuki')->getValue();
             $ct->setValue($s);
             $s = $junkou->getField('media_junkoukingaku')->getValue();
             $mg->setValue($s);
             $s = $junkou->getField('media_junkoutsuki')->getValue();
             $mt->setValue($s);
         }
     } else {
         unset($o);
     }
     return $o;
 }