<?php
/**
 * Plugin Name: Law Temple Core
 * Description: Structured legal content, relationships, enquiries, schema, setup and reusable business data for the Law Temple law-firm framework.
 * Version: 3.0.0
 * Requires at least: 6.4
 * Requires PHP: 8.0
 * Author: Law Temple
 * Text Domain: law-temple-core
 */
if ( ! defined( 'ABSPATH' ) ) { exit; }

define( 'LT_CORE_VERSION', '3.0.0' );
define( 'LT_CORE_DB_VERSION', '3.0.0' );
define( 'LT_CORE_FILE', __FILE__ );
define( 'LT_CORE_DIR', plugin_dir_path( __FILE__ ) );
define( 'LT_CORE_URL', plugin_dir_url( __FILE__ ) );

foreach ( array( 'utilities','migrations','roles','post-types','meta','professional-fields','structured-content','relationship-index','relationships','settings','enquiries','enquiry-admin','schema','rest','demo','setup','admin','content-admin','site-health','tools','hero-preview','onboarding','relation-ajax','acceptance','blocks','page-builder-admin','data-tools','runtime-tests' ) as $module ) {
    require_once LT_CORE_DIR . 'inc/' . $module . '.php';
}

register_activation_hook( __FILE__, 'lt_core_activate' );
register_deactivation_hook( __FILE__, 'lt_core_deactivate' );
add_action( 'plugins_loaded', 'lt_core_load_textdomain' );
add_action( 'admin_init', 'lt_core_maybe_run_migrations', 2 );
add_action( 'lt_core_cleanup_enquiry_temp_files', 'lt_core_cleanup_enquiry_temp_files' );
add_action( 'init', 'lt_core_register_content', 5 );
add_action( 'init', 'lt_core_register_meta', 6 );
add_action( 'init', 'lt_core_register_shortcodes', 20 );
add_action( 'rest_api_init', 'lt_core_register_rest_routes' );
add_action( 'admin_menu', 'lt_core_admin_menu' );
add_action( 'admin_init', 'lt_core_register_settings' );
add_action( 'admin_enqueue_scripts', 'lt_core_admin_assets' );
add_action( 'wp_head', 'lt_core_output_schema', 30 );
add_action( 'template_redirect', 'lt_core_legacy_redirects', 1 );
add_action( 'template_redirect', 'lt_core_vcard_download', 2 );

function lt_core_load_textdomain() {
    load_plugin_textdomain( 'law-temple-core', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}

function lt_core_activate() {
    lt_core_register_content();
    lt_core_migrate_v2_options();
    lt_core_install_relationship_table();
    lt_core_relationship_index_migrate_all();
    lt_core_sync_roles_and_capabilities();
    lt_core_schedule_enquiry_cleanup();
    update_option( 'lt_core_db_version', LT_CORE_DB_VERSION, false );
    update_option( 'lt_core_version', LT_CORE_VERSION, false );
    flush_rewrite_rules();
}
function lt_core_deactivate() {
    $timestamp = wp_next_scheduled( 'lt_core_cleanup_enquiry_temp_files' );
    if ( $timestamp ) { wp_unschedule_event( $timestamp, 'lt_core_cleanup_enquiry_temp_files' ); }
    flush_rewrite_rules();
}
