-
Notifications
You must be signed in to change notification settings - Fork 177
/
Embed.php
92 lines (82 loc) · 2.7 KB
/
Embed.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/**
* Class Embed
*
* @package Google\Web_Stories\Story_Renderer
* @copyright 2020 Google LLC
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
* @link https://github.com/google/web-stories-wp
*/
/**
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Google\Web_Stories\Story_Renderer;
use Google\Web_Stories\Model\Story;
/**
* Class Embed
*
* @package Google\Web_Stories\Story_Renderer
*/
class Embed {
/**
* Current post.
*
* @var Story Post object.
*/
protected $story;
/**
* Embed constructor.
*
* @param Story $story Story Object.
*/
public function __construct( Story $story ) {
$this->story = $story;
}
/**
* Renders the block output in default context.
*
* @param array $args Array of Argument to render.
*
* @return string Rendered block type output.
*/
public function render( array $args = [] ) {
$defaults = [
'align' => 'none',
'height' => 600,
'width' => 360,
];
$args = wp_parse_args( $args, $defaults );
$align = sprintf( 'align%s', $args['align'] );
$url = $this->story->get_url();
$title = $this->story->get_title();
$poster = ! empty( $this->story->get_poster_portrait() ) ? esc_url( $this->story->get_poster_portrait() ) : '';
$margin = ( 'center' === $args['align'] ) ? 'auto' : '0';
$player_style = sprintf( 'width: %dpx;height: %dpx;margin: %s', absint( $args['width'] ), absint( $args['height'] ), esc_attr( $margin ) );
$poster_style = ! empty( $poster ) ? sprintf( '--story-player-poster: url(%s)', $poster ) : '';
if ( ! function_exists( 'is_amp_endpoint' ) || ! is_amp_endpoint() ) {
wp_enqueue_style( 'standalone-amp-story-player' );
wp_enqueue_script( 'standalone-amp-story-player' );
}
ob_start();
?>
<div class="wp-block-web-stories-embed <?php echo esc_attr( $align ); ?>">
<amp-story-player style="<?php echo esc_attr( $player_style ); ?>" data-testid="amp-story-player">
<a href="<?php echo esc_url( $url ); ?>" style="<?php echo esc_attr( $poster_style ); ?>"><?php echo esc_html( $title ); ?></a>
</amp-story-player>
</div>
<?php
return (string) ob_get_clean();
}
}