update-email-settings.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. final class NF_Upgrade_Email_Settings extends NF_Upgrade
  3. {
  4. public $name = 'email_settings';
  5. public $priority = '2.9.3';
  6. public $description = 'Email settings need to be transferred to a new storage method.';
  7. public $args = array();
  8. public $errors = array();
  9. public function loading()
  10. {
  11. // Remove old email settings.
  12. $this->changeEmailFav();
  13. // Get our total number of forms.
  14. $form_count = $this->getFormCount();
  15. // Get all our forms
  16. $forms = $this->getAllForms();
  17. $x = 1;
  18. if ( is_array( $forms ) ) {
  19. foreach ( $forms as $form ) {
  20. $this->args['forms'][$x] = $form['id'];
  21. $x++;
  22. }
  23. }
  24. if( empty( $this->total_steps ) || $this->total_steps <= 1 ) {
  25. $this->total_steps = $form_count;
  26. }
  27. $args = array(
  28. 'total_steps' => $this->total_steps,
  29. 'step' => 1,
  30. );
  31. $this->redirect = admin_url( 'admin.php?page=ninja-forms' );
  32. return $args;
  33. }
  34. public function step( $step )
  35. {
  36. // Get our form ID
  37. $form_id = $this->args['forms'][ $step ];
  38. $this->removeOldEmailSettings( $form_id );
  39. }
  40. public function complete()
  41. {
  42. update_option( 'nf_update_email_settings_complete', true );
  43. }
  44. public function isComplete()
  45. {
  46. return get_option( 'nf_update_email_settings_complete', false );
  47. }
  48. /*
  49. * PRIVATE METHODS
  50. */
  51. private function changeEmailFav() {
  52. global $wpdb;
  53. $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 );
  54. $sql = 'DELETE FROM `' . NINJA_FORMS_FAV_FIELDS_TABLE_NAME . '` WHERE name = "Email Address"';
  55. $wpdb->query( $sql );
  56. $sql = 'DELETE FROM `' . NINJA_FORMS_FAV_FIELDS_TABLE_NAME . '` WHERE name = "Email"';
  57. $wpdb->query( $sql );
  58. if ( isset ( $email_address['id'] ) && ! empty ( $email_address['id'] ) ) {
  59. $sql = 'INSERT INTO `'.NINJA_FORMS_FAV_FIELDS_TABLE_NAME.'` (`id`, `row_type`, `type`, `order`, `data`, `name`) VALUES
  60. (' . $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\')';
  61. $wpdb->query($sql);
  62. }
  63. }
  64. private function getFormCount() {
  65. global $wpdb;
  66. $forms = Ninja_Forms()->forms()->get_all();
  67. return count( $forms );
  68. }
  69. private function getAllForms(){
  70. $forms = Ninja_Forms()->forms()->get_all();
  71. $tmp_array = array();
  72. $x = 0;
  73. foreach ( $forms as $form_id ) {
  74. $tmp_array[ $x ]['id'] = $form_id;
  75. $tmp_array[ $x ]['data'] = Ninja_Forms()->form( $form_id )->get_all_settings();
  76. $tmp_array[ $x ]['name'] = Ninja_Forms()->form( $form_id )->get_setting( 'form_title' );
  77. $x++;
  78. }
  79. return $tmp_array;
  80. }
  81. private function removeOldEmailSettings( $form_id = '' ) {
  82. if ( '' == $form_id ) {
  83. $forms = $this->getAllForms();
  84. if ( is_array( $forms ) ) {
  85. foreach ( $forms as $form ) {
  86. $this->removeOldEmailSendTo( $form['id'] );
  87. }
  88. }
  89. } else {
  90. $this->removeOldEmailSendTo( $form_id );
  91. }
  92. }
  93. function removeOldEmailSendTo( $form_id ) {
  94. if ( empty ( $form_id ) )
  95. return false;
  96. // Remove any "Admin mailto" settings we might have.
  97. $form_row = ninja_forms_get_form_by_id( $form_id );
  98. if ( isset ( $form_row['data']['admin_mailto'] ) ) {
  99. unset ( $form_row['data']['admin_mailto'] );
  100. $args = array(
  101. 'update_array' => array(
  102. 'data' => serialize( $form_row['data'] ),
  103. ),
  104. 'where' => array(
  105. 'id' => $form_id,
  106. ),
  107. );
  108. ninja_forms_update_form( $args );
  109. }
  110. // Update any old email settings we have.
  111. $fields = Ninja_Forms()->form( $form_id )->fields;
  112. // Create a notification for our user email
  113. if ( ! empty ( $fields ) ) {
  114. foreach ( $fields as $field_id => $field ) {
  115. if ( isset ( $field['data']['send_email'] ) && $field['data']['send_email'] == 1 ) {
  116. // Add this field to our $addresses variable.
  117. unset( $field['data']['send_email'] );
  118. unset( $field['data']['replyto_email'] );
  119. unset( $field['data']['from_name'] );
  120. $args = array(
  121. 'update_array' => array(
  122. 'data' => serialize( $field['data'] ),
  123. ),
  124. 'where' => array(
  125. 'id' => $field_id,
  126. ),
  127. );
  128. ninja_forms_update_field( $args );
  129. }
  130. }
  131. }
  132. }
  133. }