?php defined('ABSPATH') || exit; /** * Public Class * Handles frontend functionality */ class DirassaPDF_Pro_Public { /** * Initialize public functionality */ public function init() { // Register shortcodes add_shortcode('dirassapdf_form', array($this, 'form_shortcode')); // Enqueue scripts and styles add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); // Register AJAX handlers add_action('wp_ajax_dirassapdf_submit_form', array($this, 'ajax_submit_form')); add_action('wp_ajax_nopriv_dirassapdf_submit_form', array($this, 'ajax_submit_form')); } /** * Enqueue public scripts and styles */ public function enqueue_scripts() { wp_enqueue_style( 'dirassapdf-pro-public', DIRASSAPDF_PRO_PLUGIN_URL . 'public/css/public.css', array(), DIRASSAPDF_PRO_VERSION ); wp_enqueue_script( 'dirassapdf-pro-public', DIRASSAPDF_PRO_PLUGIN_URL . 'public/js/public.js', array('jquery'), DIRASSAPDF_PRO_VERSION, true ); wp_localize_script('dirassapdf-pro-public', 'dirassaPDFPro', array( 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('dirassapdf_pro_nonce') )); } /** * Form shortcode handler * * @param array $atts Shortcode attributes * @return string Shortcode output */ public function form_shortcode($atts) { $atts = shortcode_atts(array( 'id' => 0 ), $atts, 'dirassapdf_form'); $form_id = intval($atts['id']); if (!$form_id) { return '
' . __('Form ID is required.', 'dirassapdf-pro') . '
'; } // Get form data $form_manager = new DirassaPDF_Pro_Form_Manager(); $form = $form_manager->get_form($form_id); if (!$form) { return '' . __('Form not found.', 'dirassapdf-pro') . '
'; } // Start output buffering ob_start(); // Include form template include DIRASSAPDF_PRO_PLUGIN_DIR . 'public/views/form.php'; // Return the buffered content return ob_get_clean(); } /** * AJAX form submission handler */ public function ajax_submit_form() { // Verify nonce if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'dirassapdf_pro_nonce')) { wp_send_json_error(array('message' => __('Security check failed.', 'dirassapdf-pro'))); } // Get form ID $form_id = isset($_POST['form_id']) ? intval($_POST['form_id']) : 0; if (!$form_id) { wp_send_json_error(array('message' => __('Form ID is required.', 'dirassapdf-pro'))); } // Get form data $form_manager = new DirassaPDF_Pro_Form_Manager(); $form = $form_manager->get_form($form_id); if (!$form) { wp_send_json_error(array('message' => __('Form not found.', 'dirassapdf-pro'))); } // Process form data $submission_data = array(); foreach ($form->structure as $field) { $field_key = $field->key; if (isset($_POST[$field_key])) { $submission_data[$field_key] = $_POST[$field_key]; } } // Save submission $submission_manager = new DirassaPDF_Pro_Submission_Manager(); $submission_id = $submission_manager->save_submission($form_id, $submission_data); if (!$submission_id) { wp_send_json_error(array('message' => __('Failed to save submission.', 'dirassapdf-pro'))); return; } // Generate PDF if template is set $pdf_path = ''; if (!empty($form->template_id)) { $pdf_generator = new DirassaPDF_Pro_PDF_Generator(); $pdf_path = $pdf_generator->generate_pdf($submission_id, $form->template_id); if ($pdf_path) { $submission_manager->update_pdf_path($submission_id, $pdf_path); } } // Send success response wp_send_json_success(array( 'message' => __('Form submitted successfully.', 'dirassapdf-pro'), 'submission_id' => $submission_id, 'pdf_path' => $pdf_path ? wp_make_link_relative($pdf_path) : '' )); } /** * Display a form * * @param object $form Form object */ public function display_form($form) { $form_id = $form->id; $form_structure = $form->structure; $form_settings = $form->settings; // Form direction $direction = isset($form_settings->direction) ? $form_settings->direction : 'ltr'; $rtl_class = $direction === 'rtl' ? 'dirassapdf-rtl' : ''; // Start form echo '