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 / updates / learnpress-upgrade-5.php

learnpress-upgrade-5.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.8, at inc/updates/learnpress-upgrade-5.php

167 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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();
167