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 |
||
0 ignored issues
–
show
|
|||
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->Fill(57, 57)->getAbsoluteURL(), 'image/png'); // 57×57 |
||
105 | |||
106 | // @todo: What is this for ?? |
||
107 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(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->Fill(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->Fill(76, 76)->getAbsoluteURL(), 'image/png', '76x76'); |
||
114 | |||
115 | // For iPhone with @2× display running iOS ≤ 6 |
||
116 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(114, 114)->getAbsoluteURL(), 'image/png', '114x114'); |
||
117 | |||
118 | // For iPhone with @2× display running iOS ≥ 7 |
||
119 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(120, 120)->getAbsoluteURL(), 'image/png', '120x120'); |
||
120 | |||
121 | // For iPad with @2× display running iOS ≤ 6 |
||
122 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(144, 144)->getAbsoluteURL(), 'image/png', '144x144'); |
||
123 | |||
124 | // For iPad with @2× display running iOS ≥ 7 |
||
125 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(152, 152)->getAbsoluteURL(), 'image/png', '152x152'); |
||
126 | |||
127 | // For iPhone 6 Plus with @3× display |
||
128 | $metadata .= $owner->MarkupLink('apple-touch-icon', $IOSPinicon->Fill(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 ?? |
||
0 ignored issues
–
show
Unused Code
Comprehensibility
introduced
by
44% of this comment could be valid code. Did you maybe forget this after debugging?
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it. The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production. This check looks for comments that seem to be mostly valid code and reports them.
Loading history...
|
|||
148 | // $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(196,196)->getAbsoluteURL(), 'image/png', '196x196'); |
||
149 | |||
150 | // Android Chrome 37+ / HTML5 spec |
||
151 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(192, 192)->getAbsoluteURL(), 'image/png', '192x192'); |
||
152 | |||
153 | // Android Chrome 37+ / HTML5 spec |
||
154 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(128, 128)->getAbsoluteURL(), 'image/png', '128x128'); |
||
155 | |||
156 | // For Google TV |
||
157 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(96, 96)->getAbsoluteURL(), 'image/png', '96x96'); |
||
158 | |||
159 | // For Safari on Mac OS |
||
160 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(32, 32)->getAbsoluteURL(), 'image/png', '32x32'); |
||
161 | |||
162 | // The classic favicon, displayed in the tabs |
||
163 | $metadata .= $owner->MarkupLink('icon', $HTML5Favicon->Fill(16, 16)->getAbsoluteURL(), 'image/png', '16x16'); |
||
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 |
||
0 ignored issues
–
show
Unused Code
Comprehensibility
introduced
by
57% of this comment could be valid code. Did you maybe forget this after debugging?
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it. The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production. This check looks for comments that seem to be mostly valid code and reports them.
Loading history...
|
|||
227 | // $metadata .= $owner->MarkupMeta('msapplication-square310x150logo', $WindowsPinicon->Fill(310,150)->getAbsoluteURL()); |
||
228 | |||
229 | // large tile |
||
0 ignored issues
–
show
Unused Code
Comprehensibility
introduced
by
57% of this comment could be valid code. Did you maybe forget this after debugging?
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it. The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production. This check looks for comments that seem to be mostly valid code and reports them.
Loading history...
|
|||
230 | // $metadata .= $owner->MarkupMeta('msapplication-square310x310logo', $WindowsPinicon->Fill(310,310)->getAbsoluteURL()); |
||
231 | |||
232 | } |
||
233 | |||
234 | } |
||
235 |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.