PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / wpadverts / triggers / user-publishes-free-advert.php
suretriggers / src / Integrations / wpadverts / triggers Last commit date
user-pays-advert.php 4 months ago user-publishes-advert-in-category.php 4 months ago user-publishes-any-advert.php 4 months ago user-publishes-free-advert.php 4 months ago user-publishes-paid-advert.php 4 months ago user-receives-message-from-advert.php 4 months ago user-renews-advert.php 4 months ago user-sends-message-to-advert-author.php 4 months ago
user-publishes-free-advert.php
146 lines
1 <?php
2 /**
3 * UserPublishesFreeAdvert.
4 * php version 5.6
5 *
6 * @category UserPublishesFreeAdvert
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\WPAdverts\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WPAdverts\WPAdverts;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20 use WP_Post;
21
22 if ( ! class_exists( 'UserPublishesFreeAdvert' ) ) :
23
24 /**
25 * UserPublishesFreeAdvert
26 *
27 * @category UserPublishesFreeAdvert
28 * @package SureTriggers
29 * @author BSF <username@example.com>
30 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
31 * @link https://www.brainstormforce.com/
32 * @since 1.0.0
33 *
34 * @psalm-suppress UndefinedTrait
35 */
36 class UserPublishesFreeAdvert {
37
38 /**
39 * Integration type.
40 *
41 * @var string
42 */
43 public $integration = 'WPAdverts';
44
45 /**
46 * Trigger name.
47 *
48 * @var string
49 */
50 public $trigger = 'wpadverts_user_publishes_free_advert';
51
52 use SingletonLoader;
53
54 /**
55 * Constructor
56 *
57 * @since 1.0.0
58 */
59 public function __construct() {
60 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
61 }
62
63 /**
64 * Register action.
65 *
66 * @param array $triggers trigger data.
67 * @return array
68 */
69 public function register( $triggers ) {
70 $triggers[ $this->integration ][ $this->trigger ] = [
71 'label' => __( 'User publishes a free advert', 'suretriggers' ),
72 'action' => $this->trigger,
73 'common_action' => 'transition_post_status',
74 'function' => [ $this, 'trigger_listener' ],
75 'priority' => 10,
76 'accepted_args' => 3,
77 ];
78
79 return $triggers;
80 }
81
82 /**
83 * Trigger listener
84 *
85 * @param string $new_status New post status.
86 * @param string $old_status Old post status.
87 * @param WP_Post $post Post object.
88 * @return void
89 */
90 public function trigger_listener( $new_status, $old_status, $post ) {
91 if ( ! $post instanceof WP_Post ) {
92 return;
93 }
94
95 if ( 'advert' !== $post->post_type ) {
96 return;
97 }
98
99 if ( 'publish' !== $new_status ) {
100 return;
101 }
102
103 if ( 'publish' === $old_status ) {
104 return;
105 }
106
107 if ( wp_is_post_revision( $post->ID ) || wp_is_post_autosave( $post->ID ) ) {
108 return;
109 }
110
111 // Check if this advert has a paid listing type.
112 $listing_id = get_post_meta( $post->ID, 'payments_listing_type', true );
113 if ( is_numeric( $listing_id ) ) {
114 $listing = get_post( absint( $listing_id ) );
115 if ( $listing instanceof WP_Post ) {
116 $price = get_post_meta( $listing->ID, 'adverts_price', true );
117 if ( is_numeric( $price ) && (float) $price > 0 ) {
118 return;
119 }
120 }
121 }
122
123 $user_id = (int) $post->post_author;
124 $context = array_merge(
125 WPAdverts::get_advert_context( $post->ID ),
126 WordPress::get_user_context( $user_id )
127 );
128
129 AutomationController::sure_trigger_handle_trigger(
130 [
131 'trigger' => $this->trigger,
132 'context' => $context,
133 ]
134 );
135 }
136 }
137
138 /**
139 * Ignore false positive
140 *
141 * @psalm-suppress UndefinedMethod
142 */
143 UserPublishesFreeAdvert::get_instance();
144
145 endif;
146