Example #1
0
 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 . "&currentnum=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');
 }