Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
betrayful
/
wp
/
wp-content
/
plugins
/
jetpack
/
extensions
/
blocks
/
google-docs-embed
:
google-docs-embed.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * GSuite Block. * * @since 11.3 * * @package automattic/jetpack */ namespace Automattic\Jetpack\Extensions\GoogleDocsEmbed; use Automattic\Jetpack\Blocks; if ( ! defined( 'ABSPATH' ) ) { exit( 0 ); } /** * Registers the blocks for use in Gutenberg * This is done via an action so that we can disable * registration if we need to. */ function register_blocks() { Blocks::jetpack_register_block( __DIR__, array( 'render_callback' => __NAMESPACE__ . '\render_callback', ) ); } add_action( 'init', __NAMESPACE__ . '\register_blocks' ); /** * The block rendering callback. * * The render implementation lives in render.php and is only loaded when the * block is actually rendered, keeping it out of the eager front-end path. * * @param array $attributes attributes. * @return string */ function render_callback( $attributes ) { require_once __DIR__ . '/render.php'; return render_callback_implementation( $attributes ); } /** * Convert GSuite URL to a preview URL. * * @param string $url The URL of the published Doc/Spreadsheet/Presentation. * * @return string */ function map_gsuite_url( $url ) { // Default regex for all the URLs. $gsuite_regex = '/^(http|https):\/\/(docs\.google.com)\/(spreadsheets|document|presentation)\/d\/([A-Za-z0-9_-]+).*?$/i'; /** * Check if the URL is valid. * * If not, return the original URL as is. */ preg_match( $gsuite_regex, $url, $matches ); if ( empty( $matches ) || empty( $matches[1] ) || empty( $matches[2] ) || empty( $matches[3] ) || empty( $matches[4] ) ) { return $url; } return "{$matches[1]}://$matches[2]/$matches[3]/d/$matches[4]/preview"; }