Exemple #1
0
 private static function fix_leading_and_trailing_spaces()
 {
     global $wpdb;
     $meta_table_name = GFFormsModel::get_meta_table_name();
     $lead_details_table = GFFormsModel::get_lead_details_table_name();
     $lead_details_long_table = GFFormsModel::get_lead_details_long_table_name();
     $result = $wpdb->query("UPDATE {$lead_details_table} SET value = TRIM(value)");
     $result = $wpdb->query("UPDATE {$lead_details_long_table} SET value = TRIM(value)");
     $results = $wpdb->get_results("SELECT form_id, display_meta, confirmations, notifications FROM {$meta_table_name}", ARRAY_A);
     foreach ($results as &$result) {
         $form_id = $result['form_id'];
         $form = GFFormsModel::unserialize($result['display_meta']);
         $form_updated = false;
         $form = GFFormsModel::trim_form_meta_values($form, $form_updated);
         if ($form_updated) {
             GFFormsModel::update_form_meta($form_id, $form);
         }
         $confirmations = GFFormsModel::unserialize($result['confirmations']);
         $confirmations_updated = false;
         $confirmations = GFFormsModel::trim_conditional_logic_values($confirmations, $form, $confirmations_updated);
         if ($confirmations_updated) {
             GFFormsModel::update_form_meta($form_id, $confirmations, 'confirmations');
         }
         $notifications = GFFormsModel::unserialize($result['notifications']);
         $notifications_updated = false;
         $notifications = GFFormsModel::trim_conditional_logic_values($notifications, $form, $notifications_updated);
         if ($notifications_updated) {
             GFFormsModel::update_form_meta($form_id, $notifications, 'notifications');
         }
     }
     return $results;
 }
Exemple #2
0
 public static function import_xml($xmlstr, &$forms = null)
 {
     require_once 'xml.php';
     $options = array('page' => array('unserialize_as_array' => true), 'form' => array('unserialize_as_array' => true), 'field' => array('unserialize_as_array' => true), 'rule' => array('unserialize_as_array' => true), 'choice' => array('unserialize_as_array' => true), 'input' => array('unserialize_as_array' => true), 'routing_item' => array('unserialize_as_array' => true), 'creditCard' => array('unserialize_as_array' => true), 'routin' => array('unserialize_as_array' => true), 'confirmation' => array('unserialize_as_array' => true), 'notification' => array('unserialize_as_array' => true));
     $options = apply_filters('gform_import_form_xml_options', $options);
     $xml = new RGXML($options);
     $forms = $xml->unserialize($xmlstr);
     if (!$forms) {
         return 0;
     } else {
         if (version_compare($forms['version'], self::$min_import_version, '<')) {
             return -1;
         }
     }
     //Error. XML version is not compatible with current Gravity Forms version
     //cleaning up generated object
     self::cleanup($forms);
     foreach ($forms as $key => &$form) {
         $title = $form['title'];
         $count = 2;
         while (!RGFormsModel::is_unique_title($title)) {
             $title = $form['title'] . "({$count})";
             $count++;
         }
         //inserting form
         $form_id = RGFormsModel::insert_form($title);
         //updating form meta
         $form['title'] = $title;
         $form['id'] = $form_id;
         $form = GFFormsModel::trim_form_meta_values($form);
         if (isset($form['confirmations'])) {
             $form['confirmations'] = self::set_property_as_key($form['confirmations'], 'id');
             $form['confirmations'] = GFFormsModel::trim_conditional_logic_values($form['confirmations'], $form);
             GFFormsModel::update_form_meta($form_id, $form['confirmations'], 'confirmations');
             unset($form['confirmations']);
         }
         if (isset($form['notifications'])) {
             $form['notifications'] = self::set_property_as_key($form['notifications'], 'id');
             $form['notifications'] = GFFormsModel::trim_conditional_logic_values($form['notifications'], $form);
             GFFormsModel::update_form_meta($form_id, $form['notifications'], 'notifications');
             unset($form['notifications']);
         }
         RGFormsModel::update_form_meta($form_id, $form);
     }
     return sizeof($forms);
 }
 public static function update_confirmation_active($form_id, $confirmation_id, $is_active)
 {
     $form = GFFormsModel::get_form_meta($form_id);
     if (!isset($form['confirmations'][$confirmation_id])) {
         return new WP_Error('not_found', __('Notification not found', 'gravityforms'));
     }
     $form['confirmations'][$confirmation_id]['isActive'] = (bool) $is_active;
     $result = GFFormsModel::update_form_meta($form_id, $form['confirmations'], 'confirmations');
     return $result;
 }
