Overview

Namespaces

  • None
  • Quform
    • Traduttore_Registry

Classes

  • Quform
  • Quform_Admin_InsertForm
  • Quform_Admin_Page
  • Quform_Admin_Page_Controller
  • Quform_Admin_Page_Dashboard
  • Quform_Admin_Page_Entries
  • Quform_Admin_Page_Entries_Edit
  • Quform_Admin_Page_Entries_List
  • Quform_Admin_Page_Entries_View
  • Quform_Admin_Page_Factory
  • Quform_Admin_Page_Forms_Add
  • Quform_Admin_Page_Forms_Edit
  • Quform_Admin_Page_Forms_List
  • Quform_Admin_Page_Help
  • Quform_Admin_Page_Preview
  • Quform_Admin_Page_Settings
  • Quform_Admin_Page_Tools
  • Quform_Admin_Page_Tools_ExportEntries
  • Quform_Admin_Page_Tools_ExportForm
  • Quform_Admin_Page_Tools_Home
  • Quform_Admin_Page_Tools_ImportForm
  • Quform_Admin_Page_Tools_Migrate
  • Quform_Admin_Page_Tools_Uninstall
  • Quform_Api
  • Quform_Block
  • Quform_Builder
  • Quform_Captcha
  • Quform_ClassLoader
  • Quform_Confirmation
  • Quform_Container
  • Quform_Dashboard_Widget
  • Quform_Dispatcher
  • Quform_Element
  • Quform_Element_Captcha
  • Quform_Element_Checkbox
  • Quform_Element_Column
  • Quform_Element_Container
  • Quform_Element_Container_Iterator
  • Quform_Element_Date
  • Quform_Element_Email
  • Quform_Element_Factory
  • Quform_Element_Field
  • Quform_Element_File
  • Quform_Element_Group
  • Quform_Element_Hidden
  • Quform_Element_Honeypot
  • Quform_Element_Html
  • Quform_Element_Multi
  • Quform_Element_Multiselect
  • Quform_Element_Name
  • Quform_Element_Page
  • Quform_Element_Password
  • Quform_Element_Radio
  • Quform_Element_Recaptcha
  • Quform_Element_Row
  • Quform_Element_Select
  • Quform_Element_Submit
  • Quform_Element_Text
  • Quform_Element_Textarea
  • Quform_Element_Time
  • Quform_Entry_Controller
  • Quform_Entry_Exporter
  • Quform_Entry_List_Settings
  • Quform_Entry_List_Table
  • Quform_Entry_Processor
  • Quform_Entry_UserSearcher
  • Quform_Filter_Abstract
  • Quform_Filter_Alpha
  • Quform_Filter_AlphaNumeric
  • Quform_Filter_Digits
  • Quform_Filter_Regex
  • Quform_Filter_Static
  • Quform_Filter_StripTags
  • Quform_Filter_Trim
  • Quform_Form
  • Quform_Form_Controller
  • Quform_Form_Exporter
  • Quform_Form_Factory
  • Quform_Form_Importer
  • Quform_Form_Iterator
  • Quform_Form_List_Settings
  • Quform_Form_List_Table
  • Quform_Form_Processor
  • Quform_License
  • Quform_Migrator
  • Quform_NonceRefresher
  • Quform_Notification
  • Quform_Notification_Resender
  • Quform_Options
  • Quform_Permissions
  • Quform_Repository
  • Quform_ScriptLoader
  • Quform_Session
  • Quform_Settings
  • Quform_Shortcode
  • Quform_Themes
  • Quform_TokenReplacer
  • Quform_Toolbar
  • Quform_Translations
  • Quform_Updater
  • Quform_Upgrader
  • Quform_Uploader
  • Quform_Validator_Abstract
  • Quform_Validator_Alpha
  • Quform_Validator_AlphaNumeric
  • Quform_Validator_Array
  • Quform_Validator_Captcha
  • Quform_Validator_Date
  • Quform_Validator_Digits
  • Quform_Validator_Duplicate
  • Quform_Validator_Email
  • Quform_Validator_FileUpload
  • Quform_Validator_GreaterThan
  • Quform_Validator_Honeypot
  • Quform_Validator_Identical
  • Quform_Validator_InArray
  • Quform_Validator_Length
  • Quform_Validator_LessThan
  • Quform_Validator_Recaptcha
  • Quform_Validator_Regex
  • Quform_Validator_Required
  • Quform_Validator_Static
  • Quform_Validator_Time
  • Quform_View
  • Quform_ViewFactory
  • Quform_Widget_Form
  • Quform_Widget_Popup

Interfaces

  • Quform_Attachable
  • Quform_Element_Editable
  • Quform_Filter_Interface
  • Quform_Validator_Interface

Constants

  • Quform\Traduttore_Registry\TRANSIENT_KEY_PLUGIN
  • Quform\Traduttore_Registry\TRANSIENT_KEY_THEME

