File: /home/ic3/domains/ic3.info/public_html/wp-content/plugins/data-plugin/data-plugin.php
<?php
/**
* Plugin Name: Data Plugin
* Description: A WordPress plugin to manage custom data entries with CSV and JSON import/export functionality.
* Version: 2.0
* Author: Binh Vo
*/
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly
}
// Define plugin constants
define('BB_DATA_PLUGIN_PATH', plugin_dir_path(__FILE__));
define('BB_DATA_PLUGIN_URL', plugin_dir_url(__FILE__));
// Include required files
require_once BB_DATA_PLUGIN_PATH . 'includes/post-types.php';
require_once BB_DATA_PLUGIN_PATH . 'includes/templates/admin-page.php';
require_once BB_DATA_PLUGIN_PATH . 'includes/csv-handler.php';
require_once BB_DATA_PLUGIN_PATH . 'includes/json-handler.php';
require_once BB_DATA_PLUGIN_PATH . 'includes/admin-columns.php';
require_once BB_DATA_PLUGIN_PATH . 'includes/student-csv-handler.php';
/**
* Initialize plugin
*/
function bb_data_plugin_init()
{
// Start session if not already started
if (!session_id()) {
session_start();
}
}
add_action('init', 'bb_data_plugin_init');
/**
* Enqueue admin styles and scripts
*/
function bb_data_plugin_admin_assets($hook)
{
// Only load on our plugin pages
if ($hook !== 'toplevel_page_my-data-plugin-posts') {
return;
}
// Enqueue CSS
wp_enqueue_style(
'bb-data-admin-css',
BB_DATA_PLUGIN_URL . 'assets/admin-styles.css',
array(),
'2.0'
);
// Enqueue JavaScript
wp_enqueue_script(
'bb-data-admin-js',
BB_DATA_PLUGIN_URL . 'assets/admin-scripts.js',
array('jquery'),
'2.4',
true
);
// Localize script for AJAX
wp_localize_script('bb-data-admin-js', 'bb_data_ajax', array(
'export_nonce' => wp_create_nonce('bb_data_export'),
'export_json_nonce' => wp_create_nonce('bb_data_export_json'),
'batch_import_nonce' => wp_create_nonce('bb_data_batch_import'),
'student_export_nonce' => wp_create_nonce('bb_data_student_export'),
'student_batch_import_nonce' => wp_create_nonce('bb_data_student_batch_import'),
'get_schools_nonce' => wp_create_nonce('bb_data_get_schools'),
'ajax_url' => admin_url('admin-ajax.php')
));
}
// Admin assets
add_action('admin_enqueue_scripts', 'bb_data_plugin_admin_assets');
// Admin menu
add_action('admin_menu', 'bb_data_plugin_posts_menu');
// Custom columns
add_action('init', 'bb_data_add_custom_columns');
// Register custom post types
add_action('init', 'bb_data_plugin_register_post_types');
// AJAX handlers for CSV
add_action('wp_ajax_export_csv_data_posts', 'bb_data_plugin_export_csv_posts');
// add_action('wp_ajax_import_csv_data_posts', 'bb_data_plugin_import_csv_posts');
add_action('wp_ajax_init_batch_csv_import', 'bb_data_plugin_init_batch_import');
add_action('wp_ajax_process_batch_csv_import', 'bb_data_plugin_process_batch');
// AJAX handlers for JSON
add_action('wp_ajax_export_json_data_posts', 'bb_data_plugin_export_json_posts');
add_action('wp_ajax_import_json_data_posts', 'bb_data_plugin_import_json_posts');
// AJAX handlers for Student CSV
add_action('wp_ajax_export_student_csv_data', 'bb_data_plugin_export_student_csv');
add_action('wp_ajax_init_student_batch_csv_import', 'bb_data_plugin_init_student_batch_import');
add_action('wp_ajax_process_student_batch_csv_import', 'bb_data_plugin_process_student_batch');
// AJAX handler for fetching schools
add_action('wp_ajax_get_schools_for_dropdown', 'bb_data_plugin_get_schools_for_dropdown');
/**
* Get schools for dropdown selection
*/
function bb_data_plugin_get_schools_for_dropdown()
{
// Verify nonce for security
if (!wp_verify_nonce($_POST['bb_data_nonce'], 'bb_data_get_schools')) {
wp_die(json_encode(['status' => 'error', 'message' => 'Security check failed']));
}
// Get all school posts
$schools = get_posts(array(
'post_type' => 'school',
'numberposts' => -1,
'post_status' => 'publish',
'orderby' => 'title',
'order' => 'ASC'
));
$school_options = array();
foreach ($schools as $school) {
$school_options[] = array(
'value' => $school->post_title,
'text' => $school->post_title
);
}
wp_die(json_encode([
'status' => 'success',
'schools' => $school_options
]));
}