Aucune description

class-pum-admin-upgrade-routine-3.php 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. /**
  3. * Upgrade Routine 3
  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_3
  20. */
  21. final class PUM_Admin_Upgrade_Routine_3 extends PUM_Admin_Upgrade_Routine {
  22. /**
  23. * Returns a description.
  24. *
  25. * @return mixed|void
  26. */
  27. public static function description() {
  28. return __( 'Upgrade popup triggers &amp; cookies.', 'popup-maker' );
  29. }
  30. /**
  31. * Upgrade popup triggers & cookies.
  32. *
  33. * - Convert Auto Open
  34. * - Convert Click Open
  35. */
  36. public static function run() {
  37. if ( ! current_user_can( PUM_Admin_Upgrades::instance()->required_cap ) ) {
  38. wp_die( __( 'You do not have permission to do upgrades', 'popup-maker' ), __( 'Error', 'popup-maker' ), array( 'response' => 403 ) );
  39. }
  40. ignore_user_abort( true );
  41. if ( ! pum_is_func_disabled( 'set_time_limit' ) ) {
  42. @set_time_limit( 0 );
  43. }
  44. $upgrades = PUM_Admin_Upgrades::instance();
  45. $completed = $upgrades->get_arg( 'completed' );
  46. $total = $upgrades->get_arg( 'total' );
  47. // Set the correct total.
  48. if ( $total <= 1 ) {
  49. $popups = wp_count_posts( 'popup' );
  50. $total = 0;
  51. foreach ( $popups as $status ) {
  52. $total += $status;
  53. }
  54. $upgrades->set_arg( 'total', $total );
  55. }
  56. $popups = pum_get_popups( array(
  57. 'number' => $upgrades->get_arg( 'number' ),
  58. 'page' => $upgrades->get_arg( 'step' ),
  59. 'status' => array( 'any', 'trash', 'auto-draft' ),
  60. 'order' => 'ASC',
  61. ) );
  62. if ( $popups ) {
  63. foreach ( $popups as $popup ) {
  64. $_cookies = $cookies = array();
  65. $_triggers = $triggers = array();
  66. // Convert Click Open Triggers.
  67. $click_open = popmake_get_popup_meta_group( 'click_open', $popup->ID );
  68. $_triggers[] = array(
  69. 'type' => 'click_open',
  70. 'settings' => array(
  71. 'extra_selectors' => ! empty( $click_open['extra_selectors'] ) ? $click_open['extra_selectors'] : '',
  72. 'cookie' => array(
  73. 'name' => null,
  74. ),
  75. ),
  76. );
  77. // If auto open enabled create a new trigger.
  78. $auto_open = popmake_get_popup_meta_group( 'auto_open', $popup->ID );
  79. if ( isset( $auto_open['enabled'] ) && $auto_open['enabled'] ) {
  80. // Set the new cookie name.
  81. $cookie_name = 'popmake-auto-open-' . $popup->ID;
  82. // Append the cookie key if set.
  83. if ( ! empty( $auto_open['cookie_key'] ) ) {
  84. $cookie_name .= '-' . $auto_open['cookie_key'];
  85. }
  86. // Store cookie_trigger for reuse.
  87. $cookie_trigger = $auto_open['cookie_trigger'];
  88. // Create empty trigger cookie in case of disabled trigger.
  89. $trigger_cookie = null;
  90. // If cookie trigger not disabled create a new cookie and add it to the auto open trigger.
  91. if ( $cookie_trigger != 'disabled' ) {
  92. // Add the new cookie to the auto open trigger.
  93. $trigger_cookie = array( $cookie_name );
  94. // Set the event based on the original option.
  95. switch ( $cookie_trigger ) {
  96. case 'close':
  97. $event = 'on_popup_close';
  98. break;
  99. case 'open':
  100. $event = 'on_popup_close';
  101. break;
  102. default:
  103. $event = $cookie_trigger;
  104. break;
  105. }
  106. // Add the new cookie to the cookies array.
  107. $_cookies[] = array(
  108. 'event' => $event,
  109. 'settings' => array(
  110. 'name' => $cookie_name,
  111. 'key' => '',
  112. 'time' => $auto_open['cookie_time'],
  113. 'path' => isset( $auto_open['cookie_path'] ) ? 1 : 0,
  114. 'session' => isset( $auto_open['session_cookie'] ) ? 1 : 0,
  115. ),
  116. );
  117. }
  118. // Add the new auto open trigger to the triggers array.
  119. $_triggers[] = array(
  120. 'type' => 'auto_open',
  121. 'settings' => array(
  122. 'delay' => ! empty( $auto_open['delay'] ) ? absint( $auto_open['delay'] ) : 500,
  123. 'cookie' => array(
  124. 'name' => $trigger_cookie,
  125. ),
  126. ),
  127. );
  128. }
  129. foreach ( $_cookies as $cookie ) {
  130. $cookie['settings'] = PUM_Cookies::instance()->validate_cookie( $cookie['event'], $cookie['settings'] );
  131. $cookies[] = $cookie;
  132. }
  133. foreach ( $_triggers as $trigger ) {
  134. $trigger['settings'] = PUM_Triggers::instance()->validate_trigger( $trigger['type'], $trigger['settings'] );
  135. $triggers[] = $trigger;
  136. }
  137. update_post_meta( $popup->ID, 'popup_triggers', $triggers );
  138. update_post_meta( $popup->ID, 'popup_cookies', $cookies );
  139. $completed ++;
  140. }
  141. if ( $completed < $total ) {
  142. $upgrades->set_arg( 'completed', $completed );
  143. PUM_Admin_Upgrade_Routine_3::next_step();
  144. }
  145. }
  146. PUM_Admin_Upgrade_Routine_3::done();
  147. }
  148. /**
  149. * Returns the auto open meta of a popup.
  150. *
  151. * @since 1.1.0
  152. * @deprecated 1.4
  153. *
  154. * @param int $popup_id ID number of the popup to retrieve a auto open meta for
  155. *
  156. * @return mixed array|string of the popup auto open meta
  157. */
  158. public static function get_auto_open( $popup_id = null, $key = null, $default = null ) {
  159. return popmake_get_popup_meta( 'auto_open', $popup_id, $key, $default );
  160. }
  161. }