1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| $tblPart = new sqlTablePartenaire( 'R' );
if ( $partTab = $tblPart->getOne( 'nom = "'. $partenaire .'"', 'id_partenaire, priorite, nom' )){
foreach( $taratatarss as $k => $v ){
$fileName = CallFactory::getInstance()->uploadXml( $partenaire .'-'. $k, $v['url'] , true );
echo $fileName.'<br />';
parseXml( $partTab, $fileName, $v['categorie'], $v['type'] );
} }
else
throw new exception( '*** partenaire non trouvé : '. $partenaire );
function parseXml( $partTab, $file, $cat, $sscat) {
// Pour parser un gros doc avec Expand et SimpleXml
$reader = new XMLReader(); //plus rapide et moins gourmand en mémoire
$reader->open( $file );
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
if ($reader->localName == 'item') {
$node = $reader->expand();
$dom = new DomDocument();
$n = $dom->importNode($node,true);
$dom->appendChild($n);
$movie = simplexml_import_dom($n); //on passe le relais à SimpleXml (plus simple ;-)
//on convertit les "tags:name" en "name"
$tmp = $movie->asXML();
$tmp = ereg_replace( '<[[:alpha:]]+:','<', $tmp);
$tmp = ereg_replace( '</[[:alpha:]]+:','</', $tmp);
//echo $tmp.'<hr>';
//on recolle le tout dans le simplexml
$movie = simplexml_load_string( $tmp ); //on passe le relais à SimpleXml (plus simple ;-)
if ( $movie->credit != 'mytaratata' )
continue;
$du = (string)$movie->pubDate;
$filmTab = array(
//'id' => (string)$movie->guid,
'categorie' => $cat, //'RSS'
'type' => $sscat, //utf8_decode((string)$movie->FPD_SS_CAT_PARENT->CAT_TITRE ),
'annee' => date( 'Y', strtotime($du)),
'duree' => enMinute((string)$movie->duration),
'titre' => utf8_decode((string)$movie->title),
'diffusion' => gmstrftime( '%Y-%m-%d %H:%M:%S', strtotime($du) ),
//'titre2' => utf8_decode((string)$movie->FPD_TITRE2),
'photo' => (string)$movie->thumbnail,
'plot' => extractPLot( utf8_decode((string)$movie->description) ),
'directors' => array(),
'actors' => array(),
'extraits' => array(),
'motcles' => array(),
'offers' => array()
);
//<media:category>foot</media:category> convertit en <category>foot</category>
if ( is_object( $movie->category )){
foreach ( $movie->category AS $motcle )
$filmTab['motcles'][] = utf8_decode( trim( (string)$motcle ));
}
$filmTab['offers'][] = array(
'achatlocation' => 'Gratuit Taratata',
'prix' => '0.00',
'langue' => 'Francais',
'url' => (string)$movie->link,
'du' => gmstrftime( '%Y-%m-%d %H:%M:%S', strtotime($du) )
//'au' => (string)$movie->FPD_END_DATE
);
//CallFactory::getInstance()->updateProgramme( $partTab, $filmTab, true );
echo '<pre>'; var_dump( $filmTab ); echo '</pre>';
}
break;
} } } |
Partager