upgrade-functions.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. if( ! function_exists( 'nf_is_func_disabled' ) ) {
  3. function nf_is_func_disabled($function)
  4. {
  5. $disabled = explode(',', ini_get('disable_functions'));
  6. return in_array($function, $disabled);
  7. }
  8. }
  9. /**
  10. * Upgrade Functions
  11. *
  12. * @package Ninja Forms
  13. * @subpackage Admin/Upgrades
  14. * @copyright Copyright (c) 2014, WP Ninjas
  15. * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
  16. * @since 2.7
  17. */
  18. // Exit if accessed directly
  19. if ( ! defined( 'ABSPATH' ) ) exit;
  20. /**
  21. * DEPRECATED - Display Upgrade Notices
  22. *
  23. * @since 2.7
  24. * @return void
  25. */
  26. function nf_show_upgrade_notices() {
  27. // Convert notifications
  28. if ( isset ( $_GET['page'] ) && $_GET['page'] == 'nf-processing' )
  29. return; // Don't show notices on the processing page.
  30. $n_conversion_complete = get_option( 'nf_convert_notifications_complete', false );
  31. if ( ! $n_conversion_complete ) {
  32. printf(
  33. '<div class="update-nag"><p>' . __( 'Ninja Forms needs to upgrade your form notifications, click %shere%s to start the upgrade.', 'ninja-forms' ) . '</p></div>',
  34. '<a href="' . admin_url( 'index.php?page=nf-processing&action=convert_notifications' ) . '">', '</a>'
  35. );
  36. }
  37. $update_email_settings_complete = get_option( 'nf_update_email_settings_complete', false );
  38. if ( $n_conversion_complete && ! $update_email_settings_complete ) {
  39. printf(
  40. '<div class="update-nag"><p>' . __( 'Ninja Forms needs to update your email settings, click %shere%s to start the upgrade.', 'ninja-forms' ) . '</p></div>',
  41. '<a href="' . admin_url( 'index.php?page=nf-processing&action=update_email_settings' ) . '">', '</a>'
  42. );
  43. }
  44. if ( isset( $_GET['page'] ) && $_GET['page'] == 'nf-upgrades' )
  45. return; // Don't show notices on the upgrades page
  46. $step = get_option( 'nf_convert_subs_step' );
  47. if ( $step != 'complete' ) {
  48. if ( empty( $step ) ) {
  49. $step = 1;
  50. }
  51. printf(
  52. '<div class="update-nag"><p>' . __( 'Ninja Forms needs to upgrade the submissions table, click %shere%s to start the upgrade.', 'ninja-forms' ) . '</p></div>',
  53. '<a href="' . admin_url( 'index.php?page=nf-upgrades&nf-upgrade=upgrade_subs_to_cpt&step=' . $step ) . '">', '</a>'
  54. );
  55. }
  56. $upgrade_notice = get_option( 'nf_upgrade_notice' );
  57. if ( $upgrade_notice != 'closed' ) {
  58. printf(
  59. '<div class="update-nag"><p>' . __( 'Thank you for updating to version 2.7 of Ninja Forms. Please update any Ninja Forms extensions from ', 'ninja-forms' ) . '<a href="http://ninjaforms.com/your-account/purchases/"</a>ninjaforms.com</a>. <a href="%s">Dismiss this notice</a></p></div>',
  60. esc_url( add_query_arg( array( 'nf_action' => 'dismiss_upgrade_notice' ) ) )
  61. );
  62. }
  63. if ( defined( 'NINJA_FORMS_UPLOADS_VERSION' ) && version_compare( NINJA_FORMS_UPLOADS_VERSION, '1.3.5' ) == -1 ) {
  64. echo '<div class="error"><p>' . __( 'Your version of the Ninja Forms File Upload extension isn\'t compatible with version 2.7 of Ninja Forms. It needs to be at least version 1.3.5. Please update this extension at ', 'ninja-forms' ) . '<a href="http://ninjaforms.com/your-account/purchases/"</a>ninjaforms.com</a></p></div>';
  65. }
  66. if ( defined( 'NINJA_FORMS_SAVE_PROGRESS_VERSION' ) && version_compare( NINJA_FORMS_SAVE_PROGRESS_VERSION, '1.1.3' ) == -1 ) {
  67. echo '<div class="error"><p>' . __( 'Your version of the Ninja Forms Save Progress extension isn\'t compatible with version 2.7 of Ninja Forms. It needs to be at least version 1.1.3. Please update this extension at ', 'ninja-forms' ) . '<a href="http://ninjaforms.com/your-account/purchases/"</a>ninjaforms.com</a></p></div>';
  68. }
  69. $forms_conversion_complete = get_option( 'nf_convert_forms_complete', false );
  70. if ( ! $forms_conversion_complete ) {
  71. $title = urlencode( __( 'Updating Form Database', 'ninja-forms' ) );
  72. printf(
  73. '<div class="update-nag">' . __( 'Ninja Forms needs to upgrade your form settings, click %shere%s to start the upgrade.', 'ninja-forms' ) . '</div>',
  74. '<a href="' . admin_url( 'index.php?page=nf-processing&action=convert_forms&title=' . $title ) . '">', '</a>'
  75. );
  76. }
  77. }
  78. //add_action( 'admin_notices', 'nf_show_upgrade_notices' );
  79. /**
  80. * Triggers all upgrade functions
  81. *
  82. * This function is usually triggered via AJAX
  83. *
  84. * @since 2.7
  85. * @return void
  86. */
  87. function nf_trigger_upgrades() {
  88. if ( DOING_AJAX )
  89. die( 'complete' ); // Let AJAX know that the upgrade is complete
  90. }
  91. add_action( 'wp_ajax_edd_trigger_upgrades', 'nf_trigger_upgrades' );
  92. /**
  93. * Upgrades for Ninja Forms v2.7 and Submission Custom Post Type.
  94. *
  95. * @since 2.7
  96. * @return void
  97. */
  98. function nf_v27_upgrade_subs_to_cpt() {
  99. //Bail if we aren't in the admin.
  100. if ( ! is_admin() )
  101. return false;
  102. // Bail if we don't have the appropriate permissions.
  103. if ( is_multisite() ) {
  104. if ( ! is_super_admin() )
  105. return false;
  106. } else {
  107. if ( ! current_user_can( 'install_plugins' ) )
  108. return false;
  109. }
  110. if ( function_exists( 'ignore_user_abort' ) && ! nf_is_func_disabled( 'ignore_user_abort' ) ) {
  111. ignore_user_abort( true );
  112. }
  113. $step = isset( $_GET['step'] ) ? absint( $_GET['step'] ) : 1;
  114. $total = isset( $_GET['total'] ) ? absint( $_GET['total'] ) : false;
  115. $number = isset( $_GET['custom'] ) ? absint( $_GET['custom'] ) : 1;
  116. if ( get_option( 'nf_convert_subs_num' ) ) {
  117. $number = get_option( 'nf_convert_subs_num' );
  118. }
  119. $form_id = isset( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
  120. update_option( 'nf_convert_subs_step', $step );
  121. $convert_subs = new NF_Convert_Subs();
  122. $old_sub_count = $convert_subs->count_old_subs();
  123. if( empty( $total ) || $total <= 1 ) {
  124. $total = round( ( $old_sub_count / 100 ), 0 ) + 2;
  125. }
  126. if ( $step <= $total ) {
  127. if ( $step == 1 ) {
  128. $begin = 0;
  129. } else {
  130. $begin = ( $step - 1 ) * 100;
  131. }
  132. $subs_results = $convert_subs->get_old_subs( $begin, 100 );
  133. if ( is_array( $subs_results ) && ! empty( $subs_results ) ) {
  134. foreach ( $subs_results as $sub ) {
  135. if ( $form_id != $sub['form_id'] ) {
  136. $form_id = $sub['form_id'];
  137. $number = 1;
  138. }
  139. $converted = get_option( 'nf_converted_subs' );
  140. if ( empty( $converted ) )
  141. $converted = array();
  142. if ( ! in_array( $sub['id'], $converted ) ) {
  143. $convert_subs->convert( $sub, $number );
  144. $converted[] = $sub['id'];
  145. update_option( 'nf_converted_subs', $converted );
  146. $number++;
  147. update_option( 'nf_convert_subs_num', $number );
  148. }
  149. }
  150. }
  151. $step++;
  152. $redirect = add_query_arg( array(
  153. 'page' => 'nf-upgrades',
  154. 'nf-upgrade' => 'upgrade_subs_to_cpt',
  155. 'step' => $step,
  156. 'custom' => $number,
  157. 'total' => $total,
  158. 'form_id' => $form_id
  159. ), admin_url( 'index.php' ) );
  160. wp_redirect( $redirect ); exit;
  161. } else {
  162. update_option( 'nf_convert_subs_step', 'complete' );
  163. delete_option( 'nf_convert_subs_num' );
  164. wp_redirect( admin_url( 'index.php?page=nf-about' ) ); exit;
  165. }
  166. }
  167. add_action( 'nf_upgrade_subs_to_cpt', 'nf_v27_upgrade_subs_to_cpt' );
  168. /**
  169. * Keep our upgrade notice closed.
  170. *
  171. * @since 2.7
  172. * @return void
  173. */
  174. function nf_dismiss_upgrade_notice() {
  175. update_option( 'nf_upgrade_notice', 'closed' );
  176. wp_redirect( esc_url_raw( remove_query_arg( 'nf_action' ) ) );
  177. exit;
  178. }
  179. add_action( 'nf_dismiss_upgrade_notice', 'nf_dismiss_upgrade_notice' );
  180. /**
  181. * Clearing out the old email favourite field and replacing it with the new version.
  182. *
  183. * @since 2.8.4
  184. * @return void
  185. */
  186. function nf_clear_old_favs() {
  187. global $wpdb;
  188. $email_fav_updated = get_option( 'nf_email_fav_updated', false );
  189. if ( $email_fav_updated )
  190. return false;
  191. nf_change_email_fav();
  192. nf_remove_old_email_settings();
  193. nf_change_state_dropdown_fav();
  194. update_option( 'nf_email_fav_updated', true );
  195. }
  196. add_action( 'admin_init', 'nf_clear_old_favs' );
  197. /**
  198. * Remove old email "send to" settings from form fiels.
  199. *
  200. * @since 2.8.4
  201. * @return void
  202. */
  203. function nf_remove_old_email_settings( $form_id = '' ) {
  204. if ( '' == $form_id ) {
  205. $forms = ninja_forms_get_all_forms( true );
  206. if ( is_array( $forms ) ) {
  207. foreach ( $forms as $form ) {
  208. nf_remove_old_email_send_to( $form['id'] );
  209. }
  210. }
  211. } else {
  212. nf_remove_old_email_send_to( $form_id );
  213. }
  214. }
  215. /**
  216. * Removes old email settings form a single form.
  217. *
  218. * @since 2.8.4
  219. * @return void
  220. */
  221. function nf_remove_old_email_send_to( $form_id ) {
  222. if ( empty ( $form_id ) )
  223. return false;
  224. // Remove any "Admin mailto" settings we might have.
  225. $form_row = ninja_forms_get_form_by_id( $form_id );
  226. if ( isset ( $form_row['data']['admin_mailto'] ) ) {
  227. unset ( $form_row['data']['admin_mailto'] );
  228. $args = array(
  229. 'update_array' => array(
  230. 'data' => serialize( $form_row['data'] ),
  231. ),
  232. 'where' => array(
  233. 'id' => $form_id,
  234. ),
  235. );
  236. ninja_forms_update_form( $args );
  237. }
  238. // Update any old email settings we have.
  239. $fields = Ninja_Forms()->form( $form_id )->fields;
  240. // Create a notification for our user email
  241. if ( ! empty ( $fields ) ) {
  242. foreach ( $fields as $field_id => $field ) {
  243. if ( isset ( $field['data']['send_email'] ) && $field['data']['send_email'] == 1 ) {
  244. // Add this field to our $addresses variable.
  245. unset( $field['data']['send_email'] );
  246. unset( $field['data']['replyto_email'] );
  247. unset( $field['data']['from_name'] );
  248. $args = array(
  249. 'update_array' => array(
  250. 'data' => serialize( $field['data'] ),
  251. ),
  252. 'where' => array(
  253. 'id' => $field_id,
  254. ),
  255. );
  256. ninja_forms_update_field( $args );
  257. }
  258. }
  259. }
  260. }
  261. /**
  262. * Remove the old copy of our email defined field and replace it.
  263. *
  264. * @since 2.8.4
  265. * @return void
  266. */
  267. function nf_change_email_fav() {
  268. global $wpdb;
  269. $email_address = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM ".NINJA_FORMS_FAV_FIELDS_TABLE_NAME." WHERE name = %s AND row_type = 0", 'Email' ), ARRAY_A );
  270. $sql = 'DELETE FROM `' . NINJA_FORMS_FAV_FIELDS_TABLE_NAME . '` WHERE name = "Email Address"';
  271. $wpdb->query( $sql );
  272. $sql = 'DELETE FROM `' . NINJA_FORMS_FAV_FIELDS_TABLE_NAME . '` WHERE name = "Email"';
  273. $wpdb->query( $sql );
  274. if ( isset ( $email_address['id'] ) && ! empty ( $email_address['id'] ) ) {
  275. $sql = 'INSERT INTO `'.NINJA_FORMS_FAV_FIELDS_TABLE_NAME.'` (`id`, `row_type`, `type`, `order`, `data`, `name`) VALUES
  276. (' . $email_address['id'] . ', 0, \'_text\', 0, \'a:25:{s:5:"label";s:5:"Email";s:9:"label_pos";s:5:"above";s:13:"default_value";s:0:"";s:4:"mask";s:0:"";s:10:"datepicker";s:1:"0";s:5:"email";s:1:"1";s:10:"send_email";s:1:"0";s:10:"from_email";s:1:"0";s:10:"first_name";s:1:"0";s:9:"last_name";s:1:"0";s:9:"from_name";s:1:"0";s:14:"user_address_1";s:1:"0";s:14:"user_address_2";s:1:"0";s:9:"user_city";s:1:"0";s:8:"user_zip";s:1:"0";s:10:"user_phone";s:1:"0";s:10:"user_email";s:1:"1";s:21:"user_info_field_group";s:1:"1";s:3:"req";s:1:"0";s:5:"class";s:0:"";s:9:"show_help";s:1:"0";s:9:"help_text";s:0:"";s:17:"calc_auto_include";s:1:"0";s:11:"calc_option";s:1:"0";s:11:"conditional";s:0:"";}\', \'Email\')';
  277. $wpdb->query($sql);
  278. }
  279. }
  280. /**
  281. * Fix a serialized array error with the state dropdown favourite field
  282. *
  283. * @since 2.8.4
  284. * @return void
  285. */
  286. function nf_change_state_dropdown_fav() {
  287. global $wpdb;
  288. $state_dropdown = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM ".NINJA_FORMS_FAV_FIELDS_TABLE_NAME." WHERE name = %s AND row_type = 0", 'State Dropdown' ), ARRAY_A );
  289. $sql = 'DELETE FROM `' . NINJA_FORMS_FAV_FIELDS_TABLE_NAME . '` WHERE name = "State Dropdown"';
  290. $wpdb->query( $sql );
  291. $sql = 'INSERT INTO `'.NINJA_FORMS_FAV_FIELDS_TABLE_NAME.'` (`id`, `row_type`, `type`, `order`, `data`, `name`) VALUES
  292. (' . $state_dropdown['id'] . ', 0, \'_list\', 0, \'a:10:{s:5:\"label\";s:14:\"State Dropdown\";s:9:\"label_pos\";s:4:\"left\";s:9:\"list_type\";s:8:\"dropdown\";s:10:\"multi_size\";s:1:\"5\";s:15:\"list_show_value\";s:1:\"1\";s:4:\"list\";a:1:{s:7:\"options\";a:51:{i:0;a:3:{s:5:\"label\";s:7:\"Alabama\";s:5:\"value\";s:2:\"AL\";s:8:\"selected\";s:1:\"0\";}i:1;a:3:{s:5:\"label\";s:6:\"Alaska\";s:5:\"value\";s:2:\"AK\";s:8:\"selected\";s:1:\"0\";}i:2;a:3:{s:5:\"label\";s:7:\"Arizona\";s:5:\"value\";s:2:\"AZ\";s:8:\"selected\";s:1:\"0\";}i:3;a:3:{s:5:\"label\";s:8:\"Arkansas\";s:5:\"value\";s:2:\"AR\";s:8:\"selected\";s:1:\"0\";}i:4;a:3:{s:5:\"label\";s:10:\"California\";s:5:\"value\";s:2:\"CA\";s:8:\"selected\";s:1:\"0\";}i:5;a:3:{s:5:\"label\";s:8:\"Colorado\";s:5:\"value\";s:2:\"CO\";s:8:\"selected\";s:1:\"0\";}i:6;a:3:{s:5:\"label\";s:11:\"Connecticut\";s:5:\"value\";s:2:\"CT\";s:8:\"selected\";s:1:\"0\";}i:7;a:3:{s:5:\"label\";s:8:\"Delaware\";s:5:\"value\";s:2:\"DE\";s:8:\"selected\";s:1:\"0\";}i:8;a:3:{s:5:\"label\";s:20:\"District of Columbia\";s:5:\"value\";s:2:\"DC\";s:8:\"selected\";s:1:\"0\";}i:9;a:3:{s:5:\"label\";s:7:\"Florida\";s:5:\"value\";s:2:\"FL\";s:8:\"selected\";s:1:\"0\";}i:10;a:3:{s:5:\"label\";s:7:\"Georgia\";s:5:\"value\";s:2:\"GA\";s:8:\"selected\";s:1:\"0\";}i:11;a:3:{s:5:\"label\";s:6:\"Hawaii\";s:5:\"value\";s:2:\"HI\";s:8:\"selected\";s:1:\"0\";}i:12;a:3:{s:5:\"label\";s:5:\"Idaho\";s:5:\"value\";s:2:\"ID\";s:8:\"selected\";s:1:\"0\";}i:13;a:3:{s:5:\"label\";s:8:\"Illinois\";s:5:\"value\";s:2:\"IL\";s:8:\"selected\";s:1:\"0\";}i:14;a:3:{s:5:\"label\";s:7:\"Indiana\";s:5:\"value\";s:2:\"IN\";s:8:\"selected\";s:1:\"0\";}i:15;a:3:{s:5:\"label\";s:4:\"Iowa\";s:5:\"value\";s:2:\"IA\";s:8:\"selected\";s:1:\"0\";}i:16;a:3:{s:5:\"label\";s:6:\"Kansas\";s:5:\"value\";s:2:\"KS\";s:8:\"selected\";s:1:\"0\";}i:17;a:3:{s:5:\"label\";s:8:\"Kentucky\";s:5:\"value\";s:2:\"KY\";s:8:\"selected\";s:1:\"0\";}i:18;a:3:{s:5:\"label\";s:9:\"Louisiana\";s:5:\"value\";s:2:\"LA\";s:8:\"selected\";s:1:\"0\";}i:19;a:3:{s:5:\"label\";s:5:\"Maine\";s:5:\"value\";s:2:\"ME\";s:8:\"selected\";s:1:\"0\";}i:20;a:3:{s:5:\"label\";s:8:\"Maryland\";s:5:\"value\";s:2:\"MD\";s:8:\"selected\";s:1:\"0\";}i:21;a:3:{s:5:\"label\";s:13:\"Massachusetts\";s:5:\"value\";s:2:\"MA\";s:8:\"selected\";s:1:\"0\";}i:22;a:3:{s:5:\"label\";s:8:\"Michigan\";s:5:\"value\";s:2:\"MI\";s:8:\"selected\";s:1:\"0\";}i:23;a:3:{s:5:\"label\";s:9:\"Minnesota\";s:5:\"value\";s:2:\"MN\";s:8:\"selected\";s:1:\"0\";}i:24;a:3:{s:5:\"label\";s:11:\"Mississippi\";s:5:\"value\";s:2:\"MS\";s:8:\"selected\";s:1:\"0\";}i:25;a:3:{s:5:\"label\";s:8:\"Missouri\";s:5:\"value\";s:2:\"MO\";s:8:\"selected\";s:1:\"0\";}i:26;a:3:{s:5:\"label\";s:7:\"Montana\";s:5:\"value\";s:2:\"MT\";s:8:\"selected\";s:1:\"0\";}i:27;a:3:{s:5:\"label\";s:8:\"Nebraska\";s:5:\"value\";s:2:\"NE\";s:8:\"selected\";s:1:\"0\";}i:28;a:3:{s:5:\"label\";s:6:\"Nevada\";s:5:\"value\";s:2:\"NV\";s:8:\"selected\";s:1:\"0\";}i:29;a:3:{s:5:\"label\"3s:13:\"New Hampshire\";s:5:\"value\";s:2:\"NH\";s:8:\"selected\";s:1:\"0\";}i:30;a:3:{s:5:\"label\";s:10:\"New Jersey\";s:5:\"value\";s:2:\"NJ\";s:8:\"selected\";s:1:\"0\";}i:31;a:3:{s:5:\"label\";s:10:\"New Mexico\";s:5:\"value\";s:2:\"NM\";s:8:\"selected\";s:1:\"0\";}i:32;a:3:{s:5:\"label\";s:8:\"New York\";s:5:\"value\";s:2:\"NY\";s:8:\"selected\";s:1:\"0\";}i:33;a:3:{s:5:\"label\";s:14:\"North Carolina\";s:5:\"value\";s:2:\"NC\";s:8:\"selected\";s:1:\"0\";}i:34;a:3:{s:5:\"label\";s:12:\"North Dakota\";s:5:\"value\";s:2:\"ND\";s:8:\"selected\";s:1:\"0\";}i:35;a:3:{s:5:\"label\";s:4:\"Ohio\";s:5:\"value\";s:2:\"OH\";s:8:\"selected\";s:1:\"0\";}i:36;a:3:{s:5:\"label\";s:8:\"Oklahoma\";s:5:\"value\";s:2:\"OK\";s:8:\"selected\";s:1:\"0\";}i:37;a:3:{s:5:\"label\";s:6:\"Oregon\";s:5:\"value\";s:2:\"OR\";s:8:\"selected\";s:1:\"0\";}i:38;a:3:{s:5:\"label\";s:12:\"Pennsylvania\";s:5:\"value\";s:2:\"PA\";s:8:\"selected\";s:1:\"0\";}i:39;a:3:{s:5:\"label\";s:12:\"Rhode Island\";s:5:\"value\";s:2:\"RI\";s:8:\"selected\";s:1:\"0\";}i:40;a:3:{s:5:\"label\";s:14:\"South Carolina\";s:5:\"value\";s:2:\"SC\";s:8:\"selected\";s:1:\"0\";}i:41;a:3:{s:5:\"label\";s:12:\"South Dakota\";s:5:\"value\";s:2:\"SD\";s:8:\"selected\";s:1:\"0\";}i:42;a:3:{s:5:\"label\";s:9:\"Tennessee\";s:5:\"value\";s:2:\"TN\";s:8:\"selected\";s:1:\"0\";}i:43;a:3:{s:5:\"label\";s:5:\"Texas\";s:5:\"value\";s:2:\"TX\";s:8:\"selected\";s:1:\"0\";}i:44;a:3:{s:5:\"label\";s:4:\"Utah\";s:5:\"value\";s:2:\"UT\";s:8:\"selected\";s:1:\"0\";}i:45;a:3:{s:5:\"label\";s:7:\"Vermont\";s:5:\"value\";s:2:\"VT\";s:8:\"selected\";s:1:\"0\";}i:46;a:3:{s:5:\"label\";s:8:\"Virginia\";s:5:\"value\";s:2:\"VA\";s:8:\"selected\";s:1:\"0\";}i:47;a:3:{s:5:\"label\";s:10:\"Washington\";s:5:\"value\";s:2:\"WA\";s:8:\"selected\";s:1:\"0\";}i:48;a:3:{s:5:\"label\";s:13:\"West Virginia\";s:5:\"value\";s:2:\"WV\";s:8:\"selected\";s:1:\"0\";}i:49;a:3:{s:5:\"label\";s:9:\"Wisconsin\";s:5:\"value\";s:2:\"WI\";s:8:\"selected\";s:1:\"0\";}i:50;a:3:{s:5:\"label\";s:7:\"Wyoming\";s:5:\"value\";s:2:\"WY\";s:8:\"selected\";s:1:\"0\";}}}s:3:\"req\";s:1:\"0\";s:5:\"class\";s:0:\"\";s:9:\"show_help\";s:1:\"0\";s:9:\"help_text\";s:0:\"\";}\', \'State Dropdown\')';
  293. $wpdb->query( $sql );
  294. }
  295. /**
  296. * Check our option to see if we've updated all of our forms.
  297. * If we haven't, loop through all of our forms and see if any need to be updated.
  298. *
  299. * @since 2.9
  300. * @return void
  301. */
  302. function nf_29_update_all_form_settings_check() {
  303. $forms_conversion_complete = get_option( 'nf_convert_forms_complete', false );
  304. if ( $forms_conversion_complete )
  305. return false;
  306. $url = admin_url( 'index.php?page=nf-upgrade-handler' );
  307. ?>
  308. <script type="text/javascript">
  309. jQuery(document).ready(function() {
  310. window.location.href = "<?php echo $url; ?>";
  311. } );
  312. </script>
  313. <?php
  314. }
  315. add_action( 'nf_admin_before_form_list', 'nf_29_update_all_form_settings_check' );