. */ // phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols // phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace // phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps class Logtivity_Dismiss_Notice_Controller { /** * @var string[] */ protected array $notices = [ 'logtivity-site-url-has-changed-notice', ]; public function __construct() { add_action('wp_ajax_nopriv_logtivity_dismiss_notice', [$this, 'dismiss']); add_action('wp_ajax_logtivity_dismiss_notice', [$this, 'dismiss']); } /** * @return self */ public static function init(): self { return new static(); } /** * @return void */ public function dismiss(): void { if (!current_user_can(Logtivity::ACCESS_SETTINGS)) { wp_die(__('You do not have sufficient permissions to access this page.')); } $postType = sanitize_text_field($_POST['postType'] ?? null); if (in_array($postType, $this->notices)) { $dismissUntil = sanitize_text_field($_POST['dismissUntil'] ?? null); if ($dismissUntil) { set_transient( 'dismissed-' . $postType, true, (int)$dismissUntil ); } else { update_option('dismissed-' . $postType, true); } wp_send_json(['message' => 'success']); } } }