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_Processor extends Quform_Form_Processor
  7: {
  8:     /**
  9:      * Process the given form
 10:      *
 11:      * @param   Quform_Form  $form  The form to process
 12:      * @return  array               The result array
 13:      */
 14:     public function process(Quform_Form $form)
 15:     {
 16:         // Strip slashes from the submitted data (WP adds them automatically)
 17:         $_POST = wp_unslash($_POST);
 18: 
 19:         // Pre-process hooks
 20:         $result = apply_filters('quform_entry_pre_process', array(), $form);
 21:         $result = apply_filters('quform_entry_pre_process_' . $form->getId(), $result, $form);
 22: 
 23:         if (is_array($result) && ! empty($result)) {
 24:             return $result;
 25:         }
 26: 
 27:         $this->uploader->mergeSessionFiles($form);
 28: 
 29:         $form->setValues($_POST, true);
 30: 
 31:         $result = apply_filters('quform_entry_post_set_form_values', array(), $form);
 32:         $result = apply_filters('quform_entry_post_set_form_values_' . $form->getId(), $result, $form);
 33: 
 34:         if (is_array($result) && ! empty($result)) {
 35:             return $result;
 36:         }
 37: 
 38:         // Calculate which elements are hidden by conditional logic and which groups are empty
 39:         $form->calculateElementVisibility();
 40: 
 41:         $result = apply_filters('quform_entry_pre_validate', array(), $form);
 42:         $result = apply_filters('quform_entry_pre_validate_' . $form->getId(), $result, $form);
 43: 
 44:         if (is_array($result) && ! empty($result)) {
 45:             return $result;
 46:         }
 47: 
 48:         list($valid) = $form->isValid();
 49: 
 50:         if ($valid) {
 51:             // Post-validate action hooks
 52:             $result = apply_filters('quform_entry_post_validate', array(), $form);
 53:             $result = apply_filters('quform_entry_post_validate_' . $form->getId(), $result, $form);
 54: 
 55:             if (is_array($result) && ! empty($result)) {
 56:                 return $result;
 57:             }
 58: 
 59:             // Save the entry
 60:             $entryId = $this->saveEntry($form);
 61:             $form->setEntryId($entryId);
 62: 
 63:             $result = apply_filters('quform_entry_post_set_entry_id', array(), $form);
 64:             $result = apply_filters('quform_entry_post_set_entry_id_' . $form->getId(), $result, $form);
 65: 
 66:             if (is_array($result) && ! empty($result)) {
 67:                 return $result;
 68:             }
 69: 
 70:             // Process any uploads
 71:             $this->uploader->process($form);
 72: 
 73:             // Save the entry data
 74:             $this->saveEntryData($entryId, $form);
 75: 
 76:             // Post-process hooks
 77:             $result = apply_filters('quform_entry_post_process', array(), $form);
 78:             $result = apply_filters('quform_entry_post_process_' . $form->getId(), $result, $form);
 79: 
 80:             if (is_array($result) && ! empty($result)) {
 81:                 return $result;
 82:             }
 83: 
 84:             return array(
 85:                 'type' => 'success',
 86:                 'data' => array('id' => $entryId),
 87:                 'message' => __('Entry saved', 'quform')
 88:             );
 89:         }
 90: 
 91:         return array(
 92:             'type' => 'error',
 93:             'errors' => $form->getErrors()
 94:         );
 95:     }
 96: 
 97:     /**
 98:      * Save the entry and return the entry ID
 99:      *
100:      * @param   Quform_Form  $form
101:      * @return  int
102:      */
103:     protected function saveEntry(Quform_Form $form)
104:     {
105:         $currentTime = Quform::date('Y-m-d H:i:s', null, new DateTimeZone('UTC'));
106: 
107:         if ($createdAt = Quform::get($_POST, 'entry_created_at')) {
108:             try {
109:                 $createdAt = Quform::date(
110:                     'Y-m-d H:i:s',
111:                     new DateTime($createdAt, new DateTimeZone('UTC')),
112:                     new DateTimeZone('UTC')
113:                 );
114: 
115:                 if ($createdAt === false) {
116:                     $createdAt = $currentTime;
117:                 }
118:             } catch (Exception $e) {
119:                 $createdAt = $currentTime;
120:             }
121:         } else {
122:             $createdAt = $currentTime;
123:         }
124: 
125:         $entry = array(
126:             'form_id'       => $form->getId(),
127:             'ip'            => Quform::substr(Quform::get($_POST, 'entry_ip'), 0, 45),
128:             'form_url'      => Quform::substr(Quform::get($_POST, 'entry_form_url'), 0, 512),
129:             'referring_url' => Quform::substr(Quform::get($_POST, 'entry_referring_url'), 0, 512),
130:             'post_id'       => is_numeric($postId = Quform::get($_POST, 'entry_post_id')) && $postId > 0 ? (int) $postId : null,
131:             'created_by'    => is_numeric($createdBy = Quform::get($_POST, 'entry_created_by')) && $createdBy > 0 ? (int) $createdBy : null,
132:             'created_at'    => $createdAt,
133:             'updated_at'    => $currentTime
134:         );
135: 
136:         $entry = $this->repository->saveEntry($entry, $form->getEntryId());
137: 
138:         return $entry['id'];
139:     }
140: 
141:     /**
142:      * Save the entry data
143:      *
144:      * @param  int          $entryId
145:      * @param  Quform_Form  $form
146:      */
147:     protected function saveEntryData($entryId, Quform_Form $form)
148:     {
149:         if ( ! ($entryId > 0)) {
150:             return;
151:         }
152: 
153:         $data = array();
154: 
155:         foreach ($form->getRecursiveIterator() as $element) {
156:             if ($element instanceof Quform_Element_Editable && $element->config('saveToDatabase')) {
157:                 $data[$element->getId()] = $element->getValueForStorage();
158:             }
159:         }
160: 
161:         if (count($data)) {
162:             $this->repository->saveEntryData($entryId, $data);
163:         }
164:     }
165: }
166: 
API documentation generated by ApiGen