PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.2
Tutor LMS – eLearning and online course solution v3.7.2
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 / classes / TutorEDD.php
tutor / classes Last commit date
Addons.php 11 months ago Admin.php 11 months ago Ajax.php 1 year ago Announcements.php 1 year ago Assets.php 11 months ago Backend_Page_Trait.php 1 year ago BaseController.php 1 year ago Config.php 11 months ago Container.php 11 months ago Course.php 10 months ago Course_Embed.php 3 years ago Course_Filter.php 1 year ago Course_List.php 10 months ago Course_Settings_Tabs.php 1 year ago Course_Widget.php 1 year ago Custom_Validation.php 3 years ago Dashboard.php 1 year ago Earnings.php 1 year ago FormHandler.php 2 years ago Frontend.php 1 year ago Gutenberg.php 1 year ago Icon.php 10 months ago Input.php 1 year ago Instructor.php 1 year ago Instructors_List.php 11 months ago Lesson.php 10 months ago Options_V2.php 11 months ago Permalink.php 2 years ago Post_types.php 1 year ago Private_Course_Access.php 1 year ago Q_And_A.php 10 months ago Question_Answers_List.php 11 months ago Quiz.php 10 months ago QuizBuilder.php 11 months ago Quiz_Attempts_List.php 11 months ago RestAPI.php 2 years ago Reviews.php 11 months ago Rewrite_Rules.php 2 years ago Shortcode.php 1 year ago Singleton.php 1 year ago Student.php 1 year ago Students_List.php 1 year ago Taxonomies.php 1 year ago Template.php 11 months ago Theme_Compatibility.php 3 years ago Tools.php 1 year ago Tools_V2.php 1 year ago Tutor.php 10 months ago TutorEDD.php 1 year ago Tutor_Base.php 2 years ago Tutor_Setup.php 1 year ago Upgrader.php 10 months ago User.php 1 year ago Utils.php 10 months ago Video_Stream.php 3 years ago WhatsNew.php 2 years ago Withdraw.php 1 year ago Withdraw_Requests_List.php 11 months ago WooCommerce.php 11 months ago
TutorEDD.php
208 lines
1 <?php
2 /**
3 * Integrate EDD
4 *
5 * @package Tutor\PaymentIntegration
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 1.0.0
9 */
10
11 namespace TUTOR;
12
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Manage EDD integration
19 *
20 * @since 1.0.0
21 */
22 class TutorEDD extends Tutor_Base {
23
24 /**
25 * Register hooks
26 *
27 * @since 1.0.0
28 */
29 public function __construct() {
30 parent::__construct();
31 // Add Tutor Option.
32 add_filter( 'tutor_monetization_options', array( $this, 'tutor_monetization_options' ) );
33
34 $monetize_by = tutils()->get_option( 'monetize_by' );
35 if ( 'edd' !== $monetize_by ) {
36 return;
37 }
38
39 add_action( 'save_post_' . $this->course_post_type, array( $this, 'save_course_meta' ) );
40
41 /**
42 * Is Course Purchasable
43 */
44 add_filter( 'is_course_purchasable', array( $this, 'is_course_purchasable' ), 10, 2 );
45 add_filter( 'get_tutor_course_price', array( $this, 'get_tutor_course_price' ), 10, 2 );
46 add_filter( 'tutor_course_sell_by', array( $this, 'tutor_course_sell_by' ) );
47
48 add_action( 'edd_update_payment_status', array( $this, 'edd_update_payment_status' ), 10, 3 );
49 }
50
51 /**
52 * Add Option for tutor
53 *
54 * @since 1.0.0
55 *
56 * @param array $attr option attrs.
57 *
58 * @return mixed
59 */
60 public function add_options( $attr ) {
61 $attr['tutor_edd'] = array(
62 'label' => __( 'EDD', 'tutor' ),
63
64 'sections' => array(
65 'general' => array(
66 'label' => __( 'General', 'tutor' ),
67 'desc' => __( 'Tutor Course Attachments Settings', 'tutor' ),
68 'fields' => array(
69 'enable_tutor_edd' => array(
70 'type' => 'checkbox',
71 'label' => __( 'Enable EDD', 'tutor' ),
72 'desc' => __( 'This will enable sell your product via EDD', 'tutor' ),
73 ),
74 ),
75 ),
76 ),
77 );
78 return $attr;
79 }
80
81 /**
82 * Returning monetization options
83 *
84 * @since 1.3.5
85 *
86 * @param array $arr monetization attrs.
87 *
88 * @return array
89 */
90 public function tutor_monetization_options( $arr ) {
91 $has_edd = tutils()->has_edd();
92 if ( $has_edd ) {
93 $arr['edd'] = __( 'Easy Digital Downloads', 'tutor' );
94 }
95 return $arr;
96 }
97
98 /**
99 * Save course meta
100 *
101 * @since 1.0.0
102 *
103 * @param int $post_ID post id.
104 *
105 * @return void
106 */
107 public function save_course_meta( $post_ID ) {
108
109 $product_id = Input::post( '_tutor_course_product_id', '' );
110
111 if ( '-1' !== $product_id ) {
112 $product_id = (int) $product_id;
113 if ( $product_id ) {
114 update_post_meta( $post_ID, '_tutor_course_product_id', $product_id );
115 update_post_meta( $product_id, '_tutor_product', 'yes' );
116 }
117 } else {
118 delete_post_meta( $post_ID, '_tutor_course_product_id' );
119 }
120
121 do_action( 'save_tutor_course', $post_ID, get_post( $post_ID ) );
122 }
123
124 /**
125 * Check if course is purchase able
126 *
127 * @param bool $bool default value.
128 * @param int $course_id course id.
129 *
130 * @return boolean
131 */
132 public function is_course_purchasable( $bool, $course_id ) {
133 if ( ! tutor_utils()->has_edd() ) {
134 return false;
135 }
136
137 $course_id = tutor_utils()->get_post_id( $course_id );
138 $price_type = tutor_utils()->price_type( $course_id );
139 $has_product_id = tutor_utils()->get_course_product_id( $course_id );
140
141 if ( Course::PRICE_TYPE_PAID === $price_type && $has_product_id ) {
142 return true;
143 }
144
145 return false;
146 }
147
148 /**
149 * Get course price
150 *
151 * @param string $price course price.
152 * @param int $course_id course id.
153 *
154 * @return mixed
155 */
156 public function get_tutor_course_price( $price, $course_id ) {
157 $product_id = tutor_utils()->get_course_product_id( $course_id );
158 if ( tutils()->has_edd() ) {
159 return edd_price( $product_id, false );
160 }
161 }
162
163 /**
164 * Course sell by
165 *
166 * @since 1.0.0
167 *
168 * @return string
169 */
170 public function tutor_course_sell_by() {
171 return 'edd';
172 }
173
174 /**
175 * Update payment status
176 *
177 * @param int $payment_id payment id.
178 * @param string $new_status payment's new status.
179 * @param string $old_status payment's old status.
180 *
181 * @return void
182 */
183 public function edd_update_payment_status( $payment_id, $new_status, $old_status ) {
184 if ( 'complete' !== $new_status ) {
185 return;
186 }
187
188 $payment = new \EDD_Payment( $payment_id );
189 $cart_details = $payment->cart_details;
190 $user_id = $payment->user_info['id'];
191
192 if ( is_array( $cart_details ) ) {
193 foreach ( $cart_details as $cart_index => $download ) {
194
195 $if_has_course = tutor_utils()->product_belongs_with_course( $download['id'] );
196 if ( $if_has_course ) {
197 $course_id = $if_has_course->post_id;
198 $has_any_enrolled = tutor_utils()->has_any_enrolled( $course_id, $user_id );
199 if ( ! $has_any_enrolled ) {
200 tutor_utils()->do_enroll( $course_id, $payment_id, $user_id );
201 }
202 }
203 }
204 tutor_utils()->complete_course_enroll( $payment_id );
205 }
206 }
207 }
208