public function gibbactuRaw() { $crons = new Cron($this->db); $cron = $crons->load(array('name = ?', 'gibbactu')); //On va récupérer les messages : $url = "http://forum.hardware.fr/forum2.php?post=177180&cat=5&config=hfr.inc&cache=&page=1&sondage=0&owntopic=0&word=GIBBACTU&firstnum=" . $cron->last_id . "¤tnum=0&filter=1"; //echo $url."<br/>"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); libxml_use_internal_errors(true); $dom = new DOMDocument(); @$dom->loadHTML($html); @($xpath = new DomXpath($dom)); $divsMessage = $xpath->query("//table[@class='messagetable']"); $newActus = array(); $last_id = $cron->last_id; foreach ($divsMessage as $key => $node) { $newActu = array(); //echo $dom->saveHTML($node); //var_dump($xpath->query('.//td[@class = "messCase2"]//a[contains(@href, "profil-")]', $node)->item(0)->getAttribute('href')) ; //Le contenu du message $divActus = $xpath->query('.//div[starts-with(@id, "para")]', $node); if (!$divActus->length) { //c'est la pub, on skip //echo "<< la pub\n"; continue; } //Check le smiley [:gibbactu] $checkSmileyGA = $xpath->query('.//img[contains(@title, "[:gibbactu]")]', $node)->item(0); if (!$checkSmileyGA) { //pas de smiley, on skip //echo "<< pas de smiley\n"; continue; } //le message est candidat à l'actu, on sauvegarde le contenu du message pour le post Process $newActu['content_raw'] = $dom->saveHTML($node); $newActus[] = $newActu; //On enregistre l'ID du message pour le cron. $divURL = $xpath->query('.//a[@class="cLink"]', $node); $newActu['hfr_url'] = $divURL->item(0)->getAttribute('href'); $last_id = str_replace('t', '', parse_url($newActu['hfr_url'])['fragment']) + 1; echo $last_id . "\n"; } //Mise à jour du CRON avec le last_ID $cron->date_last_executed = date('Y-m-d H:i:s'); $cron->last_id = $last_id; $cron->save(); //On ajoute en les actus pour le PostProcess $actu = new Actu($this->db); foreach ($newActus as $actus) { $actu->content_raw = $actus['content_raw']; $actu->content_raw = $actus['content_raw']; $actu->save(); $actu->reset(); } libxml_use_internal_errors(false); $this->f3->set('report', 'Actu(s) ajoutée(s) :' . count($newActus)); echo Template::instance()->render('cron.htm'); }