Ny användare."); exit(); } $objMember = new Member($_SESSION["memberid"]); // Clear variables $cmd = ""; $error = ""; $blnChooseSeats = 0; if(is_numeric($_REQUEST["dateid"])) { $dateid = $_REQUEST["dateid"]; $objDate =& getShowDate($_REQUEST["dateid"]); } else if(isset($_SESSION["dateid"])) { $dateid = $_SESSION["dateid"]; $objDate =& getShowDate($_SESSION["dateid"]); } else { PrintErrorMessage("Den föreställningen finns inte."); exit(); } /*echo("request date id is: " . $_REQUEST["dateid"] . "
"); echo("session date id is: " . $_SESSION["dateid"] . "
"); echo("dateid: " . $objDate->showdateID . "
");*/ if(is_string($_REQUEST["cmd"])) { $cmd = strtoupper(substr($_REQUEST["cmd"], 0, 1)); } $objShow = new Show($objDate->showdateShowID); if(!is_object($objShow)) { PrintErrorMessage("Det finns ingen sådan föreställning."); exit(); } if("A" == $cmd) { // "Avbryt" Header("Location: mitten.php"); exit; } else if("V" == $cmd) { $blnChooseSeats = 1; $_SESSION['dateid'] = $_REQUEST["dateid"]; $sumTickets = 0; $sumCost = 0; $rsPriceTypes =& getShowDatePriceTypes($objDate->showdateID); while(($row =& mysql_fetch_object($rsPriceTypes))) { $catID = "pricetypesID-" . $row->pricetypesID; if(is_numeric($$catID)) { $$catID == abs($$catID); } else { $$catID == 0; } $sumTickets += abs($$catID); $sumCost += (abs($$catID) * $row->pricetypesPrice); } } else if("B" == $cmd || "N" == $cmd || "K" == $cmd) { $sumTickets = 0; $sumCost = 0; $rsPriceTypes =& getShowDatePriceTypes($objDate->showdateID); while(($row =& mysql_fetch_object($rsPriceTypes))) { $catID = "pricetypesID-" . $row->pricetypesID; if(is_numeric($$catID)) { $$catID == abs($$catID); } else { $$catID == 0; } // bygger sträng för att använda i boka_salong då inte bokningen sparas här då. $pricetypes = $pricetypes . $catID . "=" . $$catID . "&"; $sumTickets += abs($$catID); $sumCost += (abs($$catID) * $row->pricetypesPrice); } if(0 == $sumTickets) { // Inga biljetter valda $error .= "Du måste boka minst 1 biljett för att kunna gå vidare!
\n"; } else if($sumTickets > getShowDateFreeSeats($objDate->showdateID)) { // Användaren vill ha fler biljetter än vad det finns lediga platser. $error .= "Du har bokat fler biljetter än vad som finns tillgängliga!
\n"; } else { // Make sure the visitor didn't "hack" the site and try to book a non-bookable show. if("Victoria Picknick" == getSalonName($objDate->showdateSalonID)) { $numFreeSeats = 233; $numFreeSeats -= 50; // 50 platser reserverade $numFreeSeats -= getShowDateBookedSeats($objDate->showdateID); $numFreeSeats -= getShowDatePayedSeats($objDate->showdateID); if(0 > $numFreeSeats) $numFreeSeats = 0; } else $numFreeSeats = getShowDateFreeSeats($objDate->showdateID); // Fix so Arrangers can make bookings until the start of their show. if("arranger" == $objMember->_Type && $objDate->showdateArrangerID == $objMember->_ID) $timeToBookingEnd = 0; else $timeToBookingEnd = 14400; // 1 dygn före föreställningen börjar kan man beställa biljetter. // Calculate the timestamp of the ShowDate's start (date and time) ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $objDate->showdateDate, $regDate); ereg("([0-9]{2}):([0-9]{2}):([0-9]{2})", $objDate->showdateTime, $regTime); $tmstmpStart = mktime($regTime[1], $regTime[2], $regTime[3], $regDate[2], $regDate[3], $regDate[1]); // Om "nu" är senare än när slutpunkten för bokningar inträffar, eller det inte finns fler lediga platser. if(1 > $numFreeSeats) { PrintErrorMessage("Fullbokad."); exit(); } if(mktime() > ($tmstmpStart - $timeToBookingEnd)) { PrintErrorMessage("Tyvärr har tiden för bokning för just den här föreställningen upphört.", "", "Är du fortfarande intresserad av biljetter till den här föreställningen, kontakta arrangören."); exit(); } /* if((mktime() > ($tmstmpStart - $timeToBookingEnd)) || 1 > $numFreeSeats) { PrintErrorMessage("Tyvärr har tiden för bokning för just den här föreställningen upphört.", "", "Är du fortfarande intresserad av biljetter till den här föreställningen, kontakta arrangören."); exit(); } */ // om bokningen är en placera själva bokning och inte numrerad så ska den inte sparas för än de placerat. if($objDate->showdateCustomerChooseSeat != 1 || "y" == $objDate->showdateSeatUnnumbered) { // Allt verkar OK. Spara bokningen och gå vidare. // Skapa en ny bokning if($_SESSION['bookid'] != "") { $objBooking = new Booking($_SESSION['bookid']); if ("y" == $objBooking->_Payed) { $objBooking = new Booking(); if ($_SERVER["REMOTE_ADDR"]=='172.1.1.17') { echo "Bokning betald skapar ny"; } } } else { $objBooking = new Booking(); if ($_SERVER["REMOTE_ADDR"]=='172.1.1.17') { echo $objBooking->_ID; } } $objBooking->_MemberID = $_SESSION["memberid"]; $objBooking->_Comment = mysql_escape_string($bookingsComment); // Find out when the ticket must be payed ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $objDate->showdateDate, $regDate); ereg("([0-9]{2}):([0-9]{2}):([0-9]{2})", $objDate->showdateTime, $regTime); $tmstmpStart = mktime($regTime[1], $regTime[2], $regTime[3], $regDate[2], $regDate[3], $regDate[1]); if(($tmstmpStart - date("U")) > (7 * 86400)) { // More than 7 days till the opening. $offset = 7; $tmstmpPay = mktime(0, 0, 0, date("n"), date("j") + $offset, date("Y")); if(date("w", $tmstmpPay) == 0) { $offset++; $tmstmpPay = mktime(0, 0, 0, date("n"), date("j") + $offset, date("Y")); } $days = $offset; } elseif(($tmstmpStart - date("U")) > 259200) { // 72h left till the opening. $offset = 2; $tmstmpPay = mktime($regTime[1], $regTime[2], $regTime[3], $regDate[2], $regDate[3] - $offset, $regDate[1]); if(date("w", $tmstmpPay) == 0) { $offset--; $tmstmpPay = mktime($regTime[1], $regTime[2], $regTime[3], $regDate[2], $regDate[3] - $offset, $regDate[1]); } $days = $offset; } elseif(($tmstmpStart - date("U")) > 14400) { // 4h left till the opening. $tmstmpPay = date("U") + 3600; //60 minuter på sig att betala $objBooking->_DirectBuy = "y"; } if( "K" == $cmd) //extra info till nästa sida om att bokningen ska betalas direkt. { $tmstmpPay = date("U") + 3600; //60 minuter på sig att betala $objBooking->_DirectBuy = "y"; } //$ip = $_SERVER['REMOTE_ADDR']; //if(strrpos($ip, "172.1.1") !== false) { // echo( "|".$offset); // echo( "|".$tmstmpStart); // die( "|".$tmstmpPay); //} if (!isset($objBooking->_LastPayStamp)){ $objBooking->_LastPayStamp = $tmstmpPay; } if ($objBooking->_LastPayStamp < $tmstmpPay ){ $objBooking->_LastPayStamp = $objBooking->_LastPayStamp; }else{ $objBooking->_LastPayStamp = $tmstmpPay; } // Bekräftar onumrerade bokningar direkt om det är tillåtet att betala med kort. if (!isset($objBooking->_Verified)&& ('y' == $objDate->showdateSeatUnnumbered && 'y' == $objDate->showdateCanPayOnline )) { $objBooking->_Verified = "y"; } if (($objBooking->_Verified == "y") && ('y' == $objDate->showdateSeatUnnumbered && 'y' == $objDate->showdateCanPayOnline )) { }else{ $objBooking->_Verified = "n"; } $objBooking->save(); // Update Bookings with the ticket information $rsPriceTypes =& getShowDatePriceTypes($objDate->showdateID); while(($row =& mysql_fetch_object($rsPriceTypes))) { $catID = "pricetypesID-" . $row->pricetypesID; if("" != $$catID) { $dbh->update("UPDATE ShowDate SET showdateSeatPending = (showdateSeatPending + $$catID) WHERE showdateID = $objBooking->_ShowDateID"); $numSeats = getnumSeats($objBooking->_ID, $row->pricetypesID, $objDate->showdateID); if ($numSeats>0){ $changed_booking="True"; } //if ($numSeats>0){ $$catID = $$catID+$numSeats; $dbh->update("delete from ref_bookingsPriceTypes WHERE ref_bookingsPriceTypes_bookingsID = $objBooking->_ID and ref_bookingsPriceTypes_pricetypesID = $row->pricetypesID and ref_bookingsShowDateID = $objDate->showdateID "); //} $sql = "INSERT INTO ref_bookingsPriceTypes "; $sql .= "(ref_bookingsPriceTypes_bookingsID, ref_bookingsPriceTypes_pricetypesID, ref_bookingsPriceTypes_numSeats,ref_bookingsShowDateID) "; $sql .= "VALUES ($objBooking->_ID, $row->pricetypesID, " . $$catID . ", $objDate->showdateID)"; $dbh->update($sql); if(mysql_errno() > 0) { PrintErrorMessage("Ett databasfel inträffade." . "SQL: $sql
MySQL fel: " . mysql_error(), "SQL: $sql
MySQL fel: " . mysql_error(), "Ett fel har inträffat"); exit(); } echo $sql; } } if(($rsPriceTypes = $dbh->query("SELECT ref_bookingsPriceTypes_numSeats FROM ref_bookingsPriceTypes WHERE ref_bookingsPriceTypes_bookingsID = $objBooking->_ID"))) { while(($row = mysql_fetch_object($rsPriceTypes))) $numTickets += $row->ref_bookingsPriceTypes_numSeats; } $objBooking->_Tickets = $numTickets; // Spara bokningen till databasen (för att skapa ett unikt bokningsnummer) $objBooking->save(); // Kortslutning: Vi öppnar inte upp boka_salong.php för allmänheten ännu! // (samt alla bokningar måste verifieras av KC först innan de kan betalas) } if( "K" == $cmd) //extra info till nästa sida om att bokningen ska betalas direkt. { $extraGetVar="&extraGetVar=directBuy"; } if("B" == $cmd || "N" == $cmd || "K" == $cmd) { if("y" == $objDate->showdateSeatUnnumbered) { // Det här är en onumrerad föreställning. //header("Location: pay_selectpaymethod.php?bookid=$objBooking->_ID"); if ("K" != $cmd) //Skicka inte om man valt att köpa biljetten. { //skicka bekräftelse då bokningen är klar sendConfirmation($objBooking,$objShow,$objDate); } header("Location: boka_done.php?bookid=$objBooking->_ID&dateid=$dateid".$extraGetVar); } else { if($objDate->showdateCustomerChooseSeat == 1) { // Det här är en bokning som kan betalas och placeras online. Skicka vidare till platsväljaren. header("Location: boka_salong.php?dateid=$dateid&" . $pricetypes . $extraGetVar); }else{ header("Location: boka_done.php?bookid=$objBooking->_ID&dateid=$dateid".$extraGetVar); } } } else { // Det här är en bokning av antingen en Victoria Picknick eller en föreställning där man inte kan betala online. header("Location: boka_done.php?bookid=$objBooking->_ID&dateid=$dateid"); } exit; } } // Find out what text the "next" button should display /*$lblNext = "Boka"; if(1 == getShowDateIsPayableOnline($objDate->showdateID)) $lblNext = "Boka"; // Beräkna hur många lediga platser det finns $tmpRealSeats = getShowDateFreeSeats($objDate->showdateID); if("Victoria Picknick" == getSalonName($objDate->showdateSalonID)) { $lblNext = "Boka"; $tmpRealSeats -= 50; if(0 > $$tmpRealSeats) $tmpRealSeats = 0; }*/ ?> KC-bokning
Antal biljetter kvar att placera ut: " . $sumTickets . ""; } $rsPriceTypes =& getShowDatePriceTypes($objDate->showdateID); while(($row =& mysql_fetch_object($rsPriceTypes))) { $catID = "pricetypesID-" . $row->pricetypesID; if($$catID != "") { echo ""; } } ?>

