meilleursbiens/seloger-poliris-feed
最新稳定版本:v1.0.0
Composer 安装命令:
composer require meilleursbiens/seloger-poliris-feed
包简介
Librairie PHP pour générer des flux Seloger Poliris (version 4.09)
README 文档
README
Librairie PHP permettant de générer facilement des flux Seloger Poliris conformes aux spécifications techniques version 4.09.
Installation
composer require seloger/poliris-feed
Ou ajoutez manuellement dans votre composer.json :
{
"require": {
"seloger/poliris-feed": "*"
}
}
Utilisation rapide
<?php require 'vendor/autoload.php'; use SelogerPoliris\Announcement; use SelogerPoliris\FeedGenerator; use SelogerPoliris\Config; use SelogerPoliris\PhotoConfig; use SelogerPoliris\ZipBuilder; use SelogerPoliris\Enums\AnnouncementType; use SelogerPoliris\Enums\PropertyType; use SelogerPoliris\Enums\PublicationCode; // 1. Créer une annonce $announcement = new Announcement( agencyId: 'mon_agence', reference: 'VE001', technicalId: 'TECH001', announcementType: AnnouncementType::VENTE, propertyType: PropertyType::MAISON_VILLA, postalCode: '75001', city: 'Paris', price: 450000, fees: 5.5, rooms: 4, title: 'Belle maison familiale', description: 'Magnifique maison de 120m² avec jardin...' ); // 2. Ajouter des informations optionnelles $announcement ->setSurface(120) ->setLandSurface(300) ->setBedrooms(3) ->setBasicAmenities( elevator: false, cellar: true, terrace: true ) ->setPhotos([ 'photo1.jpg', 'photo2.jpg', 'photo3.jpg' ]) ->setGeolocation(48.8566, 2.3522, 1) ->setPublications([PublicationCode::SELOGER, PublicationCode::BELLES_DEMEURES]); // 3. Créer le générateur de flux $feedGenerator = new FeedGenerator(); $feedGenerator->addAnnouncement($announcement); // 4. Configurer les fichiers $config = new Config('MonLogiciel', '1.0'); $photoConfig = new PhotoConfig(PhotoConfig::MODE_URL); // 5. Générer le fichier ZIP $zipBuilder = new ZipBuilder($feedGenerator, $config, $photoConfig); $zipBuilder->build('flux_seloger.zip'); echo "Flux généré avec succès !";
Exemples détaillés
Créer une annonce de vente
use SelogerPoliris\Announcement; use SelogerPoliris\Enums\AnnouncementType; use SelogerPoliris\Enums\PropertyType; use SelogerPoliris\Enums\HeatingType; use SelogerPoliris\Enums\KitchenType; $vente = new Announcement( agencyId: 'agence123', reference: 'VE950', technicalId: 'UNIQUE001', announcementType: AnnouncementType::VENTE, propertyType: PropertyType::APPARTEMENT, postalCode: '06210', city: 'MANDELIEU', price: 1250000, fees: 2.5, // Pourcentage pour les ventes rooms: 3, title: 'Appartement 3 pièces vue mer', description: 'Très bel appartement avec vue mer exceptionnelle...' ); $vente ->setAddress('18 avenue Renoir') ->setSurface(135.5) ->setBedrooms(2) ->setFloor(2) ->setNumberOfFloors(5) ->setBathrooms(1) ->setShowerRooms(1) ->setToilets(2) ->setSeparateToilets(true) ->setHeatingType(HeatingType::GAZ_RADIATEUR) ->setKitchenType(KitchenType::AMERICAINE_EQUIPEE) ->setOrientations(south: true, east: true) ->setBalconies(1) ->setBasicAmenities( elevator: true, cellar: true, digicode: true, intercom: true ) ->setParkingAndBoxes(parkings: 1, boxes: 0) ->setDPE( energyConsumption: 191, energyClass: 'D', gasEmissions: 42, gasClass: 'E' ) ->setCondominiumInfo( inCondominium: true, numberOfLots: 45, annualCharges: 3500, inProcedure: false ) ->setAlurSaleInfo( feesCharge: 1, // Acquéreur priceExcludingBuyerFees: 1219512.20 );
Créer une annonce de location
$location = new Announcement( agencyId: 'agence123', reference: 'LOC001', technicalId: 'UNIQUE002', announcementType: AnnouncementType::LOCATION, propertyType: PropertyType::APPARTEMENT, postalCode: '75018', city: 'Paris', price: 1500, // Loyer mensuel fees: 750, // Montant en euros pour les locations rooms: 3, title: 'Appartement 3 pièces Montmartre', description: 'Charmant appartement dans le quartier de Montmartre...' ); $location ->setCharges(150) // Obligatoire pour les locations ->setSurface(65) ->setBedrooms(2) ->setFurnished(false) ->setRentChargesIncluded(false) ->setAlurRentalInfo( chargesModality: 2, // Prévisionnelles avec régularisation inventoryFees: 150, rentSupplement: null );
Ajouter des photos
// Option 1 : Par URL (recommandé) $announcement->setPhotos([ 'http://www.monsite.com/photos/photo1.jpg', 'http://www.monsite.com/photos/photo2.jpg', ]); // Option 2 : Fichiers locaux (à ajouter au ZIP) $announcement->setPhotos([ 'photo1.jpg', 'photo2.jpg', 'photo3.jpg' ]); // Avec titres $announcement->setPhotoTitles([ 'Vue extérieure', 'Salon', 'Cuisine équipée' ]); // Si fichiers locaux, les ajouter au ZipBuilder $zipBuilder->addPhotoFiles([ '/path/to/photo1.jpg', '/path/to/photo2.jpg', '/path/to/photo3.jpg' ]);
Géolocalisation
$announcement->setGeolocation( latitude: 48.87079, longitude: 2.31689, precision: 1 // 1-8, voir documentation );
Gérer plusieurs annonces
$feedGenerator = new FeedGenerator(); // Ajouter une à une $feedGenerator->addAnnouncement($annonce1); $feedGenerator->addAnnouncement($annonce2); // Ou ajouter en masse $feedGenerator->addAnnouncements([$annonce1, $annonce2, $annonce3]); // Nombre d'annonces echo "Nombre d'annonces : " . $feedGenerator->count();
Champs personnalisés
// Dans l'annonce $announcement->setCustomField(1, 'SIRET: 12345678901234'); $announcement->setCustomField(2, 'Carte pro: ABC123'); // Dans la configuration $config = new Config('MonLogiciel', '1.0'); $config->addCustomFieldDescription(1, 'SIRET de l\'agence'); $config->addCustomFieldDescription(2, 'Numéro de carte professionnelle');
Énumérations disponibles
Types d'annonces (AnnouncementType)
CESSION_DE_BAILLOCATIONLOCATION_VACANCESPRODUIT_INVESTISSEMENTVENTEVENTE_DE_PRESTIGEVENTE_FONDS_DE_COMMERCEVIAGERPRODUIT_CATALOGUE
Types de biens (PropertyType)
APPARTEMENTMAISON_VILLATERRAINPARKING_BOXBUREAUXBOUTIQUELOCAL- etc...
Types de chauffage (HeatingType)
Voir la classe HeatingType pour la liste complète des codes.
Types de cuisine (KitchenType)
AUCUNE= 1AMERICAINE= 2SEPAREE= 3INDUSTRIELLE= 4COIN_CUISINE= 5AMERICAINE_EQUIPEE= 6SEPAREE_EQUIPEE= 7COIN_CUISINE_EQUIPE= 8EQUIPEE= 9
Codes de publication (PublicationCode)
SELOGER= 'SL'BELLES_DEMEURES= 'BD'SITE_WEB_AGENCE= 'WA'WEBIMM= 'WI'AGORABIZ= 'AGB'RESEAU_INTERNATIONAL_PROFIL_PLUS= 'RIPP'PACK_COMMERCIALISATEUR= 'PC'
Configuration des photos
Mode URL (recommandé)
$photoConfig = new PhotoConfig(PhotoConfig::MODE_URL);
Les photos sont référencées par URL dans le CSV, SeLoger les télécharge.
Mode FULL
$photoConfig = new PhotoConfig(PhotoConfig::MODE_FULL);
Toutes les photos sont renvoyées dans chaque ZIP.
Mode DIFF
$photoConfig = new PhotoConfig(PhotoConfig::MODE_DIFF);
Seules les photos nouvelles ou modifiées sont envoyées.
Génération du fichier ZIP final
$zipBuilder = new ZipBuilder($feedGenerator, $config, $photoConfig); // Ajouter des photos si nécessaire (mode FULL ou DIFF) $zipBuilder->addPhotoFile('/path/to/photo1.jpg'); $zipBuilder->addPhotoFile('/path/to/photo2.jpg', 'custom_name.jpg'); // Ou en masse $zipBuilder->addPhotoFiles([ '/path/to/photo1.jpg', '/path/to/photo2.jpg', '/path/to/photo3.jpg' ]); // Générer le ZIP $zipBuilder->build('mon_flux_seloger.zip'); // Ou obtenir le contenu en mémoire $zipContent = $zipBuilder->buildToString();
Format du nom de fichier
Le fichier ZIP doit être nommé selon le format :
<NomDuLogiciel>_<IdentifiantAgence>.zip
Exemple : monlogiciel_monagence.zip
Points importants
Champs obligatoires
- Identifiant agence
- Référence agence du bien
- Identifiant technique (unique)
- Type d'annonce
- Type de bien
- Code postal
- Ville
- Prix/Loyer
- Honoraires
- Nombre de pièces
- Libellé
- Descriptif
- Version du format (automatique : 4.09)
Pour les ventes (Loi Alur)
$announcement->setAlurSaleInfo( feesCharge: 1, // 1=Acquéreur, 2=Vendeur, 3=Les deux priceExcludingBuyerFees: 1200000 );
Pour les locations (Loi Alur)
$announcement ->setCharges(150) // Obligatoire ->setAlurRentalInfo( chargesModality: 2, // 1=Forfaitaires, 2=Prévisionnelles, 3=Remboursement annuel inventoryFees: 150, rentSupplement: null ) ->setFeesScaleUrl('https://www.monagence.com/bareme');
Licence
MIT
Support
Pour toute question concernant les spécifications techniques Seloger :
- Email : hotline@seloger.com
- Téléphone : 01 53 38 80 00
Pour les questions concernant cette librairie, veuillez ouvrir une issue sur GitHub.
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-10