PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.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 / BuddyBoss / BuddyBossService.php
surecart / app / src / Integrations / BuddyBoss Last commit date
BuddyBossService.php 1 year ago BuddyBossServiceProvider.php 3 years ago
BuddyBossService.php
193 lines
1 <?php
2
3 namespace SureCart\Integrations\BuddyBoss;
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 BuddyBossService 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/buddyboss-platform';
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/buddyboss.svg' );
38 }
39
40 /**
41 * Get the slug for the integration.
42 *
43 * @return string
44 */
45 public function getLabel() {
46 return __( 'BuddyBoss Group', 'surecart' );
47 }
48
49 /**
50 * Get the slug for the integration.
51 *
52 * @return string
53 */
54 public function getItemLabel() {
55 return __( 'Group 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 BuddyBoss Group.', 'surecart' );
65 }
66
67 /**
68 * Is this enabled?
69 *
70 * @return boolean
71 */
72 public function enabled() {
73 return defined( 'BP_PLATFORM_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 if ( ! function_exists( '\groups_get_groups' ) ) {
86 return [];
87 }
88
89 $groups = \groups_get_groups(
90 [
91 'search_terms' => $search,
92 'show_hidden' => true,
93 ]
94 );
95
96 if ( ( isset( $groups ) ) && ( ! empty( $groups ) ) ) {
97 $items = array_map(
98 function( $group ) {
99 return (object) [
100 'id' => $group->id,
101 'label' => $group->name,
102 ];
103 },
104 $groups['groups']
105 );
106 }
107
108 return $items;
109 }
110
111 /**
112 * Get the individual item.
113 *
114 * @param string $id Id for the record.
115 *
116 * @return object The item for the integration.
117 */
118 public function getItem( $id ) {
119 if ( ! function_exists( '\groups_get_group' ) ) {
120 return (object) [];
121 }
122
123 $group = \groups_get_group( $id );
124 if ( ! $group ) {
125 return (object) [];
126 }
127
128 return (object) [
129 'id' => $id,
130 'provider_label' => __( 'BuddyBoss Group', 'surecart' ),
131 'label' => $group->name,
132 ];
133 }
134
135 /**
136 * Enable Access to the group.
137 *
138 * @param \SureCart\Models\Integration $integration The integrations.
139 * @param \WP_User $wp_user The user.
140 *
141 * @return boolean|void Returns true if the user group access updation was successful otherwise false.
142 */
143 public function onPurchaseCreated( $integration, $wp_user ) {
144 $this->updateAccess( $integration->integration_id, $wp_user, true );
145 }
146
147 /**
148 * Enable access when purchase is invoked
149 *
150 * @param \SureCart\Models\Integration $integration The integrations.
151 * @param \WP_User $wp_user The user.
152 *
153 * @return boolean|void Returns true if the user group access updation was successful otherwise false.
154 */
155 public function onPurchaseInvoked( $integration, $wp_user ) {
156 $this->onPurchaseCreated( $integration, $wp_user );
157 }
158
159 /**
160 * Remove a user role.
161 *
162 * @param \SureCart\Models\Integration $integration The integrations.
163 * @param \WP_User $wp_user The user.
164 *
165 * @return boolean|void Returns true if the user group access updation was successful otherwise false.
166 */
167 public function onPurchaseRevoked( $integration, $wp_user ) {
168 $this->updateAccess( $integration->integration_id, $wp_user, false );
169 }
170
171 /**
172 * Update access to a group.
173 *
174 * @param integer $group_id The group id.
175 * @param \WP_User $wp_user The user.
176 * @param boolean $add True to add the user to the group, false to remove.
177 *
178 * @return boolean|void Returns true if the user group access updation was successful otherwise false.
179 */
180 public function updateAccess( $group_id, $wp_user, $add = true ) {
181 // we don't have BuddyBoss installed.
182 if ( ! defined( 'BP_PLATFORM_VERSION' ) ) {
183 return;
184 }
185 // update group access.
186 if ( $add ) {
187 return \groups_join_group( $group_id, $wp_user->ID, 'SureCart' );
188 } else {
189 return \groups_leave_group( $group_id, $wp_user->ID, 'SureCart' );
190 }
191 }
192 }
193