'mphb_room', 'post_status' => 'publish', 'numberposts' => -1, 'no_found_rows' => true, 'orderby' => 'title', 'order' => 'ASC', ] ); $syncRepo = MPHB()->getSyncUrlsRepository(); ?>

Synchronizacja kalendarzy iCal


Brak opublikowanych pokoi.

Eksport: skopiuj link i wklej w Booking.com → Ekstranet → Nieruchomość → Synchronizacja kalendarza → Eksportuj.
Import: URL iCal z Booking.com wklej na stronie edycji pokoju (metabox „iCal Synchronizacja").

ID; $exportUrl = FeedEndpoint::getExportUrl( $roomId ); $importUrls = array_values( $syncRepo->getUrls( $roomId ) ); $editUrl = get_edit_post_link( $roomId ); $lastSync = get_post_meta( $roomId, '_mphb_ical_last_sync', true ); $lastStatus = get_post_meta( $roomId, '_mphb_ical_last_status', true ); $lastResult = get_post_meta( $roomId, '_mphb_ical_last_result', true ); $inputId = 'mphb-ical-exp-' . $roomId; $nonce = wp_create_nonce( self::NONCE_AJAX ); ?>
Pokój Link eksportu (→ Booking.com) URL importu (← Booking.com) Ostatnia synchronizacja Akcje
post_title ); ?>
ID:
— brak — dodaj w edycji pokoju

+ nowych, − usuniętych nie uruchamiano

⏰ Automatyczna synchronizacja uruchamia się co 15 minut przez WP-Cron.

ID; $exportUrl = FeedEndpoint::getExportUrl( $roomId ); $syncRepo = MPHB()->getSyncUrlsRepository(); $urls = $syncRepo->getUrls( $roomId ); $importUrls = implode( "\n", array_values( $urls ) ); $lastSync = get_post_meta( $roomId, '_mphb_ical_last_sync', true ); $lastStatus = get_post_meta( $roomId, '_mphb_ical_last_status', true ); $lastResult = get_post_meta( $roomId, '_mphb_ical_last_result', true ); wp_nonce_field( self::NONCE_ACTION, self::NONCE_FIELD ); echo ''; // Eksport echo '
'; echo '

📤 Link eksportu (dla Booking.com)

'; echo '
'; $inputId = 'mphb-ical-exp-meta-' . $roomId; echo ''; echo ''; echo '
'; echo '

Wklej w Booking.com: Ekstranet → Nieruchomość → Synchronizacja kalendarza → Eksportuj.

'; echo '
'; // Import echo '
'; echo '

📥 URL importu z Booking.com

'; echo ''; echo '

URL iCal z Booking.com (jeden na linię). Znajdziesz go w Booking.com: Ekstranet → Synchronizacja kalendarza → Importuj.

'; echo '
'; // Status echo '
'; if ( $lastSync ) { $timeStr = wp_date( 'd.m.Y H:i', (int) $lastSync ); $icon = $lastStatus === 'ok' ? '✓ OK' : '✗ Błąd'; echo '

Ostatnia sync: ' . esc_html( $timeStr ) . ' — ' . esc_html( $icon ); if ( is_array( $lastResult ) ) { echo ' (+' . (int) ( $lastResult['created'] ?? 0 ) . ' / −' . (int) ( $lastResult['deleted'] ?? 0 ) . ')'; } echo '

'; } else { echo '

Synchronizacja jeszcze nie była uruchamiana.

'; } $nonce = wp_create_nonce( self::NONCE_AJAX ); echo ''; echo ' '; echo '
'; ?> getSyncUrlsRepository()->updateUrls( $postId, $validUrls ); } // ------------------------------------------------------------------------- // AJAX // ------------------------------------------------------------------------- public function ajaxSyncRoom(): void { check_ajax_referer( self::NONCE_AJAX, 'nonce' ); if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'Brak uprawnień' ); } $roomId = isset( $_POST['room_id'] ) ? absint( $_POST['room_id'] ) : 0; if ( ! $roomId ) { wp_send_json_error( 'Nieprawidłowy ID pokoju' ); } $result = SyncCron::syncRoom( $roomId ); if ( isset( $result['error'] ) ) { wp_send_json_error( $result['error'] ); } wp_send_json_success( $result ); } }