showdateDate $objDate->showdateTime"); if(($tmstmpStart - 259200) < date("U") && $objMember->_Type != "arranger") { $lblNext = "Boka"; //om det är längre tid än 72h sedan ska den alltid kunna bokas } else { $lblNext = ""; //annars bara om kortbetalning är möjlig } if(1 == getShowDateIsPayableOnline($objDate->showdateID)) { if(($tmstmpStart - 259200) > date("U") && $objMember->_Type != "arranger") { $lblNext = "Boka"; //om det är längre tid än 72h sedan ska den alltid kunna bokas } elseif(($tmstmpStart - 14400) > date("U") && $objMember->_Type != "arranger") { $lblNext = ""; //annars bara direktköp } else { $lblNext = ""; } if ($lblNext!="" && $_GET["extraGetVar"]!="directBuy") { $lblNext = "Boka"; } else { $lblNext = "Köp"; $extraInfo = "

Denna bokning måste betalas online inom 30 minuter. Efter 30 minuter så raderas bokningen."; } } // Beräkna hur många lediga platser det finns $tmpRealSeats = getShowDateFreeSeats($objDate->showdateID); if("Victoria Picknick" == getSalonName($objDate->showdateSalonID)) { $lblNext = "Boka"; $tmpRealSeats -= 50; if(0 > $$tmpRealSeats) $tmpRealSeats = 0; } $strShowName = stripSlashes($objShow->_Name); $strShowDate = fmtSwedishDate($objDate->showdateDate); $strShowTime = substr($objDate->showdateTime, 0, 5); $strShowdateTheatre = func_get_saloon_alias(stripSlashes($objDate->showdateTheatre)); $strDesign = "
"; $strDesign .= "".$strShowName."
"; $strDesign .= "".$strShowDate." ".$strShowTime."
".$strShowdateTheatre."

