Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor-pro/tools/importers/CourseImporter.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + /**
3 + * Course Importer
4 + *
5 + * @package TutorPro\Tools
6 + * @author Themeum<support@themeum.com>
7 + * @link https://themeum.com
8 + * @since 3.6.0
9 + */
10 +
11 + namespace TutorPro\Tools;
12 +
13 + use TUTOR\Course;
14 + use Tutor\Models\CourseModel;
15 +
16 + if ( ! defined( 'ABSPATH' ) ) {
17 + exit;
18 + }
19 +
20 +
21 + /**
22 + * Course Importer class.
23 + */
24 + class CourseImporter {
25 +
26 + /**
27 + * Set taxonomies to courses.
28 + *
29 + * @since 3.6.0
30 + *
31 + * @param array $taxonomies the taxonomies to set to courses.
32 + *
33 + * @return array
34 + */
35 + public function course_importer_set_categories_tags( $taxonomies ) {
36 + $result = true;
37 +
38 + if ( $taxonomies ) {
39 + foreach ( $taxonomies as $post_id => $terms ) {
40 + $categories = array_column( $terms['categories'], 'name' );
41 + $tags = array_column( $terms['tags'], 'name' );
42 +
43 + $result = wp_set_object_terms( $post_id, $categories, CourseModel::COURSE_CATEGORY );
44 +
45 + if ( is_wp_error( $result ) ) {
46 + ErrorHandler::set_error( __( 'Course Term', 'tutor-pro' ), $result->get_error_message() );
47 + }
48 +
49 + $result = wp_set_object_terms( $post_id, $tags, CourseModel::COURSE_TAG );
50 +
51 + if ( is_wp_error( $result ) ) {
52 + ErrorHandler::set_error( __( 'Course Term', 'tutor-pro' ), $result->get_error_message() );
53 + }
54 + }
55 + }
56 +
57 + return $result;
58 + }
59 +
60 +
61 +
62 +
63 + /**
64 + * Prepare course meta for insertion.
65 + *
66 + * @since 3.6.0
67 + *
68 + * @param array $course_metas the array of course meta to prepare.
69 + * @param bool $keep_media_files whether to download media files or not.
70 + *
71 + * @return void
72 + */
73 + public function prepare_course_meta( $course_metas, $keep_media_files = false ) {
74 + $course_metas = array_map( fn( $val ) => $val[0], $course_metas );
75 +
76 + $_POST['_tutor_course_additional_data_edit'] = true;
77 +
78 + Helper::reset_post_data( 'video' );
79 +
80 + if ( isset( $course_metas['_video'] ) ) {
81 + $video_data = $course_metas['_video'];
82 +
83 + if ( isset( $video_data['source'] ) && 'html5' === $video_data['source'] && $keep_media_files ) {
84 + $video_url = $video_data['source_html5'];
85 + $upload_data = Helper::upload_file_by_url( $video_url );
86 + if ( ! is_wp_error( $upload_data ) ) {
87 + $video_data['source_video_id'] = $upload_data['id'];
88 + $video_data['source_html5'] = $upload_data['url'];
89 + }
90 + }
91 +
92 + $_POST['video'] = $video_data;
93 + }
94 +
95 + Helper::reset_post_data( 'content_drip_settings' );
96 +
97 + if ( isset( $course_metas['_content_drip_settings'] ) ) {
98 + $_POST['content_drip_settings'] = $course_metas['_content_drip_settings'];
99 + }
100 +
101 + Helper::reset_post_data( COURSE::COURSE_LEVEL_META );
102 + // Course level meta.
103 + if ( isset( $course_metas[ COURSE::COURSE_LEVEL_META ] )
104 + ) {
105 + $_POST[ COURSE::COURSE_LEVEL_META ] = $course_metas[ COURSE::COURSE_LEVEL_META ];
106 + }
107 +
108 + Helper::reset_post_data( COURSE::COURSE_SETTINGS_META );
109 + // Course settings meta.
110 + if ( isset( $course_metas[ COURSE::COURSE_SETTINGS_META ] ) ) {
111 + $_POST[ COURSE::COURSE_SETTINGS_META ] = $course_metas[ COURSE::COURSE_SETTINGS_META ];
112 + }
113 +
114 + Helper::reset_post_data( 'course_duration' );
115 + // Course duration meta.
116 + if ( isset( $course_metas[ COURSE::COURSE_DURATION_META ] ) ) {
117 + $_POST['course_duration'] = $course_metas[ COURSE::COURSE_DURATION_META ];
118 + }
119 +
120 + // Additional course data meta.
121 + $additional_course_meta_mappings = array(
122 + 'course_benefits' => COURSE::COURSE_BENEFITS_META,
123 + 'course_requirements' => COURSE::COURSE_REQUIREMENTS_META,
124 + 'course_target_audience' => COURSE::COURSE_TARGET_AUDIENCE_META,
125 + 'course_material_includes' => COURSE::COURSE_MATERIAL_INCLUDE_META,
126 + );
127 +
128 + foreach ( $additional_course_meta_mappings as $post_key => $meta_key ) {
129 + Helper::reset_post_data( $post_key );
130 + if ( isset( $course_metas[ $meta_key ] ) ) {
131 + $_POST[ $post_key ] = $course_metas[ $meta_key ];
132 + }
133 + }
134 +
135 + Helper::reset_post_data( 'tutor_course_price_type' );
136 + // Course price type meta.
137 + if ( isset( $course_metas[ COURSE::COURSE_PRICE_TYPE_META ] ) ) {
138 + $_POST['tutor_course_price_type'] = $course_metas[ COURSE::COURSE_PRICE_TYPE_META ];
139 + }
140 +
141 + Helper::reset_post_data( COURSE::COURSE_PRODUCT_ID_META );
142 + // Course product id.
143 + if ( isset( $course_metas[ COURSE::COURSE_PRODUCT_ID_META ] ) ) {
144 + $_POST[ COURSE::COURSE_PRODUCT_ID_META ] = $course_metas[ COURSE::COURSE_PRODUCT_ID_META ];
145 + }
146 +
147 + Helper::reset_post_data( 'course_price' );
148 + // Course regular price meta.
149 + if ( isset( $course_metas[ COURSE::COURSE_PRICE_META ] ) ) {
150 + $_POST['course_price'] = $course_metas[ COURSE::COURSE_PRICE_META ];
151 + }
152 +
153 + Helper::reset_post_data( 'course_sale_price' );
154 + // Course sale price meta.
155 + if ( isset( $course_metas[ COURSE::COURSE_SALE_PRICE_META ] ) ) {
156 + $_POST['course_sale_price'] = $course_metas[ COURSE::COURSE_SALE_PRICE_META ];
157 + $_REQUEST['course_sale_price'] = $course_metas[ COURSE::COURSE_SALE_PRICE_META ];
158 + }
159 +
160 + Helper::reset_post_data( 'course_selling_option' );
161 + // Course selling option.
162 + if ( isset( $course_metas[ COURSE::COURSE_SELLING_OPTION_META ] ) ) {
163 + $_POST['course_selling_option'] = $course_metas[ COURSE::COURSE_SELLING_OPTION_META ];
164 + }
165 +
166 + Helper::reset_post_data( 'tutor_course_certificate_template' );
167 + // Tutor certificate meta.
168 + if ( isset( $course_metas['tutor_course_certificate_template'] ) ) {
169 + $_POST['tutor_course_certificate_template'] = $course_metas['tutor_course_certificate_template'];
170 + }
171 +
172 + Helper::reset_post_data( COURSE::COURSE_ENABLE_QA_META );
173 + // Tutor course enable qa meta.
174 + if ( isset( $course_metas[ COURSE::COURSE_ENABLE_QA_META ] ) && 'yes' === $course_metas[ COURSE::COURSE_ENABLE_QA_META ] ) {
175 + $_POST[ COURSE::COURSE_ENABLE_QA_META ] = 'yes';
176 + }
177 +
178 + Helper::reset_post_data( COURSE::PUBLIC_COURSE_META );
179 + // Tutor public course meta.
180 + if ( isset( $course_metas[ COURSE::PUBLIC_COURSE_META ] ) && 'yes' === $course_metas[ COURSE::PUBLIC_COURSE_META ] ) {
181 + $_POST[ COURSE::PUBLIC_COURSE_META ] = 'yes';
182 + }
183 +
184 + Helper::reset_post_data( 'enable_coming_soon' );
185 + Helper::reset_post_data( 'enable_curriculum_preview' );
186 + // Tutor coming soon meta.
187 + if ( isset( $course_metas['_tutor_course_enable_coming_soon'] ) ) {
188 + $_POST['enable_coming_soon'] = $course_metas['_tutor_course_enable_coming_soon'];
189 + $_POST['enable_curriculum_preview'] = $course_metas['_tutor_course_enable_curriculum_preview'];
190 + }
191 + }
192 + }
193 +