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-4.php +137 -69 4.1.6.9.1 → 4.4.9 View file →
@@ -35,8 +35,9 @@
35 35 * @see clone_tables
36 36 * @see modify_tb_lp_user_items
37 37 * @see remove_course_status_cancelled
38 38 * @see convert_result_graduation_item
39 + * @see convert_result_items
39 40 * @see convert_result_questions
40 41 * @see convert_retake_quiz
41 42 * @see create_col_extra_value_on_tb_lp_user_itemmeta
42 43 * @see convert_meta_value_longtext
@@ -87,8 +88,13 @@
87 88 'learnpress_user_item_results'
88 89 ),
89 90 'convert_result_graduation_item' => new LP_Step(
90 91 'convert_result_graduation_item',
92 + 'Convert Data Graduation items of courses',
93 + ''
94 + ),
95 + 'convert_result_items' => new LP_Step(
96 + 'convert_result_items',
91 97 'Convert Data Result courses, items\' courses',
92 98 ''
93 99 ),
94 100 'convert_result_questions' => new LP_Step(
@@ -488,14 +494,15 @@
488 494 *
489 495 * @return LP_Step
490 496 */
491 497 protected function convert_result_graduation_item( array $data ): LP_Step {
492 - $response = new LP_Step( __FUNCTION__, '' );
493 - $lp_db = LP_Database::getInstance();
494 - $page = 0;
495 - $offset = 0;
496 - $limit = 100;
497 - $total_row = 0;
498 + $response = new LP_Step( __FUNCTION__, '' );
499 + $lp_db = LP_Database::getInstance();
500 + $page = 0;
501 + $offset = 0;
502 + $limit = 100;
503 + $total_row = 0;
504 + $suffix_table_bk = '_bk';
498 505
499 506 try {
500 507 if ( empty( $data ) ) {
501 508 // Check total rows.
@@ -500,9 +507,9 @@
500 507 if ( empty( $data ) ) {
501 508 // Check total rows.
502 509 $query = $lp_db->wpdb->prepare(
503 510 "
504 - SELECT COUNT(learnpress_user_item_id) FROM $lp_db->tb_lp_user_itemmeta
511 + SELECT COUNT(learnpress_user_item_id) FROM $lp_db->tb_lp_user_itemmeta{$suffix_table_bk}
505 512 WHERE meta_key = %s
506 513 ",
507 514 'grade'
508 515 );
@@ -517,9 +524,9 @@
517 524 // Select .
518 525 $query = $lp_db->wpdb->prepare(
519 526 "
520 527 SELECT learnpress_user_item_id AS user_item_id, meta_value AS grade
521 - FROM $lp_db->tb_lp_user_itemmeta
528 + FROM $lp_db->tb_lp_user_itemmeta{$suffix_table_bk}
522 529 WHERE meta_key = %s
523 530 LIMIT %d, %d
524 531 ",
525 532 'grade',
@@ -527,14 +534,8 @@
527 534 $limit
528 535 );
529 536 $user_item_grades = $lp_db->wpdb->get_results( $query );
530 537
531 - $percent = LP_Helper::progress_percent( $offset, $limit, $total_row );
532 -
533 - if ( empty( $user_item_grades ) || 100 === $percent ) {
534 - return $this->finish_step( $response, __FUNCTION__ . ' finished' );
535 - }
536 -
537 538 /**
538 539 * Copy value of meta_key "grade" table learnpress_user_itemmeta LP3
539 540 * to column "graduation" LP4 table learnpress_user_items
540 541 */
@@ -543,9 +544,9 @@
543 544 "
544 545 UPDATE $lp_db->tb_lp_user_items
545 546 SET graduation = %s
546 547 WHERE user_item_id = %d;
547 - ",
548 + ",
548 549 $user_item_grade->grade,
549 550 $user_item_grade->user_item_id
550 551 );
551 552
@@ -552,8 +553,31 @@
552 553 $lp_db->wpdb->query( $query );
553 554 $lp_db->check_execute_has_error();
554 555 }
555 556
557 + $percent = LP_Helper::progress_percent( $offset, $limit, $total_row );
558 + if ( empty( $user_item_grades ) || 100 == $percent ) {
559 + // Update graduation for case grade wrong (null or lesson completed but still 'in-progress').
560 + $lp_db->wpdb->query(
561 + "
562 + UPDATE $lp_db->tb_lp_user_items
563 + SET graduation = 'passed'
564 + WHERE status = 'completed'
565 + AND item_type = 'lp_lesson'
566 + "
567 + );
568 + // Update graduation for case status empty and grade null
569 + $lp_db->wpdb->query(
570 + "
571 + UPDATE $lp_db->tb_lp_user_items
572 + SET graduation = 'in-progress'
573 + WHERE (status = '' OR status = 'enrolled')
574 + "
575 + );
576 +
577 + return $this->finish_step( $response, __FUNCTION__ . ' finished' );
578 + }
579 +
556 580 $response->status = 'success';
557 581 $response->message = 'Insert success';
558 582 $response->percent = $percent;
559 583 $response->data->p = ++ $page;
@@ -565,8 +589,100 @@
565 589 return $response;
566 590 }
567 591
568 592 /**
593 + * Convert result items (lesson).
594 + *
595 + * @param array $data
596 + *
597 + * @return LP_Step
598 + */
599 + protected function convert_result_items( array $data ): LP_Step {
600 + $response = new LP_Step( __FUNCTION__, '' );
601 + $lp_db = LP_Database::getInstance();
602 + $page = 0;
603 + $offset = 0;
604 + $limit = 100;
605 + $total_row = 0;
606 +
607 + try {
608 + if ( empty( $data ) ) {
609 + // Check total rows.
610 + $query = "
611 + SELECT COUNT(learnpress_user_item_id) FROM $lp_db->tb_lp_user_itemmeta
612 + WHERE meta_key LIKE '%course_results_evaluate%'
613 + ";
614 +
615 + $total_row = $response->data->total_rows = (int) $lp_db->wpdb->get_var( $query );
616 + } else {
617 + $page = $data['p'];
618 + $offset = $limit * $page;
619 + $total_row = $data['total_rows'];
620 + }
621 +
622 + // Convert rows.
623 + $query = $lp_db->wpdb->prepare(
624 + "
625 + SELECT learnpress_user_item_id AS user_item_id, meta_value AS result
626 + FROM $lp_db->tb_lp_user_itemmeta
627 + WHERE meta_key LIKE '%course_results_evaluate%'
628 + LIMIT %d offset %d
629 + ",
630 + $limit,
631 + $offset
632 + );
633 +
634 + $result_lessons = $lp_db->wpdb->get_results( $query );
635 + if ( 0 === count( $result_lessons ) ) {
636 + return $this->finish_step( $response, 'Convert result question success' );
637 + }
638 +
639 + foreach ( $result_lessons as $result_lesson_obj ) {
640 + $result_lesson = maybe_unserialize( ( $result_lesson_obj->result ) );
641 + if ( ! $result_lesson ) {
642 + continue;
643 + }
644 +
645 + $result_json = json_encode( $result_lesson );
646 +
647 + // Check exists user_item_id value on table learnpress_user_item_results.
648 + $check = $lp_db->wpdb->get_var(
649 + $lp_db->wpdb->prepare(
650 + "
651 + SELECT user_item_id FROM $lp_db->tb_lp_user_item_results
652 + WHERE user_item_id = %d
653 + ",
654 + $result_lesson_obj->user_item_id
655 + )
656 + );
657 +
658 + if ( empty( $check ) ) {
659 + $lp_db->wpdb->insert(
660 + $lp_db->tb_lp_user_item_results,
661 + array(
662 + 'result' => $result_json,
663 + 'user_item_id' => $result_lesson_obj->user_item_id,
664 + )
665 + );
666 + $lp_db->check_execute_has_error();
667 + }
668 + }
669 +
670 + $percent = LP_Helper::progress_percent( $offset, $limit, $total_row );
671 +
672 + $response->status = 'success';
673 + $response->message = 'Insert lesson result success';
674 + $response->percent = $percent;
675 + $response->data->p = ++ $page;
676 + $response->data->total_rows = $total_row;
677 + } catch ( Throwable $e ) {
678 + $response->message = $this->error_step( $response->name, $e->getMessage() );
679 + }
680 +
681 + return $response;
682 + }
683 +
684 + /**
569 685 * Convert value of meta_key "_question_answers" table learnpress_user_itemmeta LP3 to column result LP4 table learnpress_user_item_results
570 686 *
571 687 * @param array $data .
572 688 *
@@ -1137,62 +1253,20 @@
1137 1253 protected function convert_question_type_fill_in_blank( array $data = array() ): LP_Step {
1138 1254 $response = new LP_Step( __FUNCTION__, '' );
1139 1255 $lp_db = LP_Database::getInstance();
1140 1256 $wpdb = $lp_db->wpdb;
1141 - $page = 0;
1142 - $offset = 0;
1143 - $limit = 100;
1144 - $total_row = 0;
1145 1257
1146 1258 try {
1147 - if ( empty( $data ) ) {
1148 - // Check total rows.
1149 - $query = $lp_db->wpdb->prepare(
1150 - "
1151 - SELECT COUNT(meta_id) FROM $lp_db->tb_postmeta
1152 - WHERE meta_key = %s
1153 - AND meta_value = %s
1154 - ",
1155 - 'lp_type',
1156 - 'fill_in_blank'
1157 - );
1158 -
1159 - $total_row = $response->data->total_rows = (int) $lp_db->wpdb->get_var( $query );
1160 - } else {
1161 - $page = $data['p'];
1162 - $offset = $limit * $page;
1163 - $total_row = $data['total_rows'];
1164 - }
1165 -
1166 - $query_get_question_ids = $wpdb->prepare(
1167 - "
1168 - SELECT meta_id
1169 - FROM {$lp_db->tb_postmeta}
1170 - WHERE meta_key = %s
1171 - AND meta_value = %s
1172 - LIMIT %d, %d
1173 - ",
1174 - '_lp_type',
1175 - 'fill_in_blank',
1176 - $offset,
1177 - $limit
1178 - );
1179 -
1180 - $question_ids = $lp_db->wpdb->get_col( $query_get_question_ids );
1181 -
1182 - if ( empty( $question_ids ) ) {
1183 - return $this->finish_step( $response, __FUNCTION__ . ' finished' );
1184 - }
1185 -
1186 - $question_ids_str = implode( ',', $question_ids );
1187 -
1188 1259 $query = $wpdb->prepare(
1189 1260 "
1190 1261 UPDATE {$lp_db->tb_postmeta}
1191 1262 SET meta_value = %s
1192 - WHERE meta_id IN ($question_ids_str)
1263 + WHERE meta_key = %s
1264 + AND meta_value = %s
1193 1265 ",
1194 - 'fill_in_blanks'
1266 + 'fill_in_blanks',
1267 + '_lp_type',
1268 + 'fill_in_blank'
1195 1269 );
1196 1270 $lp_db->wpdb->query( $query );
1197 1271
1198 1272 if ( $lp_db->wpdb->last_error ) {
@@ -1198,15 +1272,9 @@
1198 1272 if ( $lp_db->wpdb->last_error ) {
1199 1273 throw new Exception( $lp_db->wpdb->last_error );
1200 1274 }
1201 1275
1202 - $percent = LP_Helper::progress_percent( $offset, $limit, $total_row );
1203 -
1204 - $response->status = 'success';
1205 - $response->message = 'Convert question FIB success';
1206 - $response->percent = $percent;
1207 - $response->data->p = ++ $page;
1208 - $response->data->total_rows = $total_row;
1276 + return $this->finish_step( $response, __FUNCTION__ . ' finished' );
1209 1277 } catch ( Exception $e ) {
1210 1278 $response->message = $this->error_step( $response->name, $e->getMessage() );
1211 1279 }
1212 1280