File: /var/www/vfconf/wp-content/plugins/so-widgets-bundle/base/inc/fields/multiple-media.class.php
<?php
/**
* Use of this field requires at least WordPress 3.5.
*
* Class SiteOrigin_Widget_Field_Multiple_Media
*/
class SiteOrigin_Widget_Field_Multiple_Media extends SiteOrigin_Widget_Field_Base {
/**
* A label for the title of the media selector dialog.
*
* @var string
*/
protected $choose;
/**
* A label for the confirmation button of the media selector dialog.
*
* @var string
*/
protected $update;
/**
* Sets the media library which to browse and from which media can be selected. Allowed values are 'image',
* 'audio', 'video', and 'file'. The default is 'file'.
*
* @var string
*/
protected $library;
/**
* Whether to display the item title or not. Default is `true`.
*
* @var bool
*/
protected $title;
/**
* The dimensions of each thumbnail item. Only used when editing widgets. The default is 75x75.
*
* @var array
*/
protected $thumbnail_dimensions;
/**
* An optional array containing information about a repeater field. This will
* allow for the multiple media field to add items to the repeater.
*
* @var array
*/
protected $repeater;
public static $default_thumbnail_dimensions = array( 64, 64 );
protected function get_default_options() {
return array(
'choose' => __( 'Add Media', 'so-widgets-bundle' ),
'update' => __( 'Set Media', 'so-widgets-bundle' ),
'library' => 'image',
'title' => true,
'thumbnail_dimensions' => self::$default_thumbnail_dimensions,
);
}
protected function render_field( $attachments, $instance ) {
if ( version_compare( get_bloginfo( 'version' ), '3.5', '<' ) ) {
printf( __( 'You need to <a href="%s">upgrade</a> to WordPress 3.5 to use media fields', 'so-widgets-bundle' ), admin_url( 'update-core.php' ) );
return;
}
// Ensure thumbnail_dimensions are valid.
if (
empty( $this->thumbnail_dimensions ) ||
empty( $this->thumbnail_dimensions[0] ) ||
empty( $this->thumbnail_dimensions[1] ) ||
! is_numeric( $this->thumbnail_dimensions[0] ) ||
! is_numeric( $this->thumbnail_dimensions[1] )
) {
$this->thumbnail_dimensions = self::$default_thumbnail_dimensions;
}
// If library is set to all, convert it to a wildcard as all isn't valid
if ( $this->library == 'all' ) {
$this->library = '*';
}
?>
<div class="multiple-media-field-wrapper">
<a
href="#"
class="button"
data-choose="<?php echo esc_attr( $this->choose ); ?>"
data-update="<?php echo esc_attr( $this->update ); ?>"
data-library="<?php echo esc_attr( $this->library ); ?>"
>
<?php echo esc_html( $this->choose ); ?>
</a>
<?php if ( empty( $this->repeater ) ) { ?>
<div class="multiple-media-field-items">
<?php
if ( is_array( $attachments ) ) {
foreach ( $attachments as $attachment ) {
$item_title = get_the_title( $attachment );
$src = wp_get_attachment_image_src( $attachment, 'thumbnail' );
if ( empty( $src ) ) {
// If item doesn't have an image src, use the WP icon for its media type.
$src = wp_mime_type_icon( $attachment );
} else {
$src = $src[0];
}
?>
<div class="multiple-media-field-item current" data-id="<?php echo esc_attr( $attachment ); ?>">
<?php if ( ! empty( $src ) ) { ?>
<img src="<?php echo sow_esc_url( $src ); ?>" class="thumbnail" title="<?php echo esc_attr( $item_title ); ?>" width="<?php echo (int) $this->thumbnail_dimensions[0]; ?>" height="<?php echo (int) $this->thumbnail_dimensions[1]; ?>"/>
<?php } ?>
<a href="#" class="media-remove-button"><?php esc_html_e( 'Remove', 'so-widgets-bundle' ); ?></a>
<div class="title <?php echo (bool) $this->title ? 'title-enabled" style="width: ' . $this->thumbnail_dimensions[0] . 'px' : ''; ?>">
<?php
if ( ! empty( $item_title ) ) {
echo esc_attr( $item_title );
}
?>
</div>
</div>
<?php
}
}
?>
</div>
<div class="multiple-media-field-template" style="display:none">
<div class="multiple-media-field-item current">
<img class="thumbnail" width="<?php echo (int) $this->thumbnail_dimensions[0]; ?>" height="<?php echo (int) $this->thumbnail_dimensions[1]; ?>"/>
<a href="#" class="media-remove-button"><?php esc_html_e( 'Remove', 'so-widgets-bundle' ); ?></a>
<div class="title <?php echo (bool) $this->title ? 'title-enabled" style="width: ' . $this->thumbnail_dimensions[0] . 'px' : ''; ?>"></div>
</div>
</div>
<?php } ?>
<input
type="hidden"
value="<?php echo is_array( $attachments ) ? esc_attr( implode( ',', $attachments ) ) : ''; ?>"
data-element="<?php echo esc_attr( $this->element_name ); ?>"
name="<?php echo esc_attr( $this->element_name ); ?>"
<?php if ( ! empty( $this->repeater ) ) { ?>
data-repeater="<?php echo esc_attr( json_encode( $this->repeater ) ); ?>"
<?php } ?>
class="siteorigin-widget-input"
/>
</div>
<?php
}
protected function sanitize_field_input( $value, $instance ) {
if ( empty( $value ) ) {
return array();
}
$value = explode( ',', $value );
$media = array();
foreach ( $value as $item ) {
$media[] = (int) $item;
}
return $media;
}
public function enqueue_scripts() {
wp_enqueue_script(
'so-multiple-media-field',
plugin_dir_url( __FILE__ ) . 'js/multiple-media-field' . SOW_BUNDLE_JS_SUFFIX . '.js',
array( 'jquery' ),
SOW_BUNDLE_VERSION
);
wp_enqueue_style(
'so-multiple-media-field',
plugin_dir_url( __FILE__ ) . 'css/multiple-media-field.css',
array(),
SOW_BUNDLE_VERSION
);
}
}