Functions

  • Quform\Traduttore_Registry\add_project
  • Quform\Traduttore_Registry\clean_translations_cache
  • Quform\Traduttore_Registry\get_available_locales
  • Quform\Traduttore_Registry\get_installed_translations
  • Quform\Traduttore_Registry\get_translations
  • Quform\Traduttore_Registry\register_clean_translations_cache
  • Quform\Traduttore_Registry\sanitize_date
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: /**
  4:  * @copyright Copyright (c) 2009-2022 ThemeCatcher (https://www.themecatcher.net)
  5:  */
  6: class Quform_Entry_Controller
  7: {
  8:     /**
  9:      * @var Quform_Form_Factory
 10:      */
 11:     protected $formFactory;
 12: 
 13:     /**
 14:      * @var Quform_Repository
 15:      */
 16:     protected $repository;
 17: 
 18:     /**
 19:      * @var Quform_Entry_Processor
 20:      */
 21:     protected $entryProcessor;
 22: 
 23:     /**
 24:      * @param  Quform_Form_Factory     $formFactory
 25:      * @param  Quform_Repository       $repository
 26:      * @param  Quform_Entry_Processor  $entryProcessor
 27:      */
 28:     public function __construct(Quform_Form_Factory $formFactory, Quform_Repository $repository,
 29:                                 Quform_Entry_Processor $entryProcessor)
 30:     {
 31:         $this->formFactory = $formFactory;
 32:         $this->repository = $repository;
 33:         $this->entryProcessor = $entryProcessor;
 34:     }
 35: 
 36:     /**
 37:      * Hook entry point for submitting the edit entry form via Ajax
 38:      */
 39:     public function process()
 40:     {
 41:         if ( ! Quform::isPostRequest() || Quform::get($_POST, 'quform_save_entry') !== '1') {
 42:             return;
 43:         }
 44: 
 45:         $this->validateProcessRequest();
 46:         $this->handleProcessRequest();
 47:     }
 48: 
 49:     /**
 50:      * Validate the request for submitting the edit entry form via Ajax
 51:      */
 52:     protected function validateProcessRequest()
 53:     {
 54:         if ( ! isset($_POST['quform_form_id'], $_POST['quform_form_uid'], $_POST['quform_entry_id']) ||
 55:             ! is_numeric($_POST['quform_form_id']) ||
 56:             ! Quform_Form::isValidUniqueId($_POST['quform_form_uid']) ||
 57:             ! is_numeric($_POST['quform_entry_id'])
 58:         ) {
 59:             $this->sendEncodedResponse(array(
 60:                 'type' => 'error',
 61:                 'message' => __('Bad request', 'quform')
 62:             ));
 63:         }
 64: 
 65:         if ( ! current_user_can('quform_edit_entries')) {
 66:             $this->sendEncodedResponse(array(
 67:                 'type' => 'error',
 68:                 'message' => __('Insufficient permissions', 'quform')
 69:             ));
 70:         }
 71: 
 72:         if ( ! check_ajax_referer('quform_edit_entry_' . $_POST['quform_entry_id'], false, false)) {
 73:             $this->sendEncodedResponse(array(
 74:                 'type' => 'error',
 75:                 'message' => __('Nonce check failed', 'quform')
 76:             ));
 77:         }
 78:     }
 79: 
 80:     /**
 81:      * Handle the request for submitting the edit entry form via Ajax
 82:      */
 83:     protected function handleProcessRequest()
 84:     {
 85:         $config = $this->repository->getConfig((int) Quform::get($_POST, 'quform_form_id'));
 86: 
 87:         if ($config === null) {
 88:             $this->sendEncodedResponse(array(
 89:                 'type' => 'error',
 90:                 'message' => __('Form not found', 'quform')
 91:             ));
 92:         }
 93: 
 94:         $config['uniqueId'] = Quform::get($_POST, 'quform_form_uid');
 95:         $config['entryId'] = isset($_POST['quform_entry_id']) && is_numeric($_POST['quform_entry_id']) ? (int) $_POST['quform_entry_id'] : null;
 96:         $config['environment'] = 'editEntry';
 97: 
 98:         $form = $this->formFactory->create($config);
 99: 
100:         $result = $this->entryProcessor->process($form);
101: 
102:         $this->sendEncodedResponse($result);
103:     }
104: 
105:     /**
106:      * JSON encodes the given data and wraps it in a &lt;textarea&gt; tag
107:      *
108:      * Escaping is necessary to counteract the fact that wrapping the JSON response in a textarea decodes HTML entities
109:      *
110:      * @see http://malsup.com/jquery/form/#file-upload
111:      *
112:      * @param array $response
113:      */
114:     protected function sendEncodedResponse($response)
115:     {
116:         if ( ! headers_sent()) {
117:             header('Content-Type: text/html; charset=' . get_option('blog_charset'));
118:         }
119: 
120:         echo '<textarea>' . Quform::escape(wp_json_encode($response)) . '</textarea>';
121: 
122:         // Call the die handler instead of exit to facilitate unit tests
123:         call_user_func(apply_filters('wp_die_ajax_handler', '_ajax_wp_die_handler'), '');
124:     }
125: }
126: 
API documentation generated by ApiGen