These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /** |
||
4 | * @todo Description |
||
5 | * |
||
6 | * @package silverstripe-seo |
||
7 | * @subpackage icons |
||
8 | * @author Andrew Gerber <[email protected]> |
||
9 | * @version 1.0.0 |
||
10 | * |
||
11 | */ |
||
12 | class SEO_Icons_SiteTree_DataExtension extends DataExtension |
||
13 | { |
||
14 | |||
15 | |||
16 | /* Overload Variable |
||
17 | ------------------------------------------------------------------------------*/ |
||
18 | |||
19 | // none |
||
20 | |||
21 | |||
22 | /* Overload Methods |
||
23 | ------------------------------------------------------------------------------*/ |
||
24 | |||
25 | // CMS Fields |
||
26 | // public function updateCMSFields(FieldList $fields) {} |
||
27 | |||
28 | |||
29 | /* Template Methods |
||
30 | ------------------------------------------------------------------------------*/ |
||
31 | |||
32 | /** |
||
33 | * Updates metadata with icons. |
||
34 | * |
||
35 | * @param SiteConfig $config |
||
36 | * @param SiteTree $owner |
||
37 | * @param $metadata |
||
38 | * |
||
39 | * @return void |
||
40 | */ |
||
41 | public function updateMetadata(SiteConfig $config, SiteTree $owner, &$metadata) |
||
42 | { |
||
43 | |||
44 | //// HTML4 Favicon |
||
45 | |||
46 | // @todo Perhaps create dynamic image, but just use favicon.ico for now |
||
47 | |||
48 | //// Create Favicons |
||
49 | |||
50 | $HTML5Favicon = $config->HTML5Favicon(); |
||
51 | $IOSPinicon = $config->IOSPinicon(); |
||
52 | $AndroidPinicon = $config->AndroidPinicon(); |
||
53 | $WindowsPinicon = $config->WindowsPinicon(); |
||
54 | |||
55 | //// iOS Pinicon |
||
56 | |||
57 | if ($IOSPinicon->exists()) { |
||
58 | $this->GenerateIOSPinicon($config, $owner, $metadata, $IOSPinicon); |
||
59 | } |
||
60 | |||
61 | //// HTML5 Favicon |
||
62 | |||
63 | if ($HTML5Favicon->exists()) { |
||
64 | $this->GenerateHTML5Favicon($owner, $metadata, $HTML5Favicon); |
||
65 | } |
||
66 | |||
67 | //// Android Pinicon Manifest |
||
68 | |||
69 | if ($AndroidPinicon->exists()) { |
||
70 | $this->GenerateAndroidPinicon($config, $owner, $metadata); |
||
71 | } |
||
72 | |||
73 | //// Windows Pinicon Manifest |
||
74 | |||
75 | if ($WindowsPinicon->exists()) { |
||
76 | $this->GenerateWindowsPinicon($config, $owner, $metadata, $WindowsPinicon); |
||
77 | } |
||
78 | |||
79 | } |
||
80 | |||
81 | /** |
||
82 | * Generates markup for the iOS pinicon |
||
83 | * |
||
84 | * @param SiteConfig $config |
||
85 | * @param SiteTree $owner |
||
86 | * @param string $metadata |
||
87 | * @param Image $IOSPinicon |
||
88 | * |
||
89 | * @return void |
||
90 | */ |
||
91 | protected function GenerateIOSPinicon(SiteConfig $config, SiteTree $owner, &$metadata, Image $IOSPinicon) { |
||
92 | |||
93 | // header |
||
94 | $metadata .= $this->owner->MarkupComment('iOS Pinned Icon'); |
||
95 | |||
96 | //// iOS Pinicon Title |
||
97 | if ($config->fetchPiniconTitle()) { |
||
98 | $metadata .= $owner->MarkupMeta('apple-mobile-web-app-title', $config->fetchPiniconTitle()); |
||
99 | } |
||
100 | |||
101 | //// iOS Pinned Icon |
||
102 | |||
103 | // For non-Retina (@1× display) iPhone, iPod Touch, and Android 2.1+ devices |
||
104 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(57, 57)->getAbsoluteURL(), 'image/png'); // 57×57 |
||
105 | |||
106 | // @todo: What is this for ?? |
||
107 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(60, 60)->getAbsoluteURL(), 'image/png', '60x60'); |
||
108 | |||
109 | // For the iPad mini and the first- and second-generation iPad (@1× display) on iOS ≤ 6 |
||
110 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(72, 72)->getAbsoluteURL(), 'image/png', '72x72'); |
||
111 | |||
112 | // For the iPad mini and the first- and second-generation iPad (@1× display) on iOS ≥ 7 |
||
113 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(76, 76)->getAbsoluteURL(), 'image/png', '76x76'); |
||
114 | |||
115 | // For iPhone with @2× display running iOS ≤ 6 |
||
116 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(114, 114)->getAbsoluteURL(), 'image/png', '114x114'); |
||
117 | |||
118 | // For iPhone with @2× display running iOS ≥ 7 |
||
119 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(120, 120)->getAbsoluteURL(), 'image/png', '120x120'); |
||
120 | |||
121 | // For iPad with @2× display running iOS ≤ 6 |
||
122 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(144, 144)->getAbsoluteURL(), 'image/png', '144x144'); |
||
123 | |||
124 | // For iPad with @2× display running iOS ≥ 7 |
||
125 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(152, 152)->getAbsoluteURL(), 'image/png', '152x152'); |
||
126 | |||
127 | // For iPhone 6 Plus with @3× display |
||
128 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Pad(180, 180)->getAbsoluteURL(), 'image/png', '180x180'); |
||
129 | |||
130 | } |
||
131 | |||
132 | /** |
||
133 | * Generates markup for the HTML5 favicon |
||
134 | * |
||
135 | * @param SiteTree $owner |
||
136 | * @param string $metadata |
||
137 | * @param Image $HTML5Favicon |
||
138 | * |
||
139 | * @return void |
||
140 | */ |
||
141 | protected function GenerateHTML5Favicon(SiteTree $owner, &$metadata, Image $HTML5Favicon) { |
||
142 | |||
143 | // header |
||
144 | $metadata .= $owner->MarkupComment('HTML5 Favicon'); |
||
145 | |||
146 | // // Android Chrome 32 |
||
147 | // @todo: Is the Android Chrome 32 196x196 px icon fully redundant ?? |
||
148 | // $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(196,196)->getAbsoluteURL(), 'image/png', '196x196'); |
||
149 | |||
150 | // Android Chrome 37+ / HTML5 spec |
||
151 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(192, 192)->getAbsoluteURL(), 'image/png', '192x192'); |
||
0 ignored issues
–
show
|
|||
152 | |||
153 | // Android Chrome 37+ / HTML5 spec |
||
154 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(128, 128)->getAbsoluteURL(), 'image/png', '128x128'); |
||
0 ignored issues
–
show
The method
Image::SetSize() has been deprecated with message: 4.0 Use Pad instead
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.
Loading history...
|
|||
155 | |||
156 | // For Google TV |
||
157 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(96, 96)->getAbsoluteURL(), 'image/png', '96x96'); |
||
0 ignored issues
–
show
The method
Image::SetSize() has been deprecated with message: 4.0 Use Pad instead
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.
Loading history...
|
|||
158 | |||
159 | // For Safari on Mac OS |
||
160 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(32, 32)->getAbsoluteURL(), 'image/png', '32x32'); |
||
0 ignored issues
–
show
The method
Image::SetSize() has been deprecated with message: 4.0 Use Pad instead
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.
Loading history...
|
|||
161 | |||
162 | // The classic favicon, displayed in the tabs |
||
163 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->SetSize(16, 16)->getAbsoluteURL(), 'image/png', '16x16'); |
||
0 ignored issues
–
show
The method
Image::SetSize() has been deprecated with message: 4.0 Use Pad instead
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.
Loading history...
|
|||
164 | |||
165 | } |
||
166 | |||
167 | /** |
||
168 | * Generates markup for the Android pinicon |
||
169 | * |
||
170 | * @param SiteConfig $config |
||
171 | * @param SiteTree $owner |
||
172 | * @param $metadata |
||
173 | * |
||
174 | * @return void |
||
175 | */ |
||
176 | protected function GenerateAndroidPinicon(SiteConfig $config, SiteTree $owner, &$metadata) { |
||
177 | |||
178 | // header |
||
179 | $metadata .= $owner->MarkupComment('Android Pinned Icon'); |
||
180 | |||
181 | // |
||
182 | if ($config->fetchAndroidPiniconThemeColor()) { |
||
183 | $metadata .= $owner->MarkupMeta('theme-color', $config->fetchAndroidPiniconThemeColor()); |
||
184 | } |
||
185 | |||
186 | // |
||
187 | $metadata .= $owner->MarkupLink('manifest', '/manifest.json'); |
||
188 | |||
189 | } |
||
190 | |||
191 | /** |
||
192 | * Generates markup for the Windows pinicon |
||
193 | * |
||
194 | * @param SiteConfig $config |
||
195 | * @param SiteTree $owner |
||
196 | * @param $metadata |
||
197 | * @param Image $WindowsPinicon |
||
198 | * |
||
199 | * @return void |
||
200 | */ |
||
201 | protected function GenerateWindowsPinicon(SiteConfig $config, SiteTree $owner, &$metadata, Image $WindowsPinicon) { |
||
202 | |||
203 | // header |
||
204 | $metadata .= $owner->MarkupComment('Windows Pinned Icon'); |
||
205 | |||
206 | // application name |
||
207 | $appName = $config->fetchPiniconTitle(); |
||
208 | if (!$appName) { |
||
209 | $appName = $config->Title; |
||
210 | } |
||
211 | $metadata .= $owner->MarkupMeta('application-name', $appName); |
||
212 | |||
213 | // tile background color |
||
214 | if ($config->fetchWindowsPiniconBackgroundColor()) { |
||
215 | $metadata .= $owner->MarkupMeta('msapplication-TileColor', $config->fetchWindowsPiniconBackgroundColor()); |
||
216 | } |
||
217 | |||
218 | // small tile |
||
219 | $metadata .= $owner->MarkupMeta('msapplication-square70x70logo', $WindowsPinicon->Fill(70, 70)->getAbsoluteURL()); |
||
220 | |||
221 | // medium tile |
||
222 | $metadata .= $owner->MarkupMeta('msapplication-square150x150logo', $WindowsPinicon->Fill(150, 150)->getAbsoluteURL()); |
||
223 | |||
224 | // @todo: Implement wide & tall tiles |
||
225 | |||
226 | // wide tile |
||
227 | // $metadata .= $owner->MarkupMeta('msapplication-square310x150logo', $WindowsPinicon->Fill(310,150)->getAbsoluteURL()); |
||
228 | |||
229 | // large tile |
||
230 | // $metadata .= $owner->MarkupMeta('msapplication-square310x310logo', $WindowsPinicon->Fill(310,310)->getAbsoluteURL()); |
||
231 | |||
232 | } |
||
233 | |||
234 | } |
||
235 |
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.