Exemple #4
0
 public function save_form_settings($form, $settings)
 {
     $form[$this->_slug] = $settings;
     GFFormsModel::update_form_meta($form["id"], $form);
 }
 public function save_form_settings($form, $settings)
 {
     $form[$this->_slug] = $settings;
     $result = GFFormsModel::update_form_meta($form["id"], $form);
     return !(false === $result);
 }
 private static function fix_leading_and_trailing_spaces()
 {
     global $wpdb;
     $meta_table_name = GFFormsModel::get_meta_table_name();
     $lead_details_table = GFFormsModel::get_lead_details_table_name();
     $lead_details_long_table = GFFormsModel::get_lead_details_long_table_name();
     //fast but doesn't allow for the gform_trim_input_value filter
     //$result = $wpdb->query("UPDATE $lead_details_table SET value = TRIM(value)");
     //$result = $wpdb->query("UPDATE $lead_details_long_table SET value = TRIM(value)");
     $results = $wpdb->get_results("SELECT form_id, display_meta FROM {$meta_table_name}", ARRAY_A);
     foreach ($results as &$result) {
         $form_id = $result["form_id"];
         $form = GFFormsModel::unserialize($result["display_meta"]);
         $form_updated = false;
         if (isset($form["fields"]) && is_array($form["fields"])) {
             $fields_to_update = array();
             foreach ($form["fields"] as &$field) {
                 $trim_value = apply_filters("gform_trim_input_value", true, $form_id, $field);
                 if (!$trim_value) {
                     continue;
                 }
                 if (isset($field["label"]) && $field["label"] != trim($field["label"])) {
                     $field["label"] = trim($field["label"]);
                     $form_updated = true;
                 }
                 if (isset($field["choices"]) && is_array($field["choices"])) {
                     foreach ($field["choices"] as &$choice) {
                         if (isset($choice["text"]) && $choice["text"] != trim($choice["text"])) {
                             $choice["text"] = trim($choice["text"]);
                             $form_updated = true;
                         }
                         if (isset($choice["value"]) && $choice["value"] != trim($choice["value"])) {
                             $choice["value"] = trim($choice["value"]);
                             $form_updated = true;
                         }
                     }
                 }
                 if (isset($field["inputs"]) && is_array($field["inputs"])) {
                     foreach ($field["inputs"] as &$input) {
                         if (isset($input["label"]) && $input["label"] != trim($input["label"])) {
                             $input["label"] = trim($input["label"]);
                             $form_updated = true;
                         }
                     }
                 }
                 $field_id = (int) $field["id"];
                 $field_number_min = $field_id - 0.001;
                 $field_number_max = $field_id + 0.999;
                 $fields_to_update[] = sprintf("field_number BETWEEN %s AND %s", $field_number_min, $field_number_max);
             }
             if (!empty($fields_to_update)) {
                 $fields_to_update_str = join(" OR ", $fields_to_update);
                 //slow - may cause timeouts on sites with high volume of entries
                 $result = $wpdb->query("UPDATE {$lead_details_table} SET value = TRIM(value) WHERE form_id = {$form_id} AND ({$fields_to_update_str})");
                 $result = $wpdb->query("UPDATE {$lead_details_long_table} SET value = TRIM(value) WHERE lead_detail_id IN (SELECT id FROM {$lead_details_table} WHERE form_id = {$form_id} AND ({$fields_to_update_str}))");
             }
         }
         if ($form_updated) {
             GFFormsModel::update_form_meta($form_id, $form);
         }
     }
     return $results;
 }
 /**
  * Upgrade settings and convert them into a feed
  *
  * @since 1.6.0
  * @param array $form GF Form object Array
  */
 public function upgrade_settings_to_feed($form)
 {
     if (isset($form['gravity-forms-event-tracking']) && ($previous_settings = $form['gravity-forms-event-tracking'])) {
         $field_names = array('gaEventCategory', 'gaEventAction', 'gaEventLabel', 'gaEventValue');
         $previous_was_setup = false;
         $previous_was_enabled = isset($previous_settings['gaEventTrackingDisabled']) ? !$previous_settings['gaEventTrackingDisabled'] : true;
         $settings = array();
         foreach ($field_names as $field_name) {
             if (isset($previous_settings[$field_name]) && $previous_settings[$field_name]) {
                 $settings[$field_name] = $previous_settings[$field_name];
                 $previous_was_setup = true;
             }
             unset($form['gravity-forms-event-tracking']);
             GFFormsModel::update_form_meta($form['id'], $form);
         }
         if (!$previous_was_setup && !$previous_was_enabled) {
             return;
         }
         $settings['feedName'] = __('Event Tracking Feed', $this->_text_domain);
         $feed_id = $this->save_feed_settings(0, $form['id'], $settings);
         if (!$previous_was_enabled) {
             $this->update_feed_active($feed_id, false);
         }
     } else {
         return;
     }
 }
 public static function update_confirmation_active($form_id, $confirmation_id, $is_active)
 {
     $form = GFFormsModel::get_form_meta($form_id);
     if (!isset($form["confirmations"][$confirmation_id])) {
         return new WP_Error("not_found", __("Notification not found", "gravityforms"));
     }
     $form["confirmations"][$confirmation_id]["isActive"] = (bool) $is_active;
     $result = GFFormsModel::update_form_meta($form_id, $form["confirmations"], "confirmations");
     return $result;
 }
