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
learnpress / inc / Ajax / SampleDataAJAX.php

SampleDataAJAX.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.8, at inc/Ajax/SampleDataAJAX.php

149 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class SampleDataAJAX
4 *
5 * Handle install/uninstall sample data via LearnPress AJAX dispatcher.
6 *
7 * @since 4.4.5
8 * @version 1.0.0
9 */
10
11 namespace LearnPress\Ajax;
12
13 use Exception;
14 use LearnPress;
15 use LearnPress\Helpers\Response;
16 use LearnPress\Helpers\Template;
17 use LearnPress\Models\UserModel;
18 use LearnPress\Services\SampleDataService;
19 use LP_Helper;
20 use LP_Request;
21 use Throwable;
22
23 defined( 'ABSPATH' ) || exit;
24
25 /**
26 * Class SampleDataAJAX
27 */
28 class SampleDataAJAX extends AbstractAjax {
29 /**
30 * Install sample course data via AJAX.
31 *
32 * @return void
33 */
34 public function lp_install_sample_data() {
35 $response = new Response();
36 ini_set( 'max_execution_time', 0 );
37
38 try {
39 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
40 throw new Exception(
41 esc_html__(
42 'You do not have permission to install sample data.',
43 'learnpress'
44 )
45 );
46 }
47
48 $params = LP_Helper::json_decode( LP_Request::get_param( 'data' ), true );
49 if ( ! is_array( $params ) ) {
50 throw new Exception( esc_html__( 'Invalid request.', 'learnpress' ) );
51 }
52
53 $service = SampleDataService::instance();
54
55 // Convert string to array.
56 $items_range = [
57 'section_range',
58 'item_range',
59 'question_range',
60 'answer_range',
61 ];
62
63 foreach ( $items_range as $item_range ) {
64 $params[ $item_range ] = $params[ $item_range ] ?? '';
65 if ( ! empty( $params[ $item_range ] ) ) {
66 $params[ $item_range ] = explode( ',', $params[ $item_range ] );
67 }
68 }
69
70 $coursePostModel = $service->install( $params );
71
72 $response->status = Response::STATUS_SUCCESS;
73 $response->message = sprintf(
74 __( 'The Course "%s" has been created.', 'learnpress' ),
75 $coursePostModel->get_the_title()
76 );
77
78 $message_html = sprintf(
79 __( 'The course "%1$s" has been created %2$s | %3$s', 'learnpress' ),
80 $coursePostModel->get_the_title(),
81 sprintf(
82 '<a href="%s" target="_blank">%s</a>',
83 $coursePostModel->get_permalink(),
84 __( 'View', 'learnpress' )
85 ),
86 sprintf(
87 '<a href="%s" target="_blank">%s</a>',
88 $coursePostModel->get_edit_link(),
89 __( 'Edit', 'learnpress' )
90 ),
91 );
92 $response->data->html = Template::print_message(
93 $message_html,
94 Response::STATUS_SUCCESS,
95 false
96 );
97 } catch ( Throwable $ex ) {
98 $response->message = $ex->getMessage();
99 $response->data->html = Template::print_message(
100 __( 'The course data created failed!', 'learnpress' ),
101 Response::STATUS_ERROR,
102 false
103 );
104 }
105
106 ini_set( 'max_execution_time', LearnPress::$time_limit_default_of_sever );
107
108 wp_send_json( $response );
109 }
110
111 /**
112 * Uninstall sample data via AJAX.
113 *
114 * @return void
115 */
116 public function lp_uninstall_sample_data() {
117 $response = new Response();
118
119 try {
120 set_time_limit( 0 );
121
122 if ( ! current_user_can( UserModel::ROLE_ADMINISTRATOR ) ) {
123 throw new Exception( esc_html__( 'You do not have permission to uninstall sample data.', 'learnpress' ) );
124 }
125
126 SampleDataService::instance()->uninstall();
127
128 $response->status = Response::STATUS_SUCCESS;
129 $response->message = __( 'The sample data was successfully deleted!', 'learnpress' );
130 $response->data->html = Template::print_message(
131 __( 'The sample data was successfully deleted!', 'learnpress' ),
132 Response::STATUS_SUCCESS,
133 false
134 );
135 } catch ( Throwable $ex ) {
136 $response->message = $ex->getMessage();
137 $response->data->html = Template::print_message(
138 __( 'Sample data uninstall failed!', 'learnpress' ),
139 Response::STATUS_ERROR,
140 false
141 );
142 }
143
144 set_time_limit( LearnPress::$time_limit_default_of_sever );
145
146 wp_send_json( $response );
147 }
148 }
149