Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PanneauPocketBridge] Use dynamic list of cities #4362

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
168 changes: 19 additions & 149 deletions bridges/PanneauPocketBridge.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,129 +4,32 @@ class PanneauPocketBridge extends BridgeAbstract
{
const NAME = 'Panneau Pocket';
const URI = 'https://app.panneaupocket.com';
const DESCRIPTION = 'Fetches the latest infos from Panneau Pocket';
const DESCRIPTION = 'Fetches the latest infos from Panneau Pocket.
<br><br>To have completion on cities, you must click on the button "Request temporary access to the demo server"
<a target="_blank" href="https://cors-anywhere.herokuapp.com/corsdemo">here</a>
<br><br>Or use your own proxy and change the proxy value in RSS-Bridge config.ini.php';
const MAINTAINER = 'floviolleau';
const PARAMETERS = [
[
'cities' => [
'name' => 'Choisir une ville',
'type' => 'list',
'values' => self::CITIES,
const CACHE_TIMEOUT = 7200; // 2h
const PARAMETERS = [[
'city' => [
'name' => 'Choisir une ville',
'type' => 'dynamic_list',
'ajax_route' => 'https://app.panneaupocket.com/public-api/city',
'fields_name_used_as_value' => [
'id',
'name',
'postCode'
],
'cityName' => [
'name' => 'Ville',
'fields_name_used_for_display' => [
'name',
'postCode'
],
'cityId' => [
'name' => 'Identifiant',
]
]
];
const CACHE_TIMEOUT = 7200; // 2h

private const CITIES = [
'Andouillé-Neuville-35250' => '1455789521',
'Aubigné-35250' => '1814317005',
'Availles-sur-Seiche-35130' => '1892893207',
'Baulon-35580' => '605833540',
'Beaucé-35133' => '560906842',
'Boisgervilly-35360' => '1993806123',
'Bonnemain-35270' => '1099773691',
'Bonnemain - Ecole Privée Saint-Joseph-35270' => '538925534',
'Bonnemain - Ecole Publique Henri Matisse-35270' => '1820283844',
'Bourg-des-Comptes-35890' => '957084809',
'Breteil-35160' => '1206807553',
'Chanteloup-35150' => '65528978',
'Chavagne-35310' => '1825825704',
'Cintré-35310' => '857744989',
'Clayes-35590' => '1176604734',
'Comblessac-35330' => '799252614',
'Compagnie de Gendarmerie de Montfort-sur-Meu-35160' => '1310467096',
'Compagnie de Gendarmerie de Redon-35600' => '772555117',
'Compagnie de Gendarmerie de Saint-Malo-35400' => '212942271',
'Compagnie de Gendarmerie de Vitré-35500' => '2117121991',
'Dingé-35440' => '1146475327',
'Feins-35440' => '762081007',
'Gahard-35490' => '858141102',
'Gendarmerie BTA de Bain-de-Bretagne-35470' => '2125697119',
'Gendarmerie BTA de Mordelles-35310' => '1915843207',
'Gendarmerie BTA de Saint-Aubin-du-Cormier-35140' => '1325843950',
'Gendarmerie BTA de Vitré-35500' => '898672661',
'Gendarmerie BTA Maen-Roch-35460' => '1096873908',
'Gendarmerie COB Cancale-35260' => '1992410402',
'Gendarmerie COB de Chateaugiron-35410' => '1867528169',
'Gendarmerie COB de Combourg-35270' => '1045617593',
'Gendarmerie COB de Fougères-35300' => '177248581',
'Gendarmerie COB de Guichen-35580' => '557627842',
'Gendarmerie COB de Hédé-Bazouges-35630' => '519881302',
'Gendarmerie COB de Janzé-35150' => '533620097',
'Gendarmerie COB de La Guerche-de-Bretagne-35130' => '1282120307',
'Gendarmerie COB de Montauban de Bretagne-35360' => '137692263',
'Gendarmerie COB de Redon-35600' => '1027850906',
'Gendarmerie de Betton-35830' => '307605625',
'Gosné-35140' => '1261503624',
'Grand-Fougeray-35390' => '1687416796',
'Guignen-35580' => '75195882',
'L\'Hermitage-35590' => '1954292633',
'La Boussac-35120' => '162444335',
'La Chapelle-Bouëxic-35330' => '869117325',
'La Couyère-35320' => '2075958825',
'La Dominelais-35390' => '2065081911',
'La Fresnais-35111' => '2010636370',
'La Gouesnière-35350' => '1925923421',
'La Noé-Blanche-35470' => '224305391',
'La Nouaye-35137' => '1000733211',
'Lalleu-35320' => '1460101917',
'Landavran-35450' => '133549915',
'Langouet-35630' => '1523560503',
'Le Ferré-35420' => '1432943983',
'Le Verger-35160' => '1266074746',
'Les Brulais-35330' => '1854147921',
'Les Portes du Coglais-35460' => '413267621',
'Livré-sur-Changeon-35450' => '1850101087',
'Louvigné-de-Bais-35680' => '1676392257',
'Louvigné-de-Bais - Ecole Charles Perrault-35680' => '1180505145',
'Louvigné-de-Bais - Ecole Saint-Patern-35680' => '919443746',
'Maen Roch-35460' => '1112477040',
'Maison de Quartier Francisco Ferrer-35200' => '944171353',
'Marcillé-Raoul-35560' => '991970696',
'Maxent-35380' => '209041860',
'Meillac-35270' => '1841968856',
'Mernel-35330' => '1311137811',
'Monterfil-35160' => '873169651',
'Montreuil-sur-Ille-35440' => '550764994',
'Mouazé-35250' => '1931390548',
'Moutiers-35130' => '443526227',
'Parigné-35133' => '2013041755',
'Pleugueneuc-35720' => '748287926',
'Princé-35210' => '1765498088',
'Rives-du-Couesnon-35140' => '1609662849',
'Saint-Aubin-des-Landes-35500' => '1483721395',
'Saint-Germain-du-Pinel-35370' => '1357547548',
'Saint-Gonlay-35750' => '711639882',
'Saint-Péran-35380' => '1484951371',
'Saint-Séglin-35330' => '292665012',
'Saint-Thual-35190' => '427165321',
'Saint-Thurial-35310' => '940529156',
'Sens-de-Bretagne-35490' => '1055647650',
'Thourie-35134' => '1250885948',
'Torcé-35370' => '1927215543',
'Treffendel-35380' => '738532467',
'Val d\'Anast-35330' => '225564233',
'Vallons de Haute Bretagne Communauté-35580' => '1319050928',
'Vergéal-35680' => '389815752',
'Vieux-Vy-sur-Couesnon-35490' => '2016313694'
];
]];

public function collectData()
{
$cityId = $this->getInput('cityId');
if ($cityId != null) {
$cityName = $this->getInput('cityName');
$city = strtolower($cityId . '-' . $cityName);
} else {
$matchedCity = array_search($this->getInput('cities'), self::CITIES);
$city = strtolower($this->getInput('cities') . '-' . $matchedCity);
}
$city = $this->getInput('city');
$url = sprintf('https://app.panneaupocket.com/ville/%s', urlencode($city));

$html = getSimpleHTMLDOM($url);
Expand All @@ -147,37 +50,4 @@ public function collectData()
$this->items[] = $item;
}
}

public function detectParameters($url)
{
$params = [];
$regex = '/\/ville\/(\d+)-([a-z0-9-]+)/';
if (preg_match($regex, $url, $matches)) {
$params['cityId'] = $matches[1];
$params['cityName'] = $matches[2];
return $params;
}
return null;
}

/**
* Produce self::CITIES array
*/
private static function getCities($zipcodeStartWith)
{
$cities = json_decode(getContents(self::URI . '/public-api/city'), true);

$formattedCities = null;
$citiesString = '[<br>';
foreach ($cities as $city) {
if (str_starts_with($city['postCode'], $zipcodeStartWith)) {
$formattedCities[$city['name'] . ' - ' . $city['postCode']] = $city['id'];
$citiesString .= ' "' . $city['name'] . '-' . $city['postCode'] . '" => "' . $city['id'] . '",';
$citiesString .= '<br>';
}
}
$citiesString .= ']';
echo '<pre>' . $citiesString . '</pre>';
die();
}
}
Loading