' .
esc_html__( 'WooDoo requires WooCommerce to be active.', 'woodoo' ) .
'
'
);
return;
}
WooDoo_Admin::init();
WooDoo_Invoices::init();
WooDoo_Calendar::init();
WooDoo_Orders::init();
}
/**
* Returns a configured WooDoo_API instance using saved options.
* Returns null if credentials are not set.
*/
function woodoo_api(): ?WooDoo_API {
static $instance = null;
if ( $instance ) return $instance;
$opts = [
'url' => get_option( 'woodoo_odoo_url', '' ),
'db' => get_option( 'woodoo_odoo_db', '' ),
'username' => get_option( 'woodoo_odoo_username', '' ),
'api_key' => get_option( 'woodoo_odoo_api_key', '' ),
];
foreach ( $opts as $v ) {
if ( empty( $v ) ) return null;
}
$instance = new WooDoo_API(
rtrim( $opts['url'], '/' ),
$opts['db'],
$opts['username'],
$opts['api_key']
);
return $instance;
}
// ── Activation / Deactivation ─────────────────────────────────────────────
register_activation_hook( __FILE__, 'woodoo_activate' );
function woodoo_activate(): void {
// Create DB table for customer links (supplement to user meta)
global $wpdb;
$table = $wpdb->prefix . 'woodoo_customer_links';
$charset = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS {$table} (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
wp_user_id BIGINT UNSIGNED NOT NULL,
odoo_partner_id INT UNSIGNED NOT NULL,
linked_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY wp_user_id (wp_user_id),
KEY odoo_partner_id (odoo_partner_id)
) {$charset};";
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta( $sql );
// Register endpoints and flush so My Account tabs appear immediately
WC()->query->init_query_vars();
WC()->query->add_endpoints();
flush_rewrite_rules();
}