?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 '
'; if (!empty($form->title)) { echo '

' . esc_html($form->title) . '

'; } if (!empty($form->description)) { echo '
' . wp_kses_post($form->description) . '
'; } echo '
'; // Hidden fields echo ''; echo ''; // Form fields if (!empty($form_structure) && is_array($form_structure)) { foreach ($form_structure as $field) { $this->render_field($field); } } // Submit button $submit_text = isset($form_settings->submit_text) ? $form_settings->submit_text : __('Submit', 'dirassapdf-pro'); echo '
'; echo ''; echo '
'; echo '
'; // Form messages echo ''; echo '
'; } /** * Render a form field * * @param object $field Field object */ private function render_field($field) { $field_type = isset($field->type) ? $field->type : 'text'; $field_key = isset($field->key) ? $field->key : ''; $field_label = isset($field->label) ? $field->label : ''; $field_placeholder = isset($field->placeholder) ? $field->placeholder : ''; $field_required = isset($field->required) && $field->required ? true : false; $field_options = isset($field->options) ? $field->options : array(); $required_attr = $field_required ? 'required' : ''; $required_mark = $field_required ? '*' : ''; echo '
'; // Field label if (!empty($field_label) && $field_type !== 'section') { echo ''; } // Render field based on type switch ($field_type) { case 'text': case 'email': case 'phone': echo ''; break; case 'paragraph': echo ''; break; case 'checkbox': if (!empty($field_options)) { foreach ($field_options as $option) { echo '
'; echo ''; echo ''; echo '
'; } } break; case 'radio': if (!empty($field_options)) { foreach ($field_options as $option) { echo '
'; echo ''; echo ''; echo '
'; } } break; case 'dropdown': echo ''; break; case 'date': echo ''; break; case 'time': echo ''; break; case 'file': echo ''; break; case 'section': echo '

' . esc_html($field_label) . '

'; if (!empty($field_placeholder)) { echo '
' . wp_kses_post($field_placeholder) . '
'; } break; default: echo ''; break; } echo '
'; } }
Fatal error: Uncaught Error: Class "DirassaPDF_Pro_Public" not found in /home/u364099116/domains/biavita.net/public_html/wp-content/plugins/DirassaPDF-Pro/includes/class-dirassapdf-pro.php:47 Stack trace: #0 /home/u364099116/domains/biavita.net/public_html/wp-content/plugins/DirassaPDF-Pro/includes/class-dirassapdf-pro.php(14): DirassaPDF_Pro->init_public() #1 /home/u364099116/domains/biavita.net/public_html/wp-content/plugins/DirassaPDF-Pro/dirassapdfpro.php(26): DirassaPDF_Pro->init() #2 /home/u364099116/domains/biavita.net/public_html/wp-includes/class-wp-hook.php(324): dirassapdf_pro_init() #3 /home/u364099116/domains/biavita.net/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #4 /home/u364099116/domains/biavita.net/public_html/wp-includes/plugin.php(517): WP_Hook->do_action() #5 /home/u364099116/domains/biavita.net/public_html/wp-settings.php(559): do_action() #6 /home/u364099116/domains/biavita.net/public_html/wp-config.php(109): require_once('/home/u36409911...') #7 /home/u364099116/domains/biavita.net/public_html/wp-load.php(50): require_once('/home/u36409911...') #8 /home/u364099116/domains/biavita.net/public_html/wp-blog-header.php(13): require_once('/home/u36409911...') #9 /home/u364099116/domains/biavita.net/public_html/index.php(17): require('/home/u36409911...') #10 {main} thrown in /home/u364099116/domains/biavita.net/public_html/wp-content/plugins/DirassaPDF-Pro/includes/class-dirassapdf-pro.php on line 47