Exemple #9
0
 /**
  * Adds a new form using the given Form object. Warning, little checking is done to make sure it's a valid Form object.
  *
  * @since  1.8
  * @access public
  * @static
  *
  * @param array $form_meta The Form object
  *
  * @return mixed Either the new Form ID or a WP_Error instance
  */
 public static function add_form($form_meta)
 {
     global $wpdb;
     if (!$form_meta || !is_array($form_meta)) {
         return new WP_Error("invalid", __("Invalid form object", "gravityforms"));
     }
     if (rgar($form_meta, "title") == "") {
         return new WP_Error("missing_title", __("The form title is missing", "gravityforms"));
     }
     //Making sure title is not duplicate
     $title = $form_meta["title"];
     $count = 2;
     while (!RGFormsModel::is_unique_title($title)) {
         $title = $form_meta["title"] . "({$count})";
         $count++;
     }
     //inserting form
     $form_id = RGFormsModel::insert_form($title);
     //updating form meta
     $form_meta["title"] = $title;
     //updating object's id property
     $form_meta["id"] = $form_id;
     if (isset($form_meta['confirmations'])) {
         $form_meta['confirmations'] = self::set_property_as_key($form_meta['confirmations'], 'id');
         GFFormsModel::update_form_meta($form_id, $form_meta['confirmations'], 'confirmations');
         unset($form_meta['confirmations']);
     }
     if (isset($form_meta['notifications'])) {
         $form_meta['notifications'] = self::set_property_as_key($form_meta['notifications'], 'id');
         GFFormsModel::update_form_meta($form_id, $form_meta['notifications'], 'notifications');
         unset($form_meta['notifications']);
     }
     //updating form meta
     $result = GFFormsModel::update_form_meta($form_id, $form_meta);
     if (false === $result) {
         return new WP_Error("insert_form_error", __("There was a problem while inserting the form", "gravityforms"), $wpdb->last_error);
     }
     return $form_id;
 }
