run(); } // run_quiztech(); // Placeholder for activation/deactivation hooks \register_activation_hook( __FILE__, __NAMESPACE__ . '\activate_quiztech' ); \register_deactivation_hook( __FILE__, __NAMESPACE__ . '\deactivate_quiztech' ); /** * The code that runs during plugin activation. * This action is documented in includes/class-quiztech-activator.php */ function activate_quiztech() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'quiztech_invitations'; $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, token varchar(32) NOT NULL, job_id bigint(20) unsigned NOT NULL, assessment_id bigint(20) unsigned NOT NULL, applicant_email varchar(255) NOT NULL, status varchar(20) NOT NULL DEFAULT 'pending', -- e.g., pending, viewed, completed, expired created_timestamp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, expiry_timestamp datetime DEFAULT NULL, -- Optional expiry PRIMARY KEY (id), UNIQUE KEY token (token), KEY job_id (job_id), KEY assessment_id (assessment_id), KEY applicant_email (applicant_email(191)), -- Index prefix for potential long emails KEY status (status) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); \dbDelta( $sql ); // Call the namespaced function for roles \Quiztech\AssessmentPlatform\Includes\quiztech_add_roles_and_capabilities(); \flush_rewrite_rules(); // Ensure rewrite rules are updated for CPTs/taxonomies } /** * The code that runs during plugin deactivation. * This action is documented in includes/class-quiztech-deactivator.php */ function deactivate_quiztech() { // Call the namespaced function \Quiztech\AssessmentPlatform\Includes\quiztech_remove_roles_and_capabilities(); \flush_rewrite_rules(); // Clean up rewrite rules } /** * Initialize the plugin's features. */ function quiztech_init() { // Initialize frontend handler for invitation links $frontend_handler = new \Quiztech\AssessmentPlatform\Includes\FrontendHandler(); $frontend_handler->init_hooks(); // Initialize AJAX handler for assessment interactions \Quiztech\AssessmentPlatform\Includes\Ajax\AssessmentAjaxHandler::init(); // TODO: Instantiate other core classes and call their init methods here // e.g., Admin menu handler, AJAX handlers, Shortcode handlers etc. } add_action( 'plugins_loaded', 'quiztech_init' ); ?> ?>