diff --git a/include/class.config.php b/include/class.config.php index 1df9cc4db13e331129102e8941e675e93c3db79a..ca426bd2c4661f8f417f961cbebc884f3d977cfd 100644 --- a/include/class.config.php +++ b/include/class.config.php @@ -288,10 +288,6 @@ class OsticketConfig extends Config { return $this->get('show_related_tickets'); } - function showNotesInline(){ - return $this->get('show_notes_inline'); - } - function isHtmlThreadEnabled() { return $this->get('enable_html_thread'); } @@ -481,14 +477,6 @@ class OsticketConfig extends Config { return $this->get('log_graceperiod'); } - function logTicketActivity() { - return $this->get('log_ticket_activity'); - } - - function clickableURLS() { - return ($this->get('clickable_urls')); - } - function enableStaffIPBinding() { return ($this->get('staff_ip_binding')); } @@ -691,10 +679,6 @@ class OsticketConfig extends Config { return ($this->get('send_login_errors')); } - function alertONMailParseError() { - return ($this->get('send_mailparse_errors')); - } - /* Attachments */ @@ -871,13 +855,10 @@ class OsticketConfig extends Config { 'autolock_minutes'=>$vars['autolock_minutes'], 'use_email_priority'=>isset($vars['use_email_priority'])?1:0, 'enable_captcha'=>isset($vars['enable_captcha'])?1:0, - 'log_ticket_activity'=>isset($vars['log_ticket_activity'])?1:0, 'auto_assign_reopened_tickets'=>isset($vars['auto_assign_reopened_tickets'])?1:0, 'show_assigned_tickets'=>isset($vars['show_assigned_tickets'])?1:0, 'show_answered_tickets'=>isset($vars['show_answered_tickets'])?1:0, 'show_related_tickets'=>isset($vars['show_related_tickets'])?1:0, - 'show_notes_inline'=>isset($vars['show_notes_inline'])?1:0, - 'clickable_urls'=>isset($vars['clickable_urls'])?1:0, 'hide_staff_name'=>isset($vars['hide_staff_name'])?1:0, 'enable_html_thread'=>isset($vars['enable_html_thread'])?1:0, 'allow_attachments'=>isset($vars['allow_attachments'])?1:0, diff --git a/include/class.format.php b/include/class.format.php index 37abcf2388f293ddd98f928f9bf1a053606f497b..5146c251e6b46e8d79ddab178b5480d611780342 100644 --- a/include/class.format.php +++ b/include/class.format.php @@ -24,10 +24,10 @@ class Format { return $bytes; if($bytes<1024) return $bytes.' bytes'; - if($bytes <102400) + if($bytes < (900<<10)) return round(($bytes/1024),1).' kb'; - return round(($bytes/1024000),1).' mb'; + return round(($bytes/1048576),1).' mb'; } function file_name($filename) { @@ -274,15 +274,6 @@ class Format { //Format text for display.. function display($text, $inline_images=true) { - global $cfg; - - //Wrap long words... - #$text=preg_replace_callback('/\w{75,}/', - # create_function( - # '$matches', - # 'return wordwrap($matches[0],70,"\n",true);'), - # $text); - // Make showing offsite images optional $text = preg_replace_callback('/<img ([^>]*)(src="http[^"]+")([^>]*)\/>/', function($match) { @@ -294,8 +285,7 @@ class Format { $text); //make urls clickable. - if($cfg && $cfg->clickableURLS() && $text) - $text = Format::clickableurls($text); + $text = Format::clickableurls($text); if ($inline_images) return self::viewableImages($text); diff --git a/include/class.ticket.php b/include/class.ticket.php index d4d92e2ca77fb22aa1c3da3cafeb985e241ef487..35e59094e274b035827f54d6904f965f1aa15e47 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -1530,11 +1530,6 @@ class Ticket { //Activity log - saved as internal notes WHEN enabled!! function logActivity($title, $note) { - global $cfg; - - if(!$cfg || !$cfg->logTicketActivity()) - return 0; - return $this->logNote($title, $note, 'SYSTEM', false); } diff --git a/include/i18n/en_US/config.yaml b/include/i18n/en_US/config.yaml index 02ef35e5b262a082cfe8e0db1d6f7559ff991d62..ffbd1da97f80879c5c86cc528c93097003749174 100644 --- a/include/i18n/en_US/config.yaml +++ b/include/i18n/en_US/config.yaml @@ -4,8 +4,7 @@ # --- core: - allowed_filetypes: '.doc, .pdf' - time_format: ' h:i A' + time_format: 'h:i A' date_format: 'm/d/Y' datetime_format: 'm/d/Y g:i a' daydatetime_format: 'D, M j Y g:ia' @@ -14,3 +13,76 @@ core: enable_daylight_saving: 0 reply_separator: '-- do not edit --' + + # Do not translate below here + allowed_filetypes: '.doc, .pdf, .jpg, .jpeg, .gif, .png, .xls, .docx, .xlsx, .txt' + isonline: 1 + staff_ip_binding: 0 + staff_max_logins: 4 + staff_login_timeout: 2 + staff_session_timeout: 30 + passwd_reset_period: 0 + client_max_logins: 4 + client_login_timeout: 2 + client_session_timeout: 30 + max_page_size: 25 + max_open_tickets: 0 + max_file_size: 1048576 + max_user_file_uploads: 1 + max_staff_file_uploads: 1 + autolock_minutes: 3 + alert_email_id: 0 + default_email_id: 0 + default_dept_id: 0 + default_sla_id: 0 + default_priority_id: 2 + default_template_id: 1 + default_smtp_id: 0 + use_email_priority: 0 + enable_kb: 0 + enable_premade: 1 + enable_captcha: 0 + enable_auto_cron: 0 + enable_mail_polling: 0 + send_sys_errors: 1 + send_sql_errors: 1 + send_login_errors: 1 + save_email_headers: 1 + strip_quoted_reply: 1 + ticket_autoresponder: 0 + message_autoresponder: 0 + ticket_notice_active: 1 + ticket_alert_active: 1 + ticket_alert_admin: 1 + ticket_alert_dept_manager: 1 + ticket_alert_dept_members: 0 + message_alert_active: 1 + message_alert_laststaff: 1 + message_alert_assigned: 1 + message_alert_dept_manager: 0 + note_alert_active: 0 + note_alert_laststaff: 1 + note_alert_assigned: 1 + note_alert_dept_manager: 0 + transfer_alert_active: 0 + transfer_alert_assigned: 0 + transfer_alert_dept_manager: 1 + transfer_alert_dept_members: 0 + overdue_alert_active: 1 + overdue_alert_assigned: 1 + overdue_alert_dept_manager: 1 + overdue_alert_dept_members: 0 + assigned_alert_active: 1 + assigned_alert_staff: 1 + assigned_alert_team_lead: 0 + assigned_alert_team_members: 0 + auto_assign_reopened_tickets: 1 + show_related_tickets: 1 + show_assigned_tickets: 1 + show_answered_tickets: 0 + hide_staff_name: 0 + overlimit_notice_active: 0 + email_attachments: 1 + random_ticket_ids: 1 + log_level: 2 + log_graceperiod: 12 diff --git a/include/staff/settings-tickets.inc.php b/include/staff/settings-tickets.inc.php index 6585e8aaa798be387eb119ebcd3f843f3244b726..c1de7869ee5a4d60d3101ac4aaf718ca7f189168 100644 --- a/include/staff/settings-tickets.inc.php +++ b/include/staff/settings-tickets.inc.php @@ -90,19 +90,6 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) <em>(Show all related tickets on user login - otherwise access is restricted to one ticket view per login)</em> </td> </tr> - <tr> - <td width="180">Show Notes Inline:</td> - <td> - <input type="checkbox" name="show_notes_inline" value="1" <?php echo $config['show_notes_inline'] ?'checked="checked"':''; ?> > - <em>(Show internal notes inline)</em> - </td> - </tr> - <tr><td>Clickable URLs:</td> - <td> - <input type="checkbox" name="clickable_urls" <?php echo $config['clickable_urls']?'checked="checked"':''; ?>> - <em>(converts URLs in ticket thread to clickable links)</em> - </td> - </tr> <tr> <td>Human Verification:</td> <td> @@ -131,13 +118,6 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) Show answered tickets on open queue. </td> </tr> - <tr> - <td>Ticket Activity Log:</td> - <td> - <input type="checkbox" name="log_ticket_activity" <?php echo $config['log_ticket_activity']?'checked="checked"':''; ?>> - Log ticket activity as internal notes. - </td> - </tr> <tr> <td>Staff Identity Masking:</td> <td> @@ -218,9 +198,38 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) <tr> <td width="180">Maximum File Size:</td> <td> - <input type="text" name="max_file_size" value="<?php echo $config['max_file_size']; ?>"> in bytes. - <em>(System Max. <?php echo Format::file_size(ini_get('upload_max_filesize')); ?>)</em> - <font class="error"> <?php echo $errors['max_file_size']; ?></font> + <select name="max_file_size"> + <option value="262144">— Small —</option> + <?php $next = 512 << 10; + $max = strtoupper(ini_get('upload_max_filesize')); + $limit = (int) $max; + if (!$limit) $limit = 2 << 20; # 2M default value + elseif (strpos($max, 'K')) $limit <<= 10; + elseif (strpos($max, 'M')) $limit <<= 20; + elseif (strpos($max, 'G')) $limit <<= 30; + while ($next <= $limit) { + // Select the closest, larger value (in case the + // current value is between two) + $diff = $next - $config['max_file_size']; + $selected = ($diff >= 0 && $diff < $next / 2) + ? 'selected="selected"' : ''; ?> + <option value="<?php echo $next; ?>" <?php echo $selected; + ?>><?php echo Format::file_size($next); + ?></option><?php + $next *= 2; + } + // Add extra option if top-limit in php.ini doesn't fall + // at a power of two + if ($next < $limit * 2) { + $selected = ($limit == $config['max_file_size']) + ? 'selected="selected"' : ''; ?> + <option value="<?php echo $limit; ?>" <?php echo $selected; + ?>><?php echo Format::file_size($limit); + ?></option><?php + } + ?> + </select> + <font class="error"> <?php echo $errors['max_file_size']; ?></font> </td> </tr> <tr> diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php index e3e53cb539c40cf5817e262bac0f079a6af2ddf0..dd113733c46468d85a5b14ef5d7376102665e4aa 100644 --- a/include/staff/ticket-view.inc.php +++ b/include/staff/ticket-view.inc.php @@ -313,67 +313,16 @@ foreach (DynamicFormEntry::forTicket($ticket->getId()) as $form) { <h2 style="padding:10px 0 5px 0; font-size:11pt;"><?php echo Format::htmlchars($ticket->getSubject()); ?></h2> <?php $tcount = $ticket->getThreadCount(); -if($cfg->showNotesInline()) - $tcount+= $ticket->getNumNotes(); +$tcount+= $ticket->getNumNotes(); ?> <ul id="threads"> <li><a class="active" id="toggle_ticket_thread" href="#">Ticket Thread (<?php echo $tcount; ?>)</a></li> - <?php - if(!$cfg->showNotesInline()) {?> - <li><a id="toggle_notes" href="#">Internal Notes (<?php echo $ticket->getNumNotes(); ?>)</a></li> - <?php - }?> </ul> -<?php -if(!$cfg->showNotesInline()) { ?> -<div id="ticket_notes"> - <?php - /* Internal Notes */ - if($ticket->getNumNotes() && ($notes=$ticket->getNotes())) { - foreach($notes as $note) { - - ?> - <table class="note" cellspacing="0" cellpadding="1" width="940" border="0"> - <tr> - <th width="640"> - <?php - echo sprintf('%s <em>posted by <b>%s</b></em>', - $note['title'], - Format::htmlchars($note['poster'])); - ?> - </th> - <th class="date" width="300"><?php echo Format::db_datetime($note['created']); ?></th> - </tr> - <tr> - <td colspan="2"> - <?php echo Format::display($note['body']); ?> - </td> - </tr> - <?php - if($note['attachments'] - && ($tentry=$ticket->getThreadEntry($note['id'])) - && ($links=$tentry->getAttachmentsLinks())) { ?> - <tr> - <td class="info" colspan="2"><?php echo $links; ?></td> - </tr> - <?php - }?> - </table> - <?php - } - } else { - echo "<p>No internal notes found.</p>"; - }?> -</div> -<?php -} ?> <div id="ticket_thread"> <?php $threadTypes=array('M'=>'message','R'=>'response', 'N'=>'note'); /* -------- Messages & Responses & Notes (if inline)-------------*/ - $types = array('M', 'R'); - if($cfg->showNotesInline()) - $types[] = 'N'; + $types = array('M', 'R', 'N'); if(($thread=$ticket->getThreadEntries($types))) { foreach($thread as $entry) { if ($entry['body'] == '-') diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig index dde6378298e6727d0811c37a9bb84e632106e0bf..cc5bdea3c043bacc39e0d2213dfa2c8b13c5a8f8 100644 --- a/include/upgrader/streams/core.sig +++ b/include/upgrader/streams/core.sig @@ -1 +1 @@ -61c9d5d71093d3595b3d41855386a905 +6de40a4d5bad7a2923e769a4db1ff3b9 diff --git a/include/upgrader/streams/core/61c9d5d7-6de40a4d.patch.sql b/include/upgrader/streams/core/61c9d5d7-6de40a4d.patch.sql new file mode 100644 index 0000000000000000000000000000000000000000..1f6a401bf01215122312bb345c3cb4fb0c7bc684 --- /dev/null +++ b/include/upgrader/streams/core/61c9d5d7-6de40a4d.patch.sql @@ -0,0 +1,21 @@ +/** + * @version 1.8-stable + * @signature 6de40a4d5bad7a2923e769a4db1ff3b9 + * + * Cleanup old and no longer used config settings + */ + +DELETE FROM `%TABLE_PREFIX%config` WHERE `namespace`='core' and `key` IN ( + 'upload_dir', + 'clickable_urls', + 'allow_priority_change', + 'log_ticket_activity', + 'overdue_grace_period', + 'allow_email_spoofing', + 'show_notes_inline' +); + +-- Finished with patch +UPDATE `%TABLE_PREFIX%config` + SET `value` = '6de40a4d5bad7a2923e769a4db1ff3b9' + WHERE `key` = 'schema_signature' AND `namespace` = 'core'; diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php index 23ebd7ffc071d81d6fb4ffec2ca2aea2e08adcdf..61068a3bf0fdc04f83a7aa8831746b7c2af9af56 100644 --- a/setup/inc/class.installer.php +++ b/setup/inc/class.installer.php @@ -167,13 +167,13 @@ class Installer extends SetupWizard { $sql='SELECT `group_id` FROM '.PREFIX.'groups ORDER BY `group_id` LIMIT 1'; $group_id_1 = db_result(db_query($sql, false), 0); - $sql='SELECT `id` FROM '.PREFIX.'timezone WHERE offset=-5.0 LIMIT 1'; - $eastern_timezone = db_result(db_query($sql, false), 0); + $sql='SELECT `value` FROM '.PREFIX.'config WHERE namespace=\'core\' and `key`=\'default_timezone_id\' LIMIT 1'; + $default_timezone = db_result(db_query($sql, false), 0); //Create admin user. $sql='INSERT INTO '.PREFIX.'staff SET created=NOW() ' - .", isactive=1, isadmin=1, group_id=$group_id_1, dept_id=$dept_id_1" - .", timezone_id=$eastern_timezone, max_page_size=25" + .", isactive=1, isadmin=1, group_id='$group_id_1', dept_id='$dept_id_1'" + .", timezone_id='$default_timezone', max_page_size=25" .', email='.db_input($vars['admin_email']) .', firstname='.db_input($vars['fname']) .', lastname='.db_input($vars['lname']) diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql index c5610347c21115bf3ed52d43b837ebfe72502be1..8ab5676efd090558868eef5065c14b19882af0ed 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -88,86 +88,9 @@ CREATE TABLE `%TABLE_PREFIX%config` ( ) DEFAULT CHARSET=utf8; INSERT INTO `%TABLE_PREFIX%config` (`namespace`, `key`, `value`) VALUES - ('core', 'isonline', '0'), - ('core', 'staff_ip_binding', '0'), - ('core', 'staff_max_logins', '4'), - ('core', 'staff_login_timeout', '2'), - ('core', 'staff_session_timeout', '30'), - ('core', 'passwd_reset_period', '0'), - ('core', 'client_max_logins', '4'), - ('core', 'client_login_timeout', '2'), - ('core', 'client_session_timeout', '30'), - ('core', 'max_page_size', '25'), - ('core', 'max_open_tickets', '0'), - ('core', 'max_file_size', '1048576'), - ('core', 'max_user_file_uploads', ''), - ('core', 'max_staff_file_uploads', ''), - ('core', 'autolock_minutes', '3'), - ('core', 'overdue_grace_period', '0'), - ('core', 'alert_email_id', '0'), - ('core', 'default_email_id', '0'), - ('core', 'default_dept_id', '0'), - ('core', 'default_sla_id', '0'), - ('core', 'default_priority_id', '2'), - ('core', 'default_template_id', '1'), - ('core', 'default_smtp_id', '0'), - ('core', 'allow_email_spoofing', '0'), - ('core', 'clickable_urls', '1'), - ('core', 'allow_priority_change', '0'), - ('core', 'use_email_priority', '0'), - ('core', 'enable_kb', '0'), - ('core', 'enable_premade', '1'), - ('core', 'enable_captcha', '0'), - ('core', 'enable_auto_cron', '0'), - ('core', 'enable_mail_polling', '0'), - ('core', 'send_sys_errors', '1'), - ('core', 'send_sql_errors', '1'), - ('core', 'send_mailparse_errors', '1'), - ('core', 'send_login_errors', '1'), - ('core', 'save_email_headers', '1'), - ('core', 'strip_quoted_reply', '1'), - ('core', 'log_ticket_activity', '1'), - ('core', 'ticket_autoresponder', '0'), - ('core', 'message_autoresponder', '0'), - ('core', 'ticket_notice_active', '0'), - ('core', 'ticket_alert_active', '0'), - ('core', 'ticket_alert_admin', '1'), - ('core', 'ticket_alert_dept_manager', '1'), - ('core', 'ticket_alert_dept_members', '0'), - ('core', 'message_alert_active', '0'), - ('core', 'message_alert_laststaff', '1'), - ('core', 'message_alert_assigned', '1'), - ('core', 'message_alert_dept_manager', '0'), - ('core', 'note_alert_active', '0'), - ('core', 'note_alert_laststaff', '1'), - ('core', 'note_alert_assigned', '1'), - ('core', 'note_alert_dept_manager', '0'), - ('core', 'transfer_alert_active', '0'), - ('core', 'transfer_alert_assigned', '0'), - ('core', 'transfer_alert_dept_manager', '1'), - ('core', 'transfer_alert_dept_members', '0'), - ('core', 'overdue_alert_active', '0'), - ('core', 'overdue_alert_assigned', '1'), - ('core', 'overdue_alert_dept_manager', '1'), - ('core', 'overdue_alert_dept_members', '0'), - ('core', 'assigned_alert_active', '1'), - ('core', 'assigned_alert_staff', '1'), - ('core', 'assigned_alert_team_lead', '0'), - ('core', 'assigned_alert_team_members', '0'), - ('core', 'auto_assign_reopened_tickets', '1'), - ('core', 'show_related_tickets', '1'), - ('core', 'show_assigned_tickets', '1'), - ('core', 'show_answered_tickets', '0'), - ('core', 'show_notes_inline', '1'), - ('core', 'hide_staff_name', '0'), - ('core', 'overlimit_notice_active', '0'), - ('core', 'email_attachments', '1'), - ('core', 'random_ticket_ids', '1'), - ('core', 'log_level', '2'), - ('core', 'log_graceperiod', '12'), ('core', 'admin_email', ''), - ('core', 'helpdesk_title', 'osTicket Support Ticket System'), ('core', 'helpdesk_url', ''), + ('core', 'helpdesk_title', ''), ('core', 'schema_signature', ''); DROP TABLE IF EXISTS `%TABLE_PREFIX%form`; @@ -706,37 +629,37 @@ CREATE TABLE `%TABLE_PREFIX%timezone` ( PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; -INSERT INTO `%TABLE_PREFIX%timezone` (`offset`, `timezone`) VALUES - (-12.0, 'Eniwetok, Kwajalein'), - (-11.0, 'Midway Island, Samoa'), - (-10.0, 'Hawaii'), - (-9.0, 'Alaska'), - (-8.0, 'Pacific Time (US & Canada)'), - (-7.0, 'Mountain Time (US & Canada)'), - (-6.0, 'Central Time (US & Canada), Mexico City'), - (-5.0, 'Eastern Time (US & Canada), Bogota, Lima'), - (-4.0, 'Atlantic Time (Canada), Caracas, La Paz'), - (-3.5, 'Newfoundland'), - (-3.0, 'Brazil, Buenos Aires, Georgetown'), - (-2.0, 'Mid-Atlantic'), - (-1.0, 'Azores, Cape Verde Islands'), - (0.0, 'Western Europe Time, London, Lisbon, Casablanca'), - (1.0, 'Brussels, Copenhagen, Madrid, Paris'), - (2.0, 'Kaliningrad, South Africa'), - (3.0, 'Baghdad, Riyadh, Moscow, St. Petersburg'), - (3.5, 'Tehran'), - (4.0, 'Abu Dhabi, Muscat, Baku, Tbilisi'), - (4.5, 'Kabul'), - (5.0, 'Ekaterinburg, Islamabad, Karachi, Tashkent'), - (5.5, 'Bombay, Calcutta, Madras, New Delhi'), - (6.0, 'Almaty, Dhaka, Colombo'), - (7.0, 'Bangkok, Hanoi, Jakarta'), - (8.0, 'Beijing, Perth, Singapore, Hong Kong'), - (9.0, 'Tokyo, Seoul, Osaka, Sapporo, Yakutsk'), - (9.5, 'Adelaide, Darwin'), - (10.0, 'Eastern Australia, Guam, Vladivostok'), - (11.0, 'Magadan, Solomon Islands, New Caledonia'), - (12.0, 'Auckland, Wellington, Fiji, Kamchatka'); +INSERT INTO `%TABLE_PREFIX%timezone` (`id`, `offset`, `timezone`) VALUES + (1, -12.0, 'Eniwetok, Kwajalein'), + (2, -11.0, 'Midway Island, Samoa'), + (3, -10.0, 'Hawaii'), + (4, -9.0, 'Alaska'), + (5, -8.0, 'Pacific Time (US & Canada)'), + (6, -7.0, 'Mountain Time (US & Canada)'), + (7, -6.0, 'Central Time (US & Canada), Mexico City'), + (8, -5.0, 'Eastern Time (US & Canada), Bogota, Lima'), + (9, -4.0, 'Atlantic Time (Canada), Caracas, La Paz'), + (10, -3.5, 'Newfoundland'), + (11, -3.0, 'Brazil, Buenos Aires, Georgetown'), + (12, -2.0, 'Mid-Atlantic'), + (13, -1.0, 'Azores, Cape Verde Islands'), + (14, 0.0, 'Western Europe Time, London, Lisbon, Casablanca'), + (15, 1.0, 'Brussels, Copenhagen, Madrid, Paris'), + (16, 2.0, 'Kaliningrad, South Africa'), + (17, 3.0, 'Baghdad, Riyadh, Moscow, St. Petersburg'), + (18, 3.5, 'Tehran'), + (19, 4.0, 'Abu Dhabi, Muscat, Baku, Tbilisi'), + (20, 4.5, 'Kabul'), + (21, 5.0, 'Ekaterinburg, Islamabad, Karachi, Tashkent'), + (22, 5.5, 'Bombay, Calcutta, Madras, New Delhi'), + (23, 6.0, 'Almaty, Dhaka, Colombo'), + (24, 7.0, 'Bangkok, Hanoi, Jakarta'), + (25, 8.0, 'Beijing, Perth, Singapore, Hong Kong'), + (26, 9.0, 'Tokyo, Seoul, Osaka, Sapporo, Yakutsk'), + (27, 9.5, 'Adelaide, Darwin'), + (28, 10.0, 'Eastern Australia, Guam, Vladivostok'), + (29, 11.0, 'Magadan, Solomon Islands, New Caledonia'), + (30, 12.0, 'Auckland, Wellington, Fiji, Kamchatka'); -- pages CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%page` (