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