PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 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.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 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.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / LearnDash / LearnDashService.php
surecart / app / src / Integrations / LearnDash Last commit date
LearnDashService.php 3 years ago LearnDashServiceProvider.php 3 years ago
LearnDashService.php
181 lines
1 <?php
2
3 namespace SureCart\Integrations\LearnDash;
4
5 use SureCart\Integrations\Contracts\IntegrationInterface;
6 use SureCart\Integrations\Contracts\PurchaseSyncInterface;
7 use SureCart\Integrations\IntegrationService;
8
9 /**
10 * Controls the LearnDash integration.
11 */
12 class LearnDashService extends IntegrationService implements IntegrationInterface, PurchaseSyncInterface {
13 /**
14 * Get the slug for the integration.
15 *
16 * @return string
17 */
18 public function getName() {
19 return 'surecart/learndash-course';
20 }
21
22 /**
23 * Get the model for the integration.
24 *
25 * @return string
26 */
27 public function getModel() {
28 return 'product';
29 }
30
31 /**
32 * Get the slug for the integration.
33 *
34 * @return string
35 */
36 public function getLogo() {
37 return esc_url_raw( trailingslashit( plugin_dir_url( SURECART_PLUGIN_FILE ) ) . 'images/integrations/learndash.svg' );
38 }
39
40 /**
41 * Get the slug for the integration.
42 *
43 * @return string
44 */
45 public function getLabel() {
46 return __( 'LearnDash Course', 'surecart' );
47 }
48
49 /**
50 * Get the slug for the integration.
51 *
52 * @return string
53 */
54 public function getItemLabel() {
55 return __( 'Course Access', 'surecart' );
56 }
57
58 /**
59 * Get the slug for the integration.
60 *
61 * @return string
62 */
63 public function getItemHelp() {
64 return __( 'Enable access to a LearnDash course.', 'surecart' );
65 }
66
67 /**
68 * Is this enabled?
69 *
70 * @return boolean
71 */
72 public function enabled() {
73 return defined( 'LEARNDASH_VERSION' );
74 }
75
76 /**
77 * Get item listing for the integration.
78 *
79 * @param array $items The integration items.
80 * @param string $search The search term.
81 *
82 * @return array The items for the integration.
83 */
84 public function getItems( $items = [], $search = '' ) {
85 $course_query = new \WP_Query(
86 [
87 'post_type' => 'sfwd-courses',
88 's' => $search,
89 'per_page' => 10,
90 ]
91 );
92
93 if ( ( isset( $course_query->posts ) ) && ( ! empty( $course_query->posts ) ) ) {
94 $items = array_map(
95 function( $post ) {
96 return (object) [
97 'id' => $post->ID,
98 'label' => $post->post_title,
99 ];
100 },
101 $course_query->posts
102 );
103 }
104
105 return $items;
106 }
107
108 /**
109 * Get the individual item.
110 *
111 * @param string $id Id for the record.
112 *
113 * @return object The item for the integration.
114 */
115 public function getItem( $id ) {
116 $course = get_post( $id );
117 if ( ! $course ) {
118 return [];
119 }
120 return (object) [
121 'id' => $id,
122 'provider_label' => __( 'LearnDash Course', 'surecart' ),
123 'label' => $course->post_title,
124 ];
125 }
126
127 /**
128 * Enable Access to the course.
129 *
130 * @param \SureCart\Models\Integration $integration The integrations.
131 * @param \WP_User $wp_user The user.
132 *
133 * @return boolean|void Returns true if the user course access updation was successful otherwise false.
134 */
135 public function onPurchaseCreated( $integration, $wp_user ) {
136 $this->updateAccess( $integration->integration_id, $wp_user, true );
137 }
138
139 /**
140 * Enable access when purchase is invoked
141 *
142 * @param \SureCart\Models\Integration $integration The integrations.
143 * @param \WP_User $wp_user The user.
144 *
145 * @return boolean|void Returns true if the user course access updation was successful otherwise false.
146 */
147 public function onPurchaseInvoked( $integration, $wp_user ) {
148 $this->onPurchaseCreated( $integration, $wp_user );
149 }
150
151 /**
152 * Remove a user role.
153 *
154 * @param \SureCart\Models\Integration $integration The integrations.
155 * @param \WP_User $wp_user The user.
156 *
157 * @return boolean|void Returns true if the user course access updation was successful otherwise false.
158 */
159 public function onPurchaseRevoked( $integration, $wp_user ) {
160 $this->updateAccess( $integration->integration_id, $wp_user, false );
161 }
162
163 /**
164 * Update access to a course.
165 *
166 * @param integer $course_id The course id.
167 * @param \WP_User $wp_user The user.
168 * @param boolean $add True to add the user to the course, false to remove.
169 *
170 * @return boolean|void Returns true if the user course access updation was successful otherwise false.
171 */
172 public function updateAccess( $course_id, $wp_user, $add = true ) {
173 // we don't have learndash installed.
174 if ( ! function_exists( 'ld_update_course_access' ) ) {
175 return;
176 }
177 // update course access.
178 return \ld_update_course_access( $wp_user->ID, $course_id, ! $add );
179 }
180 }
181