Este es el código
Código PHP:
public function blueExtract ($reg, $lang)
{
for($i=0;$i<60;$i++){
$html = file_get_html("http://".$reg.".battle.net/wow/".$lang."/forum/blizztracker/?page=".$i);
if(!empty($html)){
$region = $reg;
$idioma = $lang;
$mensaje = "";
$url = "";
$autor = "";
$fecha = "";
$foro = array();
$db =& JFactory::getDBO();
foreach($html->find('tr') as $element) {
foreach($element->find('.content') as $find) {
$mensaje = $find->plaintext;
$mensaje = utf8_encode($mensaje);
$mensaje = utf8_decode($mensaje);
foreach($find->find('a') as $find) {
$url = "http://eu.battle.net".$find->href;
}
}
foreach($element->find('.desc') as $find) {
$foro = explode("-", $find->plaintext);
}
foreach($element->find('.author-wrapper') as $find) {
$autor = $find->plaintext;
}
foreach($element->find('.last-post-time') as $find) {
$fecha = $find->plaintext;
}
if($mensaje != "" && $url != "" && $autor != "" && $fecha != ""){
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query = 'SELECT fecha FROM #__bluetracker where fecha = "'.$fecha.'"';
$db->setQuery($query);
$Bluedb = $db->loadResult();
if($Bluedb != $fecha){
$query = "INSERT INTO #__bluetracker (mensaje_blue, titulo_blue, region, idioma, url, autor, fecha) VALUES ('".$mensaje."', '".$foro[1]."', '".$region."', '".$idioma."', '".$url."', '".$autor."', '".$fecha."')";
$db->setQuery($query);
$db->query();
}
}
}
}else{$i=60;}
}
}
public function getContent($params, $params2)
{
$this->blueExtract($params, $params2);
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query = 'SELECT * FROM #__bluetracker where region = "'.$params.'" and idioma = "'.$params2.'"';
$db->setQuery($query);
$Bluedb = $db->loadAssocList();
echo "<table border='0'>";
foreach($Bluedb as $items){
echo "<tr>
<td><a href='".JURI::current()."?post=".$items["id_bluetracker"]."'>".$items["titulo_blue"]." - Por ".$items["autor"]."</a></td>
</tr>";
}
echo "</table>";
}
public function getPostContent($url, $mensaje){
$htmlPost = file_get_html($url);
foreach($htmlPost->find('.topic-post') as $element) {
foreach($element->find(".post-detail") as $find){
$texto = utf8_encode($find);
$texto = utf8_decode($texto);
if (preg_match("/".substr($mensaje, 0, 200)."/i", $texto))
{
$query = "INSERT INTO #__post_blue (texto_post_blue, id_bluetracker) VALUES ('".$texto."', '".$url."')";
$db->setQuery($query);
$db->query();
}
}
}
}
public function getText($id){
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query = 'SELECT * FROM #__bluetracker where id_bluetracker = "'.$id.'"';
$db->setQuery($query);
$Bluedb = $db->loadAssocList();
foreach($Bluedb as $items){
//$this->getPostContent($items["url"],$items["mensaje_blue"]);
echo '<p> Escrito por: '.$items["autor"].' con fecha de '. $items["fecha"];
echo '<p>'.$items["mensaje_blue"].'</p>';
}
}
El primer metodo blueExtract, saca los enlaces y la información básica que proporciona la primera url que muestra una lista de los posts del foro.
El metodo getPostContent, es el que intento mediante la url de cada uno que acabo de extraer buscar el mensaje completo. Aquí esta el problema.