2 /************************************************************************/
4 /************************************************************************/
5 /* Copyright (c) 2002-2010 */
6 /* Inclusive Design Institute */
8 /* This program is free software. You can redistribute it and/or */
9 /* modify it under the terms of the GNU General Public License */
10 /* as published by the Free Software Foundation. */
11 /************************************************************************/
14 if (!defined('AT_INCLUDE_PATH')) { exit; }
20 /* config variables. if they're not in the db then it uses the installation default values: */
21 $_config_defaults = array();
22 $_config_defaults['contact_email'] = '';
23 $_config_defaults['email_notification'] = 1; // enabled
24 $_config_defaults['allow_instructor_requests'] = 1; // enabled
25 $_config_defaults['auto_approve_instructors'] = 0; // disabled
26 $_config_defaults['max_file_size'] = 10485760; // 10MB
27 $_config_defaults['max_course_size'] = 104857600; // 100 MB
28 $_config_defaults['max_course_float'] = 2097152; // 2MB
29 $_config_defaults['max_login'] = 5; //maximum login attempt
30 $_config_defaults['illegal_extentions'] = 'exe|asp|php|php3|bat|cgi|pl|com|vbs|reg|pcd|pif|scr|bas|inf|vb|vbe|wsc|wsf|wsh';
31 $_config_defaults['site_name'] = '';
32 $_config_defaults['home_url'] = ''; // empty means disabled
33 $_config_defaults['default_language'] = 'en';
34 $_config_defaults['allow_registration'] = 1;
35 $_config_defaults['allow_browse'] = 1;
36 $_config_defaults['just_social'] = 0;
37 $_config_defaults['allow_instructor_registration'] = 1;
38 $_config_defaults['use_captcha'] = 0; //use captcha?
39 $_config_defaults['allow_unenroll'] = 1;
40 $_config_defaults['cache_dir'] = ''; // empty means disabled
41 $_config_defaults['enable_category_themes'] = 0; // disabled
42 $_config_defaults['course_backups'] = 5; // number of backups
43 $_config_defaults['email_confirmation'] = 0; // disabled
44 $_config_defaults['master_list'] = 0; // disabled
45 $_config_defaults['user_notes'] = 0; // disabled - whether to enable the user contributed handbook notes
46 $_config_defaults['theme_categories'] = 0; // disabled
47 $_config_defaults['main_defaults'] = 'mods/_standard/forums/forum/list.php|mods/_core/glossary/index.php|mods/_standard/file_storage/index.php|mods/_standard/social/index.php|mods/_standard/sitemap/sitemap.php|mods/_standard/photos/index.php';
48 $_config_defaults['home_defaults'] = 'mods/_standard/file_storage/index.php|mods/_standard/tests/my_tests.php|mods/_standard/tracker/my_stats.php|mods/_standard/directory/directory.php';
49 $_config_defaults['side_defaults'] = 'social|menu_menu|related_topics|users_online|glossary|search|poll|posts';
50 $_config_defaults['pref_defaults'] = 'a:35:{s:10:"PREF_THEME";s:7:"default";s:17:"PREF_MOBILE_THEME";s:6:"mobile";s:15:"PREF_FORM_FOCUS";i:1;s:14:"PREF_NUMBERING";i:0;s:13:"PREF_TIMEZONE";s:1:"0";s:18:"PREF_JUMP_REDIRECT";i:1;s:19:"PREF_CONTENT_EDITOR";i:2;s:15:"PREF_SHOW_GUIDE";i:1;s:14:"PREF_FONT_FACE";s:0:"";s:15:"PREF_FONT_TIMES";s:3:"0.8";s:14:"PREF_FG_COLOUR";s:0:"";s:14:"PREF_BG_COLOUR";s:0:"";s:14:"PREF_HL_COLOUR";s:0:"";s:28:"PREF_USE_ALTERNATIVE_TO_TEXT";i:0;s:16:"PREF_ALT_TO_TEXT";s:5:"audio";s:34:"PREF_ALT_TO_TEXT_APPEND_OR_REPLACE";s:6:"append";s:25:"PREF_ALT_TEXT_PREFER_LANG";s:2:"en";s:29:"PREF_USE_ALTERNATIVE_TO_AUDIO";i:0;s:17:"PREF_ALT_TO_AUDIO";s:4:"text";s:35:"PREF_ALT_TO_AUDIO_APPEND_OR_REPLACE";s:6:"append";s:26:"PREF_ALT_AUDIO_PREFER_LANG";s:2:"en";s:30:"PREF_USE_ALTERNATIVE_TO_VISUAL";i:0;s:18:"PREF_ALT_TO_VISUAL";s:4:"text";s:36:"PREF_ALT_TO_VISUAL_APPEND_OR_REPLACE";s:6:"append";s:27:"PREF_ALT_VISUAL_PREFER_LANG";s:2:"en";s:15:"PREF_DICTIONARY";i:1;s:14:"PREF_THESAURUS";i:1;s:16:"PREF_NOTE_TAKING";i:1;s:15:"PREF_CALCULATOR";i:1;s:11:"PREF_ABACUS";i:1;s:10:"PREF_ATLAS";i:1;s:17:"PREF_ENCYCLOPEDIA";i:1;s:18:"PREF_SHOW_CONTENTS";i:1;s:31:"PREF_SHOW_NEXT_PREVIOUS_BUTTONS";i:1;s:22:"PREF_SHOW_BREAD_CRUMBS";i:1;}';
51 $_config_defaults['pref_inbox_notify'] = 0; // disabled
52 $_config_defaults['pref_is_auto_login'] = "disable"; // disabled
53 $_config_defaults['check_version'] = 0; // disabled
54 $_config_defaults['fs_versioning'] = 1; // enabled - file storage version control
55 $_config_defaults['last_cron'] = 0; // cron has to be enabled manually
56 $_config_defaults['enable_mail_queue'] = 0; // mail queue can only be enabled if cron is running
57 $_config_defaults['auto_install_languages'] = 0; // auto install languages can only be enabled if cron is running
58 $_config_defaults['display_name_format'] = 1; // 0-5, see (array) display_name_formats
59 $_config_defaults['time_zone'] = ''; // empty means disabled or not supported
60 $_config_defaults['prof_pic_max_file_size'] = 819200; // max size of an uploaded profile pic, in bytes. default 800 KB
61 $_config_defaults['sent_msgs_ttl'] = 120; // number of days till saved sent inbox msgs are deleted
62 $_config_defaults['mysql_group_concat_max_len'] = null; // null = check, 0 = disabled/unsupported, (non-zero is the actual mysql value)
63 $_config_defaults['latex_server'] = 'http://www.atutor.ca/cgi/mimetex.cgi?'; // the full URL to an external LaTeX parse
64 $_config_defaults['gtype'] = 0; //Defaulted to be original google search, @author Harris
65 $_config_defaults['pretty_url'] = 0; //pretty url, disabled
66 $_config_defaults['course_dir_name'] = 0; //course dir name (course slug), disabled
67 $_config_defaults['apache_mod_rewrite'] = 0; //apache mod_rewrite extension, disabled by default.
68 $_config = $_config_defaults;
71 /* display name formats
76 $display_name_formats = array();
77 $display_name_formats[0] = 'display_name_format_l';
78 $display_name_formats[1] = 'display_name_format_fst';
79 $display_name_formats[2] = 'display_name_format_fstl';
80 $display_name_formats[3] = 'display_name_format_fl';
81 $display_name_formats[4] = 'display_name_format_lf';
82 $display_name_formats[5] = 'display_name_format_lfst';
84 /* the atutor.ca language translation server: */
85 define('AT_LIVE_LANG_PACK_URL', 'http://atutor.ca/atutor/translate/get_lang_pack.php?lang_code=');
88 define('LINK_CAT_COURSE', 1);
89 define('LINK_CAT_GROUP', 2);
90 define('LINK_CAT_SELF', 3);
92 define('LINK_CAT_AUTH_NONE', 0);
93 define('LINK_CAT_AUTH_ALL', 1);
94 define('LINK_CAT_AUTH_COURSE', 2);
95 define('LINK_CAT_AUTH_GROUP', 3);
97 /* drafting room constants */
98 define('WORKSPACE_COURSE', 1); // aka Course Files
99 define('WORKSPACE_PERSONAL', 2); // aka My Files
100 define('WORKSPACE_ASSIGNMENT', 3);
101 define('WORKSPACE_GROUP', 4);
102 define('WORKSPACE_SYSTEM', 5);
103 define('WORKSPACE_PATH_DEPTH', 1); // how deep the directories should be
104 define('WORKSPACE_FILE_PATH', AT_CONTENT_DIR . 'file_storage/');
106 /* how many related topics can be listed */
107 define('NUM_RELATED_TOPICS', 5);
109 /* how many days until the password reminder link expires */
110 define('AT_PASSWORD_REMINDER_EXPIRY', 2);
112 /* taking a test an unlimited # of times */
113 define('AT_TESTS_TAKE_UNLIMITED', 0);
115 /* how many announcements listed */
116 define('NUM_ANNOUNCEMENTS', 10);
118 /* how long cache objects can persist */
119 /* in seconds. should be low initially, but doesn't really matter. */
120 /* in practice should be 0 (ie. INF) */
121 define('CACHE_TIME_OUT', 60);
123 /* member status field options */
124 define('AT_STATUS_DISABLED', 0);
125 define('AT_STATUS_UNCONFIRMED', 1);
126 define('AT_STATUS_STUDENT', 2);
127 define('AT_STATUS_INSTRUCTOR', 3);
129 /* $_pages sections */
130 define('AT_NAV_PUBLIC', 'AT_NAV_PUBLIC');
131 define('AT_NAV_START', 'AT_NAV_START');
132 define('AT_NAV_COURSE', 'AT_NAV_COURSE');
133 define('AT_NAV_HOME', 'AT_NAV_HOME');
134 define('AT_NAV_ADMIN', 'AT_NAV_ADMIN');
136 /* user permissions */
138 /* $_privs[priv number] = array(String name, Boolean pen, Boolean tools) */
139 define('AT_PRIV_RETURN', true);
140 define('AT_PRIV_NONE', 0);
142 define('AT_PRIV_ADMIN', 1);
145 define('AT_ADMIN_PRIV_NONE', 0);
146 define('AT_ADMIN_PRIV_ADMIN', 1);
148 /* admin log (type of operations) */
149 define('AT_ADMIN_LOG_UPDATE', 1);
150 define('AT_ADMIN_LOG_DELETE', 2);
151 define('AT_ADMIN_LOG_INSERT', 3);
152 define('AT_ADMIN_LOG_REPLACE', 4);
153 define('AT_ADMIN_LOG_OTHER', 5); //for non-db operations
155 if (strpos(@ini_get('arg_separator.input'), ';') !== false) {
161 /* the URL to the AChecker server of choice. must include trailing slash. */
162 //define('AT_ACHECKER_URL', 'http://checker.atrc.utoronto.ca/servlet/');
163 define('AT_ACHECKER_URL', 'http://www.achecker.ca/');
164 define('AT_ACHECKER_WEB_SERVICE_ID', '2f4149673d93b7f37eb27506905f19d63fbdfe2d');
166 if (!isset($_SERVER['REQUEST_URI'])) {
167 $REQUEST_URI = $_SERVER['SCRIPT_NAME'];
168 if ($_SERVER['QUERY_STRING'] != '') {
169 $REQUEST_URI .= '?'.$_SERVER['QUERY_STRING'];
171 $_SERVER['REQUEST_URI'] = $REQUEST_URI;
174 /* get the base url */
175 if (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on')) {
176 $server_protocol = 'https://';
178 $server_protocol = 'http://';
181 /* Handles pretty url - @author Harris */
182 define('AT_PRETTY_URL_HANDLER', 'go.php');
183 define('AT_PRETTY_URL_NOT_HEADER', false);
184 define('AT_PRETTY_URL_IS_HEADER', true);
186 $dir_deep = substr_count(AT_INCLUDE_PATH, '..');
187 $url_parts = explode('/', $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
188 $_base_href = array_slice($url_parts, 0, count($url_parts) - $dir_deep-1);
189 $_base_href = $server_protocol . implode('/', $_base_href).'/';
191 if (($temp = strpos($_base_href, AT_PRETTY_URL_HANDLER)) > 0){
194 $endpos = strlen($_base_href);
197 $_base_href = substr($_base_href, 0, $endpos);
198 $_base_path = substr($_base_href, strlen($server_protocol . $_SERVER['HTTP_HOST']));
200 define('AT_BASE_HREF', $_base_href);
203 $_rel_url = '/'.implode('/', array_slice($url_parts, count($url_parts) - $dir_deep-1));
205 /* where the gudes are (could be a full URL if needed): */
206 define('AT_GUIDES_PATH', $_base_path . 'documentation/');
208 define('AT_BACKUP_DIR', AT_CONTENT_DIR . 'backups/'); // where the backups get stored
210 define('VERSION', '2.0.3');
211 define('ONLINE_UPDATE', 3); /* update the user expiry every 3 min */
213 /* valid date format_types: */
214 /* @see ./include/lib/date_functions.inc.php */
215 define('AT_DATE_MYSQL_DATETIME', 1); /* YYYY-MM-DD HH:MM:SS */
216 define('AT_DATE_MYSQL_TIMESTAMP_14', 2); /* YYYYMMDDHHMMSS */
217 define('AT_DATE_UNIX_TIMESTAMP', 3); /* seconds since epoch */
218 define('AT_DATE_INDEX_VALUE', 4); /* index to the date arrays */
220 define('AT_ROLE_STUDENT', 0);
221 define('AT_ROLE_INSTRUCTOR', 1);
223 define('AT_KBYTE_SIZE', 1024);
225 define('AT_COURSESIZE_UNLIMITED', -1);
226 define('AT_COURSESIZE_DEFAULT', -2); /* can be changed in config.inc.php */
227 define('AT_FILESIZE_DEFAULT', -3); /* this too */
228 define('AT_FILESIZE_SYSTEM_MAX', -4);
229 $editable_file_types = array('txt', 'html', 'htm', 'xml', 'css', 'asc', 'csv', 'sql');
231 /* how many poll choices are available: */
232 define('AT_NUM_POLL_CHOICES', 7);
234 /* ways of releasing a test */
235 define('AT_RELEASE_NEVER', 0); // do not release
236 define('AT_RELEASE_IMMEDIATE', 1); // release after submitted
237 define('AT_RELEASE_MARKED', 2); // release after all q's marked
239 /* QPROP = question property: */
240 define('AT_TESTS_QPROP_WORD', 1);
241 define('AT_TESTS_QPROP_SENTENCE', 2);
242 define('AT_TESTS_QPROP_PARAGRAPH', 3);
243 define('AT_TESTS_QPROP_PAGE', 4);
244 define('AT_TESTS_QPROP_ALIGN_VERT', 5); // align question options vertically
245 define('AT_TESTS_QPROP_ALIGN_HORT', 6); // align question options horizontally
247 /* enrollment types for $_SESSION['enroll'] */
248 define('AT_ENROLL_NO', 0);
249 define('AT_ENROLL_YES', 1);
250 define('AT_ENROLL_ALUMNUS', 2);
252 // constants for reading list module
253 define ('RL_TYPE_BOOK', 1);
254 define ('RL_TYPE_URL', 2);
255 define ('RL_TYPE_HANDOUT', 3);
256 define ('RL_TYPE_AV', 4);
257 define ('RL_TYPE_FILE', 5);
260 define ('CONTENT_TYPE_CONTENT', 0);
261 define ('CONTENT_TYPE_FOLDER', 1);
262 define ('CONTENT_TYPE_WEBLINK', 2);
264 // content pre-requisite type
265 define ('CONTENT_PRE_TEST', 'test');
267 // the types of mobile devices
268 define('IPOD_DEVICE', 'ipod');
269 define('IPHONE_DEVICE', 'iphone');
270 define('BLACKBERRY_DEVICE', 'blackberry');
271 define('ANDROID_DEVICE', 'android');
272 define('UNKNOWN_DEVICE', 'unknown');
273 define('IPAD_DEVICE', 'ipad');
276 define('DESKTOP_DEVICE', 'Desktop');
277 define('MOBILE_DEVICE', 'Mobile');
279 $_rl_types = array ();
280 $_rl_types[RL_TYPE_BOOK] = 'rl_book';
281 $_rl_types[RL_TYPE_URL] = 'rl_url';
282 $_rl_types[RL_TYPE_HANDOUT] = 'rl_handout';
283 $_rl_types[RL_TYPE_AV] = 'rl_av';
284 $_rl_types[RL_TYPE_FILE] = 'rl_file';
286 /* control how user inputs get formatted on output: */
287 /* note: v131 not all formatting options are available on each section. */
289 define('AT_FORMAT_NONE', 0); /* LEQ to ~AT_FORMAT_ALL */
290 define('AT_FORMAT_EMOTICONS', 1);
291 define('AT_FORMAT_LINKS', 2);
292 define('AT_FORMAT_IMAGES', 4);
293 define('AT_FORMAT_HTML', 8);
294 define('AT_FORMAT_GLOSSARY', 16);
295 define('AT_FORMAT_ATCODES', 32);
296 define('AT_FORMAT_CONTENT_DIR', 64); /* remove CONTENT_DIR */
297 define('AT_FORMAT_QUOTES', 128); /* remove double quotes (does this get used?) */
298 define('AT_FORMAT_ALL', AT_FORMAT_EMOTICONS
304 + AT_FORMAT_CONTENT_DIR);
306 $_field_formatting = array();
307 $_field_formatting['assignment.title'] = AT_FORMAT_QUOTES;
309 $_field_formatting['backups.description'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
311 $_field_formatting['blog_posts.body'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
312 $_field_formatting['blog_posts.title'] = AT_FORMAT_NONE | AT_FORMAT_QUOTES;
313 $_field_formatting['blog_posts_comments.comment'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML;
315 $_field_formatting['content.keywords'] = AT_FORMAT_NONE;
316 $_field_formatting['content.title'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
317 $_field_formatting['content.text'] = AT_FORMAT_ALL;
319 $_field_formatting['course_cats.cat_name'] = AT_FORMAT_NONE;
321 $_field_formatting['courses.*'] = AT_FORMAT_ALL & ~AT_FORMAT_EMOTICONS & ~AT_FORMAT_ATCODES & ~AT_FORMAT_LINKS & ~AT_FORMAT_IMAGES;
322 $_field_formatting['courses.banner'] = AT_FORMAT_ALL;
324 $_field_formatting['faqs.topic'] = AT_FORMAT_NONE | AT_FORMAT_QUOTES;
325 $_field_formatting['faqs.question'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
326 $_field_formatting['faqs.answer'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
328 $_field_formatting['forums.title'] = AT_FORMAT_NONE | AT_FORMAT_QUOTES;
329 $_field_formatting['forums.description'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
331 $_field_formatting['forums_threads.subject'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
332 $_field_formatting['forums_threads.body'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
334 $_field_formatting['glossary.word'] = AT_FORMAT_QUOTES;
335 $_field_formatting['glossary.definition'] = AT_FORMAT_ALL & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
337 $_field_formatting['groups.*'] = AT_FORMAT_QUOTES;
339 $_field_formatting['instructor_approvals.notes']= AT_FORMAT_NONE;
341 $_field_formatting['members.*'] = AT_FORMAT_QUOTES; /* wildcards are okay */
343 $_field_formatting['messages.subject'] = AT_FORMAT_EMOTICONS + AT_FORMAT_IMAGES | AT_FORMAT_QUOTES;
344 $_field_formatting['messages.body'] = AT_FORMAT_EMOTICONS + AT_FORMAT_LINKS + AT_FORMAT_IMAGES + AT_FORMAT_ATCODES | AT_FORMAT_QUOTES;
346 $_field_formatting['news.title'] = AT_FORMAT_EMOTICONS | AT_FORMAT_LINKS & ~AT_FORMAT_HTML | AT_FORMAT_QUOTES;
347 $_field_formatting['news.body'] = AT_FORMAT_ALL;
349 $_field_formatting['resource_categories.CatName']= AT_FORMAT_QUOTES;
350 $_field_formatting['resource_categories.Url'] = AT_FORMAT_NONE;
351 $_field_formatting['resource_links.LinkName'] = AT_FORMAT_QUOTES;
352 $_field_formatting['resource_links.Description']= AT_FORMAT_NONE;
353 $_field_formatting['resource_links.SubmitName']= AT_FORMAT_QUOTES;
355 $_field_formatting['reading_list.*'] = AT_FORMAT_QUOTES;
357 $_field_formatting['tests.title'] = AT_FORMAT_ALL;
358 $_field_formatting['tests.instructions'] = AT_FORMAT_ALL;
360 $_field_formatting['themes.title'] = AT_FORMAT_NONE;
362 $_field_formatting['tests_answers.answer'] = AT_FORMAT_NONE;
363 $_field_formatting['tests_answers.notes'] = AT_FORMAT_ALL;
364 $_field_formatting['tests_questions.*'] = AT_FORMAT_ALL | AT_FORMAT_QUOTES;
365 $_field_formatting['tests_questions_categories.title'] = AT_FORMAT_NONE;
367 $_field_formatting['photo_albums.*'] = AT_FORMAT_QUOTES;
368 $_field_formatting['photos.*'] = AT_FORMAT_QUOTES;
370 $_field_formatting['polls.*'] = AT_FORMAT_QUOTES;
372 $_field_formatting['social.*'] = AT_FORMAT_QUOTES;
374 $_field_formatting['input.*'] = AT_FORMAT_QUOTES; /* All input should have '<' and quotes escaped.
377 if (isset($_GET['cid'])) {
378 $cid = intval($_GET['cid']);
379 } else if (isset($_POST['cid'])) {
380 $cid = intval($_POST['cid']);
384 /* google type constants - @author Harris */
385 define('GOOGLE_TYPE_SOAP', 0); //The original soap search with key generated before Dec 2005.
386 define('GOOGLE_TYPE_AJAX', 1); //The new AJAX search by google
388 /* flags for validate_length in vitals. - @author Harris*/
389 define('VALIDATE_LENGTH_FOR_DISPLAY', 1);
391 /* the length of sublink text display in the course index page, detail view */
392 define('SUBLINK_TEXT_LEN', 38);
394 /* The lock out time for max login attempts */
395 define('DEFAULT_VIDEO_PLAYER_WIDTH', 425); // in pixels
396 define('DEFAULT_VIDEO_PLAYER_HEIGHT', 350); // in pixels
398 /* The lock out time for max login attempts */
399 define('LOGIN_ATTEMPT_LOCKED_TIME', 60); //in minutes, default an hour, 60 minutes
401 /* UTC Timezones array */
402 /* When the PHP requirement is 5.3, replace this with PHP timezone functions */
404 $utc_timezones = array(
405 array("UTC-12, Y","-12","Pacific/Fiji"),
406 array("UTC-11, X","-11","Pacific/Midway"),
407 array("UTC-10, W","-10","Pacific/Honolulu"),
408 array("UTC-9:30, V","-9.5","Pacific/Polynesia"),
409 array("UTC-9, V","-9","America/Anchorage"),
410 array("UTC-8, U","-8"," America/Los_Angeles"),
411 array("UTC-7, T","-7","America/Denver"),
412 array("UTC-6, S","-6","America/Chicago"),
413 array("UTC-5, R","-5","America/New_York"),
414 array("UTC-4:30, Q","-4.5","America/Caracas"),
415 array("UTC-4, Q","-4"," America/Antigua"),
416 array("UTC-3:30, P","-3.5","America/St_Johns"),
417 array("UTC-3, P","-3","Antarctica/Rothera"),
418 array("UTC-2, O","-2","Atlantic/South_Georgia"),
419 array("UTC-1, N","-1","America/Scoresbysund"),
420 array("UTC+0, Z","0","Europe/Dublin"),
421 array("UTC+1, A","1","Europe/Andorra"),
422 array("UTC+2, B","2","Europe/Mariehamn"),
423 array("UTC+3, C","3","Asia/Baghdad"),
424 array("UTC+3:30, C","3.5","Asia/Tehran"),
425 array("UTC+4, D","4","Asia/Dubai"),
426 array("UTC+4:30, D","4.5","Asia/Kabul"),
427 array("UTC+5, E","5","Asia/Aqtobe"),
428 array("UTC+5:30, E","5.5","Asia/Kolkata"),
429 array("UTC+5:45, E","5.75","Asia/Katmandu"),
430 array("UTC+6, F","6","Antarctica/Mawson"),
431 array("UTC+6:30, F","6.5","Asia/Rangoon"),
432 array("UTC+7, G","7","Antarctica/Davis"),
433 array("UTC+8, H","8","Australia/Perth"),
434 array("UTC+8:45, H","8.75","Australia/Eucla"),
435 array("UTC+9, I","9","Asia/Seoul"),
436 array("UTC+9:30, I","9.5","Australia/Darwin"),
437 array("UTC+10, K","10","Australia/Lindeman"),
438 array("UTC+10:30, K","10.5"," Australia/Lord_Howe"),
439 array("UTC+11, L","11","Pacific/Ponape"),
440 array("UTC+11:30, L","11.5","Pacific/Norfolk"),
441 array("UTC+12, M","12","Antarctica/McMurdo"),
442 array("UTC+12:45, M","12.75","Pacific/Chatham"),
443 array("UTC+13, M","13","Pacific/Tongatapu"),
444 array("UTC+14, M","14","Pacific/Kiritimati"));
445 /* End of Timezones array */