PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.8
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.8
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
← All changes | inc/Services/UserService.php +62 -0 4.4.04.4.8 View file →
@@ -2,12 +2,14 @@
2 2
3 3 namespace LearnPress\Services;
4 4
5 5 use Exception;
6 +use LearnPress\Helpers\Config;
6 7 use LearnPress\Helpers\Singleton;
7 8 use LearnPress\Models\UserModel;
8 9 use Throwable;
9 10 use WP_Error;
11 +use WP_Role;
10 12 use WP_User;
11 13
12 14
13 15 /**
@@ -166,6 +168,66 @@
166 168 return false;
167 169 }
168 170
169 171 return new UserModel( $wp_user->data );
172 + }
173 +
174 + /**
175 + * Set capabilities for roles.
176 + *
177 + * @param string $item_type Ex: "lp_course", "lp_lesson", "lp_assignment", "lp_h5p"
178 + * @return void
179 + * @since 4.4.2
180 + * @version 1.0.0
181 + */
182 + public function add_capabilities_for_roles( string $item_type ) {
183 + $role_capabilities = Config::instance()->get( 'user-roles-caps' );
184 + foreach ( $role_capabilities as $role_key => $role_data ) {
185 + $role_label = $role_data['label'] ?? '';
186 + $prefix_caps = $role_data['prefix_capabilities'] ?? [];
187 + $role = get_role( $role_key );
188 + if ( $role_key !== UserModel::ROLE_ADMINISTRATOR
189 + && ! $role instanceof WP_Role ) {
190 + add_role( $role_key, $role_label );
191 + $role = get_role( $role_key );
192 + }
193 +
194 + if ( $role instanceof WP_Role ) {
195 + foreach ( $prefix_caps as $prefix_cap ) {
196 + // Example: "publish_lp_courses", "edit_lp_courses",...
197 + $cap = "{$prefix_cap}_{$item_type}s";
198 + if ( ! $role->has_cap( $cap ) ) {
199 + $role->add_cap( $cap );
200 + }
201 + }
202 + }
203 + }
204 + }
205 +
206 + /**
207 + * Create or get CSRF token to verify
208 + *
209 + * @return mixed|string|null
210 + * @since 4.4.6
211 + * @version 1.0.0
212 + */
213 + public static function csrf_token() {
214 + static $token = null;
215 + $cookie_name = 'lp_csrf_token';
216 +
217 + if ( null !== $token ) {
218 + return $token;
219 + }
220 +
221 + if ( ! empty( $_COOKIE[ $cookie_name ] ) ) {
222 + $token = sanitize_text_field( wp_unslash( $_COOKIE[ $cookie_name ] ) );
223 + return $token;
224 + }
225 +
226 + $token = wp_generate_password( 20, false );
227 + if ( ! headers_sent() ) {
228 + learn_press_setcookie( $cookie_name, $token, time() + DAY_IN_SECONDS );
229 + }
230 +
231 + return $token;
170 232 }
171 233 }