Changeset 12289 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-learn/inc/blocks.php
- Timestamp:
- 12/02/2022 01:31:25 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-learn/inc/blocks.php
r12276 r12289 5 5 use Error; 6 6 use Sensei_Lesson; 7 use Sensei_Utils; 8 use Sensei_Reports_Overview_Service_Courses; 7 9 use function WordPressdotorg\Locales\get_locale_name_from_code; 8 10 use function WPOrg_Learn\{get_build_path, get_build_url, get_views_path}; … … 27 29 register_lesson_plan_actions(); 28 30 register_lesson_plan_details(); 31 register_course_data(); 29 32 register_workshop_details(); 30 33 register_workshop_application_form(); … … 139 142 ob_start(); 140 143 require get_views_path() . 'block-lesson-plan-details.php'; 144 145 return ob_get_clean(); 146 } 147 148 /** 149 * Register Course Data block type and related assets. 150 * 151 * @throws Error If the build files are not found. 152 */ 153 function register_course_data() { 154 $script_asset_path = get_build_path() . 'course-data.asset.php'; 155 if ( ! is_readable( $script_asset_path ) ) { 156 throw new Error( 157 'You need to run `npm start` or `npm run build` for the "wporg-learn/course-data" block first.' 158 ); 159 } 160 161 $script_asset = require $script_asset_path; 162 wp_register_script( 163 'course-data-editor-script', 164 get_build_url() . 'course-data.js', 165 $script_asset['dependencies'], 166 $script_asset['version'], 167 true, 168 ); 169 170 wp_register_style( 171 'course-data-style', 172 get_build_url() . 'style-course-data.css', 173 array(), 174 filemtime( get_build_path() . 'style-course-data.css' ) 175 ); 176 177 register_block_type( 'wporg-learn/course-data', array( 178 'editor_script' => 'course-data-editor-script', 179 'style' => 'course-data-style', 180 'render_callback' => __NAMESPACE__ . '\course_data_render_callback', 181 ) ); 182 } 183 184 /** 185 * Render the block content (html) on the frontend of the site. 186 * 187 * @param array $attributes 188 * @param string $content 189 * @return string HTML output used by the block 190 */ 191 function course_data_render_callback( $attributes, $content ) { 192 if ( get_post_type() !== 'course' ) { 193 return; 194 } 195 196 $course_service = new Sensei_Reports_Overview_Service_Courses(); 197 $post = get_post(); 198 $course_id = $post->ID; 199 200 // Get the total number of learners enrolled in the course 201 $learners = Sensei_Utils::sensei_check_for_activity( 202 array( 203 'type' => 'sensei_course_status', 204 'status' => 'in-progress', 205 'post__in' => $course_id, 206 ) 207 ); 208 209 // Get the average grade scross all learners 210 $average_grade = $course_service->get_courses_average_grade( array( $course_id ) ); 211 212 // Get the average number of days it takes to complete a course 213 $average_days = $course_service->get_average_days_to_completion( array( $course_id ) ); 214 215 // Set up array of data to be used 216 $data = array( 217 'learners' => array( 218 'label' => __( 'Number of learners', 'wporg-learn' ), 219 'value' => $learners, 220 ), 221 'grade' => array( 222 'label' => __( 'Average grade', 'wporg-learn' ), 223 'value' => $average_grade, 224 ), 225 'days' => array( 226 'label' => __( 'Average days to complete', 'wporg-learn' ), 227 'value' => $average_days, 228 ), 229 ); 230 231 ob_start(); 232 require get_views_path() . 'block-course-data.php'; 141 233 142 234 return ob_get_clean();
Note: See TracChangeset
for help on using the changeset viewer.