Files
2026-04-28 15:13:50 +02:00

202 lines
4.4 KiB
PHP

<?php
namespace AIOSEO\Plugin\Common\Api;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\Models;
/**
* Route class for the API.
*
* @since 4.0.0
*/
class Notifications {
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function blogVisibilityReminder() {
return self::reminder( 'blog-visibility' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.5
*
* @return \WP_REST_Response The response.
*/
public static function descriptionFormatReminder() {
return self::reminder( 'description-format' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installMiReminder() {
return self::reminder( 'install-mi' );
}
/**
* Extend the start date of a notice.
*
* @since 4.2.1
*
* @return \WP_REST_Response The response.
*/
public static function installOmReminder() {
return self::reminder( 'install-om' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installAddonsReminder() {
return self::reminder( 'install-addons' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installImageSeoReminder() {
return self::reminder( 'install-aioseo-image-seo' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installLocalBusinessReminder() {
return self::reminder( 'install-aioseo-local-business' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installNewsSitemapReminder() {
return self::reminder( 'install-aioseo-news-sitemap' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function installVideoSitemapReminder() {
return self::reminder( 'install-aioseo-video-sitemap' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function conflictingPluginsReminder() {
return self::reminder( 'conflicting-plugins' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function migrationCustomFieldReminder() {
return self::reminder( 'v3-migration-custom-field' );
}
/**
* Extend the start date of a notice.
*
* @since 4.0.0
*
* @return \WP_REST_Response The response.
*/
public static function migrationSchemaNumberReminder() {
return self::reminder( 'v3-migration-schema-number' );
}
/**
* This allows us to not repeat code over and over.
*
* @since 4.0.0
*
* @param string $slug The slug of the reminder.
* @return \WP_REST_Response The response.
*/
protected static function reminder( $slug ) {
aioseo()->notices->remindMeLater( $slug );
return new \WP_REST_Response( [
'success' => true,
'notifications' => Models\Notification::getNotifications()
], 200 );
}
/**
* Dismiss notifications.
*
* @since 4.0.0
*
* @param \WP_REST_Request $request The REST Request
* @return \WP_REST_Response The response.
*/
public static function dismissNotifications( $request ) {
$slugs = $request->get_json_params();
$notifications = aioseo()->core->db
->start( 'aioseo_notifications' )
->whereIn( 'slug', $slugs )
->run()
->models( 'AIOSEO\\Plugin\\Common\\Models\\Notification' );
foreach ( $notifications as $notification ) {
$notification->dismissed = 1;
$notification->save();
}
// Dismiss static notifications.
if ( in_array( 'notification-review', $slugs, true ) ) {
update_user_meta( get_current_user_id(), '_aioseo_notification_plugin_review_dismissed', '3' );
}
if ( in_array( 'notification-review-delay', $slugs, true ) ) {
update_user_meta( get_current_user_id(), '_aioseo_notification_plugin_review_dismissed', strtotime( '+1 week' ) );
}
return new \WP_REST_Response( [
'success' => true,
'notifications' => Models\Notification::getNotifications()
], 200 );
}
}