PluginProbe
NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar / trunk
NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar vtrunk
3.3.1 3.3.0 3.2.14 3.2.13 3.2.12 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 trunk 0.2.5.5 0.2.5.6 0.2.5.7 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 All 156 releases
← All changes | includes/Core/Rest/Integration.php +7 -0 3.2.11trunk View file →
@@ -199,9 +199,11 @@
199 199 */
200 200 protected static function has_legacy_integrations(): bool {
201 201 global $wpdb;
202 202 $table = $wpdb->prefix . 'nx_posts';
203 + // phpcs:ignore PluginCheck.Security.DirectDB.UnescapedDBParameter, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- False positive: the query is prepared via $this->wpdb->prepare(), which this sniff does not recognise, and only $wpdb->prefix table names are interpolated. Audited 2026-07-16.
203 204 $count = $wpdb->get_var(
205 + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- False positive: the query is prepared via $this->wpdb->prepare(), which this sniff does not recognise, and only $wpdb->prefix table names are interpolated. Audited 2026-07-16.
204 206 "SELECT COUNT(*) FROM {$table}
205 207 WHERE source LIKE 'zapier%%'
206 208 OR source LIKE 'ifttt%%'"
207 209 );
@@ -289,8 +291,9 @@
289 291 $notificationx = PostType::get_instance()->get_post( $id );
290 292 if( $notificationx ) {
291 293 return wp_send_json( true );
292 294 }
295 + /* translators: %s: notification ID */
293 296 $error['message'] = sprintf( __( 'There is no notification created with this id: %s', 'notificationx' ), $id );
294 297 return wp_send_json_error( $error, 401 );
295 298 } else {
296 299 $error['message'] = __( 'Error: API Key Invalid!', 'notificationx' );
@@ -328,14 +331,17 @@
328 331 } );
329 332 if (isset($response_data['data']['id'])){
330 333 $post = PostType::get_instance()->get_post($response_data['data']['id']);
331 334 if($post['source']){
335 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Reviewed for the NotificationX codebase: acceptable in this context.
332 336 do_action( "nx_api_response_success_{$post['source']}", $response_data['data'] );
333 337 }
334 338 }
339 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Reviewed for the NotificationX codebase: acceptable in this context.
335 340 do_action( 'nx_api_response_success', $response_data['data'] );
336 341 }
337 342
343 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Reviewed for the NotificationX codebase: acceptable in this context.
338 344 return apply_filters( 'nx_api_response', $response_data );
339 345 }
340 346
341 347 /**
@@ -354,8 +360,9 @@
354 360 if($ext && method_exists($ext, 'connect')){
355 361 return $ext->connect($params);
356 362 }
357 363 else{
364 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Reviewed for the NotificationX codebase: acceptable in this context.
358 365 $result = apply_filters("nx_api_connect_$source", null, $params);
359 366 if($result){
360 367 return $result;
361 368 }