<?php
/**
 * Plugin Name:       BW Lead Attribution Intelligence
 * Plugin URI:        https://plugins.bowden.works/bw-lead-ai/
 * Description:       Capture traffic source, attribute it to every lead, and understand where your leads are coming from.
 * Version:           1.11.1
 * 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-lead-ai
 * Domain Path:       /languages
 * Update URI:        https://plugins.bowden.works/bw-lead-ai/
 */

defined( 'ABSPATH' ) || exit;

define( 'BW_LEAD_AI_VERSION', '1.11.1' );
define( 'BW_LEAD_AI_FILE', __FILE__ );
define( 'BW_LEAD_AI_DIR', plugin_dir_path( __FILE__ ) );
define( 'BW_LEAD_AI_URL', plugin_dir_url( __FILE__ ) );
define( 'BW_LEAD_AI_SLUG', 'bw-lead-ai' );
define( 'BW_LEAD_AI_OPTION', 'bw_lead_ai_settings' );
define( 'BW_LEAD_AI_UTM_OPTION', 'bw_lead_ai_utm_tracking' );

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

use YahnisElsts\PluginUpdateChecker\v5\PucFactory;

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

require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-caps.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-settings.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-frontend.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-admin.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-merge-tags.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-gf-field.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-rest.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-leads.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-handoff-store.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-handoff-rest.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-handoff-admin.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-handoff-wizard.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-identity.php';
// Pure aggregation, all static, nothing to boot — the Reports page calls it and
// nobody else does, so it registers no hooks in BW_Lead_AI_Plugin.
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-reports.php';
// Builds the AI Analysis package from that aggregate plus a second pass for the
// page-level history it discards. Static and unhooked for the same reason — the
// Reports screen and its download handler are the only callers.
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-ai-export.php';
// Also all static, and deliberately never hooked: reprocessing history runs only
// when someone presses the button, never on a schedule or on upgrade.
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-reprocess.php';
require_once BW_LEAD_AI_DIR . 'includes/class-bw-lead-ai-plugin.php';

function bw_lead_ai_init() {
	load_plugin_textdomain( 'bw-lead-ai', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
	BW_Lead_AI_Plugin::instance()->boot();
}
add_action( 'plugins_loaded', 'bw_lead_ai_init' );
