Current File : /var/www/pediatribu/wp-content/plugins/astra-widgets/classes/widgets/class-astra-widget-address.php |
<?php
/**
* Address Widget
*
* @package Astra Addon
* @since 1.0.0
*/
if ( ! class_exists( 'Astra_Widget_Address' ) ) :
/**
* Astra_Widget_Address
*
* @since 1.0.0
*/
class Astra_Widget_Address extends WP_Widget {
/**
* Instance
*
* @since 1.0.0
*
* @access private
* @var object Class object.
*/
private static $instance;
/**
* Widget Base
*
* @since 1.0.0
*
* @access public
* @var object Class object.
*/
public $id_base = 'astra-widget-address';
/**
* Initiator
*
* @since 1.0.0
*
* @return object initialized object of class.
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*
* @since 1.0.0
*/
public function __construct() {
parent::__construct(
$this->id_base,
__( 'Astra: Address', 'astra-widgets' ),
array(
'classname' => $this->id_base,
'description' => __( 'Display Address.', 'astra-widgets' ),
),
array(
'id_base' => $this->id_base,
)
);
add_action( 'wp_enqueue_scripts', array( $this, 'register_scripts' ) );
}
/**
* Register scripts
*
* @return void
*/
public function register_scripts() {
/* Directory and Extension */
$file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min';
$dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified';
$js_uri = ASTRA_WIDGETS_URI . 'assets/js/' . $dir_name . '/';
$css_uri = ASTRA_WIDGETS_URI . 'assets/css/' . $dir_name . '/';
wp_register_style( 'astra-widgets-' . $this->id_base, $css_uri . 'astra-widget-address' . $file_prefix . '.css', array(), ASTRA_WIDGETS_VER );
}
/**
* Frontend setup
*
* @param array $args Widget arguments.
* @param array $instance Widget instance.
* @return void
*/
public function front_setup( $args, $instance ) {
// Set stored data.
$this->stored_data = $instance;
// Enqueue Scripts.
wp_enqueue_style( 'astra-widgets-' . $this->id_base );
// Enqueue dynamic Scripts.
wp_add_inline_style( 'astra-widgets-' . $this->id_base, $this->get_dynamic_css() );
}
/**
* Widget
*
* @param array $args Widget arguments.
* @param array $instance Widget instance.
* @return void
*/
public function widget( $args, $instance ) {
$this->front_setup( $args, $instance );
$title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : '';
$style = isset( $instance['style'] ) ? $instance['style'] : 'stack';
$social_icons = isset( $instance['display-icons'] ) ? $instance['display-icons'] : false;
$address = isset( $instance['address'] ) ? $instance['address'] : '';
$phone = isset( $instance['phone'] ) ? $instance['phone'] : '';
$fax = isset( $instance['fax'] ) ? $instance['fax'] : '';
$email = isset( $instance['email'] ) ? $instance['email'] : '';
// Before Widget.
echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
if ( $title ) {
echo $args['before_title'] . $title . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
} ?>
<?php
$widget_content_font_size = '15';
if ( function_exists( 'astra_get_option' ) ) {
$widget_content_font_size = astra_get_option( 'font-size-widget-content' );
$widget_content_font_size = ( isset( $widget_content_font_size['desktop'] ) && ! empty( $widget_content_font_size['desktop'] ) ) ? $widget_content_font_size['desktop'] : '15';
}
?>
<div class="address clearfix">
<address class="widget-address widget-address-<?php echo esc_attr( $style ); ?> widget-address-icons-<?php echo esc_attr( $social_icons ); ?>">
<?php if ( ! empty( $address ) ) { ?>
<div class="widget-address-field">
<?php if ( $social_icons ) { ?>
<?php // Font Awesome 5 SVG. ?>
<svg xmlns="http://www.w3.org/2000/svg" class="address-icons" width="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" height="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" viewBox="0 0 496 512"><path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path>
</svg>
<?php } ?>
<span class="address-meta"><?php echo nl2br( $address ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
</div>
<?php } ?>
<?php if ( ! empty( $phone ) ) { ?>
<div class="widget-address-field">
<?php if ( $social_icons ) { ?>
<?php // Font Awesome 5 SVG. ?>
<svg xmlns="http://www.w3.org/2000/svg" class="address-icons" width="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" height="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" viewBox="0 0 512 512"><path d="M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"></path>
</svg>
<?php } ?>
<?php
if ( apply_filters( 'astra_widgets_tel_prefix', false ) ) {
$prefix = '+';
} else {
$prefix = '';
}
?>
<span class="address-meta">
<a href="tel:<?php echo esc_attr( $prefix ) . esc_attr( preg_replace( '/\D/', '', esc_attr( $phone ) ) ); ?>" ><?php echo esc_html( $phone ); ?></a>
</span>
</div>
<?php } ?>
<?php if ( ! empty( $fax ) ) { ?>
<div class="widget-address-field">
<?php if ( $social_icons ) { ?>
<?php // Font Awesome 5 SVG. ?>
<svg xmlns="http://www.w3.org/2000/svg" class="address-icons" width="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" height="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" viewBox="0 0 384 512"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"></path>
</svg>
<?php } ?>
<span class="address-meta"><?php echo esc_attr( $fax ); ?></span>
</div>
<?php } ?>
<?php
if ( ! empty( $email ) ) {
$email = sanitize_email( $email );
?>
<div class="widget-address-field">
<?php if ( $social_icons ) { ?>
<?php // Font Awesome 5 SVG. ?>
<svg xmlns="http://www.w3.org/2000/svg" class="address-icons" width="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" height="<?php echo esc_attr( $widget_content_font_size ) . 'px'; ?>" viewBox="0 0 512 512"><path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path>
</svg>
<?php } ?>
<span class="address-meta">
<a href="mailto:<?php echo esc_attr( antispambot( $email ) ); ?>" ><?php echo esc_html( antispambot( $email ) ); ?></a>
</span>
</div>
<?php } ?>
</address>
</div>
<?php
// After Widget.
echo $args['after_widget'];// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Update
*
* @param array $new_instance Widget new instance.
* @param array $old_instance Widget old instance.
* @return array Merged updated instance.
*/
public function update( $new_instance, $old_instance ) {
$instance = wp_parse_args( $new_instance, $old_instance );
/**
* Checkbox field support!
*
* @todo The checkbox field we need to set the boolean value `true/false`
* For now we have not able to detect the `checkbox` field in `generate` of class `Astra_Widgets_Helper`.
*/
$instance['display-icons'] = isset( $new_instance['display-icons'] ) ? (bool) $new_instance['display-icons'] : false;
$instance = array_map( 'sanitize_text_field', $instance );
// Address is a textarea field and needs to preserve linebreaks and whitespace.
if ( ! empty( $new_instance['address'] ) ) {
$instance['address'] = sanitize_textarea_field( $new_instance['address'] );
}
return $instance;
}
/**
* Widget Form
*
* @param array $instance Widget instance.
* @return void
*/
public function form( $instance ) {
$fields = array(
array(
'type' => 'text',
'id' => 'title',
'name' => __( 'Title:', 'astra-widgets' ),
'default' => ( isset( $instance['title'] ) && ! empty( $instance['title'] ) ) ? $instance['title'] : '',
),
array(
'name' => 'Style',
'id' => 'style',
'type' => 'select',
'default' => ( isset( $instance['style'] ) && ! empty( $instance['style'] ) ) ? $instance['style'] : 'stack',
'options' => array(
'inline' => __( 'Inline', 'astra-widgets' ),
'stack' => __( 'Stack', 'astra-widgets' ),
),
),
array(
'type' => 'checkbox',
'id' => 'display-icons',
'name' => __( 'Display Icons?', 'astra-widgets' ),
'default' => ( isset( $instance['display-icons'] ) && ! empty( $instance['display-icons'] ) ) ? $instance['display-icons'] : false,
),
array(
'type' => 'textarea',
'id' => 'address',
'name' => __( 'Address:', 'astra-widgets' ),
'default' => ( isset( $instance['address'] ) && ! empty( $instance['address'] ) ) ? $instance['address'] : '',
),
array(
'type' => 'text',
'id' => 'phone',
'name' => __( 'Phone:', 'astra-widgets' ),
'default' => ( isset( $instance['phone'] ) && ! empty( $instance['phone'] ) ) ? $instance['phone'] : '',
),
array(
'type' => 'text',
'id' => 'fax',
'name' => __( 'FAX:', 'astra-widgets' ),
'default' => ( isset( $instance['fax'] ) && ! empty( $instance['fax'] ) ) ? $instance['fax'] : '',
),
array(
'type' => 'text',
'id' => 'email',
'name' => __( 'Email:', 'astra-widgets' ),
'default' => ( isset( $instance['email'] ) && ! empty( $instance['email'] ) ) ? $instance['email'] : '',
),
array(
'type' => 'color',
'id' => 'icon_color',
'name' => __( 'Icon Color', 'astra-widgets' ),
'default' => ( isset( $instance['icon_color'] ) && ! empty( $instance['icon_color'] ) ) ? $instance['icon_color'] : '#fefefe',
),
array(
'type' => 'number',
'id' => 'space_btn_icon_text',
'name' => __( 'Space Between Icon & Text:', 'astra-widgets' ),
'unit' => 'Px',
'default' => ( isset( $instance['space_btn_icon_text'] ) && ! empty( $instance['space_btn_icon_text'] ) ) ? $instance['space_btn_icon_text'] : '',
),
array(
'type' => 'number',
'id' => 'space_btn_address_fields',
'name' => __( ' Space Between Address Fields:', 'astra-widgets' ),
'unit' => 'Px',
'default' => ( isset( $instance['space_btn_address_fields'] ) && ! empty( $instance['space_btn_address_fields'] ) ) ? $instance['space_btn_address_fields'] : '',
),
);
// Generate fields.
astra_generate_widget_fields( $this, $fields );
}
/**
* Dynamic CSS
*
* @return string
*/
public function get_dynamic_css() {
$dynamic_css = '';
$instances = get_option( 'widget_' . $this->id_base );
$id_base = '#' . $this->id;
if ( array_key_exists( $this->number, $instances ) ) {
$instance = $instances[ $this->number ];
$icon_color = isset( $instance['icon_color'] ) ? $instance['icon_color'] : '';
$space_btn_icon_text = isset( $instance['space_btn_icon_text'] ) ? $instance['space_btn_icon_text'] : '';
$space_btn_address_fields = isset( $instance['space_btn_address_fields'] ) ? $instance['space_btn_address_fields'] : '';
$css_output = array(
$id_base . ' .widget-address-field svg' => array(
'fill' => esc_attr( $icon_color ),
),
$id_base . ' .widget-address .widget-address-field .address-meta' => array(
'margin-left' => esc_attr( $space_btn_icon_text ) . 'px',
),
$id_base . ' .widget-address.widget-address-stack .widget-address-field' => array(
'padding-top' => '0',
'padding-bottom' => esc_attr( $space_btn_address_fields ) . 'px',
),
$id_base . ' .widget-address.widget-address-inline .widget-address-field' => array(
'padding-right' => esc_attr( $space_btn_address_fields ) . 'px',
),
$id_base . ' .address .widget-address.widget-address-stack .widget-address-field:last-child' => array(
'padding-bottom' => '0',
),
$id_base . ' .address .widget-address.widget-address-inline .widget-address-field:last-child' => array(
'padding-right' => '0',
),
);
$dynamic_css = astra_widgets_parse_css( $css_output );
return $dynamic_css;
}
return $dynamic_css;
}
}
endif;