X7ROOT File Manager
Current Path:
/home/oakwood/public_html/wp-content/plugins/optimole-wp/inc
home
/
oakwood
/
public_html
/
wp-content
/
plugins
/
optimole-wp
/
inc
/
ðŸ“
..
📄
admin.php
(107.21 KB)
📄
api.php
(12.85 KB)
📄
app_replacer.php
(18.85 KB)
📄
attachment_cache.php
(1.98 KB)
ðŸ“
cli
📄
cli.php
(844 B)
ðŸ“
compatibilities
📄
config.php
(3.79 KB)
ðŸ“
conflicts
📄
dam.php
(18.89 KB)
📄
dashboard_widget.php
(5.42 KB)
📄
filters.php
(2.24 KB)
📄
lazyload_replacer.php
(22.2 KB)
📄
logger.php
(6.23 KB)
📄
main.php
(6.02 KB)
📄
manager.php
(58.3 KB)
📄
media_offload.php
(85.95 KB)
ðŸ“
media_rename
📄
rest.php
(30.72 KB)
📄
settings.php
(24.14 KB)
📄
tag_replacer.php
(19.76 KB)
ðŸ“
traits
📄
url_replacer.php
(12.66 KB)
ðŸ“
v2
📄
video_player.php
(11.41 KB)
Editing: video_player.php
<?php /** * Video Player * * @since 4.0.0 */ class Optml_Video_Player { /** * Block attributes * * @var array */ private $block_attributes = [ 'url' => [ 'type' => 'string', ], 'primaryColor' => [ 'type' => 'string', 'default' => '#577BF9', ], 'aspectRatio' => [ 'type' => 'string', 'default' => 'auto', ], 'loop' => [ 'type' => 'boolean', 'default' => false, ], 'hideControls' => [ 'type' => 'boolean', 'default' => false, ], ]; const LOCALIZATION_VAR = 'OMVideoPlayerBlock'; /** * Icons * * @var array */ private $icons = [ 'play' => '<symbol id="optml-play-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play"><polygon points="6 3 20 12 6 21 6 3"/></symbol>', 'volume-mute' => '<symbol id="optml-volume-mute-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-volume-x"><path d="M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"/><line x1="22" x2="16" y1="9" y2="15"/><line x1="16" x2="22" y1="9" y2="15"/></symbol>', 'volume-high' => '<symbol id="optml-volume-high-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-volume-2"><path d="M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"/><path d="M16 9a5 5 0 0 1 0 6"/><path d="M19.364 18.364a9 9 0 0 0 0-12.728"/></symbol>', 'volume-low' => '<symbol id="optml-volume-low-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-volume-1"><path d="M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"/><path d="M16 9a5 5 0 0 1 0 6"/></symbol>', 'spinner' => '<symbol id="optml-loader-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></symbol>', 'maximize' => '<symbol id="optml-maximize-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize"><path d="M8 3H5a2 2 0 0 0-2 2v3"/><path d="M21 8V5a2 2 0 0 0-2-2h-3"/><path d="M3 16v3a2 2 0 0 0 2 2h3"/><path d="M16 21h3a2 2 0 0 0 2-2v-3"/></symbol>', 'minimize' => '<symbol id="optml-minimize-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-minimize"><path d="M8 3v3a2 2 0 0 1-2 2H3"/><path d="M21 8h-3a2 2 0 0 1-2-2V3"/><path d="M3 16h3a2 2 0 0 1 2 2v3"/><path d="M16 21v-3a2 2 0 0 1 2-2h3"/></symbol>', 'pause' => '<symbol id="optml-pause-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--optml-ctrl-ico-col, #fff)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pause"><rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/></symbol>', ]; /** * Constructor. * * @since 4.0.0 */ public function __construct() { $settings = new Optml_Settings(); if ( ! $settings->is_connected() ) { return; } add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_admin_video_player_assets' ] ); add_action( 'admin_head', [ $this, 'add_editor_player_icons' ] ); add_action( 'wp_enqueue_scripts', [ $this, 'maybe_enqueue_video_player_script' ] ); add_action( 'init', [ $this, 'register_video_player_block' ] ); } /** * Enqueue the admin video player assets. * * @since 4.0.0 */ public function enqueue_admin_video_player_assets() { $asset_file = include OPTML_PATH . 'assets/build/video-player/editor/editor.asset.php'; if ( empty( $asset_file ) ) { return; } $handle = 'optimole-video-player-editor'; wp_register_script( $handle, OPTML_URL . 'assets/build/video-player/editor/editor.js', array_merge( $asset_file['dependencies'] ), $asset_file['version'], true ); wp_localize_script( $handle, 'OMVideoPlayerBlock', $this->get_localization( true ) ); wp_enqueue_script( $handle ); wp_enqueue_style( $handle, OPTML_URL . 'assets/build/video-player/frontend/style-frontend.css', [], $asset_file['version'] ); } /** * Add the video player icons to the editor. * * @since 4.0.0 */ public function add_editor_player_icons() { $screen = get_current_screen(); if ( ! $screen || ! $screen->is_block_editor() ) { return; } $this->render_player_icons(); } /** * Maybe enqueue the video player component script. * * @since 4.0.0 */ public function maybe_enqueue_video_player_script() { if ( ! has_block( 'optimole/video-player' ) ) { return; } $this->enqueue_video_player_component_script(); $this->render_player_icons(); } /** * Enqueue the video player component script. * * @since 4.0.0 */ private function enqueue_video_player_component_script() { $asset_file = include OPTML_PATH . 'assets/build/video-player/frontend/frontend.asset.php'; if ( empty( $asset_file ) ) { return; } wp_register_script( 'optimole-video-player-component', OPTML_URL . 'assets/build/video-player/frontend/frontend.js', $asset_file['dependencies'], ); wp_localize_script( 'optimole-video-player-component', self::LOCALIZATION_VAR, $this->get_localization() ); wp_enqueue_script( 'optimole-video-player-component' ); wp_enqueue_style( 'optimole-video-player-component', OPTML_URL . 'assets/build/video-player/frontend/style-frontend.css', [], $asset_file['version'] ); } /** * Render the video player icons * * @since 4.0.0 */ private function render_player_icons() { ?> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <?php foreach ( $this->icons as $icon_id => $icon_svg ) : ?> <?php echo $icon_svg; ?> <?php endforeach; ?> </svg> <?php } /** * Register the video player block. * * @since 4.0.0 */ public function register_video_player_block() { register_block_type( 'optimole/video-player', [ 'render_callback' => [ $this, 'render_video_player_block' ], 'attributes' => $this->block_attributes, 'supports' => [ 'align' => true, ], ] ); } /** * Render the video player block. * * @param array $attributes The block attributes. * @return string The video player block markup. * * @since 4.0.0 */ public function render_video_player_block( $attributes, $content, $block ) { $attributes = wp_parse_args( $attributes, $this->block_attributes ); $style = [ '--om-primary-color' => $attributes['primaryColor'], '--om-aspect-ratio' => $attributes['aspectRatio'], ]; if ( isset( $attributes['style'] ) ) { $style = array_merge( $style, $this->block_style_attributes_to_css_array( $attributes['style'] ) ); } $css = array_map( function ( $key, $value ) { return $key . ': ' . $value; }, array_keys( $style ), $style ); $tag_attributes = [ 'video-src' => esc_url( $attributes['url'] ), 'loop' => $attributes['loop'] ? 'true' : 'false', 'hide-controls' => $attributes['hideControls'] ? 'true' : 'false', 'style' => esc_attr( implode( ';', $css ) ), ]; $tag_attributes = array_map( function ( $key, $value ) { return $key . '="' . $value . '"'; }, array_keys( $tag_attributes ), $tag_attributes ); $wrapper_attributes = array_filter( $attributes, function ( $key ) { return ! in_array( $key, array_keys( $this->block_attributes ), true ) && $key !== 'style'; }, ARRAY_FILTER_USE_KEY ); return sprintf( '<div %s><optimole-video-player %s></optimole-video-player></div>', get_block_wrapper_attributes( $wrapper_attributes ), implode( ' ', $tag_attributes ), ); } /** * Get the localization strings. * * @param boolean $editor Whether to get the localization for the editor. * @return array The localization strings. * * @since 4.0.0 */ private function get_localization( $editor = false ) { $strings = [ 'play' => __( 'Play', 'optimole-wp' ), 'pause' => __( 'Pause', 'optimole-wp' ), 'mute' => __( 'Mute', 'optimole-wp' ), 'unmute' => __( 'Unmute', 'optimole-wp' ), 'fullscreen' => __( 'Fullscreen', 'optimole-wp' ), 'exitFullscreen' => __( 'Exit Fullscreen', 'optimole-wp' ), ]; if ( ! $editor ) { return $strings; } $options = new Optml_Settings(); $cdn_url = $options->get_cdn_url(); return array_merge( $strings, [ 'domain' => $cdn_url, 'blockTitle' => __( 'Optimole Video', 'optimole-wp' ), 'blockDescription' => __( 'Optimole Video', 'optimole-wp' ), 'aspectRatioLabel' => __( 'Aspect Ratio', 'optimole-wp' ), 'urlLabel' => __( 'Video URL', 'optimole-wp' ), 'urlHelp' => __( 'Enter the URL of the video you want to display.', 'optimole-wp' ), 'editLabel' => __( 'Change URL', 'optimole-wp' ), 'loopLabel' => __( 'Loop Video', 'optimole-wp' ), 'hideControlsLabel' => __( 'Hide Video Controls Bar', 'optimole-wp' ), // translators: %s is 'Optimole Dashboard'. 'invalidUrlError' => sprintf( __( 'Invalid URL. Please enter a valid video URL from %s', 'optimole-wp' ), '<a target="_blank" href="https://dashboard.optimole.com">' . __( 'Optimole Dashboard', 'optimole-wp' ) . '</a>' ), 'auto' => __( 'Auto', 'optimole-wp' ), 'save' => __( 'Save', 'optimole-wp' ), 'primaryColorLabel' => __( 'Controls color', 'optimole-wp' ), ] ); } /** * Convert the block style attributes to a css array. * * @param array $attributes The block attributes. * @return array The css array. * * @since 4.0.0 */ private function block_style_attributes_to_css_array( $attributes ) { $css = []; if ( isset( $attributes['spacing'] ) ) { $spacing = $attributes['spacing']; foreach ( $spacing as $css_prop_prefix => $values ) { foreach ( $values as $direction => $value ) { $css[ $css_prop_prefix . '-' . $direction ] = $this->core_var_to_css_var( $value ); } } } return $css; } /** * Convert a core var to a css var. * e.g.: var:preset|spacing|50 -> var(--wp--preset--spacing--50) * * @param string $css_value The css value. * @return string The css var. * * @since 4.0.0 */ private function core_var_to_css_var( $css_value ) { if ( strpos( $css_value, 'var:' ) !== 0 ) { return $css_value; } $css_value = str_replace( 'var:', '', $css_value ); $css_value = str_replace( '|', '--', $css_value ); return 'var(--wp--' . $css_value . ')'; } }
Upload File
Create Folder