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 / library / ostraining / embera / Lib / Embera / Formatter.php
embedpress / library / ostraining / embera / Lib / Embera Last commit date
Adapters 9 years ago Providers 9 years ago Autoload.php 9 years ago Embera.php 9 years ago FakeResponse.php 9 years ago Formatter.php 9 years ago HttpRequest.php 9 years ago Oembed.php 9 years ago Providers.php 9 years ago Url.php 9 years ago
Formatter.php
158 lines
1 <?php
2 /**
3 * Formatter.php
4 *
5 * @package Embera
6 * @author Michael Pratt <pratt@hablarmierda.net>
7 * @link http://www.michael-pratt.com/
8 *
9 * For the full copyright and license information, please view the LICENSE
10 * file that was distributed with this source code.
11 *
12 */
13 namespace Embera;
14
15 /**
16 * A formatter that acts as a Decorator for the main library.
17 * It outputs the oembed data as a custom string.
18 */
19 class Formatter
20 {
21 /** @var object Instance of \Embera\Embera */
22 protected $embera;
23
24 /** @var bool Wether or not to allow offline responses */
25 protected $allowOffline;
26
27 /** @var array Fetched errors */
28 protected $errors = array();
29
30 /** @var string The template with placeholders to be replaced with the data from an ombed response */
31 protected $template;
32
33 /**
34 * Constructor
35 *
36 * @param object $embera Instance of \Embera\Embera
37 * @param bool $allowOffline Wether or not to allow offline embera
38 * @return void
39 */
40 public function __construct(\Embera\Embera $embera, $allowOffline = false)
41 {
42 $this->embera = $embera;
43 $this->allowOffline = $allowOffline;
44 }
45
46 /**
47 * Sets a template with placeholders, that should be
48 * replaced by the data from an oembed response.
49 *
50 *
51 * @param string $template
52 * @param string|array $body An array or string with Urls
53 * @return string
54 */
55 public function setTemplate($template, $body = null)
56 {
57 $this->template = $template;
58
59 if (!is_null($body)) {
60 return $this->transform($body);
61 }
62
63 return '';
64 }
65
66 /**
67 * This method transforms an array or a string with urls
68 * into another string using a specified template.
69 *
70 * @param string|array $body An array or string with Urls
71 * @return string
72 */
73 public function transform($body = null)
74 {
75 $providers = array();
76 if ($urls = $this->embera->getUrlInfo($body)) {
77 foreach ($urls as $url => $data) {
78 if (!$this->allowOffline && (int) $data['embera_using_fake'] === 1) {
79 $this->errors[] = 'Using fake oembed response on ' . $url;
80 continue;
81 }
82
83 $providers[$url] = str_replace(
84 array_map(
85 function ($name) {
86 return '{' . $name . '}';
87 },
88 array_keys($data)
89 ),
90 array_values($data),
91 $this->template
92 );
93 }
94 }
95
96 if (is_array($body)) {
97 $return = implode('', $providers);
98 } else {
99 $return = str_replace(array_keys($providers), array_values($providers), $body);
100 }
101
102 // Remove unchanged placeholders
103 return preg_replace('~{([\w\d\-_]+)}~i', '', $return);
104 }
105
106 /**
107 * Gets the last error found
108 *
109 * @return string
110 */
111 public function getLastError()
112 {
113 $errors = $this->getErrors();
114 return end($errors);
115 }
116
117 /**
118 * Returns an array with all the errors
119 *
120 * @return array
121 */
122 public function getErrors()
123 {
124 return array_merge($this->embera->getErrors(), $this->errors);
125 }
126
127 /**
128 * Checks if there were errors
129 *
130 * @return bool
131 */
132 public function hasErrors()
133 {
134 return ($this->embera->hasErrors() || !empty($this->errors));
135 }
136
137 /**
138 * Truly decorate the embera object. With this
139 * method Im preserving compatability with the
140 * API of the decorated object.
141 *
142 * @param string $method
143 * @param array $args
144 * @return mixed
145 *
146 * @throws InvalidArgumentException when a method was not found
147 */
148 public function __call($method, $args)
149 {
150 if (is_callable(array($this->embera, $method))) {
151 return call_user_func_array(array($this->embera, $method), $args);
152 }
153
154 throw new \InvalidArgumentException('No method ' . $method . ' was found');
155 }
156 }
157 ?>
158