File "revue.php"
Full Path: /home/warrior1/public_html/plugins/jetpack/extensions/blocks/revue/revue.php
File size: 7.48 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Revue Block.
*
* @since 8.3.0
*
* @package automattic/jetpack
*/
namespace Automattic\Jetpack\Extensions\Revue;
use Automattic\Jetpack\Blocks;
use Jetpack_Gutenberg;
const FEATURE_NAME = 'revue';
const BLOCK_NAME = 'jetpack/' . FEATURE_NAME;
/**
* Registers the block for use in Gutenberg
* This is done via an action so that we can disable
* registration if we need to.
*/
function register_block() {
Blocks::jetpack_register_block(
BLOCK_NAME,
array( 'render_callback' => __NAMESPACE__ . '\render_block' )
);
}
add_action( 'init', __NAMESPACE__ . '\register_block' );
/**
* Revue block render callback.
*
* @param array $attributes Array containing the Revue block attributes.
* @param string $content The Revue block content.
*
* @return string
*/
function render_block( $attributes, $content ) {
if ( ! array_key_exists( 'revueUsername', $attributes ) ) {
return '';
}
$email_label = get_revue_attribute( 'emailLabel', $attributes );
$email_placeholder = get_revue_attribute( 'emailPlaceholder', $attributes );
$first_name_label = get_revue_attribute( 'firstNameLabel', $attributes );
$first_name_placeholder = get_revue_attribute( 'firstNamePlaceholder', $attributes );
$first_name_show = get_revue_attribute( 'firstNameShow', $attributes );
$last_name_label = get_revue_attribute( 'lastNameLabel', $attributes );
$last_name_placeholder = get_revue_attribute( 'lastNamePlaceholder', $attributes );
$last_name_show = get_revue_attribute( 'lastNameShow', $attributes );
$url = sprintf( 'https://www.getrevue.co/profile/%s/add_subscriber', $attributes['revueUsername'] );
$base_class = Blocks::classes( FEATURE_NAME, array() ) . '__';
$classes = Blocks::classes( FEATURE_NAME, $attributes );
Jetpack_Gutenberg::load_assets_as_required( FEATURE_NAME );
ob_start();
?>
<div class="<?php echo esc_attr( $classes ); ?>">
<form
action="<?php echo esc_url( $url ); ?>"
class="<?php echo esc_attr( $base_class . 'form is-visible' ); ?>"
method="post"
name="revue-form"
target="_blank"
>
<div>
<label>
<?php echo esc_html( $email_label ); ?>
<span class="required"><?php esc_html_e( '(required)', 'jetpack' ); ?></span>
<input
class="<?php echo esc_attr( $base_class . 'email' ); ?>"
name="member[email]"
placeholder="<?php echo esc_attr( $email_placeholder ); ?>"
required
type="email"
/>
</label>
</div>
<?php if ( $first_name_show ) : ?>
<div>
<label>
<?php echo esc_html( $first_name_label ); ?>
<input
class="<?php echo esc_attr( $base_class . 'first-name' ); ?>"
name="member[first_name]"
placeholder="<?php echo esc_attr( $first_name_placeholder ); ?>"
type="text"
/>
</label>
</div>
<?php
endif;
if ( $last_name_show ) :
?>
<div>
<label>
<?php echo esc_html( $last_name_label ); ?>
<input
class="<?php echo esc_attr( $base_class . 'last-name' ); ?>"
name="member[last_name]"
placeholder="<?php echo esc_attr( $last_name_placeholder ); ?>"
type="text"
/>
</label>
</div>
<?php
endif;
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
if ( false !== strpos( $content, 'wp-block-jetpack-revue__fallback' ) ) {
echo $content;
} else {
echo get_deprecated_v1_revue_button( $attributes );
}
// phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
?>
</form>
<div class="<?php echo esc_attr( $base_class . 'message' ); ?>">
<p>
<strong><?php esc_html_e( 'Subscription received!', 'jetpack' ); ?></strong>
</p>
<p>
<?php esc_html_e( 'Please check your email to confirm your newsletter subscription.', 'jetpack' ); ?>
</p>
</div>
</div>
<?php
return ob_get_clean();
}
/**
* Get Revue block attribute.
*
* @param string $attribute String containing the attribute name to get.
* @param array $attributes Array containing the Revue block attributes.
*
* @return mixed
*/
function get_revue_attribute( $attribute, $attributes ) {
if ( array_key_exists( $attribute, $attributes ) ) {
return $attributes[ $attribute ];
}
$default_attributes = array(
'text' => __( 'Subscribe', 'jetpack' ),
'emailLabel' => __( 'Email address', 'jetpack' ),
'emailPlaceholder' => __( 'Enter your email address', 'jetpack' ),
'firstNameLabel' => __( 'First name', 'jetpack' ),
'firstNamePlaceholder' => __( 'Enter your first name', 'jetpack' ),
'firstNameShow' => true,
'lastNameLabel' => __( 'Last name', 'jetpack' ),
'lastNamePlaceholder' => __( 'Enter your last name', 'jetpack' ),
'lastNameShow' => true,
);
if ( array_key_exists( $attribute, $default_attributes ) ) {
return $default_attributes[ $attribute ];
}
}
/**
* DEPRECATED V1
*/
/**
* Create the Revue subscribe button.
*
* @param array $attributes Array containing the Revue block attributes.
*
* @return string
*/
function get_deprecated_v1_revue_button( $attributes ) {
$classes = array( 'wp-block-button__link' );
$styles = array();
$text = get_revue_attribute( 'text', $attributes );
$has_class_name = array_key_exists( 'className', $attributes );
$has_named_text_color = array_key_exists( 'textColor', $attributes );
$has_custom_text_color = array_key_exists( 'customTextColor', $attributes );
$has_named_background_color = array_key_exists( 'backgroundColor', $attributes );
$has_custom_background_color = array_key_exists( 'customBackgroundColor', $attributes );
$has_named_gradient = array_key_exists( 'gradient', $attributes );
$has_custom_gradient = array_key_exists( 'customGradient', $attributes );
$has_border_radius = array_key_exists( 'borderRadius', $attributes );
if ( $has_class_name ) {
$classes[] = $attributes['className'];
}
if ( $has_named_text_color || $has_custom_text_color ) {
$classes[] = 'has-text-color';
}
if ( $has_named_text_color ) {
$classes[] = sprintf( 'has-%s-color', $attributes['textColor'] );
} elseif ( $has_custom_text_color ) {
$styles[] = sprintf( 'color: %s;', $attributes['customTextColor'] );
}
if (
$has_named_background_color ||
$has_custom_background_color ||
$has_named_gradient ||
$has_custom_gradient
) {
$classes[] = 'has-background';
}
if ( $has_named_background_color && ! $has_custom_gradient ) {
$classes[] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] );
}
if ( $has_named_gradient ) {
$classes[] = sprintf( 'has-%s-gradient-background', $attributes['gradient'] );
} elseif ( $has_custom_gradient ) {
$styles[] = sprintf( 'background: %s;', $attributes['customGradient'] );
}
if (
$has_custom_background_color &&
! $has_named_background_color &&
! $has_named_gradient &&
! $has_custom_gradient
) {
$styles[] = sprintf( 'background-color: %s;', $attributes['customBackgroundColor'] );
}
if ( $has_border_radius ) {
// phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual
if ( 0 == $attributes['borderRadius'] ) {
$classes[] = 'no-border-radius';
} else {
$styles[] = sprintf( 'border-radius: %spx;', $attributes['borderRadius'] );
}
}
ob_start();
?>
<div class="wp-block-button">
<button
class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"
name="member[subscribe]"
style="<?php echo esc_attr( implode( ' ', $styles ) ); ?>"
type="submit"
>
<?php echo wp_kses_post( $text ); ?>
</button>
</div>
<?php
return ob_get_clean();
}