Нема описа

class-pum-admin-upgrade-routine-6.php 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <?php
  2. /**
  3. * Upgrade Routine 6 - Clean up old data and verify data integrity.
  4. *
  5. * @package PUM
  6. * @subpackage Admin/Upgrades
  7. * @copyright Copyright (c) 2019, Code Atlantic LLC
  8. * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
  9. * @since 1.4
  10. */
  11. // Exit if accessed directly
  12. if ( ! defined( 'ABSPATH' ) ) {
  13. exit;
  14. }
  15. if ( ! class_exists( 'PUM_Admin_Upgrade_Routine' ) ) {
  16. require_once POPMAKE_DIR . "includes/admin/upgrades/class-pum-admin-upgrade-routine.php";
  17. }
  18. /**
  19. * Class PUM_Admin_Upgrade_Routine_6
  20. */
  21. final class PUM_Admin_Upgrade_Routine_6 extends PUM_Admin_Upgrade_Routine {
  22. /**
  23. * @var null
  24. */
  25. public static $valid_themes = null;
  26. /**
  27. * @var null
  28. */
  29. public static $default_theme = null;
  30. /**
  31. * Returns the description.
  32. *
  33. * @return mixed|void
  34. */
  35. public static function description() {
  36. return __( 'Clean up old data and verify data integrity.', 'popup-maker' );
  37. }
  38. /**
  39. * Run the update.
  40. */
  41. public static function run() {
  42. if ( ! current_user_can( PUM_Admin_Upgrades::instance()->required_cap ) ) {
  43. wp_die( __( 'You do not have permission to do upgrades', 'popup-maker' ), __( 'Error', 'popup-maker' ), array( 'response' => 403 ) );
  44. }
  45. ignore_user_abort( true );
  46. if ( ! pum_is_func_disabled( 'set_time_limit' ) ) {
  47. @set_time_limit( 0 );
  48. }
  49. $upgrades = PUM_Admin_Upgrades::instance();
  50. $completed = $upgrades->get_arg( 'completed' );
  51. $total = $upgrades->get_arg( 'total' );
  52. // Install new themes
  53. pum_install_built_in_themes();
  54. // Refresh CSS transients
  55. pum_reset_assets();
  56. // Set the correct total.
  57. if ( $total <= 1 ) {
  58. $popups = wp_count_posts( 'popup' );
  59. $total = 0;
  60. foreach ( $popups as $status ) {
  61. $total += $status;
  62. }
  63. $upgrades->set_arg( 'total', $total );
  64. }
  65. $popups = pum_get_popups( array(
  66. 'number' => $upgrades->get_arg( 'number' ),
  67. 'page' => $upgrades->get_arg( 'step' ),
  68. 'status' => array( 'any', 'trash', 'auto-draft' ),
  69. 'order' => 'ASC',
  70. ) );
  71. PUM_Admin_Upgrade_Routine_6::setup_valid_themes();
  72. // Delete All old meta keys.
  73. PUM_Admin_Upgrade_Routine_6::delete_all_old_meta_keys();
  74. // Delete All orphaned meta keys.
  75. PUM_Admin_Upgrade_Routine_6::delete_all_orphaned_meta_keys();
  76. PUM_Admin_Upgrade_Routine_6::process_popup_cats_tags();
  77. if ( $popups ) {
  78. foreach ( $popups as $popup ) {
  79. // Check that each popup has a valid theme id
  80. if ( ! array_key_exists( $popup->get_theme_id(), PUM_Admin_Upgrade_Routine_6::$valid_themes ) ) {
  81. // Set a valid theme.
  82. update_post_meta( $popup->ID, 'popup_theme', PUM_Admin_Upgrade_Routine_6::$default_theme );
  83. }
  84. $completed ++;
  85. }
  86. if ( $completed < $total ) {
  87. $upgrades->set_arg( 'completed', $completed );
  88. PUM_Admin_Upgrade_Routine_6::next_step();
  89. }
  90. }
  91. PUM_Admin_Upgrade_Routine_6::done();
  92. }
  93. /**
  94. * Create a list of valid popup themes.
  95. */
  96. public static function setup_valid_themes() {
  97. PUM_Admin_Upgrade_Routine_6::$valid_themes = array();
  98. foreach ( pum_get_all_themes() as $theme ) {
  99. PUM_Admin_Upgrade_Routine_6::$valid_themes[ $theme->ID ] = $theme;
  100. if ( pum_get_default_theme_id() == $theme->ID ) {
  101. PUM_Admin_Upgrade_Routine_6::$default_theme = $theme->ID;
  102. }
  103. }
  104. if ( ! PUM_Admin_Upgrade_Routine_6::$default_theme ) {
  105. reset( PUM_Admin_Upgrade_Routine_6::$valid_themes );
  106. PUM_Admin_Upgrade_Routine_6::$default_theme = PUM_Admin_Upgrade_Routine_6::$valid_themes[ key( PUM_Admin_Upgrade_Routine_6::$valid_themes ) ]->ID;
  107. }
  108. }
  109. /**
  110. * Delete orphaned post meta keys.
  111. */
  112. public static function delete_all_orphaned_meta_keys() {
  113. global $wpdb;
  114. $wpdb->query( "
  115. DELETE pm
  116. FROM $wpdb->postmeta pm
  117. LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id
  118. WHERE wp.ID IS NULL
  119. AND pm.meta_key LIKE 'popup_%'"
  120. );
  121. }
  122. /**
  123. * Delete all no longer meta keys to clean up after ourselves.
  124. *
  125. * @return false|int
  126. */
  127. public static function delete_all_old_meta_keys() {
  128. global $wpdb;
  129. $query = $wpdb->query( "
  130. DELETE FROM $wpdb->postmeta
  131. WHERE meta_key LIKE 'popup_display_%'
  132. OR meta_key LIKE 'popup_close_%'
  133. OR meta_key LIKE 'popup_auto_open_%'
  134. OR meta_key LIKE 'popup_click_open_%'
  135. OR meta_key LIKE 'popup_targeting_condition_%'
  136. OR meta_key LIKE 'popup_loading_condition_%'
  137. OR meta_key = 'popup_admin_debug'
  138. OR meta_key = 'popup_defaults_set'
  139. OR meta_key LIKE 'popup_display_%'
  140. OR meta_key = 'popup_auto_open'
  141. OR meta_key = 'popup_click_open'
  142. OR meta_key LIKE 'popup_theme_overlay_%'
  143. OR meta_key LIKE 'popup_theme_container_%'
  144. OR meta_key LIKE 'popup_theme_title_%'
  145. OR meta_key LIKE 'popup_theme_content_%'
  146. OR meta_key LIKE 'popup_theme_close_%'
  147. OR meta_key = 'popmake_default_theme'
  148. OR meta_key = 'popup_theme_defaults_set'
  149. "
  150. );
  151. return $query;
  152. }
  153. /**
  154. * Checks for popup taxonomy counts and disables popup taxonomies if none are found.
  155. */
  156. public static function process_popup_cats_tags() {
  157. global $popmake_options;
  158. // Setup the Popup Taxonomies
  159. popmake_setup_taxonomies( true );
  160. $categories = wp_count_terms( 'popup_category', array( 'hide_empty' => true) );
  161. $tags = wp_count_terms( 'popup_tag', array( 'hide_empty' => true) );
  162. if ( is_wp_error( $tags ) ) {
  163. $tags = 0;
  164. }
  165. if ( is_wp_error( $categories ) ) {
  166. $categories = 0;
  167. }
  168. $popmake_options['disable_popup_category_tag'] = $categories == 0 && $tags == 0;
  169. update_option( 'popmake_settings', $popmake_options );
  170. }
  171. }