Exemple #10
0
 public static function import_file($filepath, &$forms = null)
 {
     $xmlstr = file_get_contents($filepath);
     require_once "xml.php";
     $options = array("page" => array("unserialize_as_array" => true), "form" => array("unserialize_as_array" => true), "field" => array("unserialize_as_array" => true), "rule" => array("unserialize_as_array" => true), "choice" => array("unserialize_as_array" => true), "input" => array("unserialize_as_array" => true), "routing_item" => array("unserialize_as_array" => true), "creditCard" => array("unserialize_as_array" => true), "routin" => array("unserialize_as_array" => true), "confirmation" => array("unserialize_as_array" => true), "notification" => array("unserialize_as_array" => true));
     $options = apply_filters('gform_import_form_xml_options', $options);
     $xml = new RGXML($options);
     $forms = $xml->unserialize($xmlstr);
     if (!$forms) {
         return 0;
     } else {
         if (version_compare($forms["version"], self::$min_import_version, "<")) {
             return -1;
         }
     }
     //Error. XML version is not compatible with current Gravity Forms version
     //cleaning up generated object
     self::cleanup($forms);
     foreach ($forms as $key => &$form) {
         $title = $form["title"];
         $count = 2;
         while (!RGFormsModel::is_unique_title($title)) {
             $title = $form["title"] . "({$count})";
             $count++;
         }
         //inserting form
         $form_id = RGFormsModel::insert_form($title);
         //updating form meta
         $form["title"] = $title;
         $form["id"] = $form_id;
         if (isset($form['confirmations'])) {
             $form['confirmations'] = self::set_property_as_key($form['confirmations'], 'id');
             GFFormsModel::update_form_meta($form_id, $form['confirmations'], 'confirmations');
             unset($form['confirmations']);
         }
         if (isset($form['notifications'])) {
             $form['notifications'] = self::set_property_as_key($form['notifications'], 'id');
             GFFormsModel::update_form_meta($form_id, $form['notifications'], 'notifications');
             unset($form['notifications']);
         }
         RGFormsModel::update_form_meta($form_id, $form);
     }
     return sizeof($forms);
 }
 /**
  * Migrates the polls related form settings to the new structure.
  *
  * @param array $form The form object currently being processed.
  */
 private function upgrade_form_settings($form)
 {
     if (false === isset($form['gpollDisplayResults'])) {
         return;
     }
     $legacy_form_settings = array('gpollDisplayResults' => 'displayResults', 'gpollShowResultsLink' => 'showResultsLink', 'gpollShowPercentages' => 'showPercentages', 'gpollShowCounts' => 'showCounts', 'gpollBlockRepeatVoters' => 'blockRepeatVoters', 'gpollStyle' => 'style', 'gpollCookie' => 'cookie');
     $new_settings = array();
     foreach ($legacy_form_settings as $legacy_key => $new_key) {
         if (isset($form[$legacy_key])) {
             $new_settings[$new_key] = $form[$legacy_key];
             unset($form[$legacy_key]);
         }
     }
     if (false === empty($new_settings)) {
         $form[$this->_slug] = $new_settings;
         GFFormsModel::update_form_meta($form['id'], $form);
     }
 }
 /**
  * Migrates the quiz related form settings to the new structure.
  *
  * @param array $form The form object currently being processed.
  */
 private function upgrade_form_settings($form)
 {
     if (false === isset($form['gquizGrading'])) {
         return;
     }
     $legacy_form_settings = array('gquizGrading' => 'grading', 'gquizPassMark' => 'passPercent', 'gquizConfirmationFail' => 'failConfirmationMessage', 'gquizConfirmationPass' => 'passConfirmationMessage', 'gquizConfirmationLetter' => 'letterConfirmationMessage', 'gquizGrades' => 'grades', 'gquizConfirmationPassAutoformatDisabled' => 'passConfirmationDisableAutoformat', 'gquizConfirmationFailAutoformatDisabled' => 'failConfirmationDisableAutoformat', 'gquizConfirmationLetterAutoformatDisabled' => 'letterConfirmationDisableAutoformat', 'gquizInstantFeedback' => 'instantFeedback', 'gquizShuffleFields' => 'shuffleFields', 'gquizDisplayConfirmationPassFail' => 'passfailDisplayConfirmation', 'gquizDisplayConfirmationLetter' => 'letterDisplayConfirmation');
     $new_settings = array();
     foreach ($legacy_form_settings as $legacy_key => $new_key) {
         if (isset($form[$legacy_key])) {
             $new_settings[$new_key] = $legacy_key == 'gquizGrades' ? json_encode($form[$legacy_key]) : $form[$legacy_key];
             unset($form[$legacy_key]);
         }
     }
     if (false === empty($new_settings)) {
         $form[$this->_slug] = $new_settings;
         GFFormsModel::update_form_meta($form['id'], $form);
     }
 }
 private function upgrade_form_settings($form)
 {
     if (false === isset($form["gpollDisplayResults"])) {
         return;
     }
     $legacy_form_settings = array("gpollDisplayResults" => "displayResults", "gpollShowResultsLink" => "showResultsLink", "gpollShowPercentages" => "showPercentages", "gpollShowCounts" => "showCounts", "gpollBlockRepeatVoters" => "blockRepeatVoters", "gpollStyle" => "style", "gpollCookie" => "cookie");
     $new_settings = array();
     foreach ($legacy_form_settings as $legacy_key => $new_key) {
         if (isset($form[$legacy_key])) {
             $new_settings[$new_key] = $form[$legacy_key];
             unset($form[$legacy_key]);
         }
     }
     if (false === empty($new_settings)) {
         $form[$this->_slug] = $new_settings;
         GFFormsModel::update_form_meta($form["id"], $form);
     }
 }
