Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
Complex classes like iCal_parser often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use iCal_parser, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
53 | class iCal_parser |
||
54 | { |
||
55 | public $week_start_day = 'Sunday'; |
||
56 | public $timezone = '+0900'; |
||
57 | public $events = array(); |
||
58 | public $language = 'japanese'; |
||
59 | |||
60 | // From timezones.php |
||
61 | public $tz_array = array( |
||
62 | 'GMT' => array('+0000', '+0000'), |
||
63 | 'Africa/Addis_Ababa' => array('+0300', '+0300'), |
||
64 | 'Africa/Algiers' => array('+0100', '+0100'), |
||
65 | 'Africa/Asmera' => array('+0300', '+0300'), |
||
66 | 'Africa/Bangui' => array('+0100', '+0100'), |
||
67 | 'Africa/Blantyre' => array('+0200', '+0200'), |
||
68 | 'Africa/Brazzaville' => array('+0100', '+0100'), |
||
69 | 'Africa/Bujumbura' => array('+0200', '+0200'), |
||
70 | 'Africa/Cairo' => array('+0200', '+0300'), |
||
71 | 'Africa/Ceuta' => array('+0100', '+0200'), |
||
72 | 'Africa/Dar_es_Salaam' => array('+0300', '+0300'), |
||
73 | 'Africa/Djibouti' => array('+0300', '+0300'), |
||
74 | 'Africa/Douala' => array('+0100', '+0100'), |
||
75 | 'Africa/Gaborone' => array('+0200', '+0200'), |
||
76 | 'Africa/Harare' => array('+0200', '+0200'), |
||
77 | 'Africa/Johannesburg' => array('+0200', '+0200'), |
||
78 | 'Africa/Kampala' => array('+0300', '+0300'), |
||
79 | 'Africa/Khartoum' => array('+0300', '+0300'), |
||
80 | 'Africa/Kigali' => array('+0200', '+0200'), |
||
81 | 'Africa/Kinshasa' => array('+0100', '+0100'), |
||
82 | 'Africa/Lagos' => array('+0100', '+0100'), |
||
83 | 'Africa/Libreville' => array('+0100', '+0100'), |
||
84 | 'Africa/Luanda' => array('+0100', '+0100'), |
||
85 | 'Africa/Lubumbashi' => array('+0200', '+0200'), |
||
86 | 'Africa/Lusaka' => array('+0200', '+0200'), |
||
87 | 'Africa/Malabo' => array('+0100', '+0100'), |
||
88 | 'Africa/Maputo' => array('+0200', '+0200'), |
||
89 | 'Africa/Maseru' => array('+0200', '+0200'), |
||
90 | 'Africa/Mbabane' => array('+0200', '+0200'), |
||
91 | 'Africa/Mogadishu' => array('+0300', '+0300'), |
||
92 | 'Africa/Nairobi' => array('+0300', '+0300'), |
||
93 | 'Africa/Ndjamena' => array('+0100', '+0100'), |
||
94 | 'Africa/Niamey' => array('+0100', '+0100'), |
||
95 | 'Africa/Porto-Novo' => array('+0100', '+0100'), |
||
96 | 'Africa/Tripoli' => array('+0200', '+0200'), |
||
97 | 'Africa/Tunis' => array('+0100', '+0100'), |
||
98 | 'Africa/Windhoek' => array('+0200', '+0100'), |
||
99 | 'America/Adak' => array('-1000', '-0900'), |
||
100 | 'America/Anchorage' => array('-0900', '-0800'), |
||
101 | 'America/Anguilla' => array('-0400', '-0400'), |
||
102 | 'America/Antigua' => array('-0400', '-0400'), |
||
103 | 'America/Araguaina' => array('-0200', '-0300'), |
||
104 | 'America/Aruba' => array('-0400', '-0400'), |
||
105 | 'America/Asuncion' => array('-0300', '-0400'), |
||
106 | 'America/Atka' => array('-1000', '-0900'), |
||
107 | 'America/Barbados' => array('-0400', '-0400'), |
||
108 | 'America/Belem' => array('-0300', '-0300'), |
||
109 | 'America/Belize' => array('-0600', '-0600'), |
||
110 | 'America/Boa_Vista' => array('-0400', '-0400'), |
||
111 | 'America/Bogota' => array('-0500', '-0500'), |
||
112 | 'America/Boise' => array('-0700', '-0600'), |
||
113 | 'America/Buenos_Aires' => array('-0300', '-0300'), |
||
114 | 'America/Cambridge_Bay' => array('-0700', '-0600'), |
||
115 | 'America/Cancun' => array('-0600', '-0500'), |
||
116 | 'America/Caracas' => array('-0400', '-0400'), |
||
117 | 'America/Catamarca' => array('-0300', '-0300'), |
||
118 | 'America/Cayenne' => array('-0300', '-0300'), |
||
119 | 'America/Cayman' => array('-0500', '-0500'), |
||
120 | 'America/Chicago' => array('-0600', '-0500'), |
||
121 | 'America/Chihuahua' => array('-0700', '-0600'), |
||
122 | 'America/Cordoba' => array('-0300', '-0300'), |
||
123 | 'America/Costa_Rica' => array('-0600', '-0600'), |
||
124 | 'America/Cuiaba' => array('-0300', '-0400'), |
||
125 | 'America/Curacao' => array('-0400', '-0400'), |
||
126 | 'America/Dawson' => array('-0800', '-0700'), |
||
127 | 'America/Dawson_Creek' => array('-0700', '-0700'), |
||
128 | 'America/Denver' => array('-0700', '-0600'), |
||
129 | 'America/Detroit' => array('-0500', '-0400'), |
||
130 | 'America/Dominica' => array('-0400', '-0400'), |
||
131 | 'America/Edmonton' => array('-0700', '-0600'), |
||
132 | 'America/Eirunepe' => array('-0500', '-0500'), |
||
133 | 'America/El_Salvador' => array('-0600', '-0600'), |
||
134 | 'America/Ensenada' => array('-0800', '-0700'), |
||
135 | 'America/Fort_Wayne' => array('-0500', '-0500'), |
||
136 | 'America/Fortaleza' => array('-0300', '-0300'), |
||
137 | 'America/Glace_Bay' => array('-0400', '-0300'), |
||
138 | 'America/Godthab' => array('-0300', '-0200'), |
||
139 | 'America/Goose_Bay' => array('-0400', '-0300'), |
||
140 | 'America/Grand_Turk' => array('-0500', '-0400'), |
||
141 | 'America/Grenada' => array('-0400', '-0400'), |
||
142 | 'America/Guadeloupe' => array('-0400', '-0400'), |
||
143 | 'America/Guatemala' => array('-0600', '-0600'), |
||
144 | 'America/Guayaquil' => array('-0500', '-0500'), |
||
145 | 'America/Guyana' => array('-0400', '-0400'), |
||
146 | 'America/Halifax' => array('-0400', '-0300'), |
||
147 | 'America/Havana' => array('-0500', '-0400'), |
||
148 | 'America/Hermosillo' => array('-0700', '-0700'), |
||
149 | 'America/Indiana/Indianapolis' => array('-0500', '-0500'), |
||
150 | 'America/Indiana/Knox' => array('-0500', '-0500'), |
||
151 | 'America/Indiana/Marengo' => array('-0500', '-0500'), |
||
152 | 'America/Indiana/Vevay' => array('-0500', '-0500'), |
||
153 | 'America/Indianapolis' => array('-0500', '-0500'), |
||
154 | 'America/Inuvik' => array('-0700', '-0600'), |
||
155 | 'America/Iqaluit' => array('-0500', '-0400'), |
||
156 | 'America/Jamaica' => array('-0500', '-0500'), |
||
157 | 'America/Jujuy' => array('-0300', '-0300'), |
||
158 | 'America/Juneau' => array('-0900', '-0800'), |
||
159 | 'America/Kentucky/Louisville' => array('-0500', '-0400'), |
||
160 | 'America/Kentucky/Monticello' => array('-0500', '-0400'), |
||
161 | 'America/Knox_IN' => array('-0500', '-0500'), |
||
162 | 'America/La_Paz' => array('-0400', '-0400'), |
||
163 | 'America/Lima' => array('-0500', '-0500'), |
||
164 | 'America/Los_Angeles' => array('-0800', '-0700'), |
||
165 | 'America/Louisville' => array('-0500', '-0400'), |
||
166 | 'America/Maceio' => array('-0300', '-0300'), |
||
167 | 'America/Managua' => array('-0600', '-0600'), |
||
168 | 'America/Manaus' => array('-0400', '-0400'), |
||
169 | 'America/Martinique' => array('-0400', '-0400'), |
||
170 | 'America/Mazatlan' => array('-0700', '-0600'), |
||
171 | 'America/Mendoza' => array('-0300', '-0300'), |
||
172 | 'America/Menominee' => array('-0600', '-0500'), |
||
173 | 'America/Merida' => array('-0600', '-0500'), |
||
174 | 'America/Mexico_City' => array('-0600', '-0500'), |
||
175 | 'America/Miquelon' => array('-0300', '-0200'), |
||
176 | 'America/Monterrey' => array('-0600', '-0500'), |
||
177 | 'America/Montevideo' => array('-0300', '-0300'), |
||
178 | 'America/Montreal' => array('-0500', '-0400'), |
||
179 | 'America/Montserrat' => array('-0400', '-0400'), |
||
180 | 'America/Nassau' => array('-0500', '-0400'), |
||
181 | 'America/New_York' => array('-0500', '-0400'), |
||
182 | 'America/Nipigon' => array('-0500', '-0400'), |
||
183 | 'America/Nome' => array('-0900', '-0800'), |
||
184 | 'America/Noronha' => array('-0200', '-0200'), |
||
185 | 'America/Panama' => array('-0500', '-0500'), |
||
186 | 'America/Pangnirtung' => array('-0500', '-0400'), |
||
187 | 'America/Paramaribo' => array('-0300', '-0300'), |
||
188 | 'America/Phoenix' => array('-0700', '-0700'), |
||
189 | 'America/Port-au-Prince' => array('-0500', '-0500'), |
||
190 | 'America/Port_of_Spain' => array('-0400', '-0400'), |
||
191 | 'America/Porto_Acre' => array('-0500', '-0500'), |
||
192 | 'America/Porto_Velho' => array('-0400', '-0400'), |
||
193 | 'America/Puerto_Rico' => array('-0400', '-0400'), |
||
194 | 'America/Rainy_River' => array('-0600', '-0500'), |
||
195 | 'America/Rankin_Inlet' => array('-0600', '-0500'), |
||
196 | 'America/Recife' => array('-0300', '-0300'), |
||
197 | 'America/Regina' => array('-0600', '-0600'), |
||
198 | 'America/Rio_Branco' => array('-0500', '-0500'), |
||
199 | 'America/Rosario' => array('-0300', '-0300'), |
||
200 | 'America/Santiago' => array('-0300', '-0400'), |
||
201 | 'America/Santo_Domingo' => array('-0400', '-0400'), |
||
202 | 'America/Sao_Paulo' => array('-0200', '-0300'), |
||
203 | 'America/Scoresbysund' => array('-0100', '+0000'), |
||
204 | 'America/Shiprock' => array('-0700', '-0600'), |
||
205 | 'America/St_Johns' => array('-031800', '-021800'), |
||
206 | 'America/St_Kitts' => array('-0400', '-0400'), |
||
207 | 'America/St_Lucia' => array('-0400', '-0400'), |
||
208 | 'America/St_Thomas' => array('-0400', '-0400'), |
||
209 | 'America/St_Vincent' => array('-0400', '-0400'), |
||
210 | 'America/Swift_Current' => array('-0600', '-0600'), |
||
211 | 'America/Tegucigalpa' => array('-0600', '-0600'), |
||
212 | 'America/Thule' => array('-0400', '-0300'), |
||
213 | 'America/Thunder_Bay' => array('-0500', '-0400'), |
||
214 | 'America/Tijuana' => array('-0800', '-0700'), |
||
215 | 'America/Tortola' => array('-0400', '-0400'), |
||
216 | 'America/Vancouver' => array('-0800', '-0700'), |
||
217 | 'America/Virgin' => array('-0400', '-0400'), |
||
218 | 'America/Whitehorse' => array('-0800', '-0700'), |
||
219 | 'America/Winnipeg' => array('-0600', '-0500'), |
||
220 | 'America/Yakutat' => array('-0900', '-0800'), |
||
221 | 'America/Yellowknife' => array('-0700', '-0600'), |
||
222 | 'Antarctica/Casey' => array('+0800', '+0800'), |
||
223 | 'Antarctica/Davis' => array('+0700', '+0700'), |
||
224 | 'Antarctica/DumontDUrville' => array('+1000', '+1000'), |
||
225 | 'Antarctica/Mawson' => array('+0600', '+0600'), |
||
226 | 'Antarctica/McMurdo' => array('+1300', '+1200'), |
||
227 | 'Antarctica/Palmer' => array('-0300', '-0400'), |
||
228 | 'Antarctica/South_Pole' => array('+1300', '+1200'), |
||
229 | 'Antarctica/Syowa' => array('+0300', '+0300'), |
||
230 | 'Antarctica/Vostok' => array('+0600', '+0600'), |
||
231 | 'Arctic/Longyearbyen' => array('+0100', '+0200'), |
||
232 | 'Asia/Aden' => array('+0300', '+0300'), |
||
233 | 'Asia/Almaty' => array('+0600', '+0700'), |
||
234 | 'Asia/Amman' => array('+0200', '+0300'), |
||
235 | 'Asia/Anadyr' => array('+1200', '+1300'), |
||
236 | 'Asia/Aqtau' => array('+0400', '+0500'), |
||
237 | 'Asia/Aqtobe' => array('+0500', '+0600'), |
||
238 | 'Asia/Ashgabat' => array('+0500', '+0500'), |
||
239 | 'Asia/Ashkhabad' => array('+0500', '+0500'), |
||
240 | 'Asia/Baghdad' => array('+0300', '+0400'), |
||
241 | 'Asia/Bahrain' => array('+0300', '+0300'), |
||
242 | 'Asia/Baku' => array('+0400', '+0500'), |
||
243 | 'Asia/Bangkok' => array('+0700', '+0700'), |
||
244 | 'Asia/Beirut' => array('+0200', '+0300'), |
||
245 | 'Asia/Bishkek' => array('+0500', '+0600'), |
||
246 | 'Asia/Brunei' => array('+0800', '+0800'), |
||
247 | 'Asia/Calcutta' => array('+051800', '+051800'), |
||
248 | 'Asia/Chungking' => array('+0800', '+0800'), |
||
249 | 'Asia/Colombo' => array('+0600', '+0600'), |
||
250 | 'Asia/Dacca' => array('+0600', '+0600'), |
||
251 | 'Asia/Damascus' => array('+0200', '+0300'), |
||
252 | 'Asia/Dhaka' => array('+0600', '+0600'), |
||
253 | 'Asia/Dili' => array('+0900', '+0900'), |
||
254 | 'Asia/Dubai' => array('+0400', '+0400'), |
||
255 | 'Asia/Dushanbe' => array('+0500', '+0500'), |
||
256 | 'Asia/Gaza' => array('+0200', '+0300'), |
||
257 | 'Asia/Harbin' => array('+0800', '+0800'), |
||
258 | 'Asia/Hong_Kong' => array('+0800', '+0800'), |
||
259 | 'Asia/Hovd' => array('+0700', '+0700'), |
||
260 | 'Asia/Irkutsk' => array('+0800', '+0900'), |
||
261 | 'Asia/Istanbul' => array('+0200', '+0300'), |
||
262 | 'Asia/Jakarta' => array('+0700', '+0700'), |
||
263 | 'Asia/Jayapura' => array('+0900', '+0900'), |
||
264 | 'Asia/Jerusalem' => array('+0200', '+0300'), |
||
265 | 'Asia/Kabul' => array('+041800', '+041800'), |
||
266 | 'Asia/Kamchatka' => array('+1200', '+1300'), |
||
267 | 'Asia/Karachi' => array('+0500', '+0500'), |
||
268 | 'Asia/Kashgar' => array('+0800', '+0800'), |
||
269 | 'Asia/Katmandu' => array('+052700', '+052700'), |
||
270 | 'Asia/Krasnoyarsk' => array('+0700', '+0800'), |
||
271 | 'Asia/Kuala_Lumpur' => array('+0800', '+0800'), |
||
272 | 'Asia/Kuching' => array('+0800', '+0800'), |
||
273 | 'Asia/Kuwait' => array('+0300', '+0300'), |
||
274 | 'Asia/Macao' => array('+0800', '+0800'), |
||
275 | 'Asia/Magadan' => array('+1100', '+1200'), |
||
276 | 'Asia/Manila' => array('+0800', '+0800'), |
||
277 | 'Asia/Muscat' => array('+0400', '+0400'), |
||
278 | 'Asia/Nicosia' => array('+0200', '+0300'), |
||
279 | 'Asia/Novosibirsk' => array('+0600', '+0700'), |
||
280 | 'Asia/Omsk' => array('+0600', '+0700'), |
||
281 | 'Asia/Phnom_Penh' => array('+0700', '+0700'), |
||
282 | 'Asia/Pyongyang' => array('+0900', '+0900'), |
||
283 | 'Asia/Qatar' => array('+0300', '+0300'), |
||
284 | 'Asia/Rangoon' => array('+061800', '+061800'), |
||
285 | 'Asia/Riyadh' => array('+0300', '+0300'), |
||
286 | 'Asia/Riyadh87' => array('+03424', '+03424'), |
||
287 | 'Asia/Riyadh88' => array('+03424', '+03424'), |
||
288 | 'Asia/Riyadh89' => array('+03424', '+03424'), |
||
289 | 'Asia/Saigon' => array('+0700', '+0700'), |
||
290 | 'Asia/Samarkand' => array('+0500', '+0500'), |
||
291 | 'Asia/Seoul' => array('+0900', '+0900'), |
||
292 | 'Asia/Shanghai' => array('+0800', '+0800'), |
||
293 | 'Asia/Singapore' => array('+0800', '+0800'), |
||
294 | 'Asia/Taipei' => array('+0800', '+0800'), |
||
295 | 'Asia/Tashkent' => array('+0500', '+0500'), |
||
296 | 'Asia/Tbilisi' => array('+0400', '+0500'), |
||
297 | 'Asia/Tehran' => array('+031800', '+041800'), |
||
298 | 'Asia/Tel_Aviv' => array('+0200', '+0300'), |
||
299 | 'Asia/Thimbu' => array('+0600', '+0600'), |
||
300 | 'Asia/Thimphu' => array('+0600', '+0600'), |
||
301 | 'Asia/Tokyo' => array('+0900', '+0900'), |
||
302 | 'Asia/Ujung_Pandang' => array('+0800', '+0800'), |
||
303 | 'Asia/Ulaanbaatar' => array('+0800', '+0800'), |
||
304 | 'Asia/Ulan_Bator' => array('+0800', '+0800'), |
||
305 | 'Asia/Urumqi' => array('+0800', '+0800'), |
||
306 | 'Asia/Vientiane' => array('+0700', '+0700'), |
||
307 | 'Asia/Vladivostok' => array('+1000', '+1100'), |
||
308 | 'Asia/Yakutsk' => array('+0900', '+1000'), |
||
309 | 'Asia/Yekaterinburg' => array('+0500', '+0600'), |
||
310 | 'Asia/Yerevan' => array('+0400', '+0500'), |
||
311 | 'Atlantic/Azores' => array('-0100', '+0000'), |
||
312 | 'Atlantic/Bermuda' => array('-0400', '-0300'), |
||
313 | 'Atlantic/Canary' => array('+0000', '+0100'), |
||
314 | 'Atlantic/Cape_Verde' => array('-0100', '-0100'), |
||
315 | 'Atlantic/Faeroe' => array('+0000', '+0100'), |
||
316 | 'Atlantic/Jan_Mayen' => array('-0100', '-0100'), |
||
317 | 'Atlantic/Madeira' => array('+0000', '+0100'), |
||
318 | 'Atlantic/South_Georgia' => array('-0200', '-0200'), |
||
319 | 'Atlantic/Stanley' => array('-0300', '-0400'), |
||
320 | 'Australia/ACT' => array('+1100', '+1000'), |
||
321 | 'Australia/Adelaide' => array('+101800', '+091800'), |
||
322 | 'Australia/Brisbane' => array('+1000', '+1000'), |
||
323 | 'Australia/Broken_Hill' => array('+101800', '+091800'), |
||
324 | 'Australia/Canberra' => array('+1100', '+1000'), |
||
325 | 'Australia/Darwin' => array('+091800', '+091800'), |
||
326 | 'Australia/Hobart' => array('+1100', '+1000'), |
||
327 | 'Australia/LHI' => array('+1100', '+101800'), |
||
328 | 'Australia/Lindeman' => array('+1000', '+1000'), |
||
329 | 'Australia/Lord_Howe' => array('+1100', '+101800'), |
||
330 | 'Australia/Melbourne' => array('+1100', '+1000'), |
||
331 | 'Australia/NSW' => array('+1100', '+1000'), |
||
332 | 'Australia/North' => array('+091800', '+091800'), |
||
333 | 'Australia/Perth' => array('+0800', '+0800'), |
||
334 | 'Australia/Queensland' => array('+1000', '+1000'), |
||
335 | 'Australia/South' => array('+101800', '+091800'), |
||
336 | 'Australia/Sydney' => array('+1100', '+1000'), |
||
337 | 'Australia/Tasmania' => array('+1100', '+1000'), |
||
338 | 'Australia/Victoria' => array('+1100', '+1000'), |
||
339 | 'Australia/West' => array('+0800', '+0800'), |
||
340 | 'Australia/Yancowinna' => array('+101800', '+091800'), |
||
341 | 'Brazil/Acre' => array('-0500', '-0500'), |
||
342 | 'Brazil/DeNoronha' => array('-0200', '-0200'), |
||
343 | 'Brazil/East' => array('-0200', '-0300'), |
||
344 | 'Brazil/West' => array('-0400', '-0400'), |
||
345 | 'CET' => array('+0100', '+0200'), |
||
346 | 'CST6CDT' => array('-0600', '-0500'), |
||
347 | 'Canada/Atlantic' => array('-0400', '-0300'), |
||
348 | 'Canada/Central' => array('-0600', '-0500'), |
||
349 | 'Canada/East-Saskatchewan' => array('-0600', '-0600'), |
||
350 | 'Canada/Eastern' => array('-0500', '-0400'), |
||
351 | 'Canada/Mountain' => array('-0700', '-0600'), |
||
352 | 'Canada/Newfoundland' => array('-031800', '-021800'), |
||
353 | 'Canada/Pacific' => array('-0800', '-0700'), |
||
354 | 'Canada/Saskatchewan' => array('-0600', '-0600'), |
||
355 | 'Canada/Yukon' => array('-0800', '-0700'), |
||
356 | 'Chile/Continental' => array('-0300', '-0400'), |
||
357 | 'Chile/EasterIsland' => array('-0500', '-0600'), |
||
358 | 'Cuba' => array('-0500', '-0400'), |
||
359 | 'EET' => array('+0200', '+0300'), |
||
360 | 'EST' => array('-0500', '-0500'), |
||
361 | 'EST5EDT' => array('-0500', '-0400'), |
||
362 | 'Egypt' => array('+0200', '+0300'), |
||
363 | 'Eire' => array('+0000', '+0100'), |
||
364 | 'Etc/GMT+1' => array('-0100', '-0100'), |
||
365 | 'Etc/GMT+10' => array('-1000', '-1000'), |
||
366 | 'Etc/GMT+11' => array('-1100', '-1100'), |
||
367 | 'Etc/GMT+12' => array('-1200', '-1200'), |
||
368 | 'Etc/GMT+2' => array('-0200', '-0200'), |
||
369 | 'Etc/GMT+3' => array('-0300', '-0300'), |
||
370 | 'Etc/GMT+4' => array('-0400', '-0400'), |
||
371 | 'Etc/GMT+5' => array('-0500', '-0500'), |
||
372 | 'Etc/GMT+6' => array('-0600', '-0600'), |
||
373 | 'Etc/GMT+7' => array('-0700', '-0700'), |
||
374 | 'Etc/GMT+8' => array('-0800', '-0800'), |
||
375 | 'Etc/GMT+9' => array('-0900', '-0900'), |
||
376 | 'Etc/GMT-1' => array('+0100', '+0100'), |
||
377 | 'Etc/GMT-10' => array('+1000', '+1000'), |
||
378 | 'Etc/GMT-11' => array('+1100', '+1100'), |
||
379 | 'Etc/GMT-12' => array('+1200', '+1200'), |
||
380 | 'Etc/GMT-13' => array('+1300', '+1300'), |
||
381 | 'Etc/GMT-14' => array('+1400', '+1400'), |
||
382 | 'Etc/GMT-2' => array('+0200', '+0200'), |
||
383 | 'Etc/GMT-3' => array('+0300', '+0300'), |
||
384 | 'Etc/GMT-4' => array('+0400', '+0400'), |
||
385 | 'Etc/GMT-5' => array('+0500', '+0500'), |
||
386 | 'Etc/GMT-6' => array('+0600', '+0600'), |
||
387 | 'Etc/GMT-7' => array('+0700', '+0700'), |
||
388 | 'Etc/GMT-8' => array('+0800', '+0800'), |
||
389 | 'Etc/GMT-9' => array('+0900', '+0900'), |
||
390 | 'Europe/Amsterdam' => array('+0100', '+0200'), |
||
391 | 'Europe/Andorra' => array('+0100', '+0200'), |
||
392 | 'Europe/Athens' => array('+0200', '+0300'), |
||
393 | 'Europe/Belfast' => array('+0000', '+0100'), |
||
394 | 'Europe/Belgrade' => array('+0100', '+0200'), |
||
395 | 'Europe/Berlin' => array('+0100', '+0200'), |
||
396 | 'Europe/Bratislava' => array('+0100', '+0200'), |
||
397 | 'Europe/Brussels' => array('+0100', '+0200'), |
||
398 | 'Europe/Bucharest' => array('+0200', '+0300'), |
||
399 | 'Europe/Budapest' => array('+0100', '+0200'), |
||
400 | 'Europe/Chisinau' => array('+0200', '+0300'), |
||
401 | 'Europe/Copenhagen' => array('+0100', '+0200'), |
||
402 | 'Europe/Dublin' => array('+0000', '+0100'), |
||
403 | 'Europe/Gibraltar' => array('+0100', '+0200'), |
||
404 | 'Europe/Helsinki' => array('+0200', '+0300'), |
||
405 | 'Europe/Istanbul' => array('+0200', '+0300'), |
||
406 | 'Europe/Kaliningrad' => array('+0200', '+0300'), |
||
407 | 'Europe/Kiev' => array('+0200', '+0300'), |
||
408 | 'Europe/Lisbon' => array('+0000', '+0100'), |
||
409 | 'Europe/Ljubljana' => array('+0100', '+0200'), |
||
410 | 'Europe/London' => array('+0000', '+0100'), |
||
411 | 'Europe/Luxembourg' => array('+0100', '+0200'), |
||
412 | 'Europe/Madrid' => array('+0100', '+0200'), |
||
413 | 'Europe/Malta' => array('+0100', '+0200'), |
||
414 | 'Europe/Minsk' => array('+0200', '+0300'), |
||
415 | 'Europe/Monaco' => array('+0100', '+0200'), |
||
416 | 'Europe/Moscow' => array('+0300', '+0400'), |
||
417 | 'Europe/Nicosia' => array('+0200', '+0300'), |
||
418 | 'Europe/Oslo' => array('+0100', '+0200'), |
||
419 | 'Europe/Paris' => array('+0100', '+0200'), |
||
420 | 'Europe/Prague' => array('+0100', '+0200'), |
||
421 | 'Europe/Riga' => array('+0200', '+0300'), |
||
422 | 'Europe/Rome' => array('+0100', '+0200'), |
||
423 | 'Europe/Samara' => array('+0400', '+0500'), |
||
424 | 'Europe/San_Marino' => array('+0100', '+0200'), |
||
425 | 'Europe/Sarajevo' => array('+0100', '+0200'), |
||
426 | 'Europe/Simferopol' => array('+0200', '+0300'), |
||
427 | 'Europe/Skopje' => array('+0100', '+0200'), |
||
428 | 'Europe/Sofia' => array('+0200', '+0300'), |
||
429 | 'Europe/Stockholm' => array('+0100', '+0200'), |
||
430 | 'Europe/Tallinn' => array('+0200', '+0200'), |
||
431 | 'Europe/Tirane' => array('+0100', '+0200'), |
||
432 | 'Europe/Tiraspol' => array('+0200', '+0300'), |
||
433 | 'Europe/Uzhgorod' => array('+0200', '+0300'), |
||
434 | 'Europe/Vaduz' => array('+0100', '+0200'), |
||
435 | 'Europe/Vatican' => array('+0100', '+0200'), |
||
436 | 'Europe/Vienna' => array('+0100', '+0200'), |
||
437 | 'Europe/Vilnius' => array('+0200', '+0200'), |
||
438 | 'Europe/Warsaw' => array('+0100', '+0200'), |
||
439 | 'Europe/Zagreb' => array('+0100', '+0200'), |
||
440 | 'Europe/Zaporozhye' => array('+0200', '+0300'), |
||
441 | 'Europe/Zurich' => array('+0100', '+0200'), |
||
442 | 'GB' => array('+0000', '+0100'), |
||
443 | 'GB-Eire' => array('+0000', '+0100'), |
||
444 | 'HST' => array('-1000', '-1000'), |
||
445 | 'Hongkong' => array('+0800', '+0800'), |
||
446 | 'Indian/Antananarivo' => array('+0300', '+0300'), |
||
447 | 'Indian/Chagos' => array('+0500', '+0500'), |
||
448 | 'Indian/Christmas' => array('+0700', '+0700'), |
||
449 | 'Indian/Cocos' => array('+061800', '+061800'), |
||
450 | 'Indian/Comoro' => array('+0300', '+0300'), |
||
451 | 'Indian/Kerguelen' => array('+0500', '+0500'), |
||
452 | 'Indian/Mahe' => array('+0400', '+0400'), |
||
453 | 'Indian/Maldives' => array('+0500', '+0500'), |
||
454 | 'Indian/Mauritius' => array('+0400', '+0400'), |
||
455 | 'Indian/Mayotte' => array('+0300', '+0300'), |
||
456 | 'Indian/Reunion' => array('+0400', '+0400'), |
||
457 | 'Iran' => array('+031800', '+041800'), |
||
458 | 'Israel' => array('+0200', '+0300'), |
||
459 | 'Jamaica' => array('-0500', '-0500'), |
||
460 | 'Japan' => array('+0900', '+0900'), |
||
461 | 'Kwajalein' => array('+1200', '+1200'), |
||
462 | 'Libya' => array('+0200', '+0200'), |
||
463 | 'MET' => array('+0100', '+0200'), |
||
464 | 'MST' => array('-0700', '-0700'), |
||
465 | 'MST7MDT' => array('-0700', '-0600'), |
||
466 | 'Mexico/BajaNorte' => array('-0800', '-0700'), |
||
467 | 'Mexico/BajaSur' => array('-0700', '-0600'), |
||
468 | 'Mexico/General' => array('-0600', '-0500'), |
||
469 | 'Mideast/Riyadh87' => array('+03424', '+03424'), |
||
470 | 'Mideast/Riyadh88' => array('+03424', '+03424'), |
||
471 | 'Mideast/Riyadh89' => array('+03424', '+03424'), |
||
472 | 'NZ' => array('+1300', '+1200'), |
||
473 | 'NZ-CHAT' => array('+132700', '+122700'), |
||
474 | 'Navajo' => array('-0700', '-0600'), |
||
475 | 'PRC' => array('+0800', '+0800'), |
||
476 | 'PST8PDT' => array('-0800', '-0700'), |
||
477 | 'Pacific/Apia' => array('-1100', '-1100'), |
||
478 | 'Pacific/Auckland' => array('+1300', '+1200'), |
||
479 | 'Pacific/Chatham' => array('+132700', '+122700'), |
||
480 | 'Pacific/Easter' => array('-0500', '-0600'), |
||
481 | 'Pacific/Efate' => array('+1100', '+1100'), |
||
482 | 'Pacific/Enderbury' => array('+1300', '+1300'), |
||
483 | 'Pacific/Fakaofo' => array('-1000', '-1000'), |
||
484 | 'Pacific/Fiji' => array('+1200', '+1200'), |
||
485 | 'Pacific/Funafuti' => array('+1200', '+1200'), |
||
486 | 'Pacific/Galapagos' => array('-0600', '-0600'), |
||
487 | 'Pacific/Gambier' => array('-0900', '-0900'), |
||
488 | 'Pacific/Guadalcanal' => array('+1100', '+1100'), |
||
489 | 'Pacific/Guam' => array('+1000', '+1000'), |
||
490 | 'Pacific/Honolulu' => array('-1000', '-1000'), |
||
491 | 'Pacific/Johnston' => array('-1000', '-1000'), |
||
492 | 'Pacific/Kiritimati' => array('+1400', '+1400'), |
||
493 | 'Pacific/Kosrae' => array('+1100', '+1100'), |
||
494 | 'Pacific/Kwajalein' => array('+1200', '+1200'), |
||
495 | 'Pacific/Majuro' => array('+1200', '+1200'), |
||
496 | 'Pacific/Marquesas' => array('-091800', '-091800'), |
||
497 | 'Pacific/Midway' => array('-1100', '-1100'), |
||
498 | 'Pacific/Nauru' => array('+1200', '+1200'), |
||
499 | 'Pacific/Niue' => array('-1100', '-1100'), |
||
500 | 'Pacific/Norfolk' => array('+111800', '+111800'), |
||
501 | 'Pacific/Noumea' => array('+1100', '+1100'), |
||
502 | 'Pacific/Pago_Pago' => array('-1100', '-1100'), |
||
503 | 'Pacific/Palau' => array('+0900', '+0900'), |
||
504 | 'Pacific/Pitcairn' => array('-0800', '-0800'), |
||
505 | 'Pacific/Ponape' => array('+1100', '+1100'), |
||
506 | 'Pacific/Port_Moresby' => array('+1000', '+1000'), |
||
507 | 'Pacific/Rarotonga' => array('-1000', '-1000'), |
||
508 | 'Pacific/Saipan' => array('+1000', '+1000'), |
||
509 | 'Pacific/Samoa' => array('-1100', '-1100'), |
||
510 | 'Pacific/Tahiti' => array('-1000', '-1000'), |
||
511 | 'Pacific/Tarawa' => array('+1200', '+1200'), |
||
512 | 'Pacific/Tongatapu' => array('+1300', '+1300'), |
||
513 | 'Pacific/Truk' => array('+1000', '+1000'), |
||
514 | 'Pacific/Wake' => array('+1200', '+1200'), |
||
515 | 'Pacific/Wallis' => array('+1200', '+1200'), |
||
516 | 'Pacific/Yap' => array('+1000', '+1000'), |
||
517 | 'Poland' => array('+0100', '+0200'), |
||
518 | 'Portugal' => array('+0000', '+0100'), |
||
519 | 'ROC' => array('+0800', '+0800'), |
||
520 | 'ROK' => array('+0900', '+0900'), |
||
521 | 'Singapore' => array('+0800', '+0800'), |
||
522 | 'SystemV/AST4' => array('-0400', '-0400'), |
||
523 | 'SystemV/AST4ADT' => array('-0400', '-0300'), |
||
524 | 'SystemV/CST6' => array('-0600', '-0600'), |
||
525 | 'SystemV/CST6CDT' => array('-0600', '-0500'), |
||
526 | 'SystemV/EST5' => array('-0500', '-0500'), |
||
527 | 'SystemV/EST5EDT' => array('-0500', '-0400'), |
||
528 | 'SystemV/HST10' => array('-1000', '-1000'), |
||
529 | 'SystemV/MST7' => array('-0700', '-0700'), |
||
530 | 'SystemV/MST7MDT' => array('-0700', '-0600'), |
||
531 | 'SystemV/PST8' => array('-0800', '-0800'), |
||
532 | 'SystemV/PST8PDT' => array('-0800', '-0700'), |
||
533 | 'SystemV/YST9' => array('-0900', '-0900'), |
||
534 | 'SystemV/YST9YDT' => array('-0900', '-0800'), |
||
535 | 'Turkey' => array('+0200', '+0300'), |
||
536 | 'US/Alaska' => array('-0900', '-0800'), |
||
537 | 'US/Aleutian' => array('-1000', '-0900'), |
||
538 | 'US/Arizona' => array('-0700', '-0700'), |
||
539 | 'US/Central' => array('-0600', '-0500'), |
||
540 | 'US/East-Indiana' => array('-0500', '-0500'), |
||
541 | 'US/Eastern' => array('-0500', '-0400'), |
||
542 | 'US/Hawaii' => array('-1000', '-1000'), |
||
543 | 'US/Indiana-Starke' => array('-0500', '-0500'), |
||
544 | 'US/Michigan' => array('-0500', '-0400'), |
||
545 | 'US/Mountain' => array('-0700', '-0600'), |
||
546 | 'US/Pacific' => array('-0800', '-0700'), |
||
547 | 'US/Samoa' => array('-1100', '-1100'), |
||
548 | 'W-SU' => array('+0300', '+0400'), |
||
549 | 'WET' => array('+0000', '+0100') |
||
550 | ); |
||
551 | |||
552 | // From date_functions.php |
||
553 | |||
554 | // takes iCalendar 2 day format and makes it into 3 characters |
||
555 | // if $txt is true, it returns the 3 letters, otherwise it returns the |
||
556 | // integer of that day; 0=Sun, 1=Mon, etc. |
||
557 | /** |
||
558 | * @param $day |
||
559 | * @param bool $txt |
||
560 | * @return string |
||
|
|||
561 | */ |
||
562 | public function two2threeCharDays($day, $txt = true) |
||
581 | |||
582 | // dateOfWeek() takes a date in Ymd and a day of week in 3 letters or more |
||
583 | // and returns the date of that day. (ie: "sun" or "sunday" would be acceptable values of $day but not "su") |
||
584 | /** |
||
585 | * @param $Ymd |
||
586 | * @param $day |
||
587 | * @return bool|string |
||
588 | */ |
||
589 | public function dateOfWeek($Ymd, $day) |
||
603 | |||
604 | // function to compare to dates in Ymd and return the number of weeks |
||
605 | // that differ between them. requires dateOfWeek() |
||
606 | /** |
||
607 | * @param $now |
||
608 | * @param $then |
||
609 | * @return float |
||
610 | */ |
||
611 | public function weekCompare($now, $then) |
||
625 | |||
626 | // function to compare to dates in Ymd and return the number of days |
||
627 | // that differ between them. |
||
628 | /** |
||
629 | * @param $now |
||
630 | * @param $then |
||
631 | * @return float |
||
632 | */ |
||
633 | public function dayCompare($now, $then) |
||
644 | |||
645 | // function to compare to dates in Ymd and return the number of months |
||
646 | // that differ between them. |
||
647 | /** |
||
648 | * @param $now |
||
649 | * @param $then |
||
650 | * @return int |
||
651 | */ |
||
652 | public function monthCompare($now, $then) |
||
666 | |||
667 | /** |
||
668 | * @param $now |
||
669 | * @param $then |
||
670 | * @return mixed |
||
671 | */ |
||
672 | public function yearCompare($now, $then) |
||
680 | |||
681 | // localizeDate() - similar to strftime but uses our preset arrays of localized |
||
682 | // months and week days and only supports %A, %a, %B, %b, %e, and %Y |
||
683 | // more can be added as needed but trying to keep it small while we can |
||
684 | /*function localizeDate($format, $timestamp) { |
||
685 | global $daysofweek_lang, $daysofweekshort_lang, $daysofweekreallyshort_lang, $monthsofyear_lang, $monthsofyear_lang, $monthsofyearshort_lang; |
||
686 | $year = date("Y", $timestamp); |
||
687 | $month = date("n", $timestamp)-1; |
||
688 | $day = date("j", $timestamp); |
||
689 | $dayofweek = date("w", $timestamp); |
||
690 | |||
691 | $date = str_replace('%Y', $year, $format); |
||
692 | $date = str_replace('%e', $day, $date); |
||
693 | $date = str_replace('%B', $monthsofyear_lang[$month], $date); |
||
694 | $date = str_replace('%b', $monthsofyearshort_lang[$month], $date); |
||
695 | $date = str_replace('%A', $daysofweek_lang[$dayofweek], $date); |
||
696 | $date = str_replace('%a', $daysofweekshort_lang[$dayofweek], $date); |
||
697 | |||
698 | return $date; |
||
699 | |||
700 | }*/ |
||
701 | // calcOffset takes an offset (ie, -0500) and returns it in the number of seconds |
||
702 | /** |
||
703 | * @param $offset_str |
||
704 | * @return int |
||
705 | */ |
||
706 | public function calcOffset($offset_str) |
||
718 | |||
719 | // calcTime calculates the unixtime of a new offset by comparing it to the current offset |
||
720 | // $have is the current offset (ie, '-0500') |
||
721 | // $want is the wanted offset (ie, '-0700') |
||
722 | // $time is the unixtime relative to $have |
||
723 | /** |
||
724 | * @param $have |
||
725 | * @param $want |
||
726 | * @param $time |
||
727 | * @return int |
||
728 | */ |
||
729 | public function calcTime($have, $want, $time) |
||
741 | |||
742 | /** |
||
743 | * @param $time |
||
744 | * @return string |
||
745 | */ |
||
746 | public function chooseOffset($time) |
||
770 | |||
771 | // ¥³¥ó¥¹¥È¥é¥¯¥¿ |
||
772 | |||
773 | /** |
||
774 | * iCal_parser constructor. |
||
775 | */ |
||
776 | public function __construct() |
||
779 | |||
780 | // ¥Õ¥¡¥¤¥ë¤ò¥Ñ¡¼¥¹¤·¤Æ¡¢ÆâÉôÊÑ¿ô¤Ë¼è¤ê¹þ¤à |
||
781 | |||
782 | /** |
||
783 | * @param $filename |
||
784 | * @param $calendar_name |
||
785 | * @return string |
||
786 | */ |
||
787 | public function parse($filename, $calendar_name) |
||
1214 | |||
1215 | // ¥Ñ¡¼¥¹¤·¤¿iCalendar¥Ç¡¼¥¿¤«¤é¡¢INSERT,UPDATEÍѤÎSETʸÇÛÎó¤òÀ¸À®¤¹¤ë´Ø¿ô |
||
1216 | |||
1217 | /** |
||
1218 | * @return array |
||
1219 | */ |
||
1220 | public function output_setsqls() |
||
1297 | |||
1298 | // Ï¢ÁÛÇÛÎó¤ò°ú¿ô¤Ë¼è¤ê¡¢$event¤«¤éINSERT,UPDATEÍѤÎSETʸ¤òÀ¸À®¤¹¤ë¥¯¥é¥¹´Ø¿ô |
||
1299 | |||
1300 | /** |
||
1301 | * @param $event |
||
1302 | * @param $cols |
||
1303 | * @return string |
||
1304 | */ |
||
1305 | public function get_sql_set($event, $cols) |
||
1354 | |||
1355 | // mb_convert_kana¤Î½èÍý |
||
1356 | |||
1357 | /** |
||
1358 | * @param $str |
||
1359 | * @param $option |
||
1360 | * @return string |
||
1361 | */ |
||
1362 | View Code Duplication | public function mb_convert_kana($str, $option) |
|
1371 | |||
1372 | // ¥µ¥Ë¥¿¥¤¥º´ØÏ¢¤Î´Ø¿ô (¥µ¥Ö¥¯¥é¥¹¤òºîÀ®¤¹¤ë»þ¤ÎOverrideÂоÝ) |
||
1373 | |||
1374 | /** |
||
1375 | * @param $data |
||
1376 | * @return string |
||
1377 | */ |
||
1378 | public function textarea_sanitizer_for_sql($data) |
||
1401 | |||
1402 | /** |
||
1403 | * @param $data |
||
1404 | * @return string |
||
1405 | */ |
||
1406 | public function text_sanitizer_for_sql($data) |
||
1413 | |||
1414 | // The End of Class |
||
1415 | } |
||
1416 |
This check compares the return type specified in the
@return
annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.