<?php
class LeBonCoinBridge extends BridgeAbstract{

	public function loadMetadatas() {

		$this->maintainer = "16mhz";
		$this->name = "LeBonCoin";
		$this->uri = "http://www.leboncoin.fr";
		$this->description = "Returns most recent results from LeBonCoin for a region, and optionally a category and a keyword .";

        $this->parameters[] = array(
          'k'=>array('name'=>'Mot Clé'),
          'r'=>array(
            'name'=>'Région',
            'type'=>'list',
            'values'=>array(
              'Alsace'=>'alsace',
              'Aquitaine'=>'aquitaine',
              'Auvergne'=>'auvergne',
              'Basse Normandie'=>'basse_normandie',
              'Bourgogne'=>'bourgogne',
              'Bretagne'=>'bretagne',
              'Centre'=>'centre',
              'Champagne Ardenne'=>'champagne_ardenne',
              'Corse'=>'corse',
              'Franche Comté'=>'franche_comte',
              'Haute Normandie'=>'haute_normandie',
              'Ile de France'=>'ile_de_france',
              'Languedoc Roussillon'=>'languedoc_roussillon',
              'Limousin'=>'limousin',
              'Lorraine'=>'lorraine',
              'Midi Pyrénées'=>'midi_pyrenees',
              'Nord Pas De Calais'=>'nord_pas_de_calais',
              'Pays de la Loire'=>'pays_de_la_loire',
              'Picardie'=>'picardie',
              'Poitou Charentes'=>'poitou_charentes',
              'Provence Alpes Côte d\'Azur'=>'provence_alpes_cote_d_azur',
              'Rhône-Alpes'=>'rhone_alpes',
              'Guadeloupe'=>'guadeloupe',
              'Martinique'=>'martinique',
              'Guyane'=>'guyane',
              'Réunion'=>'reunion'
            )
          ),
          'c'=>array(
            'name'=>'Catégorie',
            'type'=>'list',
            'values'=>array(
              'EMPLOI'=>'_emploi_',
              'VEHICULES'=>array(
                'Tous'=>'_vehicules_',
                'Voitures'=>'voitures',
                'Motos'=>'motos',
                'Caravaning'=>'caravaning',
                'Utilitaires'=>'utilitaires',
                'Équipement Auto'=>'equipement_auto',
                'Équipement Moto'=>'equipement_moto',
                'Équipement Caravaning'=>'equipement_caravaning',
                'Nautisme'=>'nautisme',
                'Équipement Nautisme'=>'equipement_nautisme'
              ),
              'IMMOBILIER'=>array(
                'Tous'=>'_immobilier_',
                'Ventes immobilières'=>'ventes_immobilieres',
                'Locations'=>'locations',
                'Colocations'=>'colocations',
                'Bureaux & Commerces'=>'bureaux_commerces'
              ),
              'VACANCES'=>array(
                'Tous'=>'_vacances_',
                'Location gîtes'=>'locations_gites',
                'Chambres d\'hôtes'=>'chambres_d_hotes',
                'Campings'=>'campings',
                'Hôtels'=>'hotels',
                'Hébergements insolites'=>'hebergements_insolites'
              ),
              'MULTIMEDIA'=>array(
                'Tous'=>'_multimedia_',
                'Informatique'=>'informatique',
                'Consoles & Jeux vidéo'=>'consoles_jeux_video',
                'Image & Son'=>'image_son',
                'Téléphonie'=>'telephonie'
              ),
              'LOISIRS'=>array(
                'Tous'=>'_loisirs_',
                'DVD / Films'=>'dvd_films',
                'CD / Musique'=>'cd_musique',
                'Livres'=>'livres',
                'Animaux'=>'animaux',
                'Vélos'=>'velos',
                'Sports & Hobbies'=>'sports_hobbies',
                'Instruments de musique'=>'instruments_de_musique',
                'Collection'=>'collection',
                'Jeux & Jouets'=>'jeux_jouets',
                'Vins & Gastronomie'=>'vins_gastronomie'
              ),
              'MATÉRIEL PROFESSIONNEL'=>array(
                'Tous'=>'_materiel_professionnel_',
                'Matériel Agricole'=>'mateiel_agricole',
                'Transport - Manutention'=>'transport_manutention',
                'BTP - Chantier - Gros-œuvre'=>'btp_chantier_gros_oeuvre',
                'Outillage - Matériaux 2nd-œuvre'=>'outillage_materiaux_2nd_oeuvre',
                'Équipements Industriels'=>'equipement_industriels',
                'Restauration - Hôtellerie'=>'restauration_hotellerie',
                'Fournitures de Bureau'=>'fournitures_de_bureau',
                'Commerces & Marchés'=>'commerces_marches',
                'Matériel médical'=>'materiel_medical'
              ),
              'SERVICES'=>array(
                'Tous'=>'_services_',
                'Prestations de services'=>'prestations_de_services',
                'Billetterie'=>'billetterie',
                'Évènements'=>'evenements',
                'Cours particuliers'=>'cours_particuliers',
                'Covoiturage'=>'covoiturage'
              ),
              'MAISON'=>array(
                'Tous'=>'_maison_',
                'Ameublement'=>'ameublement',
                'Électroménager'=>'electromenager',
                'Arts de la table'=>'arts_de_la_table',
                'Décoration'=>'decoration',
                'Linge de maison'=>'linge_de_maison',
                'Bricolage'=>'bricolage',
                'Jardinage'=>'jardinage',
                'Vêtements'=>'vetements',
                'Chaussures'=>'chaussures',
                'Accessoires & Bagagerie'=>'accessoires_bagagerie',
                'Montres & Bijoux'=>'montres_bijoux',
                'Équipement bébé'=>'equipement_bebe',
                'Vêtements bébé'=>'vetements_bebe'
              ),
              'AUTRES'=>'autres'
            )
          )
        );

	}


	public function collectData(){
        $param=$this->parameters[$this->queriedContext];

		$html = '';
		if (empty($param['c']['value'])) {
			$link = 'http://www.leboncoin.fr/annonces/offres/' . $param['r']['value'] . '/?f=a&th=1&q=' . urlencode($param['k']['value']);
		}
		else {
			$link = 'http://www.leboncoin.fr/' . $param['c']['value'] . '/offres/' . $param['r']['value'] . '/?f=a&th=1&q=' . urlencode($param['k']['value']);
		}
		$html = $this->getSimpleHTMLDOM($link) or $this->returnServerError('Could not request LeBonCoin.');

		$list = $html->find('.tabsContent', 0);
		if($list === NULL) {
			return;
		}

		$tags = $list->find('li');

		foreach($tags as $element) {

			$element = $element->find('a', 0);

			$item = array();
			$item['uri'] = $element->href;
			$title = html_entity_decode($element->getAttribute('title'));
			$content_image = $element->find('div.item_image', 0)->find('.lazyload', 0);

			if($content_image !== NULL) {
				$content = '<img src="' . $content_image->getAttribute('data-imgsrc') . '" alt="thumbnail">';
			} else {
				$content = "";
			}
			$date = $element->find('aside.item_absolute', 0)->find('p.item_sup', 0);

			$detailsList = $element->find('section.item_infos', 0);

			for($i = 0; $i <= 1; $i++) $content .= $detailsList->find('p.item_supp', $i)->plaintext;
			$price = $detailsList->find('h3.item_price', 0);
			$content .= $price === NULL ? '' : $price->plaintext;

			$item['title'] = $title;
			$item['content'] = $content . $date;
			$this->items[] = $item;
		}
	}
}