ActionsGenerator.php
9 months ago
AddRatingGenerator.php
1 year ago
CourseMetaGenerator.php
9 months ago
ElementGenerator.php
1 year ago
MaterialGenerator.php
1 year ago
Preview.php
1 year ago
PriceGenerator.php
9 months ago
SocialLinkGenerator.php
1 year ago
ThumbnailGenerator.php
1 year ago
ThumbnailGenerator.php
122 lines
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Preview script for html markup generator |
| 5 | * |
| 6 | * @package tutor-droip-elements |
| 7 | */ |
| 8 | |
| 9 | namespace TutorLMSDroip\ElementGenerator; |
| 10 | |
| 11 | if ( ! defined( 'ABSPATH' ) ) { |
| 12 | exit; // Exit if accessed directly. |
| 13 | } |
| 14 | |
| 15 | /** |
| 16 | * Class ThumbnailGenerator |
| 17 | * This class is used to define all helper functions. |
| 18 | */ |
| 19 | trait ThumbnailGenerator { |
| 20 | |
| 21 | /** |
| 22 | * Generate course meta markup |
| 23 | * |
| 24 | * @return string |
| 25 | */ |
| 26 | private function generate_course_thumbnail_markup() { |
| 27 | $settings = isset( $this->element['properties']['settings'] ) ? $this->element['properties']['settings'] : array(); |
| 28 | $thumbnail_type = isset( $settings['thumbnail_type'] ) ? $settings['thumbnail_type'] : 'video'; |
| 29 | $course_id = isset( $this->options['post'] ) ? $this->options['post']->ID : get_the_ID(); |
| 30 | $thumbnail = $this->get_course_thumbnail( $thumbnail_type, true, $course_id, $this->options ); |
| 31 | if ( $thumbnail['type'] === 'video' ) { |
| 32 | if ( $thumbnail['source'] === 'html5' || $thumbnail['source'] === 'external_url' ) { |
| 33 | $poster_url_attribute = isset($thumbnail['poster_url']) ? 'poster="' . $thumbnail['poster_url'] . '"' : ''; |
| 34 | return "<video playsinline controls $poster_url_attribute $this->attributes><source src=" . $thumbnail['src'] . " type='video/mp4'></video>"; |
| 35 | } |
| 36 | if ( $thumbnail['source'] === 'youtube' ) { |
| 37 | return "<iframe $this->attributes frameborder='0' allowfullscreen allowtransparency allow='autoplay' src='https://www.youtube.com/embed/" . $thumbnail['id'] . "'></iframe>"; |
| 38 | } |
| 39 | if ( $thumbnail['source'] === 'vimeo' ) { |
| 40 | return "<iframe $this->attributes frameborder='0' allowfullscreen allowtransparency allow='autoplay' src='https://player.vimeo.com/video/" . $thumbnail['id'] . "'></iframe>"; |
| 41 | } |
| 42 | if ( $thumbnail['source'] === 'embedded' ) { |
| 43 | $firstTagEnd = strpos( $thumbnail['src'], '>' ); |
| 44 | $modifiedHtml = substr_replace( $thumbnail['src'], ' ' . $this->attributes, $firstTagEnd, 0 ); |
| 45 | return $modifiedHtml; |
| 46 | } |
| 47 | } |
| 48 | return "<img $this->attributes src=" . $thumbnail['src'] . ' />'; |
| 49 | } |
| 50 | |
| 51 | |
| 52 | public function get_course_thumbnail( $thumbnail_type, $secondary_show, $course_id, $options = array() ) { |
| 53 | switch ( $thumbnail_type ) { |
| 54 | case 'image': { |
| 55 | $tutor_course_img = get_tutor_course_thumbnail_src( 'post-thumbnail', $course_id ); |
| 56 | if ( $tutor_course_img ) { |
| 57 | return array( |
| 58 | 'type' => 'image', |
| 59 | 'src' => $tutor_course_img, |
| 60 | ); |
| 61 | } |
| 62 | if ( $secondary_show ) { |
| 63 | return $this->get_course_thumbnail( 'video', false, $course_id, $options ); |
| 64 | } |
| 65 | return $this->get_course_thumbnail( 'default', false, $course_id, $options ); |
| 66 | } |
| 67 | case 'video': { |
| 68 | $video_info = tutor_utils()->get_video_info( $course_id ); |
| 69 | $source_key = is_object( $video_info ) ? 'source_' . $video_info->source : null; |
| 70 | if ( $source_key ) { |
| 71 | if ( $video_info->source === 'html5' || $video_info->source === 'external_url' ) { |
| 72 | return array( |
| 73 | 'type' => 'video', |
| 74 | 'src' => $video_info->$source_key, |
| 75 | 'source' => $video_info->source, |
| 76 | 'poster_url' => $video_info->poster_url |
| 77 | ); |
| 78 | } elseif ( $video_info->source === 'youtube' ) { |
| 79 | $youtube_video_id = tutor_utils()->get_youtube_video_id( tutor_utils()->avalue_dot( 'source_youtube', $video_info ) ); |
| 80 | return array( |
| 81 | 'type' => 'video', |
| 82 | 'src' => $video_info->$source_key, |
| 83 | 'source' => $video_info->source, |
| 84 | 'id' => $youtube_video_id, |
| 85 | ); |
| 86 | } elseif ( $video_info->source === 'vimeo' ) { |
| 87 | $video_url = tutor_utils()->avalue_dot( 'source_vimeo', $video_info ); |
| 88 | $video_id = ''; |
| 89 | if ( preg_match( '%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $video_url, $match ) ) { |
| 90 | if ( isset( $match[3] ) ) { |
| 91 | $video_id = $match[3]; |
| 92 | } |
| 93 | } |
| 94 | return array( |
| 95 | 'type' => 'video', |
| 96 | 'src' => $video_info->$source_key, |
| 97 | 'source' => $video_info->source, |
| 98 | 'id' => $video_id, |
| 99 | ); |
| 100 | } elseif ( $video_info->source === 'embedded' ) { |
| 101 | return array( |
| 102 | 'type' => 'video', |
| 103 | 'src' => $video_info->$source_key, |
| 104 | 'source' => $video_info->source, |
| 105 | ); |
| 106 | } |
| 107 | } |
| 108 | if ( $secondary_show ) { |
| 109 | return $this->get_course_thumbnail( 'image', false, $course_id, $options ); |
| 110 | } |
| 111 | return $this->get_course_thumbnail( 'default', false, $course_id, $options ); |
| 112 | } |
| 113 | case 'default': { |
| 114 | return array( |
| 115 | 'type' => 'default', |
| 116 | 'src' => tutor_placeholder_img_src(), |
| 117 | ); |
| 118 | } |
| 119 | } |
| 120 | } |
| 121 | } |
| 122 |