Files
2026-05-08 00:12:37 +02:00

113 lines
3.0 KiB
PHP

<?php
/**
* Plugin Name: Yacht Booking System
* Plugin URI: https://jachty.pagedev.pl
* Description: System rezerwacji jachtów z kalendarzem i integracją z Google Calendar
* Version: 1.2.1
* Author: PageDev
* Author URI: https://pagedev.pl
* Text Domain: yacht-booking
* Domain Path: /languages
* Requires at least: 6.0
* Requires PHP: 7.4
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Define plugin constants
define( 'YACHT_BOOKING_VERSION', '1.2.1' );
define( 'YACHT_BOOKING_PLUGIN_FILE', __FILE__ );
define( 'YACHT_BOOKING_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'YACHT_BOOKING_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'YACHT_BOOKING_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
/**
* PSR-4 Autoloader for plugin classes
*/
spl_autoload_register( function( $class ) {
// Project namespace prefix
$prefix = 'YachtBooking\\';
// Base directory for the namespace prefix
$base_dir = YACHT_BOOKING_PLUGIN_DIR . 'includes/';
// Does the class use the namespace prefix?
$len = strlen( $prefix );
if ( strncmp( $prefix, $class, $len ) !== 0 ) {
return;
}
// Get the relative class name
$relative_class = substr( $class, $len );
// Replace namespace separators with directory separators
// Convert to lowercase and prepend 'class-'
$file = $base_dir . 'class-' . str_replace( '\\', '/', strtolower( str_replace( '_', '-', $relative_class ) ) ) . '.php';
// If the file exists, require it
if ( file_exists( $file ) ) {
require $file;
}
} );
/**
* Plugin activation hook
*/
function yacht_booking_activate() {
// Load installer class
require_once YACHT_BOOKING_PLUGIN_DIR . 'includes/class-installer.php';
$installer = new YachtBooking\Installer();
$installer->install();
// Setup iCal import cron (globalny — z 09-02)
require_once YACHT_BOOKING_PLUGIN_DIR . 'integrations/ical/class-ical-import.php';
YachtBooking\Integrations\ICal\ICal_Import::setup_cron();
// Flush rewrite rules
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'yacht_booking_activate' );
/**
* Plugin deactivation hook
*/
function yacht_booking_deactivate() {
// Clear iCal import cron
require_once YACHT_BOOKING_PLUGIN_DIR . 'integrations/ical/class-ical-import.php';
YachtBooking\Integrations\ICal\ICal_Import::clear_cron();
// Flush rewrite rules
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'yacht_booking_deactivate' );
/**
* Initialize the plugin
*/
function yacht_booking_init() {
// Load plugin main class
require_once YACHT_BOOKING_PLUGIN_DIR . 'includes/class-yacht-booking.php';
// Get instance
YachtBooking\Yacht_Booking::get_instance();
}
add_action( 'plugins_loaded', 'yacht_booking_init', 10 );
/**
* Load plugin textdomain
*/
function yacht_booking_load_textdomain() {
load_plugin_textdomain(
'yacht-booking',
false,
dirname( YACHT_BOOKING_PLUGIN_BASENAME ) . '/languages'
);
}
add_action( 'init', 'yacht_booking_load_textdomain' );