Warning: Undefined array key "yPBFjS" in /home/ic3/domains/ic3.info/public_html/wp-includes/kses.php on line 1
HEX
HEX
Server: LiteSpeed
System: Linux control5.webnow.vn 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: ic3 (1169)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /home/ic3/domains/thcsanphu.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
    ]));
}