<?php
/**
 * Plugin Name:       BW Guides
 * Plugin URI:        https://plugins.bowden.works/bw-guides/
 * Description:       Documentation and guides for your website, delivered and updated by Bowden Works.
 * Version:           0.3.5
 * Requires at least: 6.0
 * Requires PHP:      7.4
 * Author:            Bowden Works
 * Author URI:        https://bowden.works
 * License:           GPL-2.0-or-later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       bw-guides
 * Domain Path:       /languages
 * Update URI:        https://plugins.bowden.works/bw-guides/
 */

defined( 'ABSPATH' ) || exit;

define( 'BW_GUIDES_VERSION', '0.3.5' );
define( 'BW_GUIDES_FILE', __FILE__ );
define( 'BW_GUIDES_DIR', plugin_dir_path( __FILE__ ) );
define( 'BW_GUIDES_URL', plugin_dir_url( __FILE__ ) );

require_once BW_GUIDES_DIR . 'vendor/plugin-update-checker/plugin-update-checker.php';

use YahnisElsts\PluginUpdateChecker\v5\PucFactory;

$updateChecker = PucFactory::buildUpdateChecker(
	'https://plugins.bowden.works/wp-json/bw/v1/update-check?slug=bw-guides',
	__FILE__,
	'bw-guides'
);

require_once BW_GUIDES_DIR . 'includes/class-bw-guides-cpt.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-content.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-keywords.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-settings.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-client.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-sync.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-admin.php';
require_once BW_GUIDES_DIR . 'includes/class-bw-guides-ajax.php';

register_activation_hook( __FILE__, 'bw_guides_activate' );
register_deactivation_hook( __FILE__, 'bw_guides_deactivate' );

function bw_guides_activate() {
	BW_Guides_Sync::schedule_cron();
}

function bw_guides_deactivate() {
	BW_Guides_Sync::clear_cron();
}

function bw_guides_init() {
	// Never run alongside the hub plugin — both register the bw_guide post type.
	if ( defined( 'BW_GUIDES_SERVER_VERSION' ) ) {
		add_action( 'admin_init', 'bw_guides_self_deactivate' );
		return;
	}
	( new BW_Guides_CPT() )->register();
	( new BW_Guides_Sync() )->register();
	if ( is_admin() ) {
		( new BW_Guides_Admin() )->register();
		( new BW_Guides_Ajax() )->register();
		( new BW_Guides_Settings() )->register();
	}
}
add_action( 'plugins_loaded', 'bw_guides_init' );

function bw_guides_self_deactivate() {
	deactivate_plugins( plugin_basename( BW_GUIDES_FILE ) );
	add_action(
		'admin_notices',
		function () {
			echo '<div class="notice notice-error"><p>'
				. esc_html__( 'BW Guides cannot run on the same site as BW Guides Server and has been deactivated.', 'bw-guides' )
				. '</p></div>';
		}
	);
}
