diff --git a/commands/deletegym.php b/commands/deletegym.php index 9e4f9168..73dccbb6 100644 --- a/commands/deletegym.php +++ b/commands/deletegym.php @@ -9,13 +9,11 @@ // Check access. bot_access_check($update, 'gym-delete'); -// Set keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys('gym_delete', false, false, 'gym_letter'); -$keys = $keys_and_gymarea['keys']; - // Set message. $msg = '' . getTranslation('gym_delete') . SP . '—' . SP . getTranslation('select_gym_first_letter') . ''; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); + +// Set keys. +$keys = raid_edit_gyms_first_letter_keys('gym_delete'); // Add key for hidden gyms. $h_keys = []; diff --git a/commands/gym.php b/commands/gym.php index da3e5f88..19484df3 100644 --- a/commands/gym.php +++ b/commands/gym.php @@ -9,13 +9,11 @@ // Check access. bot_access_check($update, 'gym-details'); -// Set keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys('gym_details', false, false, 'gym_letter'); -$keys = $keys_and_gymarea['keys']; - // Set message. -$msg = '' . getTranslation('show_gym_details') . CR . CR . getTranslation('select_gym_first_letter') . ''; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); +$msg = '' . getTranslation('show_gym_details') . SP . '—' . SP . getTranslation('select_gym_first_letter') . ''; + +// Set keys. +$keys = raid_edit_gyms_first_letter_keys('gym_details'); // Add key for hidden gyms. $h_keys = []; diff --git a/commands/listall.php b/commands/listall.php index 09af6d93..6ed2b772 100644 --- a/commands/listall.php +++ b/commands/listall.php @@ -9,15 +9,13 @@ // Check access. if(!isset($skip_access) or $skip_access != true) bot_access_check($update, 'list'); -// Set keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys('list_by_gym', false, false, 'listall'); -$keys = $keys_and_gymarea['keys']; - // Set message. $msg = '' . getTranslation('list_all_active_raids') . '' . CR; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] . CR: ''); $msg .= '' . getTranslation('select_gym_first_letter') . '' . CR; +// Set keys. +$keys = raid_edit_gyms_first_letter_keys('list_by_gym'); + // Send message. send_message($update['message']['chat']['id'], $msg, $keys, ['reply_markup' => ['selective' => true, 'one_time_keyboard' => true], 'disable_web_page_preview' => 'true']); diff --git a/commands/start.php b/commands/start.php index b730d35a..1a479006 100644 --- a/commands/start.php +++ b/commands/start.php @@ -50,8 +50,7 @@ // Get the keys if nothing was returned. if(!$keys) { - $keys_and_gymarea = raid_edit_gyms_first_letter_keys(); - $keys = $keys_and_gymarea['keys']; + $keys = raid_edit_gyms_first_letter_keys(); } // No keys found. @@ -68,9 +67,7 @@ } // Set message. - $msg = '' . getTranslation('select_gym_first_letter') . ''; - $msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); - $msg.= ($config->RAID_VIA_LOCATION ? (CR . CR . getTranslation('send_location')) : ''); + $msg = '' . getTranslation('select_gym_first_letter') . '' . ($config->RAID_VIA_LOCATION ? (CR2 . CR . getTranslation('send_location')) : ''); // Send message. send_message($update['message']['chat']['id'], $msg, $keys, ['reply_markup' => ['selective' => true, 'one_time_keyboard' => true]]); diff --git a/config/defaults-config.json b/config/defaults-config.json index 69193632..59680f86 100644 --- a/config/defaults-config.json +++ b/config/defaults-config.json @@ -30,8 +30,6 @@ "OSM_LOOKUP": false, "AUTO_REFRESH_POLLS":false, "CUSTOM_TRAINERNAME": true, - "ENABLE_GYM_AREAS": false, - "DEFAULT_GYM_AREA": false, "RAID_VIA_LOCATION": true, "RAID_VIA_LOCATION_REMOTE_RAID": false, "RAID_EGG_DURATION":"60", diff --git a/docs/index.rst b/docs/index.rst index acc2858e..1adb7ad1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1442,10 +1442,6 @@ Config reference - URL to your map. This is displayed under every raid poll. * - CUSTOM_TRAINERNAME - Book, allow users to add custom trainernames via ``/trainer`` command - * - ENABLE_GYM_AREAS - - To divide gyms into areas when making selections through ``/start``, ``/listall`` etc. set this to true. Areas are defined in geoconfig.json. - * - DEFAULT_GYM_AREA": false, - - ID of default gymarea. Can also be set to false to only display areas. * - PORTAL_IMPORT - Bool, allow importing gyms via portal import Telegram bots * - RAID_ANYTIME diff --git a/lang/language.json b/lang/language.json index 4a049c31..d28ff1f7 100644 --- a/lang/language.json +++ b/lang/language.json @@ -1394,14 +1394,14 @@ "change_extended_gym_details": { "NL": "Verander de extra gym informatie?", "DE": "Erweiterte Arena Details ändern?", - "EN": "Save extended gym details?", + "EN": "Change extended gym details?", "IT": "TRANSLATE", "PT-BR": "TRANSLATE", "RU": "TRANSLATE", "NO": "TRANSLATE", "FR": "TRANSLATE", "PL": "TRANSLATE", - "FI": "Tallenna salin lisätiedot?" + "FI": "Muuta salin lisätietoja?" }, "new_extended_gym_detail": { "NL": "Nieuwe extra gym informatie:", @@ -3346,17 +3346,5 @@ "FR": "TRANSLATE", "PL": "TRANSLATE", "FI": "Päivämäärä" - }, - "current_gymarea": { - "NL": "TRANSLATE", - "DE": "TRANSLATE", - "EN": "Current gymarea", - "IT": "TRANSLATE", - "PT-BR": "TRANSLATE", - "RU": "TRANSLATE", - "NO": "TRANSLATE", - "FR": "TRANSLATE", - "PL": "TRANSLATE", - "FI": "Salit alueelta" } } diff --git a/logic/raid_edit_gym_keys.php b/logic/raid_edit_gym_keys.php index 92cdbd24..9d94d980 100644 --- a/logic/raid_edit_gym_keys.php +++ b/logic/raid_edit_gym_keys.php @@ -2,13 +2,13 @@ /** * Raid edit gym keys with active raids marker. * @param $first - * @param $gymarea_id + * @param $warn * @param $action * @param $delete * @param $hidden * @return array */ -function raid_edit_gym_keys($first, $gymarea_id = false, $action = 'edit_raidlevel', $delete = false, $hidden = false) +function raid_edit_gym_keys($first, $warn = true, $action = 'edit_raidlevel', $delete = false, $hidden = false) { global $config; // Length of first letter. @@ -30,22 +30,7 @@ function raid_edit_gym_keys($first, $gymarea_id = false, $action = 'edit_raidlev $not .= SP . "AND UPPER(LEFT(gym_name, " . $length . ")) != UPPER('" . $letter . "')" . SP; } } - $gymarea_query = ''; - if($gymarea_id != false) { - $json = json_decode(file_get_contents(CONFIG_PATH . '/geoconfig.json'),1); - $points = []; - foreach($json as $area) { - if($gymarea_id == $area['id']) { - foreach($area['path'] as $point) { - $points[] = $point[0].' '.$point[1]; - } - if($points[0] != $points[count($points)-1]) $points[] = $points[0]; - break; - } - } - $polygon_string = implode(',', $points); - $gymarea_query = "AND ST_CONTAINS(ST_GEOMFROMTEXT('POLYGON((".$polygon_string."))'), ST_GEOMFROMTEXT(CONCAT('POINT(',lat,' ',lon,')')))"; - } + // Show hidden gyms? if($hidden == true) { $show_gym = 0; @@ -66,7 +51,6 @@ function raid_edit_gym_keys($first, $gymarea_id = false, $action = 'edit_raidlev ON raids.gym_id = gyms.id WHERE UPPER(LEFT(gym_name, $first_length)) = UPPER('{$first}') $not - $gymarea_query AND gyms.show_gym = {$show_gym} GROUP BY gym_name, raids.gym_id, gyms.id, gyms.ex_gym ORDER BY gym_name " . $query_collate . " diff --git a/logic/raid_edit_gyms_first_letter_keys.php b/logic/raid_edit_gyms_first_letter_keys.php index 285a188e..8789ad4d 100644 --- a/logic/raid_edit_gyms_first_letter_keys.php +++ b/logic/raid_edit_gyms_first_letter_keys.php @@ -1,116 +1,121 @@ ENABLE_GYM_AREAS) { - $json = json_decode(file_get_contents(CONFIG_PATH . '/geoconfig.json'),1); - $points = []; - foreach($json as $area) { - if($config->DEFAULT_GYM_AREA != false or $gymarea_id != false) { - $gymarea_id = ($gymarea_id != false) ? $gymarea_id : $config->DEFAULT_GYM_AREA; - if($gymarea_id == $area['id']) { - foreach($area['path'] as $point) { - $points[] = $point[0].' '.$point[1]; - } - $gymarea_name = $area['name']; - if($points[0] != $points[count($points)-1]) $points[] = $points[0]; - } else { - $gymarea_keys[] = [ - 'text' => $area['name'], - 'callback_data' => $area['id'] . ':' . $gymarea_action . ':' . $action - ]; - } - $skip_letter_keys = false; - } else { - $gymarea_keys[] = [ - 'text' => $area['name'], - 'callback_data' => $area['id'] . ':' . $gymarea_action . ':' . $action - ]; - } + // Special/Custom gym letters? + $case = ''; + if(!empty($config->RAID_CUSTOM_GYM_LETTERS)) { + // Explode special letters. + $special_keys = explode(',', $config->RAID_CUSTOM_GYM_LETTERS); + foreach($special_keys as $id => $letter) + { + $letter = trim($letter); + debug_log($letter, 'Special gym letter:'); + // Fix chinese chars, prior: $length = strlen($letter); + $length = strlen(utf8_decode($letter)); + $case .= SP . "WHEN UPPER(LEFT(gym_name, " . $length . ")) = '" . $letter . "' THEN UPPER(LEFT(gym_name, " . $length . "))" . SP; } - $polygon_string = implode(',', $points); - $gymarea_query = "AND ST_CONTAINS(ST_GEOMFROMTEXT('POLYGON((".$polygon_string."))'), ST_GEOMFROMTEXT(CONCAT('POINT(',lat,' ',lon,')')))"; } - // Init empty keys array. - $keys = []; - if(!$skip_letter_keys or !$config->ENABLE_GYM_AREAS or $hidden) { - // Special/Custom gym letters? - if(!empty($config->RAID_CUSTOM_GYM_LETTERS)) { - // Explode special letters. - $special_keys = explode(',', $config->RAID_CUSTOM_GYM_LETTERS); - $select = 'SELECT CASE '; - foreach($special_keys as $id => $letter) - { - $letter = trim($letter); - debug_log($letter, 'Special gym letter:'); - // Fix chinese chars, prior: $length = strlen($letter); - $length = strlen(utf8_decode($letter)); - $select .= SP . "WHEN UPPER(LEFT(gym_name, " . $length . ")) = '" . $letter . "' THEN UPPER(LEFT(gym_name, " . $length . "))" . SP; - } - $select .= 'ELSE UPPER(LEFT(gym_name, 1)) END AS first_letter'; - $group_order = 'GROUP BY 1 ORDER BY gym_name'; - }else { - $select = 'SELECT DISTINCT UPPER(SUBSTR(gym_name, 1, 1)) AS first_letter'; - $group_order = 'ORDER BY 1'; - } - // Show hidden gyms? - $show_gym = $hidden ? 0 : 1; + // Show hidden gyms? + if($hidden == true) { + $show_gym = 0; + } else { + $show_gym = 1; + } + // Case or not? + if(!empty($case)) { + // List or other action? if($action == 'list_by_gym') { - // Select only gyms with active raids - $query_condition = ' - LEFT JOIN raids - ON raids.gym_id = gyms.id - WHERE end_time > UTC_TIMESTAMP() - AND show_gym = ' . $show_gym; - }else { - $query_condition = 'WHERE show_gym = ' . $show_gym; + // Get gyms with active raids only from database + $rs = my_query( + " + SELECT CASE $case + ELSE UPPER(LEFT(gym_name, 1)) + END AS first_letter + FROM raids + LEFT JOIN gyms + ON raids.gym_id = gyms.id + WHERE end_time>UTC_TIMESTAMP() + AND show_gym = {$show_gym} + GROUP BY 1 + ORDER BY gym_name + " + ); + } else { + // Get gyms from database + $rs = my_query( + " + SELECT CASE $case + ELSE UPPER(LEFT(gym_name, 1)) + END AS first_letter + FROM gyms + WHERE show_gym = {$show_gym} + GROUP BY 1 + ORDER BY gym_name + " + ); } - - $rs = my_query( - " - {$select} - FROM gyms - {$query_condition} - {$gymarea_query} - {$group_order} - " - ); - - while ($gym = $rs->fetch()) { - // Add first letter to keys array - $keys[] = array( - 'text' => $gym['first_letter'], - 'callback_data' => $show_gym . ':' . $action . ':' . $gym['first_letter'] . (($gymarea_id) ? ',' .$gymarea_id : 'false') - ); + } else { + // List or other action? + if($action == 'list_by_gym') { + // Get gyms with active raids only from database + // Get gyms from database + $rs = my_query( + " + SELECT DISTINCT UPPER(SUBSTR(gym_name, 1, 1)) AS first_letter + FROM raids + LEFT JOIN gyms + ON raids.gym_id = gyms.id + WHERE end_time>UTC_TIMESTAMP() + AND show_gym = {$show_gym} + ORDER BY 1 + " + ); + } else { + // Get gyms from database + $rs = my_query( + " + SELECT DISTINCT UPPER(SUBSTR(gym_name, 1, 1)) AS first_letter + FROM gyms + WHERE show_gym = {$show_gym} + ORDER BY 1 + " + ); } + } - // Get the inline key array. - $keys = inline_key_array($keys, 4); + // Init empty keys array. + $keys = []; + + while ($gym = $rs->fetch()) { + // Add first letter to keys array + $keys[] = array( + 'text' => $gym['first_letter'], + 'callback_data' => $show_gym . ':' . $action . ':' . $gym['first_letter'] + ); } + // Get the inline key array. + $keys = inline_key_array($keys, 4); + // Add back navigation key. if($hidden == false) { $nav_keys = []; - if(!empty($gymarea_keys)) $keys = array_merge($keys, inline_key_array($gymarea_keys, 2)); $nav_keys[] = universal_inner_key($keys, '0', 'exit', '0', getTranslation('abort')); // Get the inline key array. $keys[] = $nav_keys; } - return ['keys' => $keys, 'gymarea_name' => $gymarea_name]; + return $keys; } ?> diff --git a/mods/gym_delete.php b/mods/gym_delete.php index 19d0cb38..a889fa50 100644 --- a/mods/gym_delete.php +++ b/mods/gym_delete.php @@ -10,9 +10,7 @@ bot_access_check($update, 'gym-delete'); // Get the arg. -$args = explode(',',$data['arg'],2); -$arg = $args[0]; -$gymarea_id = (count($args) > 1) ? $args[1] : false; +$arg = $data['arg']; // Delete? if(substr_count($arg, '-') == 1) { @@ -45,7 +43,7 @@ } // Get the keys. - $keys = raid_edit_gym_keys($new_arg, $gymarea_id, 'gym_delete', true, $hidden); + $keys = raid_edit_gym_keys($new_arg, false, 'gym_delete', true, $hidden); // Set keys. $msg = '' . getTranslation('gym_delete') . SP . '—' . SP . getTranslation('select_gym_name') . ''; diff --git a/mods/gym_details.php b/mods/gym_details.php index 23bd4cb3..df7fed7a 100644 --- a/mods/gym_details.php +++ b/mods/gym_details.php @@ -10,9 +10,7 @@ bot_access_check($update, 'gym-details'); // Get the arg. -$args = explode(',',$data['arg'],2); -$arg = $args[0]; -$gymarea_id = (count($args) > 1) ? $args[1] : false; +$arg = $data['arg']; // Get the id. $id = $data['id']; @@ -27,10 +25,10 @@ } // Get the keys. - $keys = raid_edit_gym_keys($arg, $gymarea_id, 'gym_details', false, $hidden); + $keys = raid_edit_gym_keys($arg, false, 'gym_details', false, $hidden); // Set keys. - $msg = '' . getTranslation('show_gym_details') . CR . CR . getTranslation('select_gym_name') . ''; + $msg = '' . getTranslation('show_gym_details') . SP . '—' . SP . getTranslation('select_gym_name') . ''; // No keys found. if (!$keys) { diff --git a/mods/gym_hidden_letter.php b/mods/gym_hidden_letter.php index 7493d2ad..164548cb 100644 --- a/mods/gym_hidden_letter.php +++ b/mods/gym_hidden_letter.php @@ -28,8 +28,7 @@ } // Set keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys($arg, true); -$keys = $keys_and_gymarea['keys']; +$keys = raid_edit_gyms_first_letter_keys($arg, true); // Set message. if(!$keys) { diff --git a/mods/gym_letter.php b/mods/gym_letter.php index fb7f6fff..d5d48406 100644 --- a/mods/gym_letter.php +++ b/mods/gym_letter.php @@ -9,18 +9,13 @@ // Get the arg. $arg = $data['arg']; -// Set keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys($arg, false, $data['id'], 'gym_letter'); -$keys = $keys_and_gymarea['keys']; - // Check access, show message and set keys based on arg. if($arg == 'gym_delete') { // Check access. bot_access_check($update, 'gym-delete'); // Set message. - $msg = '' . getTranslation('gym_delete') . CR . getTranslation('select_gym_first_letter') . ''; - $msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); + $msg = '' . getTranslation('gym_delete') . SP . '—' . SP . getTranslation('select_gym_first_letter') . ''; } else { // Force set arg. $arg = 'gym_details'; @@ -29,10 +24,12 @@ bot_access_check($update, 'gym-details'); // Set message. - $msg = '' . getTranslation('show_gym_details') . CR . getTranslation('select_gym_first_letter') . ''; - $msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); + $msg = '' . getTranslation('show_gym_details') . SP . '—' . SP . getTranslation('select_gym_first_letter') . ''; } +// Set keys. +$keys = raid_edit_gyms_first_letter_keys($arg); + // Add key for hidden gyms. $h_keys = []; $h_keys[] = universal_inner_key($h_keys, '0', 'gym_hidden_letter', $arg, getTranslation('hidden_gyms')); diff --git a/mods/list_by_gym.php b/mods/list_by_gym.php index ee6f9b8e..e5c650eb 100644 --- a/mods/list_by_gym.php +++ b/mods/list_by_gym.php @@ -10,9 +10,7 @@ bot_access_check($update, 'list'); // Get the first letter -$args = explode(',',$data['arg'],2); -$first = $args[0]; -$gymarea_id = (count($args) > 1) ? $args[1] : false; +$first = $data['arg']; // Back key id, action and arg $back_id = $data['id']; @@ -20,7 +18,7 @@ $back_arg = 0; // Get the keys. -$keys = raid_edit_gym_keys($first, $gymarea_id, 'list_raid'); +$keys = raid_edit_gym_keys($first, false, 'list_raid'); // No keys found. if (!$keys) { diff --git a/mods/list_by_gym_letter.php b/mods/list_by_gym_letter.php index f8721435..69b71d64 100644 --- a/mods/list_by_gym_letter.php +++ b/mods/list_by_gym_letter.php @@ -10,8 +10,7 @@ bot_access_check($update, 'list'); // Get the keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys('list_by_gym', false, false, 'raid_by_gym'); -$keys = $keys_and_gymarea['keys']; +$keys = raid_edit_gyms_first_letter_keys('list_by_gym'); // No keys found. if (!$keys) { @@ -38,7 +37,6 @@ // Edit the message. $msg = '' . getTranslation('list_all_active_raids') . '' . CR; $msg .= '' . getTranslation('select_gym_first_letter') . '' . CR; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); $tg_json[] = edit_message($update, $msg, $keys, false, true); // Telegram multicurl request. diff --git a/mods/listall.php b/mods/listall.php deleted file mode 100644 index ba29df91..00000000 --- a/mods/listall.php +++ /dev/null @@ -1,35 +0,0 @@ -' . getTranslation('list_all_active_raids') . '' . CR; -$msg .= '' . getTranslation('select_gym_first_letter') . '' . CR; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); -$tg_json[] = edit_message($update, $msg, $keys, false, true); - -// Telegram multicurl request. -curl_json_multi_request($tg_json); - -// Exit. -exit(); diff --git a/mods/raid_by_gym.php b/mods/raid_by_gym.php index c609d1c0..d19090cd 100644 --- a/mods/raid_by_gym.php +++ b/mods/raid_by_gym.php @@ -10,9 +10,7 @@ bot_access_check($update, 'create'); // Get the first letter -$args = explode(',',$data['arg'],2); -$first = $args[0]; -$gymarea_id = (count($args) > 1) ? $args[1] : false; +$first = $data['arg']; // Back key id, action and arg $back_id = $data['id']; @@ -20,7 +18,7 @@ $back_arg = 0; // Get the keys. -$keys = raid_edit_gym_keys($first, $gymarea_id); +$keys = raid_edit_gym_keys($first); // No keys found. if (!$keys) { diff --git a/mods/raid_by_gym_letter.php b/mods/raid_by_gym_letter.php index f31e9e80..427af447 100644 --- a/mods/raid_by_gym_letter.php +++ b/mods/raid_by_gym_letter.php @@ -10,8 +10,7 @@ bot_access_check($update, 'create'); // Get the keys. -$keys_and_gymarea = raid_edit_gyms_first_letter_keys('raid_by_gym', false, (empty($data['id']) ? '' : $data['id'])); -$keys = $keys_and_gymarea['keys']; +$keys = raid_edit_gyms_first_letter_keys(); // No keys found. if (!$keys) { @@ -36,9 +35,7 @@ $tg_json[] = answerCallbackQuery($update['callback_query']['id'], $callback_response, true); // Edit the message. -$msg = '' . getTranslation('select_gym_first_letter') . ''; -$msg.= (($keys_and_gymarea['gymarea_name'] != '') ? CR . CR . getTranslation('current_gymarea') . ': ' . $keys_and_gymarea['gymarea_name'] : ''); -$tg_json[] = edit_message($update, $msg, $keys, false, true); +$tg_json[] = edit_message($update,'' . getTranslation('select_gym_first_letter') . '', $keys, false, true); // Telegram multicurl request. curl_json_multi_request($tg_json);