"; if($objDate->showdateHideFreeSeat != 1) { $strDesign .= "
Tillgängliga biljetter: ".$tmpRealSeats; } if("" != $objDate->showdateComment) { $strDesign .= "".stripSlashes($objDate->showdateComment)."

"; } if($objDate->showdateSeatUnnumbered == "y") { $strNumbered = "Onumrerade"; } else { $strNumbered = "Numrerade"; } if($error != "") { $strError = $error; } else { $strError = ""; } $strDesign .= "
".$strNumbered." platser

"; $rsPriceTypes =& getShowDatePriceTypes($objDate->showdateID); while(($row =& mysql_fetch_object($rsPriceTypes))) { $catID = "pricetypesID-" . $row->pricetypesID; if(!is_numeric($$catID)) $$catID = "0"; // Logic for what prices to show // Only show the price if the visitor is an arranger of this show, or the price is not "0.00" if(("arranger" == $objMember->_Type && $objDate->showdateArrangerID == $objMember->_ID) || ("0.00" != $row-> pricetypesPrice)) { if ($row->ref_hide!=1) { echo ""; $strDesign .= ""; } } } $strDesign .= "
Antal Pristyp Pris
".$strError."
".$row->pricetypesName." ".($row-> pricetypesTheatre)." ".$row->pricetypesPrice."
"; if($objDate->showdateCustomerChooseSeat == 1) { $strDesign .= "



Välj antal och tryck ".$lblNext."".$extraInfo."

"; } else { $strDesign .= "



Välj antal och tryck ".$lblNext."".$extraInfo."

"; } $strDesign .= "
Kommentar:
"; //if($objDate->showdateCustomerChooseSeat == 1) //{ // $strDesign .= ""; //} //else //{ $strDesign .= ""; //} $strDesign .= "
"; return $strDesign; } /* Local Variables: tab-width: 2 End: */ ?>