File: //home/parhudrw/anqa.it/wp-content/plugins/metform/core/forms/base.php
<?php
namespace MetForm\Core\Forms;
defined( 'ABSPATH' ) || exit;
Class Base extends \MetForm\Base\Common{
use \MetForm\Traits\Singleton;
public $form;
public $api;
public function get_dir(){
return dirname(__FILE__);
}
public function __construct(){
}
public function init(){
$this->form = new Cpt();
$this->api = new Api();
Hooks::instance()->Init();
\MetForm\Base\Shortcode::instance();
add_action('admin_footer', [$this, 'modal_view']);
add_action('admin_enqueue_scripts', [$this, 'enqueue_react_modal_scripts']);
}
public function modal_view(){
$screen = get_current_screen();
if($screen->id == 'edit-metform-form' || $screen->id == 'metform_page_mt-form-settings'){
include_once 'views/modal-editor.php';
// Include new modal for add new form
include_once 'views/modal-add-new-form.php';
}
}
public function enqueue_react_modal_scripts(){
$screen = get_current_screen();
// Only enqueue on metform-form post type edit page
if($screen->id == 'edit-metform-form'){
$plugin = \MetForm\Plugin::instance();
$asset_file = $plugin->plugin_dir() . 'build/add-new-form-modal.asset.php';
if (file_exists($asset_file)) {
$asset = include $asset_file;
wp_enqueue_script(
'metform-add-new-form-modal',
$plugin->plugin_url() . 'build/add-new-form-modal.js',
$asset['dependencies'],
$asset['version'],
true
);
wp_enqueue_style(
'metform-add-new-form-modal',
$plugin->plugin_url() . 'build/style-add-new-form-modal.css',
array('wp-components'),
$asset['version']
);
// Pass data to JavaScript
wp_localize_script('metform-add-new-form-modal', 'metformData', [
'pluginUrl' => $plugin->plugin_url(),
'hasPro' => class_exists('\MetForm_Pro\Base\Package'),
'hasQuiz' => class_exists('\MetForm_Pro\Core\Features\Quiz\Integration'),
'templates' => $this->get_templates_for_js(),
]);
}
}
}
private function get_templates_for_js(){
$templates = [];
if(class_exists('\MetForm\Templates\Base')){
$template_data = \MetForm\Templates\Base::instance()->get_templates();
$pro_exists = class_exists('\MetForm_Pro\Base\Package');
foreach($template_data as $template){
if(isset($template['form_type'])){
$title = isset($template['title']) ? $template['title'] : '';
$templates[] = [
'id' => isset($template['id']) ? $template['id'] : '',
'title' => $title,
'description' => isset($template['description']) ? $template['description'] : '',
'thumbnail' => isset($template['preview-thumb']) ? $template['preview-thumb'] : '',
'form_type' => $template['form_type'],
'category' => $this->detect_category($title),
'demoUrl' => isset($template['demo-url']) ? $template['demo-url'] : '',
'file' => isset($template['file']) ? $template['file'] : '',
'package' => isset($template['package']) ? $template['package'] : '',
'isProActive' => $pro_exists,
];
}
}
}
return $templates;
}
private function detect_category($title){
$title_lower = strtolower($title);
// Map titles to categories
if(strpos($title_lower, 'contact') !== false){
return 'contact-form';
} elseif(strpos($title_lower, 'conditional') !== false){
return 'conditional-logic-form';
} elseif(strpos($title_lower, 'quiz') !== false){
return 'quiz-form';
} elseif(strpos($title_lower, 'feedback') !== false || strpos($title_lower, 'suggestion') !== false || strpos($title_lower, 'rating') !== false){
return 'feedback-form';
} elseif(strpos($title_lower, 'calculation') !== false){
return 'calculation-form';
} elseif(strpos($title_lower, 'multi-step') !== false || strpos($title_lower, 'multistep') !== false){
return 'multi-step-form';
} elseif(strpos($title_lower, 'booking') !== false || strpos($title_lower, 'reservation') !== false || strpos($title_lower, 'event') !== false){
return 'booking-form';
} elseif(strpos($title_lower, 'order') !== false || strpos($title_lower, 'product') !== false || strpos($title_lower, 'food') !== false){
return 'product-order-form';
} elseif(strpos($title_lower, 'loan') !== false){
return 'loan-application-form';
} elseif(strpos($title_lower, 'job') !== false || strpos($title_lower, 'volunteer') !== false){
return 'job-application-form';
} elseif(strpos($title_lower, 'admission') !== false){
return 'admission-form';
} elseif(strpos($title_lower, 'support') !== false || strpos($title_lower, 'bug') !== false){
return 'support-form';
}
return 'contact-form'; // Default category
}
}