[ 'name' => 'Url de recherche', 'required' => true, 'exampleValue' => '/Sport/Ile-de-France', 'pattern' => '\/.*', 'title' => 'Faites une recherche sur le site. Puis copiez ici la fin de l’url. Doit commencer par /', ], 'p' => [ 'name' => 'Nombre de pages à scanner', 'type' => 'number', 'required' => true, 'defaultValue' => 5, 'title' => 'Indique le nombre de pages de donnons.org qui seront scannées' ] ] ]; public function collectData() { $pages = $this->getInput('p'); for ($i = 1; $i <= $pages; $i++) { $this->collectDataByPage($i); } } private function collectDataByPage($page) { $uri = $this->getPageURI($page); $html = getSimpleHTMLDOM($uri); $searchDiv = $html->find('div[id=search]', 0); if (!is_null($searchDiv)) { $elements = $searchDiv->find('a.lst-annonce'); foreach ($elements as $element) { $item = []; // Lien vers le don $item['uri'] = self::URI . $element->href; // Id de l'objet $item['uid'] = $element->getAttribute('data-id'); // Grab info from json $jsonString = $element->find('script', 0)->innertext; $json = json_decode($jsonString, true); $name = $json['name']; $category = $json['category']; $date = $json['availabilityStarts']; $description = $json['description']; $city = $json['availableAtOrFrom']['address']['addressLocality']; $region = $json['availableAtOrFrom']['address']['addressRegion']; // Grab info from HTML $imageSrc = $element->find('img.ima-center', 0)->getAttribute('src'); // Use large image instead of small one $imageSrc = str_replace('/xs/', '/lg/', $imageSrc); $image = self::URI . $imageSrc; $author = $element->find('div.avatar-holder', 0)->plaintext; $content = '
' . $description . '
Lieu : ' . $city . ' - ' . $region . '
Par : ' . $author . '
Date : ' . $date . '