+ const code = `$required_blocks = json_decode(base64_decode('${encodedBlocks}'), true); $required_classes = json_decode(base64_decode('${encodedClasses}'), true); $preparation_callbacks = json_decode(base64_decode('${encodedCallbacks}'), true); $preparation_errors = array(); foreach ($preparation_callbacks as $callback) { if (!is_array($callback) || 2 !== count($callback) || !is_string($callback[0]) || !is_string($callback[1]) || !is_callable($callback)) { array_push($preparation_errors, array('callback'=>'invalid_callback','result'=>'invalid')); continue; } $callback_name = implode('::', $callback); $prepared = call_user_func($callback); if (function_exists('is_wp_error') && is_wp_error($prepared)) { $error_data = $prepared->get_error_data(); $bounded_data = array(); if (is_array($error_data)) { if (isset($error_data['missing']) && is_array($error_data['missing'])) { $bounded_data['missing'] = array_slice(array_values($error_data['missing']), 0, 20); } if (isset($error_data['details']) && is_array($error_data['details'])) { $bounded_data['details'] = array_slice($error_data['details'], 0, 20, true); } } array_push($preparation_errors, array('callback'=>$callback_name,'result'=>'wp_error','code'=>(string) $prepared->get_error_code(),'data'=>$bounded_data)); } elseif (false === $prepared) { array_push($preparation_errors, array('callback'=>$callback_name,'result'=>'false')); } } $blocks = WP_Block_Type_Registry::get_instance(); $missing_blocks = array(); foreach ($required_blocks as $name) { if (!$blocks->is_registered($name)) { array_push($missing_blocks, $name); } } $missing_classes = array(); foreach ($required_classes as $name) { if (!class_exists($name)) { array_push($missing_classes, $name); } } $ready = empty($preparation_errors) && empty($missing_blocks) && empty($missing_classes); WP_CLI::line(wp_json_encode(array('schema'=>'static-site-importer/provider-readiness/v1','ready'=>$ready,'preparation_errors'=>$preparation_errors,'missing_block_types'=>$missing_blocks,'missing_classes'=>$missing_classes,'required_block_types'=>$required_blocks,'required_classes'=>$required_classes))); if (!$ready) { WP_CLI::error('Required provider requirements are not available.'); }`;
0 commit comments