PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.3
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.3
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
automatorwp / integrations / popup-maker / includes / actions / show-popup.php

show-popup.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.3, at integrations/popup-maker/includes/actions/show-popup.php

139 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * User Role
4 *
5 * @package AutomatorWP\Integrations\Popup_Maker\Actions\Show_Popup
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_Popup_Maker_Show_Popup extends AutomatorWP_Integration_Action {
13
14 public $integration = 'popup_maker';
15 public $action = 'popup_maker_show_popup';
16 public $meta_key = 'automatorwp_popup_maker_popups';
17
18 /**
19 * Register the trigger
20 *
21 * @since 1.0.0
22 */
23 public function register() {
24
25 automatorwp_register_action( $this->action, array(
26 'integration' => $this->integration,
27 'label' => __( 'Show a popup', 'automatorwp' ),
28 'select_option' => __( 'Show a <strong>popup</strong>', 'automatorwp' ),
29 /* translators: %1$s: Post title. */
30 'edit_label' => sprintf( __( 'Show %1$s', 'automatorwp' ), '{post}' ),
31 /* translators: %1$s: Post title. */
32 'log_label' => sprintf( __( 'Show %1$s', 'automatorwp' ), '{post}' ),
33 'options' => array(
34 'post' => automatorwp_utilities_post_option( array(
35 'name' => __( 'Popup:', 'automatorwp' ),
36 'option_default' => __( 'a popup', 'automatorwp' ),
37 'option_none' => false,
38 'option_custom' => true,
39 'option_custom_desc' => __( 'Popup ID', 'automatorwp' ),
40 'post_type' => 'popup'
41 ) ),
42 ),
43 ) );
44
45 }
46
47 /**
48 * Register required hooks
49 *
50 * @since 1.0.0
51 */
52 public function hooks() {
53
54 add_filter( 'pum_popup_is_loadable', array( $this, 'maybe_load_popup' ), 10, 2 );
55
56 parent::hooks();
57
58 }
59
60 /**
61 * Action execution function
62 *
63 * @since 1.0.0
64 *
65 * @param stdClass $action The action object
66 * @param int $user_id The user ID
67 * @param array $action_options The action's stored options (with tags already passed)
68 * @param stdClass $automation The action's automation object
69 */
70 public function execute( $action, $user_id, $action_options, $automation ) {
71
72 // Shorthand
73 $post_id = absint( $action_options['post'] );
74
75 $post = get_post( $post_id );
76
77 // Bail if post doesn't exists
78 if( ! $post ) {
79 return;
80 }
81
82 // Get popups to show
83 $popups_to_show = get_user_meta( $user_id, $this->meta_key, true );
84
85 if( ! is_array( $popups_to_show ) ) {
86 $popups_to_show = array();
87 }
88
89 $popups_to_show[] = $post_id;
90
91 // Update popups to show
92 update_user_meta( $user_id, $this->meta_key, $popups_to_show );
93
94 }
95
96 /**
97 * Determine if popup should be displayed to the user
98 *
99 * @since 1.0.0
100 *
101 * @param bool $loadable
102 * @param int $post_id
103 *
104 * @return bool
105 */
106 public function maybe_load_popup( $loadable, $post_id ) {
107
108 global $wpdb;
109
110 // Ensure post ID as integer
111 $post_id = absint( $post_id );
112
113 $actions_meta = AutomatorWP()->db->actions_meta;
114
115 // Check if any action is using this popup
116 $in_use = absint( $wpdb->get_var( "SELECT COUNT(*) FROM {$actions_meta} AS am WHERE am.meta_key = 'post' AND am.meta_value = {$post_id}" ) );
117
118 // Bail if none action is using this
119 if( $in_use === 0 ) {
120 return $loadable;
121 }
122
123 $user_id = get_current_user_id();
124
125 // Get popups to show
126 $popups_to_show = get_user_meta( $user_id, $this->meta_key, true );
127
128 if( ! is_array( $popups_to_show ) ) {
129 $popups_to_show = array();
130 }
131
132 // If popup is on popups to show, then make it loadable
133 return in_array( $post_id, $popups_to_show );
134
135 }
136
137 }
138
139 new AutomatorWP_Popup_Maker_Show_Popup();