| Server IP : 38.190.208.107 / Your IP : 216.73.217.46 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.10/wp-content/plugins/mailchimp-for-wp/includes/forms/ |
Upload File : |
<?php
/**
* This class takes care of all form related functionality
*
* Do not interact with this class directly, use `mc4wp_form` functions tagged with @access public instead.
*
* @class MC4WP_Form_Manager
* @ignore
* @access private
*/
class MC4WP_Form_Manager
{
/**
* @var MC4WP_Form_Output_Manager
*/
protected $output_manager;
/**
* @var MC4WP_Form_Listener
*/
protected $listener;
/**
* @var MC4WP_Form_Tags
*/
protected $tags;
/**
* @var MC4WP_Form_Previewer
*/
protected $previewer;
/**
* @var MC4WP_Form_Asset_Manager
*/
protected $assets;
/**
* @var MC4WP_Form_AMP
*/
protected $amp_compatibility;
/**
* Constructor
*/
public function __construct()
{
$this->output_manager = new MC4WP_Form_Output_Manager();
$this->tags = new MC4WP_Form_Tags();
$this->listener = new MC4WP_Form_Listener();
$this->previewer = new MC4WP_Form_Previewer();
$this->assets = new MC4WP_Form_Asset_Manager();
$this->amp_compatibility = new MC4WP_Form_AMP();
}
/**
* Hook!
*/
public function add_hooks()
{
add_action('init', [ $this, 'initialize' ]);
add_action('widgets_init', [ $this, 'register_widget' ]);
add_action('rest_api_init', [ $this, 'register_endpoint' ]);
$this->listener->add_hooks();
$this->output_manager->add_hooks();
$this->assets->add_hooks();
$this->tags->add_hooks();
$this->previewer->add_hooks();
$this->amp_compatibility->add_hooks();
}
/**
* Initialize
*/
public function initialize()
{
$this->register_post_type();
$this->register_block_type();
}
private function register_block_type()
{
// Bail if register_block_type does not exist (available since WP 5.0)
if (! function_exists('register_block_type')) {
return;
}
register_block_type(
'mailchimp-for-wp/form',
[
'render_callback' => [ $this->output_manager, 'shortcode' ],
]
);
}
/**
* Register post type "mc4wp-form"
*/
private function register_post_type()
{
// register post type
register_post_type(
'mc4wp-form',
[
'labels' => [
'name' => 'Mailchimp Sign-up Forms',
'singular_name' => 'Sign-up Form',
],
'public' => false,
'capability_type' => 'mc4wp-form',
'map_meta_cap' => true,
]
);
}
/**
* Register our Form widget
*/
public function register_widget()
{
register_widget('MC4WP_Form_Widget');
}
/**
* Register an API endpoint for handling a form.
*/
public function register_endpoint()
{
register_rest_route(
'mc4wp/v1',
'/form',
[
'methods' => 'POST',
'permission_callback' => '__return_true',
'callback' => [ $this, 'handle_endpoint' ],
]
);
}
/**
* Process requests to the form endpoint.
*
* A listener checks every request for a form submit, so we just need to fetch the listener and get its status.
*/
public function handle_endpoint()
{
$form = mc4wp_get_submitted_form();
if (! $form instanceof MC4WP_Form) {
return new WP_Error(
'not_found',
esc_html__('Resource does not exist.', 'mailchimp-for-wp'),
[
'status' => 404,
]
);
}
if ($form->has_errors()) {
$message_key = $form->errors[0];
$message = $form->get_message($message_key);
return new WP_Error(
$message_key,
$message,
[
'status' => 400,
]
);
}
return new WP_REST_Response(true, 200);
}
/**
* @param $form_id
* @param array $config
* @param bool $echo
*
* @return string
*/
public function output_form($form_id, $config = [], $echo = true)
{
return $this->output_manager->output_form($form_id, $config, $echo);
}
/**
* Gets the currently submitted form
*
* @return MC4WP_Form|null
*/
public function get_submitted_form()
{
if ($this->listener->submitted_form instanceof MC4WP_Form) {
return $this->listener->submitted_form;
}
return null;
}
/**
* Return all tags
*
* @return array
*/
public function get_tags()
{
return $this->tags->all();
}
}