PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.8.1
Tutor LMS – eLearning and online course solution v3.8.1
4.0.0 3.9.15 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 / ActionsGenerator.php
tutor / includes / droip / backend / ElementGenerator Last commit date
ActionsGenerator.php 10 months ago AddRatingGenerator.php 1 year ago CourseMetaGenerator.php 11 months ago ElementGenerator.php 1 year ago MaterialGenerator.php 1 year ago Preview.php 1 year ago PriceGenerator.php 1 year ago SocialLinkGenerator.php 1 year ago ThumbnailGenerator.php 1 year ago
ActionsGenerator.php
203 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 use TUTOR_CERT\Certificate;
12 use TutorLMSDroip\Helper;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit; // Exit if accessed directly.
16 }
17
18 /**
19 * Class ActionsGenerator
20 * This class is used to define all helper functions.
21 *
22 * @package TutorLMSDroip\ElementGenerator
23 */
24 trait ActionsGenerator {
25
26 /**
27 * Generate actionbox markup
28 *
29 * @return string
30 */
31 private function generate_action_markup() {
32 $course_id = isset( $this->options['post'] ) ? $this->options['post']->ID : get_the_ID();
33 $ele_name = $this->element['name'];
34 $entry_box_button_logic = tutor_entry_box_buttons( $course_id );
35 $type = isset( $this->properties['type'] ) ? $this->properties['type'] : 'enroll_btn';
36 $extra_attributes = "data-course_id='$course_id' data-action_type='$type'";
37
38 switch ( $type ) {
39 case 'wishlist_btn':{
40 if ( ! is_user_logged_in() ) {
41 return '';
42 }
43 $is_wish_listed = tutor_utils()->is_wishlisted( $course_id, get_current_user_id() );
44 if ( $is_wish_listed ) {
45 return '';
46 }
47
48 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
49 }
50 case 'wishlisted_btn':{
51 if ( ! is_user_logged_in() ) {
52 return '';
53 }
54 $is_wish_listed = tutor_utils()->is_wishlisted( $course_id, get_current_user_id() );
55 if ( ! $is_wish_listed ) {
56 return '';
57 }
58
59 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
60 }
61 }
62
63 $entry_box_button_logic = $this->update_entry_box_button_logic( $entry_box_button_logic, $this->options );
64
65 if ( ! isset( $entry_box_button_logic->{'show_' . $type} ) || ( isset( $entry_box_button_logic->{'show_' . $type} ) && $entry_box_button_logic->{'show_' . $type} !== true ) ) {
66 return '';
67 }
68 switch ( $type ) {
69 case 'enroll_btn':{
70 if ( ! $entry_box_button_logic->show_enroll_btn ) {
71 return '';
72 }
73 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
74 }
75 case 'add_to_cart_btn':{
76 $is_course_in_user_cart = tutor_is_item_in_cart( $course_id );
77 if ( $is_course_in_user_cart ) {
78 return '';
79 }
80 if(!Helper::is_course_for_single_purchaseble($course_id)){
81 return "";
82 }
83 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
84 }
85
86 case 'remove_from_cart_btn':{
87 $is_course_in_user_cart = tutor_is_item_in_cart( $course_id );
88 if ( !$is_course_in_user_cart ) {
89 return '';
90 }
91 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
92 }
93
94 case 'view_cart_btn':{
95 $is_course_in_user_cart = tutor_is_item_in_cart( $course_id );
96 if ( ! $is_course_in_user_cart ) {
97 return '';
98 }
99 $extra_attributes .= " data-cart_url='" . tutor_get_cart_url() . "'";
100 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
101 }
102 case 'start_learning_btn':{
103 if ( ! $entry_box_button_logic->show_start_learning_btn ) {
104 return '';
105 }
106 $is_course_completed = tutor_utils()->is_completed_course( $course_id, get_current_user_id() );
107 if ( $is_course_completed ) {
108 return '';
109 }
110 $lession_url = tutor_utils()->get_course_first_lesson( $course_id );
111 $extra_attributes .= " data-lession_url=$lession_url";
112 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
113 }
114 case 'continue_learning_btn':{
115 if ( ! $entry_box_button_logic->show_continue_learning_btn ) {
116 return '';
117 }
118 $is_course_completed = tutor_utils()->is_completed_course( $course_id, get_current_user_id() );
119 if ( $is_course_completed ) {
120 return '';
121 }
122 $extra_attributes .= " data-continue_learning_url='" . tutor_utils()->get_course_first_lesson() . "'";
123 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
124 }
125 case 'complete_course_btn':{
126 if ( ! $entry_box_button_logic->show_complete_course_btn ) {
127 return '';
128 }
129 $is_course_completed = tutor_utils()->is_completed_course( $course_id, get_current_user_id() );
130 if ( $is_course_completed ) {
131 return '';
132 }
133 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
134 }
135 case 'retake_course_btn':{
136 if ( $entry_box_button_logic->show_retake_course_btn || ( $entry_box_button_logic->show_certificate_view_btn && function_exists( 'TUTOR_CERT' ) ) ) {
137 $extra_attributes .= " data-continue_learning_url='" . tutor_utils()->get_course_first_lesson() . "'";
138 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
139 } else {
140 return '';
141 }
142 }
143 case 'certificate_view_btn':{
144 if ( ! function_exists( 'TUTOR_CERT' ) ) {
145 return '';
146 }
147 if ( ! $entry_box_button_logic->show_certificate_view_btn ) {
148 return '';
149 }
150 $is_course_completed = tutor_utils()->is_completed_course( $course_id, get_current_user_id() );
151
152 if ( ! $is_course_completed ) {
153 return '';
154 }
155 if ( ! $course_id ) {
156 return '';
157 }
158
159 $certificate_url = '';
160 if ( tutils()->is_addon_enabled( TUTOR_CERT()->basename ) ) {
161 $certificate_url = ( new Certificate( true ) )->get_certificate( $course_id );
162
163 $extra_attributes .= " data-certificate_url='" . $certificate_url . "'";
164 return $this->generate_child_element_with_parent_droip_data( $extra_attributes );
165 }
166
167 return '';
168
169 }
170 default:{
171 return '';
172 }
173
174 }
175 return '';
176 }
177
178 private function update_entry_box_button_logic($entry_box_button_logic, $options)
179 {
180 if (isset($options['relation_type']) && $options['relation_type'] === 'TUTOR_LMS_CART') {
181 if ($entry_box_button_logic->show_view_cart_btn) {
182 $entry_box_button_logic->show_remove_from_cart_btn = true;
183 }
184 }
185 if (isset($options['relation_type']) && $options['relation_type'] === 'TUTOR_LMS_CART') {
186 $entry_box_button_logic->show_view_cart_btn = false;
187 }
188
189 return $entry_box_button_logic;
190 }
191
192 private function generate_child_element_with_parent_droip_data( $extra_attributes ) {
193 $children_html = $this->generate_child_elements();
194 // echo "<pre>";var_dump($this->element['parentId'], $this->elements[$this->element['parentId'] ]);die;
195 if ( isset( $this->elements[ $this->element['parentId'] ] ) ) {
196 $encoded_data = $this->get_all_data_and_styles_from_element_id( $this->element['parentId'] );
197 $encoded_data = json_encode( $encoded_data );
198 $children_html .= "<textarea style='display: none'>$encoded_data</textarea>";
199 }
200 return $this->generate_common_element( false, $children_html, $extra_attributes );
201 }
202 }
203