REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 4.13 KB
Close
/home/nshryvcy/radiantskinclinics.org/wp-content/plugins/woocommerce/src/Internal/PushNotifications/PushNotifications.php
Text
Base64
<?php declare(strict_types=1); namespace Automattic\WooCommerce\Internal\PushNotifications; defined( 'ABSPATH' ) || exit; use Automattic\Jetpack\Connection\Manager as JetpackConnectionManager; use Automattic\WooCommerce\Internal\PushNotifications\Controllers\PushNotificationRestController; use Automattic\WooCommerce\Internal\PushNotifications\Controllers\PushTokenRestController; use Automattic\WooCommerce\Internal\PushNotifications\Entities\PushToken; use Automattic\WooCommerce\Internal\PushNotifications\Services\NotificationProcessor; use Automattic\WooCommerce\Internal\PushNotifications\Services\PendingNotificationStore; use Automattic\WooCommerce\Internal\PushNotifications\Triggers\NewOrderNotificationTrigger; use Automattic\WooCommerce\Internal\PushNotifications\Triggers\NewReviewNotificationTrigger; use Automattic\WooCommerce\Proxies\LegacyProxy; use Automattic\WooCommerce\Utilities\FeaturesUtil; use WC_Logger; use Exception; /** * WC Push Notifications * * Class for setting up the WooCommerce-driven push notifications. * * @since 10.4.0 */ class PushNotifications { /** * Feature name for the push notifications feature. */ const FEATURE_NAME = 'push_notifications'; /** * Roles that can receive push notifications. * * This will be used to gate functionality access to just these roles. */ const ROLES_WITH_PUSH_NOTIFICATIONS_ENABLED = array( 'administrator', 'shop_manager', ); /** * 'Memoized' enablement flag. * * @var bool|null */ private ?bool $enabled = null; /** * Registers initialisation tasks to the `init` hook. * * @return void * * @since 10.4.0 */ public function register(): void { add_action( 'init', array( $this, 'on_init' ) ); } /** * Loads the push notifications class. * * @return void * * @since 10.6.0 */ public function on_init(): void { if ( ! $this->should_be_enabled() ) { return; } $this->register_post_types(); wc_get_container()->get( PendingNotificationStore::class )->register(); ( new PushTokenRestController() )->register(); ( new PushNotificationRestController() )->register(); ( new NewOrderNotificationTrigger() )->register(); ( new NewReviewNotificationTrigger() )->register(); wc_get_container()->get( NotificationProcessor::class )->register(); } /** * Registers the push token custom post type. * * @since 10.5.0 * @return void */ public function register_post_types(): void { register_post_type( PushToken::POST_TYPE, array( 'labels' => array( 'name' => __( 'Push Tokens', 'woocommerce' ), 'singular_name' => __( 'Push Token', 'woocommerce' ), ), 'public' => false, 'publicly_queryable' => false, 'show_ui' => false, 'show_in_menu' => false, 'query_var' => false, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'supports' => array( 'author' ), 'can_export' => false, 'delete_with_user' => true, ) ); } /** * Determines if local push notification functionality should be enabled. * Push notifications require both the feature flag to be enabled and * Jetpack to be connected. Memoize the value so we only check once per * request. * * @return bool * * @since 10.4.0 */ public function should_be_enabled(): bool { if ( null !== $this->enabled ) { return $this->enabled; } if ( ! FeaturesUtil::feature_is_enabled( self::FEATURE_NAME ) ) { $this->enabled = false; return $this->enabled; } try { $proxy = wc_get_container()->get( LegacyProxy::class ); $this->enabled = ( class_exists( JetpackConnectionManager::class ) && $proxy->get_instance_of( JetpackConnectionManager::class )->is_connected() ); } catch ( Exception $e ) { $logger = wc_get_container()->get( LegacyProxy::class )->call_function( 'wc_get_logger' ); if ( $logger instanceof WC_Logger ) { $logger->error( 'Error determining if PushNotifications feature should be enabled: ' . $e->getMessage() ); } $this->enabled = false; } return $this->enabled; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 9 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
Controllers
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
DataStores
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Dispatchers
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Entities
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Exceptions
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Notifications
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Services
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Triggers
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Validators
DIR
-
drwxr-xr-x
2026-05-29 02:43:21
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PushNotifications.php
4.13 KB
lrw-r--r--
2026-05-05 14:26:50
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).