Skip to content

Commit 7b54eb5

Browse files
committed
New feature: enable/disable scheduled raid bosses
Added the ability to enable and disable scheduled raid bosses. Makes managing regional raid bosses easier if using automatic updating of upcoming bosses.
1 parent 217220e commit 7b54eb5

13 files changed

+188
-50
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5
1+
6

constants.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
defined('EMOJI_DISK') or define('EMOJI_DISK', iconv('UCS-4LE', 'UTF-8', pack('V', 0x1F4BE)));
152152
defined('EMOJI_NEW') or define('EMOJI_NEW', iconv('UCS-4LE', 'UTF-8', pack('V', 0x1F195)));
153153
defined('EMOJI_CLIPPY') or define('EMOJI_CLIPPY',iconv('UCS-4LE', 'UTF-8', pack('V', 0x1F4CE)));
154+
defined('EMOJI_DISABLED') or define('EMOJI_DISABLED',iconv('UCS-4LE', 'UTF-8', pack('V', 0x1F645)));
154155

155156
// Carriage return.
156157
defined('CR') or define('CR', "\n");

lang/language.json

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,58 @@
480480
"FI": "Poista",
481481
"ES": "Borrar"
482482
},
483+
"disabled": {
484+
"NL": "TRANSLATE",
485+
"DE": "TRANSLATE",
486+
"EN": "Disabled",
487+
"IT": "TRANSLATE",
488+
"PT-BR": "TRANSLATE",
489+
"RU": "TRANSLATE",
490+
"NO": "TRANSLATE",
491+
"FR": "TRANSLATE",
492+
"PL": "TRANSLATE",
493+
"FI": "Pois käytöstä",
494+
"ES": "TRANSLATE"
495+
},
496+
"enabled": {
497+
"NL": "TRANSLATE",
498+
"DE": "TRANSLATE",
499+
"EN": "Enabled",
500+
"IT": "TRANSLATE",
501+
"PT-BR": "TRANSLATE",
502+
"RU": "TRANSLATE",
503+
"NO": "TRANSLATE",
504+
"FR": "TRANSLATE",
505+
"PL": "TRANSLATE",
506+
"FI": "Käytössä",
507+
"ES": "TRANSLATE"
508+
},
509+
"disable": {
510+
"NL": "TRANSLATE",
511+
"DE": "TRANSLATE",
512+
"EN": "Disable",
513+
"IT": "TRANSLATE",
514+
"PT-BR": "TRANSLATE",
515+
"RU": "TRANSLATE",
516+
"NO": "TRANSLATE",
517+
"FR": "TRANSLATE",
518+
"PL": "TRANSLATE",
519+
"FI": "Poista käytöstä",
520+
"ES": "TRANSLATE"
521+
},
522+
"enable": {
523+
"NL": "TRANSLATE",
524+
"DE": "TRANSLATE",
525+
"EN": "Enable",
526+
"IT": "TRANSLATE",
527+
"PT-BR": "TRANSLATE",
528+
"RU": "TRANSLATE",
529+
"NO": "TRANSLATE",
530+
"FR": "TRANSLATE",
531+
"PL": "TRANSLATE",
532+
"FI": "Ota käyttöön",
533+
"ES": "TRANSLATE"
534+
},
483535
"edit": {
484536
"NL": "Bewerken",
485537
"DE": "Bearbeiten",
@@ -1429,6 +1481,19 @@
14291481
"FI": "Haluatko poistaa tämän ajastuksen?",
14301482
"ES": "¿Quieres eliminar esta entrada programada?"
14311483
},
1484+
"edit_scheduled_entry": {
1485+
"NL": "TRANSLATE",
1486+
"DE": "TRANSLATE",
1487+
"EN": "Edit scheduled entry",
1488+
"IT": "TRANSLATE",
1489+
"PT-BR": "TRANSLATE",
1490+
"RU": "TRANSLATE",
1491+
"NO": "TRANSLATE",
1492+
"FR": "TRANSLATE",
1493+
"PL": "TRANSLATE",
1494+
"FI": "Muokkaa ajastusta",
1495+
"ES": "TRANSLATE"
1496+
},
14321497
"found_upcoming_bosses": {
14331498
"NL": "Volgende geplande raid bazen gevonden",
14341499
"DE": "Folgende bevorstehende Raid-Bosse gefunden",

logic/createRaidBossList.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ function createRaidBossList() {
2828
FROM raid_bosses
2929
WHERE raid_level IN ' . $levelList . '
3030
AND date_end > DATE_SUB(NOW(), INTERVAL 1 HOUR)
31+
AND disabled = 0
3132
ORDER BY sameDay, date_start, date_end
3233
');
3334
$list = '';

logic/read_upcoming_bosses.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
require_once(LOGIC_PATH . '/curl_get_contents.php');
44
/**
55
* Read upcoming bosses from Pokebattlers API and return the results as a HTML formatted text list
6-
* @param bool $return_sql Return results in sql insert query instead of text list
6+
* @param string $returnFormat Defines the format in which result are returned. sql, list or array
77
* @param array|bool $levelsToRead Array of raid levels to include in import. Otherwise use the levels set in constants.php
8-
* @return string
8+
* @return string|array
99
*/
10-
function read_upcoming_bosses($return_sql = false, $levelsToRead = false) {
10+
function read_upcoming_bosses($returnFormat = 'list', $levelsToRead = false) {
1111
global $pokebattler_import_future_tiers, $pokebattler_level_map, $pokebattler_pokemon_map;
1212
$link = curl_get_contents('https://fight.pokebattler.com/raids');
1313
$pb = json_decode($link, true);
@@ -17,6 +17,7 @@ function read_upcoming_bosses($return_sql = false, $levelsToRead = false) {
1717
$standardTimezone = new dateTimeZone('UTC');
1818
$count = 0;
1919
$sql = $list = $prev_start = $prev_end = $prev_rl = '';
20+
$returnArr = [];
2021
foreach($pb['breakingNews'] as $news) {
2122
if($news['type'] != 'RAID_TYPE_RAID') continue;
2223

@@ -70,9 +71,17 @@ function read_upcoming_bosses($return_sql = false, $levelsToRead = false) {
7071
}else {
7172
$sql .= ',("'.$dex_id_form[0].'","'.$dex_id_form[1].'","'.$date_start.'","'.$date_end.'","'.$raid_level_id.'", 1)';
7273
}
74+
$returnArr[] = [
75+
'pokedex_id' => $dex_id_form[0],
76+
'pokemon_form_id' => $dex_id_form[1],
77+
'date_start' => $date_start,
78+
'date_end' => $date_end,
79+
'raid_level' => $raid_level_id,
80+
];
7381
}
7482
if($count > 0) $sql.=';';
7583

76-
if($return_sql) return $sql;
84+
if($returnFormat == 'sql') return $sql;
85+
elseif($returnFormat == 'array') return $returnArr;
7786
else return $list;
7887
}

logic/resolve_raid_boss.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ function resolve_raid_boss($pokemon, $pokemon_form, $spawn, $raid_level) {
1515
FROM raid_bosses
1616
WHERE raid_level = :raidLevel
1717
AND scheduled = 1
18+
AND disabled = 0
1819
AND convert_tz(:spawn, "+00:00", :tzDiff) BETWEEN date_start AND date_end
1920
', ['raidLevel' => $raid_level, 'spawn' => $spawn, 'tzDiff' => $tz_diff]);
2021
// Return egg

mods/delete_scheduled_entry.php

Lines changed: 0 additions & 37 deletions
This file was deleted.

mods/edit_scheduled_entry.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
// Write to log.
3+
debug_log('edit_scheduled_entry()');
4+
5+
// Check access.
6+
$botUser->accessCheck('pokedex');
7+
$id = $data['i'];
8+
9+
$query = my_query('SELECT pokedex_id, pokemon_form_id, date_start, date_end, raid_level, disabled FROM raid_bosses WHERE id = ? LIMIT 1', [$id]);
10+
$pokemon = $query->fetch();
11+
if(isset($data['s']) && $data['s'] == 1) {
12+
my_query('UPDATE raid_bosses SET disabled = NOT disabled WHERE id = ?', [$id]);
13+
$pokemon['disabled'] = ($pokemon['disabled'] == 1) ? 0 : 1;
14+
}
15+
if(isset($data['s']) && $data['s'] == 2) {
16+
$msg = getTranslation('delete_scheduled_confirmation') . CR . CR;
17+
$msg .= $pokemon['date_start'] . ' - ' . $pokemon['date_end'] . ':' . CR;
18+
$msg .= getTranslation($pokemon['raid_level'] . 'stars') . ': ';
19+
$msg .= get_local_pokemon_name($pokemon['pokedex_id'], $pokemon['pokemon_form_id']) . CR;
20+
$msg .= '<b>' . ($pokemon['disabled'] ? getTranslation('disabled') : getTranslation('enabled')) .'</b>';
21+
$keys[0][0] = button(getTranslation('yes'), ['edit_scheduled_entry', 'i' => $id, 's' => 3]);
22+
$keys[0][1] = button(getTranslation('no'), ['edit_scheduled_entry', 'i' => $id]);
23+
// Build callback message string.
24+
$callback_response = 'OK';
25+
26+
// Telegram JSON array.
27+
$tg_json = array();
28+
29+
// Answer callback.
30+
$tg_json[] = answerCallbackQuery($update['callback_query']['id'], $callback_response, true);
31+
32+
// Edit message.
33+
$tg_json[] = edit_message($update, $msg, $keys, false, true);
34+
35+
// Telegram multicurl request.
36+
curl_json_multi_request($tg_json);
37+
exit();
38+
}
39+
if(isset($data['s']) && $data['s'] == 3) {
40+
my_query('DELETE FROM raid_bosses WHERE id = ?', [$id]);
41+
include(ROOT_PATH . '/mods/pokedex_list_raids.php');
42+
exit();
43+
}
44+
$msg = getTranslation('edit_scheduled_entry') . ':' . CR . CR;
45+
$msg .= EMOJI_CLOCK . SP . $pokemon['date_start'] . ' - ' . $pokemon['date_end'] . CR;
46+
$msg .= getTranslation($pokemon['raid_level'] . 'stars') . ': ';
47+
$msg .= get_local_pokemon_name($pokemon['pokedex_id'], $pokemon['pokemon_form_id']) . CR;
48+
$msg .= '<b>' . ($pokemon['disabled'] ? getTranslation('disabled') : getTranslation('enabled')) .'</b>';
49+
50+
$keys[0][] = button(
51+
($pokemon['disabled'] ? getTranslation('enable') : getTranslation('disable')),
52+
['edit_scheduled_entry', 'i' => $id, 's' => 1]
53+
);
54+
$keys[1][] = button(getTranslation('delete'), ['edit_scheduled_entry', 'i' => $id, 's' => 2]);
55+
$keys[2][] = button(getTranslation('back'), 'pokedex_list_raids');
56+
57+
// Build callback message string.
58+
$callback_response = 'OK';
59+
60+
// Telegram JSON array.
61+
$tg_json = array();
62+
63+
// Answer callback.
64+
$tg_json[] = answerCallbackQuery($update['callback_query']['id'], $callback_response, true);
65+
66+
// Edit message.
67+
$tg_json[] = edit_message($update, $msg, $keys, false, true);
68+
69+
// Telegram multicurl request.
70+
curl_json_multi_request($tg_json);

mods/import_future_bosses.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
if($action == '1') {
1616
$sql = 'DELETE FROM raid_bosses WHERE scheduled = 1;';
17-
$sql .= read_upcoming_bosses(true);
17+
$sql .= read_upcoming_bosses('sql');
1818
$query = my_query($sql);
1919
$msg = getTranslation('import_done');
2020
$tg_json = array();

mods/pokedex_list_raids.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
raid_bosses.raid_level,
1818
DATE_FORMAT(date_start, \'%e.%c. ' . getTranslation('raid_egg_opens_at') . ' %H:%i\') as date_start,
1919
DATE_FORMAT(date_end, \'%e.%c. ' . getTranslation('raid_egg_opens_at') . ' %H:%i\') as date_end,
20-
raid_bosses.scheduled
20+
raid_bosses.scheduled,
21+
raid_bosses.disabled
2122
FROM raid_bosses
2223
LEFT JOIN pokemon
2324
ON raid_bosses.pokedex_id = pokemon.pokedex_id
@@ -68,8 +69,8 @@
6869
// Add button to edit pokemon.
6970
if($pokemon['scheduled'] == 1) {
7071
$keys[] = button(
71-
EMOJI_CLOCK . ' [' . $pokemon['raid_level'] . ']' . SP . $poke_name,
72-
['delete_scheduled_entry', 'i' => $pokemon['id']]
72+
EMOJI_CLOCK . ($pokemon['disabled'] == 1 ? EMOJI_DISABLED : '').' [' . $pokemon['raid_level'] . ']' . SP . $poke_name,
73+
['edit_scheduled_entry', 'i' => $pokemon['id']]
7374
);
7475
} else {
7576
$keys[] = button('[' . $pokemon['raid_level'] . ']' . SP . $poke_name, ['pokedex_edit_pokemon', 'p' => $pokemon['pokedex_id'] . '-' . $pokemon['pokemon_form_id']]);

0 commit comments

Comments
 (0)