summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php')
-rw-r--r--plugins/jetpack/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php112
1 files changed, 112 insertions, 0 deletions
diff --git a/plugins/jetpack/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php b/plugins/jetpack/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php
new file mode 100644
index 00000000..c94d4fb5
--- /dev/null
+++ b/plugins/jetpack/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php
@@ -0,0 +1,112 @@
+<?php
+/**
+ * A Terms of Service class for Jetpack.
+ *
+ * @package automattic/jetpack-connection
+ */
+
+namespace Automattic\Jetpack;
+
+/**
+ * Class Terms_Of_Service
+ *
+ * Helper class that is responsible for the state of agreement of the terms of service.
+ */
+class Terms_Of_Service {
+ /**
+ * Jetpack option name where the terms of service state is stored.
+ *
+ * @var string
+ */
+ const OPTION_NAME = 'tos_agreed';
+
+ /**
+ * Allow the site to agree to the terms of service.
+ */
+ public function agree() {
+ $this->set_agree();
+ /**
+ * Acton fired when the master user has agreed to the terms of service.
+ *
+ * @since 1.0.4
+ * @since-jetpack 7.9.0
+ */
+ do_action( 'jetpack_agreed_to_terms_of_service' );
+ }
+
+ /**
+ * Allow the site to reject to the terms of service.
+ */
+ public function reject() {
+ $this->set_reject();
+ /**
+ * Acton fired when the master user has revoked their agreement to the terms of service.
+ *
+ * @since 1.0.4
+ * @since-jetpack 7.9.1
+ */
+ do_action( 'jetpack_reject_terms_of_service' );
+ }
+
+ /**
+ * Returns whether the master user has agreed to the terms of service.
+ *
+ * The following conditions have to be met in order to agree to the terms of service.
+ * 1. The master user has gone though the connect flow.
+ * 2. The site is not in dev mode.
+ * 3. The master user of the site is still connected (deprecated @since 1.4.0).
+ *
+ * @return bool
+ */
+ public function has_agreed() {
+ if ( $this->is_offline_mode() ) {
+ return false;
+ }
+ /**
+ * Before 1.4.0 we used to also check if the master user of the site is connected
+ * by calling the Connection related `is_active` method.
+ * As of 1.4.0 we have removed this check in order to resolve the
+ * circular dependencies it was introducing to composer packages.
+ *
+ * @since 1.4.0
+ */
+ return $this->get_raw_has_agreed();
+ }
+
+ /**
+ * Abstracted for testing purposes.
+ * Tells us if the site is in dev mode.
+ *
+ * @return bool
+ */
+ protected function is_offline_mode() {
+ return ( new Status() )->is_offline_mode();
+ }
+
+ /**
+ * Gets just the Jetpack Option that contains the terms of service state.
+ * Abstracted for testing purposes.
+ *
+ * @return bool
+ */
+ protected function get_raw_has_agreed() {
+ return \Jetpack_Options::get_option( self::OPTION_NAME, false );
+ }
+
+ /**
+ * Sets the correct Jetpack Option to mark the that the site has agreed to the terms of service.
+ * Abstracted for testing purposes.
+ */
+ protected function set_agree() {
+ \Jetpack_Options::update_option( self::OPTION_NAME, true );
+ }
+
+ /**
+ * Sets the correct Jetpack Option to mark that the site has rejected the terms of service.
+ * Abstracted for testing purposes.
+ */
+ protected function set_reject() {
+ \Jetpack_Options::update_option( self::OPTION_NAME, false );
+ }
+
+}