Exemple #14
0
 public static function generateForm()
 {
     if (class_exists('GFAPI')) {
         $thankyouPage = get_page_by_path('events/thank-you', OBJECT, 'page');
         $form = array('labelPlacement' => 'top_label', 'useCurrentUserAsAuthor' => '1', 'title' => self::$formTitle, 'descriptionPlacement' => 'below', 'button' => array('type' => 'text', 'text' => 'Submit'), 'fields' => array(array('id' => '1', 'isRequired' => '1', 'size' => 'medium', 'type' => 'name', 'nameFormat' => 'simple', 'label' => 'First Name'), array('id' => '2', 'isRequired' => '1', 'size' => 'medium', 'type' => 'name', 'nameFormat' => 'simple', 'label' => 'Last Name'), array('id' => '3', 'isRequired' => '1', 'size' => 'medium', 'type' => 'email', 'label' => 'Email'), array('id' => '4', 'isRequired' => '1', 'size' => 'medium', 'type' => 'phone', 'phoneFormat' => 'standard', 'label' => 'Phone'), array('id' => '5', 'isRequired' => '1', 'size' => 'medium', 'type' => 'select', 'label' => 'Number Attending', 'choices' => array(array('text' => '1', 'value' => '1'), array('text' => '2', 'value' => '2'), array('text' => '3', 'value' => '3'), array('text' => '4', 'value' => '4'), array('text' => '5', 'value' => '5'), array('text' => '6', 'value' => '6'), array('text' => '7', 'value' => '7'), array('text' => '8', 'value' => '8'))), array('id' => '6', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{embed_post:post_title}', 'label' => 'Event Name'), array('id' => '7', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{embed_post:ID}', 'label' => 'Event Post ID'), array('id' => '8', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{custom_field:_EventStartDate}', 'label' => 'Event Start Date'), array('id' => '9', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{custom_field:_EventEndDate}', 'label' => 'Event End Date'), array('id' => '10', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{custom_field:_EventRecurrence}', 'label' => 'Event Recurrence'), array('id' => '11', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '{custom_field:_EventAllDay}', 'label' => 'All Day Event'), array('id' => '90', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '', 'label' => 'Event Formatted Date'), array('id' => '91', 'size' => 'medium', 'type' => 'hidden', 'defaultValue' => '', 'label' => 'Event Formatted Time')), 'cssClass' => 'contact-form-gfec-form', 'enableHoneypot' => '1', 'confirmations' => array(array('id' => '5316355c6c8c1', 'isDefault' => '1', 'type' => 'page', 'name' => 'Default Confirmation', 'pageId' => $thankyouPage->ID, 'queryString' => 'eventID={post_id:7}')), 'notifications' => array(array('id' => '53163750d13d3', 'to' => '3', 'name' => 'RSVP', 'event' => 'form_submission', 'toType' => 'field', 'subject' => 'Thank You for Registering for (Event Name:5} - {Event Date:6}', 'message' => '{all_fields}', 'from' => '{admin_email}', 'fromName' => get_bloginfo('name'))));
         if (RGFormsModel::is_unique_title($form['title'])) {
             $form_id = RGFormsModel::insert_form($form['title']);
             $form["id"] = $form_id;
             GFFormsModel::trim_form_meta_values($form);
             if (isset($form['confirmations'])) {
                 $form['confirmations'] = GFExport::set_property_as_key($form['confirmations'], 'id');
                 $form['confirmations'] = GFFormsModel::trim_conditional_logic_values($form['confirmations'], $form);
                 GFFormsModel::update_form_meta($form_id, $form['confirmations'], 'confirmations');
                 unset($form['confirmations']);
             }
             if (isset($form['notifications'])) {
                 $form['notifications'] = GFExport::set_property_as_key($form['notifications'], 'id');
                 $form['notifications'] = GFFormsModel::trim_conditional_logic_values($form['notifications'], $form);
                 GFFormsModel::update_form_meta($form_id, $form['notifications'], 'notifications');
                 unset($form['notifications']);
             }
             RGFormsModel::update_form_meta($form_id, $form);
         }
     }
 }