Exemplo n.º 1
0
    if ($param["iid"] and $cartSessOBJ->itemId) {
        $delCartItemKey = array_search($param["iid"], $cartSessOBJ->itemId);
        // カートからキーを元に削除
        unset($cartSessOBJ->itemId[$delCartItemKey]);
    }
    // カートに商品追加
} else {
    if ($param["iid"]) {
        // 商品データ取得
        $itemSearchKey = array();
        $itemSearchKey["access_key"] = $param["iid"];
        $itemData = $ItemOBJ->getItemData($comUserData, $itemSearchKey);
        // 購入可能な商品であればカート処理
        if ($itemData) {
            if ($itemData["redirect_unit_item_id"] && $itemData["redirect_unit_id"]) {
                $UnitOBJ = Unit::getInstance();
                $redirectItemUnitIdAry = "";
                $redirectUnitIdAry = "";
                $redirectItemUnitIdAry = explode(",", $itemData["redirect_unit_item_id"]);
                $redirectUnitIdAry = explode(",", $itemData["redirect_unit_id"]);
                foreach ($redirectUnitIdAry as $key => $unitId) {
                    $isInUnitUserResult = $UnitOBJ->isInUnitUser($comUserData["user_id"], $unitId);
                    if ($isInUnitUserResult) {
                        $redirectUnitItemIdKey = $key;
                        //unit_idと対になる商品IDを取得。
                        $redirectItemId = $redirectItemUnitIdAry[$redirectUnitItemIdKey];
                        if ($redirectItemId) {
                            $itemSearchIdKey = array();
                            $itemSearchIdKey["id"] = $redirectItemId;
                            if ($preItemData = $ItemOBJ->getItemData($comUserData, $itemSearchIdKey)) {
                                $itemData = $preItemData;
Exemplo n.º 2
0
 /**
  * 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;
 }