PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 1.4.2
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v1.4.2
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Providers / GoogleDocs.php
embedpress / EmbedPress / Providers Last commit date
GoogleDocs.php 9 years ago GoogleMaps.php 9 years ago index.html 9 years ago
GoogleDocs.php
118 lines
1 <?php
2 namespace EmbedPress\Providers;
3
4 use \Embera\Adapters\Service as EmberaService;
5
6 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
7
8 /**
9 * Entity responsible to support GoogleDocs embeds.
10 *
11 * @package EmbedPress
12 * @subpackage EmbedPress/Providers
13 * @author PressShack <help@pressshack.com>
14 * @copyright Copyright (C) 2016 Open Source Training, LLC. All rights reserved.
15 * @license GPLv2 or later
16 * @since 1.0.0
17 */
18 class GoogleDocs extends EmberaService
19 {
20 /**
21 * Method that verifies if the embed URL belongs to GoogleDocs.
22 *
23 * @since 1.0.0
24 *
25 * @return boolean
26 */
27 public function validateUrl()
28 {
29 return preg_match('~http[s]?:\/\/((?:www\.)?docs\.google\.com\/(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)~i', $this->url);
30 }
31
32 /**
33 * This method fakes an Oembed response.
34 *
35 * @since 1.0.0
36 *
37 * @return array
38 */
39 public function fakeResponse()
40 {
41 $iframeSrc = html_entity_decode($this->url);
42
43 // Check the type of document
44 preg_match('~google\.com/(document|presentation|spreadsheets|forms|drawings)/~i', $iframeSrc, $matches);
45 $type = $matches[1];
46
47 switch ($type) {
48 case 'document':
49 // Check if the url still doesn't have the embedded param, and add if needed
50 if (!preg_match('~([?&])embedded=true~i', $iframeSrc, $matches)) {
51 if (substr_count($iframeSrc, '?')) {
52 $iframeSrc .= '&embedded=true';
53 } else {
54 $iframeSrc .= '?embedded=true';
55 }
56 }
57 break;
58
59 case 'presentation':
60 // Convert the /pub to /embed if needed
61 if (preg_match('~/pub\?~i', $iframeSrc)) {
62 $iframeSrc = str_replace('/pub?', '/embed?', $iframeSrc);
63 }
64 break;
65
66 case 'spreadsheets':
67 if (substr_count($iframeSrc, '?')) {
68 $query = explode('?', $iframeSrc);
69 $query = $query[1];
70 $query = explode('&', $query);
71
72 if (!empty($query)) {
73 $hasWidgetParam = false;
74 $hasHeadersParam = false;
75
76 foreach ($query as $param) {
77 if (substr_count($param, 'widget=')) {
78 $hasWidgetParam = true;
79 } elseif (substr_count($param, 'headers=')) {
80 $hasHeadersParam = true;
81 }
82 }
83
84 if (!$hasWidgetParam) {
85 $iframeSrc .= '&widget=true';
86 }
87
88 if (!$hasHeadersParam) {
89 $iframeSrc .= '&headers=false';
90 }
91 }
92 } else {
93 $iframeSrc .= '?widget=true&headers=false';
94 }
95 break;
96
97 case 'forms':
98 case 'drawings':
99 break;
100 }
101
102 if ($type !== 'drawings') {
103 $html = '<iframe src="' . $iframeSrc . '" frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>';
104 } else {
105 $html = '<img src="' . $iframeSrc . '" width="960" height="720" />';
106 }
107
108 return array(
109 'type' => 'rich',
110 'provider_name' => 'Google Docs',
111 'provider_url' => 'http://docs.google.com',
112 'title' => 'Unknown title',
113 'html' => $html,
114 'wrapper_class' => 'ose-google-docs-' . $type
115 );
116 }
117 }
118