PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.0
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 / LearnDashGroup / LearnDashGroupService.php
surecart / app / src / Integrations / LearnDashGroup Last commit date
LearnDashGroupService.php 3 years ago LearnDashGroupServiceProvider.php 3 years ago
LearnDashGroupService.php
181 lines
1 <?php
2
3 namespace SureCart\Integrations\LearnDashGroup;
4
5 use SureCart\Integrations\Contracts\IntegrationInterface;
6 use SureCart\Integrations\Contracts\PurchaseSyncInterface;
7 use SureCart\Integrations\IntegrationService;
8
9 /**
10 * Controls the LearnDash Group integration.
11 */
12 class LearnDashGroupService 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-groups';
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 logo 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 label for the integration.
42 *
43 * @return string
44 */
45 public function getLabel() {
46 return __( 'LearnDash Groups', 'surecart' );
47 }
48
49 /**
50 * Get the item label for the integration.
51 *
52 * @return string
53 */
54 public function getItemLabel() {
55 return __( 'Group Access', 'surecart' );
56 }
57
58 /**
59 * Get the item help for the integration.
60 *
61 * @return string
62 */
63 public function getItemHelp() {
64 return __( 'Enable access to a LearnDash group.', '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' => 'groups',
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 Group', '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 group.
165 *
166 * @param integer $group_id The group id.
167 * @param \WP_User $wp_user The user.
168 * @param boolean $add True to add the user to the group, false to remove.
169 *
170 * @return boolean|void Returns true if the user group access updation was successful otherwise false.
171 */
172 public function updateAccess( $group_id, $wp_user, $add = true ) {
173 // we don't have learndash installed.
174 if ( ! function_exists( 'ld_update_group_access' ) ) {
175 return;
176 }
177 // update group access.
178 return \ld_update_group_access( $wp_user->ID, $group_id, ! $add );
179 }
180 }
181