PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.0
Tutor LMS – eLearning and online course solution v3.9.0
3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / includes / droip / backend / ElementGenerator / ThumbnailGenerator.php
tutor / includes / droip / backend / ElementGenerator Last commit date
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