/** * getInstanceメソッド * * このクラスのオブジェクトを生成する。 * 既に生成されていたら、前回と同じものを返す。 * * @return object $instance */ public static function getInstance() { if (!self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
$errSessOBJ = new ComSessionNamespace("err_msg"); $returnSessOBJ = new ComSessionNamespace("return"); $smartyOBJ->assign("value", $returnSessOBJ->return); // セッション変数の破棄 $returnSessOBJ->unsetAll(); // エラーメッセージの取得 if ($errSessOBJ->errMsg) { $errMsg = implode("<br>", $errSessOBJ->errMsg); $smartyOBJ->assign("errMsg", $errMsg); // セッション変数の破棄 $errSessOBJ->unsetAll(); } // カートから商品IDを取り出す $cartSessOBJ = new ComSessionNamespace("cart"); $ItemIdList = $cartSessOBJ->itemId; $OrderingOBJ = Ordering::getInstance(); $ItemOBJ = Item::getInstance(); // 引継ぎデータ $tags = array("odid"); $FORMparam = $requestOBJ->makePostTag($tags); // formに付加するPOST用 $URLparam = $requestOBJ->makeGetTag($tags); // URLに付加するGET用 $smartyOBJ->assign("FORMparam", $FORMparam); $smartyOBJ->assign("URLparam", $URLparam); // 注文情報の取得 if (!($orderingData = $OrderingOBJ->getOrderingDataFromAccessKey($param["odid"], $comUserData["user_id"]))) { // トランザクション開始 $OrderingOBJ->beginTransaction(); // 商品の有効性を確認 if ($ItemIdList) {
/** * itemDisplayConditionCheckメソッド * * 商品表示条件チェック処理 * * @param integer $data 商品データ * @param integer $userId ユーザデータ * @return array $data 表示条件に合った情報データ */ public function itemDisplayConditionCheck($data, $userData) { // 引数が不正ならFALSE if (!is_array($data) || !is_array($userData)) { return FALSE; } //ユニットクラスのインスタンス生成 $UnitOBJ = Unit::getInstance(); //注文クラスのインスタンス生成 $OrderingOBJ = Ordering::getInstance(); /************************ [情報表示条件] *****************************/ /* unit_id = TRUE; // ユニットID(表示) */ /* except_unit_id = FALSE; // ユニットID(非表示)*/ /* item_id = TRUE; // 購入商品ID(表示) */ /* except_item_id = FALSE; // 購入商品ID(非表示)*/ /* user_search_conditions_id = TRUE; // 検索条件保存ID(表示)*/ /* except_user_search_conditions_id = FALSE; // 購入商品ID(非表示)*/ /*********************************************************************/ //ユニットID(表示)チェック if ($data["unit_id"]) { // ユニットIDが「無ければ」情報閲覧不可 if (!$UnitOBJ->isInUnitUser($userData["user_id"], $data["unit_id"])) { return FALSE; } } //ユニットID(非表示)チェック if ($data["except_unit_id"]) { // ユニットIDが「有れば」情報閲覧不可 if ($UnitOBJ->isInUnitUser($userData["user_id"], $data["except_unit_id"])) { return FALSE; } } // 購入商品ID(表示)チェック if ($data["item_id"]) { // ユニットIDが「無ければ」情報閲覧不可 if (!$OrderingOBJ->isBoughtItem($userData["user_id"], $data["item_id"])) { return FALSE; } } // 購入商品ID(非表示)チェック if ($data["except_item_id"]) { // ユニットIDが「有れば」情報閲覧不可 if ($OrderingOBJ->isBoughtItem($userData["user_id"], $data["except_item_id"])) { return FALSE; } } // 検索条件保存ID(表示)※「AND検索→すべて該当する場合/OR検索→1つでも該当する場合」⇒ 表示 if ($data["user_search_conditions_id"]) { // 管理用ユーザークラスのインスタンス生成 $AdmUserOBJ = AdmUser::getInstance(); $searchConditionAry = explode(",", $data["user_search_conditions_id"]); $searchConditionIdCount = count($searchConditionAry); foreach ($searchConditionAry as $val) { $searchSaveData = ""; $searchValue = ""; if ($searchSaveData = $AdmUserOBJ->getUserSearchConditionData($val)) { $searchValue = unserialize($searchSaveData["search_condition"]); $columnArray = ""; $whereArray = ""; $columnArray[] = "user_id"; $whereArray = $AdmUserOBJ->setWhereString($searchValue); $whereArray[] = "user_id = " . $userData["user_id"]; $sql = $this->makeSelectQuery("v_user_profile", $columnArray, $whereArray); // ユーザー検索情報の取得 if (!$this->executeQuery($sql, "fetchRow")) { // 検索結果が取れてこなかった場合 if ($data["user_search_conditions_type"]) { // AND検索(1つでも該当なしならFALSE) return FALSE; } else { // OR検索(該当なしなら件数からマイナス) $searchConditionIdCount--; } } else { // 検索結果が取れてきた場合(OR検索) if (!$data["user_search_conditions_type"]) { // OR検索(1つでも該当したらループ抜ける) break; } } } } // (OR検索で)1件も該当なしならFALSE if ($searchConditionIdCount == 0) { return FALSE; } } // 検索条件保存ID(非表示) ※「AND検索→すべて該当する場合/OR検索→1つでも該当する場合」⇒ 非表示 if ($data["except_user_search_conditions_id"]) { // 管理用ユーザークラスのインスタンス生成 $AdmUserOBJ = AdmUser::getInstance(); $exceptSearchConditionAry = explode(",", $data["except_user_search_conditions_id"]); $exceptSearchConditionIdCount = count($exceptSearchConditionAry); foreach ($exceptSearchConditionAry as $val) { $searchSaveData = ""; $searchValue = ""; if ($searchSaveData = $AdmUserOBJ->getUserSearchConditionData($val)) { $searchValue = unserialize($searchSaveData["search_condition"]); $columnArray = ""; $whereArray = ""; $columnArray[] = "user_id"; $whereArray = $AdmUserOBJ->setWhereString($searchValue); $whereArray[] = "user_id = " . $userData["user_id"]; $sql = $this->makeSelectQuery("v_user_profile", $columnArray, $whereArray); // ユーザー検索情報の取得 if ($this->executeQuery($sql, "fetchRow")) { // 検索結果が取れてきた場合 if ($data["except_user_search_conditions_type"]) { // AND検索(「該当あり」なら件数からマイナス) $exceptSearchConditionIdCount--; } else { // OR検索(「非表示」なので、1件でも「該当あり」ならFALSE) return FALSE; } } else { // 検索結果が取れてこない場合(AND検索) if ($data["except_user_search_conditions_type"]) { // AND検索(1件でも該当なしならループ抜ける) break; } } } } // AND検索の場合はすべて「該当あり」ならFALSE if ($exceptSearchConditionIdCount == 0) { return FALSE; } } // 曜日間の情報表示縛り設定 if ($data["is_display_week"] != 0) { if ($data["display_week_string"]) { //その週の日曜日の日付(weekStartDate)を取得します $nowDate = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $nowDateArray = getdate($nowDate); $nowWeekNum = $nowDateArray['wday']; //指定日の曜日番号 $weekStartDate = date("Y-m-d", $nowDate - $nowWeekNum * 24 * 60 * 60); $currentWeekArray = explode("-", $weekStartDate); //設定値を取得、整形します $displayWeekStringArray = explode("_", $data["display_week_string"]); $startValueArray = explode(",", $displayWeekStringArray[0]); $lastValueArray = explode(",", $displayWeekStringArray[1]); //その週での表示開始、終了曜日 $firstWeekNum = $startValueArray[0]; $lastWeekNum = $lastValueArray[0]; $startTimeArray = explode(":", $startValueArray[1]); $lastTimeArray = explode(":", $lastValueArray[1]); //その週での開始日時、終了日時を取得します $StartDatetime = mktime($startTimeArray[0], $startTimeArray[1], $startTimeArray[2], $currentWeekArray[1], $currentWeekArray[2] + $firstWeekNum, $currentWeekArray[0]); $lastDatetime = mktime($lastTimeArray[0], $lastTimeArray[1], $lastTimeArray[2], $currentWeekArray[1], $currentWeekArray[2] + $lastWeekNum, $currentWeekArray[0]); //現時点でのタイムスタンプ $nowTime = time(); //表示する場合 if ($data["is_display_week"] == 1) { if ($StartDatetime > $nowTime or $lastDatetime < $nowTime) { return FALSE; } /* //金曜(5)~月曜(1)設定の場合 if($StartDatetime > $lastDatetime){ //『表示終了時刻(月曜設定)より前か、表示開始時刻(金曜設定)より後』の条件満たす排他的論理和 if( ($StartDatetime < $nowTime) XOR ($lastDatetime > $nowTime) ){ //おkなので何もしません }else{ return FALSE; } }else{ if( ($StartDatetime > $nowTime) OR ($lastDatetime < $nowTime) ){ return FALSE; } } */ //表示しない場合 } elseif ($data["is_display_week"] == 2) { if ($StartDatetime < $nowTime and $lastDatetime > $nowTime) { return FALSE; } } } } return TRUE; }
/** * * access_keyの重複が無い様にaccess_keyを返す。 * * * @param int $data キー生成に使用するデータ * * @return string accessKey を連想配列で返す */ public function getNewAccessKey($data) { if (!$data) { return FALSE; } $OrderingOBJ = Ordering::getInstance(); return $OrderingOBJ->getNewAccessKey($data); }