/** * 提携メディア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; }
/** * 実行 */ 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); } } }
/** * 提携メディア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; }