summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/vendor/automattic/jetpack-partner/src/class-partner.php')
-rw-r--r--plugins/jetpack/vendor/automattic/jetpack-partner/src/class-partner.php152
1 files changed, 152 insertions, 0 deletions
diff --git a/plugins/jetpack/vendor/automattic/jetpack-partner/src/class-partner.php b/plugins/jetpack/vendor/automattic/jetpack-partner/src/class-partner.php
new file mode 100644
index 00000000..62d984e8
--- /dev/null
+++ b/plugins/jetpack/vendor/automattic/jetpack-partner/src/class-partner.php
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Jetpack Partner package.
+ *
+ * @package automattic/jetpack-partner
+ */
+
+namespace Automattic\Jetpack;
+
+/**
+ * This class introduces functionality used by Jetpack hosting partners.
+ *
+ * @since 8.1.0
+ */
+class Partner {
+
+ /**
+ * Affiliate code.
+ */
+ const AFFILIATE_CODE = 'affiliate';
+
+ /**
+ * Subsidiary id code.
+ */
+ const SUBSIDIARY_CODE = 'subsidiary';
+
+ /**
+ * Singleton instance.
+ *
+ * @since 8.1.0
+ *
+ * @var Partner This class instance.
+ */
+ private static $instance = null;
+
+ /**
+ * Partner constructor.
+ */
+ private function __construct() {
+ }
+
+ /**
+ * Initializes the class or returns the singleton.
+ *
+ * @return Partner | false
+ * @since 8.1.0
+ */
+ public static function init() {
+ if ( is_null( self::$instance ) ) {
+ self::$instance = new Partner();
+ add_filter( 'jetpack_build_connection_url', array( self::$instance, 'add_subsidiary_id_as_query_arg' ) );
+ add_filter( 'jetpack_build_connection_url', array( self::$instance, 'add_affiliate_code_as_query_arg' ) );
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * Adds the partner subsidiary code to the passed URL.
+ *
+ * @param string $url The URL.
+ *
+ * @return string
+ */
+ public function add_subsidiary_id_as_query_arg( $url ) {
+ return $this->add_code_as_query_arg( self::SUBSIDIARY_CODE, $url );
+ }
+
+ /**
+ * Adds the affiliate code to the passed URL.
+ *
+ * @param string $url The URL.
+ *
+ * @return string
+ */
+ public function add_affiliate_code_as_query_arg( $url ) {
+ return $this->add_code_as_query_arg( self::AFFILIATE_CODE, $url );
+ }
+
+ /**
+ * Returns the passed URL with the partner code added as a URL query arg.
+ *
+ * @param string $type The partner code.
+ * @param string $url The URL where the partner subsidiary id will be added.
+ *
+ * @return string The passed URL with the partner code added.
+ * @since 8.1.0
+ */
+ public function add_code_as_query_arg( $type, $url ) {
+ switch ( $type ) {
+ case self::AFFILIATE_CODE:
+ $query_arg_name = 'aff';
+ break;
+ case self::SUBSIDIARY_CODE:
+ $query_arg_name = 'subsidiaryId';
+ break;
+ default:
+ return $url;
+ }
+
+ $code = $this->get_partner_code( $type );
+
+ if ( '' === $code ) {
+ return $url;
+ }
+
+ return add_query_arg( $query_arg_name, $code, $url );
+ }
+
+ /**
+ * Returns a partner code.
+ *
+ * @param string $type This can be either 'affiliate' or 'subsidiary'. Returns empty string when code is unknown.
+ *
+ * @return string The partner code.
+ * @since 8.1.0
+ */
+ public function get_partner_code( $type ) {
+ switch ( $type ) {
+ case self::AFFILIATE_CODE:
+ /**
+ * Allow to filter the affiliate code.
+ *
+ * @param string $affiliate_code The affiliate code, blank by default.
+ *
+ * @since 6.9.0
+ */
+ return apply_filters( 'jetpack_affiliate_code', get_option( 'jetpack_affiliate_code', '' ) );
+ case self::SUBSIDIARY_CODE:
+ /**
+ * Allow to filter the partner subsidiary id.
+ *
+ * @param string $subsidiary_id The partner subsidiary id, blank by default.
+ *
+ * @since 8.1.0
+ */
+ return apply_filters(
+ 'jetpack_partner_subsidiary_id',
+ get_option( 'jetpack_partner_subsidiary_id', '' )
+ );
+ default:
+ return '';
+ }
+ }
+
+ /**
+ * Resets the singleton for testing purposes.
+ */
+ public static function reset() {
+ self::$instance = null;
+ }
+}