File "Wysiwyg.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Wysiwyg.php
File size: 2.79 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Tribe\Admin;
/**
* Admin Wysiwyg class.
*
* @since 5.0.12
*/
class Wysiwyg {
/**
* Unique name given to editor in case more than one is being used on the same page.
*
* @since 5.0.12
*
* @var string
*/
protected $name = '';
/**
* Initial HTML of the editor.
*
* @since 5.0.12
*
* @var string
*/
protected $value = '';
/**
* Settings to pass into the editor.
*
* @since 5.0.12
*
* @var array
*/
protected $args = [];
/**
* Create a new Wysiwyg object.
*
* @since 5.0.12
*
* @param string $name Unique name given to editor.
* @param string $value Initial value/HTML.
* @param array $args Array of settings.
*
* @return void
*/
function __construct( $name, $value = '', $args = [] ) {
$this->name = $name;
$this->value = (string) $value;
$default_args = [
'teeny' => true,
'wpautop' => true,
'textarea_name' => $name,
];
$this->args = wp_parse_args( $args, $default_args );
}
/**
* Filters editor buttons.
*
* @since 5.0.12
*
* @param array $buttons Array of buttons to include.
*
* @return array Filtered array of buttons.
*/
public function filter_buttons( $buttons ) {
if (
empty( $this->args )
|| ! isset( $this->args['buttons'] )
|| empty( $this->args['buttons'] )
) {
return $buttons;
}
return $this->args['buttons'];
}
/**
* Filter 2nd row of buttons.
*
* @since 5.0.12
*
* @param array $buttons Array of buttons to include.
*
* @return array Filtered array of buttons.
*/
public function maybe_filter_buttons_2( $buttons ) {
if (
empty( $this->args ) ||
! isset( $this->args['buttons_2'] ) ||
empty( $this->args['buttons_2'] )
) {
return $buttons;
}
return $this->args['buttons_2'];
}
/**
* Get HTML of editor.
*
* @since 5.0.12
*
* @return string HTML of editor
*/
public function get_html() {
// Add button filters.
add_filter( 'teeny_mce_buttons', [ $this, 'filter_buttons' ] );
add_filter( 'tiny_mce_buttons', [ $this, 'filter_buttons' ] );
add_filter( 'mce_buttons', [ $this, 'filter_buttons' ] );
add_filter( 'mce_buttons_2', [ $this, 'maybe_filter_buttons_2' ] );
// Get HTML of editor.
ob_start();
wp_editor( html_entity_decode( ( $this->value ) ), sanitize_html_class( $this->name ), $this->args );
$html = ob_get_clean();
// Remove button filters.
remove_filter( 'teeny_mce_buttons', [ $this, 'filter_buttons' ] );
remove_filter( 'tiny_mce_buttons', [ $this, 'filter_buttons' ] );
remove_filter( 'mce_buttons', [ $this, 'filter_buttons' ] );
remove_filter( 'mce_buttons_2', [ $this, 'maybe_filter_buttons_2' ] );
return $html;
}
/**
* Renders editor HTML.
*
* @since 5.0.12
*
* @return void
*/
public function render_html() {
echo $this->get_html();
}
}