PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 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 All 140 releases
← All changes | inc/updates/learnpress-upgrade-5.php +166 -166 4.3.8 → 4.4.9 View file →
@@ -1,166 +1,166 @@
1 -<?php
2 -
3 -use LearnPress\Models\CourseModel;
4 -use LearnPress\Models\CoursePostModel;
5 -use LearnPress\Models\Courses;
6 -
7 -/**
8 - * Class LP_Upgrade_5
9 - *
10 - * Helper class for updating database to version 5
11 - *
12 - * @version 1.0.0
13 - * @since 4.2.6.9
14 - */
15 -class LP_Upgrade_5 extends LP_Handle_Upgrade_Steps {
16 - /**
17 - * @var LP_Upgrade_4
18 - */
19 - protected static $instance = null;
20 -
21 - /**
22 - * Get Instance
23 - *
24 - * @return LP_Upgrade_5
25 - */
26 - public static function get_instance(): self {
27 - if ( null === self::$instance ) {
28 - self::$instance = new self();
29 - }
30 -
31 - return self::$instance;
32 - }
33 -
34 - /**
35 - * LP_Upgrade_5 constructor.
36 - *
37 - * @see sync_table_courses
38 - * @see finish_upgrade
39 - */
40 - protected function __construct() {
41 - $this->version = '5.0.0';
42 - /**
43 - * Name key not > 50 character
44 - */
45 - $this->group_steps = apply_filters(
46 - 'lp/upgrade/5/steps',
47 - array(
48 - 'learnpress_user_items' => new LP_Group_Step(
49 - 'learnpress_user_items',
50 - 'Optimize database courses',
51 - array(
52 - 'sync_table_courses' => new LP_Step(
53 - 'sync_table_courses',
54 - 'Sync table courses',
55 - 'This process sync post type lp_course to table learnpress_courses'
56 - ),
57 - 'finish_upgrade' => new LP_Step(
58 - 'finish_upgrade',
59 - 'Update settings',
60 - 'Update settings'
61 - ),
62 - )
63 - ),
64 - )
65 - );
66 - }
67 -
68 - /**
69 - * Step Create Tables
70 - *
71 - * @param array $data
72 - *
73 - * @return LP_Step
74 - */
75 - protected function sync_table_courses( array $data ): LP_Step {
76 - $response = new LP_Step( __FUNCTION__, 'Sync table courses' );
77 - $limit = 5;
78 - $page = 1;
79 -
80 - try {
81 - if ( empty( $data ) ) {
82 - // Check table learnpress_courses exists.
83 - LP_Install::instance()->create_table_courses();
84 -
85 - $total_row = 0;
86 - $filter = new LP_Course_Filter();
87 - $filter->post_status = [];
88 - $filter->where[] = "AND p.post_status != 'auto-draft'";
89 - $filter->limit = $limit;
90 - Courses::get_courses( $filter, $total_row );
91 - $total_pages = LP_Database::get_total_pages( $limit, $total_row );
92 - } else {
93 - $page = $data['page'];
94 - $total_pages = $data['total_pages'];
95 - }
96 -
97 - // Get courses from table posts.
98 - $filter = new LP_Course_Filter();
99 - $filter->page = $page;
100 - $filter->limit = $limit;
101 - $filter->post_status = [];
102 - $filter->where[] = "AND p.post_status != 'auto-draft'";
103 - $filter->run_query_count = false;
104 - $courses = Courses::get_courses( $filter );
105 - foreach ( $courses as $course_obj ) {
106 - $coursePostModel = new CoursePostModel( $course_obj );
107 - $coursePostModel->get_all_metadata();
108 - $courseModelNew = new CourseModel( $coursePostModel );
109 - $courseModelNew->get_price();
110 - $courseModelNew->save();
111 - $bg = LP_Background_Single_Course::instance();
112 - $bg->data(
113 - array(
114 - 'handle_name' => 'save_post',
115 - 'course_id' => $courseModelNew->get_id(),
116 - 'data' => [],
117 - )
118 - )->dispatch();
119 - }
120 -
121 - if ( $page >= $total_pages ) {
122 - return $this->finish_step( $response, 'Step ' . __FUNCTION__ . ' finished' );
123 - }
124 -
125 - $percent = $filter->page * 100 / $total_pages;
126 - $percent = floatval( number_format( $percent, 2 ) );
127 - $response->percent = $percent;
128 - $response->status = 'success';
129 - $response->data->page = ++ $page;
130 - $response->data->total_pages = $total_pages;
131 - } catch ( Exception $e ) {
132 - $response->message = $this->error_step( $response->name, $e->getMessage() );
133 - }
134 -
135 - return $response;
136 - }
137 -
138 - /**
139 - * Convert Learnpress Settings
140 - * 1. Courses thumbnail dimensions convert.
141 - * 2. Profile thumbnail dimensions convert.
142 - * 3. Profile rename dashboard to overview.
143 - * 4. Block course by duration.
144 - * 5. Block course when finished.
145 - * 6. Assessment course by quizzes - Evaluate.
146 - *
147 - * @return LP_Step
148 - */
149 - protected function finish_upgrade(): LP_Step {
150 - $response = new LP_Step( __FUNCTION__, '' );
151 - $lp_db = LP_Database::getInstance();
152 -
153 - try {
154 - // Finish upgrade.
155 - update_option( LP_KEY_DB_VERSION, 5 );
156 - } catch ( Exception $e ) {
157 - $response->message = $this->error_step( $response->name, $e->getMessage() );
158 -
159 - return $response;
160 - }
161 -
162 - return $this->finish_step( $response, __FUNCTION__ . ' finished' );
163 - }
164 -}
165 -
166 -LP_Upgrade_5::get_instance();
1 +<?php
2 +
3 +use LearnPress\Models\CourseModel;
4 +use LearnPress\Models\CoursePostModel;
5 +use LearnPress\Models\Courses;
6 +
7 +/**
8 + * Class LP_Upgrade_5
9 + *
10 + * Helper class for updating database to version 5
11 + *
12 + * @version 1.0.0
13 + * @since 4.2.6.9
14 + */
15 +class LP_Upgrade_5 extends LP_Handle_Upgrade_Steps {
16 + /**
17 + * @var LP_Upgrade_4
18 + */
19 + protected static $instance = null;
20 +
21 + /**
22 + * Get Instance
23 + *
24 + * @return LP_Upgrade_5
25 + */
26 + public static function get_instance(): self {
27 + if ( null === self::$instance ) {
28 + self::$instance = new self();
29 + }
30 +
31 + return self::$instance;
32 + }
33 +
34 + /**
35 + * LP_Upgrade_5 constructor.
36 + *
37 + * @see sync_table_courses
38 + * @see finish_upgrade
39 + */
40 + protected function __construct() {
41 + $this->version = '5.0.0';
42 + /**
43 + * Name key not > 50 character
44 + */
45 + $this->group_steps = apply_filters(
46 + 'lp/upgrade/5/steps',
47 + array(
48 + 'learnpress_user_items' => new LP_Group_Step(
49 + 'learnpress_user_items',
50 + 'Optimize database courses',
51 + array(
52 + 'sync_table_courses' => new LP_Step(
53 + 'sync_table_courses',
54 + 'Sync table courses',
55 + 'This process sync post type lp_course to table learnpress_courses'
56 + ),
57 + 'finish_upgrade' => new LP_Step(
58 + 'finish_upgrade',
59 + 'Update settings',
60 + 'Update settings'
61 + ),
62 + )
63 + ),
64 + )
65 + );
66 + }
67 +
68 + /**
69 + * Step Create Tables
70 + *
71 + * @param array $data
72 + *
73 + * @return LP_Step
74 + */
75 + protected function sync_table_courses( array $data ): LP_Step {
76 + $response = new LP_Step( __FUNCTION__, 'Sync table courses' );
77 + $limit = 5;
78 + $page = 1;
79 +
80 + try {
81 + if ( empty( $data ) ) {
82 + // Check table learnpress_courses exists.
83 + LP_Install::instance()->create_table_courses();
84 +
85 + $total_row = 0;
86 + $filter = new LP_Course_Filter();
87 + $filter->post_status = [];
88 + $filter->where[] = "AND p.post_status != 'auto-draft'";
89 + $filter->limit = $limit;
90 + Courses::get_courses( $filter, $total_row );
91 + $total_pages = LP_Database::get_total_pages( $limit, $total_row );
92 + } else {
93 + $page = $data['page'];
94 + $total_pages = $data['total_pages'];
95 + }
96 +
97 + // Get courses from table posts.
98 + $filter = new LP_Course_Filter();
99 + $filter->page = $page;
100 + $filter->limit = $limit;
101 + $filter->post_status = [];
102 + $filter->where[] = "AND p.post_status != 'auto-draft'";
103 + $filter->run_query_count = false;
104 + $courses = Courses::get_courses( $filter );
105 + foreach ( $courses as $course_obj ) {
106 + $coursePostModel = new CoursePostModel( $course_obj );
107 + $coursePostModel->get_all_metadata();
108 + $courseModelNew = new CourseModel( $coursePostModel );
109 + $courseModelNew->get_price();
110 + $courseModelNew->save();
111 + $bg = LP_Background_Single_Course::instance();
112 + $bg->data(
113 + array(
114 + 'handle_name' => 'save_post',
115 + 'course_id' => $courseModelNew->get_id(),
116 + 'data' => [],
117 + )
118 + )->dispatch();
119 + }
120 +
121 + if ( $page >= $total_pages ) {
122 + return $this->finish_step( $response, 'Step ' . __FUNCTION__ . ' finished' );
123 + }
124 +
125 + $percent = $filter->page * 100 / $total_pages;
126 + $percent = floatval( number_format( $percent, 2 ) );
127 + $response->percent = $percent;
128 + $response->status = 'success';
129 + $response->data->page = ++ $page;
130 + $response->data->total_pages = $total_pages;
131 + } catch ( Exception $e ) {
132 + $response->message = $this->error_step( $response->name, $e->getMessage() );
133 + }
134 +
135 + return $response;
136 + }
137 +
138 + /**
139 + * Convert Learnpress Settings
140 + * 1. Courses thumbnail dimensions convert.
141 + * 2. Profile thumbnail dimensions convert.
142 + * 3. Profile rename dashboard to overview.
143 + * 4. Block course by duration.
144 + * 5. Block course when finished.
145 + * 6. Assessment course by quizzes - Evaluate.
146 + *
147 + * @return LP_Step
148 + */
149 + protected function finish_upgrade(): LP_Step {
150 + $response = new LP_Step( __FUNCTION__, '' );
151 + $lp_db = LP_Database::getInstance();
152 +
153 + try {
154 + // Finish upgrade.
155 + update_option( LP_KEY_DB_VERSION, 5 );
156 + } catch ( Exception $e ) {
157 + $response->message = $this->error_step( $response->name, $e->getMessage() );
158 +
159 + return $response;
160 + }
161 +
162 + return $this->finish_step( $response, __FUNCTION__ . ' finished' );
163 + }
164 +}
165 +
166 +LP_Upgrade_5::get_instance();