138 lines
4.3 KiB
PHP
138 lines
4.3 KiB
PHP
<?php
|
|
/**
|
|
* Test helper — dodaje / usuwa testową rezerwację, żeby zobaczyć podzielone dni.
|
|
*
|
|
* Uzycie (po wgraniu na FTP do roota WP):
|
|
* /test-add-booking.php?action=add&yacht=maja&start=2026-05-21&end=2026-05-24&token=YACHT_TEST_2026
|
|
* /test-add-booking.php?action=remove&token=YACHT_TEST_2026
|
|
* /test-add-booking.php?action=list&token=YACHT_TEST_2026
|
|
*
|
|
* Po zakonczeniu testow USUN ten plik z FTP.
|
|
*/
|
|
|
|
// Bootstrap WordPress.
|
|
$wp_load = __DIR__ . '/wp-load.php';
|
|
if ( ! file_exists( $wp_load ) ) {
|
|
die( 'wp-load.php not found — wrzuc plik do roota WordPressa.' );
|
|
}
|
|
require $wp_load;
|
|
|
|
// Token zabezpieczajacy — tylko my znamy.
|
|
$expected_token = 'YACHT_TEST_2026';
|
|
if ( ! isset( $_GET['token'] ) || $_GET['token'] !== $expected_token ) {
|
|
status_header( 403 );
|
|
die( 'Brak / zly token.' );
|
|
}
|
|
|
|
header( 'Content-Type: text/plain; charset=utf-8' );
|
|
|
|
$action = isset( $_GET['action'] ) ? sanitize_key( $_GET['action'] ) : 'list';
|
|
|
|
// Marker ktory pozwoli odnalezc nasze testowe rezerwacje.
|
|
$test_marker = '_yacht_test_booking_marker';
|
|
$test_marker_value = 'PAUL_TEST_09_01';
|
|
|
|
if ( 'add' === $action ) {
|
|
$yacht_slug = isset( $_GET['yacht'] ) ? sanitize_title( $_GET['yacht'] ) : '';
|
|
$start = isset( $_GET['start'] ) ? sanitize_text_field( $_GET['start'] ) : '';
|
|
$end = isset( $_GET['end'] ) ? sanitize_text_field( $_GET['end'] ) : '';
|
|
|
|
if ( ! $yacht_slug || ! $start || ! $end ) {
|
|
die( 'Wymagane: ?action=add&yacht=<slug>&start=YYYY-MM-DD&end=YYYY-MM-DD' );
|
|
}
|
|
|
|
$yacht_post = get_page_by_path( $yacht_slug, OBJECT, 'yacht' );
|
|
if ( ! $yacht_post ) {
|
|
// Sprobuj po tytule, jesli slug nie pasuje.
|
|
$candidates = get_posts( array(
|
|
'post_type' => 'yacht',
|
|
's' => $yacht_slug,
|
|
'numberposts' => 1,
|
|
) );
|
|
$yacht_post = $candidates ? $candidates[0] : null;
|
|
}
|
|
|
|
if ( ! $yacht_post ) {
|
|
echo "Nie znaleziono jachtu '{$yacht_slug}'. Dostepne jachty:\n";
|
|
$all = get_posts( array( 'post_type' => 'yacht', 'numberposts' => -1 ) );
|
|
foreach ( $all as $y ) {
|
|
echo " - ID={$y->ID}, slug={$y->post_name}, title={$y->post_title}\n";
|
|
}
|
|
exit;
|
|
}
|
|
|
|
$booking_id = \YachtBooking\Booking::create( array(
|
|
'yacht_id' => $yacht_post->ID,
|
|
'start_date' => $start,
|
|
'end_date' => $end,
|
|
'customer_name' => 'TEST PAUL',
|
|
'customer_email' => 'test@example.com',
|
|
'customer_phone' => '000000000',
|
|
'status' => 'confirmed',
|
|
'total_price' => 0,
|
|
) );
|
|
|
|
if ( ! $booking_id ) {
|
|
die( 'Booking::create zwrocilo false.' );
|
|
}
|
|
|
|
// Marker, zeby latwo odnalezc i usunac.
|
|
update_post_meta( $booking_id, $test_marker, $test_marker_value );
|
|
|
|
// Zapisz dni jako booked w wp_yacht_availability.
|
|
\YachtBooking\Availability::mark_as_booked( $yacht_post->ID, $start, $end, $booking_id );
|
|
|
|
echo "OK — utworzono testowa rezerwacje:\n";
|
|
echo " booking_id = {$booking_id}\n";
|
|
echo " yacht = {$yacht_post->post_title} (ID={$yacht_post->ID})\n";
|
|
echo " termin = {$start} -> {$end}\n";
|
|
echo "\nOdwiedz strone kalendarza (hard reload Ctrl+F5) i zobacz podzielone dni.\n";
|
|
echo "Aby usunac: /test-add-booking.php?action=remove&token={$expected_token}\n";
|
|
exit;
|
|
}
|
|
|
|
if ( 'remove' === $action ) {
|
|
$bookings = get_posts( array(
|
|
'post_type' => 'yacht_booking',
|
|
'numberposts' => -1,
|
|
'post_status' => 'any',
|
|
'meta_key' => $test_marker,
|
|
'meta_value' => $test_marker_value,
|
|
) );
|
|
|
|
if ( ! $bookings ) {
|
|
die( 'Brak testowych rezerwacji do usuniecia.' );
|
|
}
|
|
|
|
foreach ( $bookings as $b ) {
|
|
\YachtBooking\Availability::clear_booking_availability( $b->ID );
|
|
wp_delete_post( $b->ID, true );
|
|
echo "Usunieto booking_id={$b->ID}\n";
|
|
}
|
|
echo "Gotowe. Mozesz teraz USUNAC plik test-add-booking.php z FTP.\n";
|
|
exit;
|
|
}
|
|
|
|
if ( 'list' === $action ) {
|
|
$bookings = get_posts( array(
|
|
'post_type' => 'yacht_booking',
|
|
'numberposts' => -1,
|
|
'post_status' => 'any',
|
|
'meta_key' => $test_marker,
|
|
'meta_value' => $test_marker_value,
|
|
) );
|
|
echo "Testowe rezerwacje (marker {$test_marker_value}):\n";
|
|
if ( ! $bookings ) {
|
|
echo " (brak)\n";
|
|
}
|
|
foreach ( $bookings as $b ) {
|
|
$yacht_id = \YachtBooking\Booking::get_yacht_id( $b->ID );
|
|
$start = \YachtBooking\Booking::get_start_date( $b->ID );
|
|
$end = \YachtBooking\Booking::get_end_date( $b->ID );
|
|
echo " - ID={$b->ID}, yacht_id={$yacht_id}, {$start} -> {$end}\n";
|
|
}
|
|
exit;
|
|
}
|
|
|
|
die( "Nieznana akcja '{$action}'. Dozwolone: add | remove | list" );
|