PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 5.8.5
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v5.8.5
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 / wpadverts / includes / triggers / send-message.php

send-message.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 5.8.5, at integrations/wpadverts/includes/triggers/send-message.php

131 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Send Message
4 *
5 * @package AutomatorWP\Integrations\WPAdverts\Triggers\Send_Message
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_WPAdverts_Send_Message extends AutomatorWP_Integration_Trigger {
13
14 public $integration = 'wpadverts';
15 public $trigger = 'wpadverts_send_message';
16
17 /**
18 * Register the trigger
19 *
20 * @since 1.0.0
21 */
22 public function register() {
23
24 automatorwp_register_trigger( $this->trigger, array(
25 'integration' => $this->integration,
26 'label' => __( 'User sends a message to an advert author', 'automatorwp' ),
27 'select_option' => __( 'User <strong>sends a message</strong> to an advert author', 'automatorwp' ),
28 /* translators: %1$s: Post Title. %2$s: Number of times. */
29 'edit_label' => sprintf( __( 'User sends a message to %1$s author time(s)', 'automatorwp' ), '{post}', '{times}' ),
30 /* translators: %1$s: Post Title. */
31 'log_label' => sprintf( __( 'User sends a message to %1$s author', 'automatorwp' ), '{post}' ),
32 'action' => 'adext_contact_form_send',
33 'function' => array( $this, 'listener' ),
34 'priority' => 10,
35 'accepted_args' => 2,
36 'options' => array(
37 'post' => automatorwp_utilities_post_option( array(
38 'name' => __( 'Advert:', 'automatorwp' ),
39 'option_none_label' => __( 'any advert', 'automatorwp' ),
40 'post_type' => 'advert'
41 ) ),
42 'times' => automatorwp_utilities_times_option(),
43 ),
44 'tags' => array_merge(
45 automatorwp_utilities_post_tags( __( 'Advert', 'automatorwp' ) ),
46 automatorwp_utilities_times_tag()
47 )
48 ) );
49
50 }
51
52 /**
53 * Trigger listener
54 *
55 * @since 1.0.0
56 *
57 * @param int $post_id
58 * @param Adverts_Form $form
59 */
60 public function listener( $post_id, $form ) {
61
62 $post = get_post( $post_id );
63
64 // Bail if post not exists
65 if( ! $post ) {
66 return;
67 }
68
69 // Bail if not is an advert
70 if( $post->post_type !== 'advert' ) {
71 return;
72 }
73
74 // First try to get the user from the message email
75 $email = $form->get_value( 'message_email' );
76 $user = get_user_by_email( $email );
77
78 if( $user ) {
79 $user_id = $user->ID;
80 }
81
82 if( $user_id === 0 ) {
83 $user_id = get_current_user_id();
84 }
85
86 // Bail if can't find the user ID
87 if( $user_id === 0 ) {
88 return;
89 }
90
91 automatorwp_trigger_event( array(
92 'trigger' => $this->trigger,
93 'user_id' => $user_id,
94 'post_id' => $post->ID,
95 ) );
96
97 }
98
99 /**
100 * User deserves check
101 *
102 * @since 1.0.0
103 *
104 * @param bool $deserves_trigger True if user deserves trigger, false otherwise
105 * @param stdClass $trigger The trigger object
106 * @param int $user_id The user ID
107 * @param array $event Event information
108 * @param array $trigger_options The trigger's stored options
109 * @param stdClass $automation The trigger's automation object
110 *
111 * @return bool True if user deserves trigger, false otherwise
112 */
113 public function user_deserves_trigger( $deserves_trigger, $trigger, $user_id, $event, $trigger_options, $automation ) {
114
115 // Don't deserve if post is not received
116 if( ! isset( $event['post_id'] ) ) {
117 return false;
118 }
119
120 // Don't deserve if post doesn't match with the trigger option
121 if( ! automatorwp_posts_matches( $event['post_id'], $trigger_options['post'] ) ) {
122 return false;
123 }
124
125 return $deserves_trigger;
126
127 }
128
129 }
130
131 new AutomatorWP_WPAdverts_Send_Message();