Titre du sujet : Re: Utiliser l'api allociné dans xoopstube par seboseboss sur 29/12/2014 19:41:57
Re
J'ai du reprendre la fonction que j'avais au début car les titres de films avec lettre accentué ne passaient pas tout comme les apostrophes.
Le fichier allosearch.php:
<?php
/**
* $Id: allosearch.php
* Module: XoopsTube
*/
include 'header.php';
include XOOPS_ROOT_PATH . '/header.php';
require_once XOOPS_ROOT_PATH . '/api-allocine/api-allocine-helper.php';
global $xoopsModule, $xtubemyts, $xoopsModuleConfig;
echo '<h1>' . _MD_XTUBE_ALLOFORM_TITLE . '</h1>';
?>
<html><div class="xoopstube_cadreblock" style="overflow: auto; margin-left: 5%; margin-right: 5%;"></html>
<?php
$helper = new AlloHelper;
function removeAccents($title)
{
$accentued = array("à","á","â","ã","ä","ç","è","é","ê","ë","ì",
"í","î","","ï","ñ","ò","ó","ô","õ","ö","ù","ú","û","ü","ý","ÿ",
"À","Á","Â","Ã","Ä","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò",
"Ó","Ô","Õ","Ö","Ù","Ú","Û","Ü","Ý");
$nonaccentued = array("a","a","a","a","a","c","e","e","e","e","i","i",
"i","i","n","o","o","o","o","o","u","u","u","u","y","y","A","A","A",
"A","A","C","E","E","E","E","I","I","I","I","N","O","O","O","O","O",
"U","U","U","U","Y");
$title = str_replace($accentued, $nonaccentued, $title);
return $title;
}
$title = $_POST['filmtitle'];
$q = removeAccents($title);
$page = 1;
$count = 16;
$filter = array('movie');
$profile = 'small';
if (isset($_POST['submit'])) {
try {
// Envoi de la requête
$arrayMovie = $helper->search($q, $page, $count, $filter)->getArray();
if (isset($arrayMovie['movie'])) {
foreach ($arrayMovie['movie'] as $key) {
if (isset($key['title'])) {
echo "<div class='xoopstube_descrblock' style='float: left; width: 190px; margin: 5px;margin-bottom: 20px; padding: 2px; font-size: 90%; text-align: center;'><span><img src=",$key['poster']," style='width: 190px; height: 260px; align: left;'></img></span>
<span><font style='color: orange;'>" .$key['title']."</font><br />
<form action='submit_film.php' method='POST'>
<input type='hidden' value=".$key['code']." name='filmcode'>
<input type='submit' value='Selectionner'>
</form></span></div>";
}
else {
$titreor = $key['originalTitle'];
echo '<li onClick="fill(''.$titreOr.'');">'.$titreOr.'</li>';
}
}
}
}
catch (ErrorException $error) {
// En cas d'erreur
echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
}
}else{
echo "pas de résultat";
}
?>
<html></div></html>
<?php
$xoopsTpl->assign('module_dir', $xoopsModule->getVar('dirname'));
include XOOPS_ROOT_PATH . '/footer.php';
?>
Maintenant c'est bon les lettre accentué ne gêne plus mais j'ai toujours le soucis des apostrophes.
Vu que j'ai supprimé l'enregistrement en bdd avant soumission, il ne devrait plus y avoir de soucis car on ne passe pas par mysql, de plus j'ai fait un echo pour voir le titre en sortie de $_post et pas de soucis bien écrit sans antislashe, donc je sais pas.
J'ai aussi enlever les addslash dans submit_film.php
Le bout de code correspondant:
//récupération infos allociné et autocompletion
require_once XOOPS_ROOT_PATH . '/api-allocine/api-allocine-helper.php';
// Créer l'objet
$helper = new AlloHelper;
//Pour plus de clareté, on définit les paramètres à l'avance: le code du film, et la quantité d'informations à récupérer.
$code = $_POST['filmcode'];
$profile = 'medium';
//Ensuite, il est conseillé d'effectuer des requêtes dans un bloc try{} catch(){} pour gérer les erreurs.
if(isset($_POST['filmcode'])) {
try
{
// Envoi de la requête
$data = $helper->movie( $code, $profile, $filter );
//print_r($data->getArray());
//Convertir la durée en hh:mm:ss
$total = $data->runtime; //Nombre de secondes
$heure = intval(abs($total / 3600));
$total = $total - ($heure * 3600);
$minute = intval(abs($total / 60));
$total = $total - ($minute * 60);
$seconde = $total;
//Convertir la date en jj.mm.aa
$date = $data->release['releaseDate'];
function datefr($date) {
$split = preg_split("#-#",$date);
$annee = $split[0];
$mois = $split[1];
$jour = $split[2];
return "$jour"."-"."$mois"."-"."$annee";
}
$date = $data->release['releaseDate'];; // Date format américain
// $date=date("Y-m-d"); // Ou date du jour
}
catch( ErrorException $error )
{
// En cas d'erreur
echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
}
$url_img = $data->poster;
$titre = $data->title;
$annee = $data->productionYear;
$duree = $data->runtime;
$date_sortie = $data->release['releaseDate'];
$nom_realisateur = $data->castingShort['directors'];
$synopsis = $data->synopsis;
$nom_acteur = $data->castingShort['actors'];
$nom_pays = $data->nationality[0]['$'];
$bande_a = $data->trailerEmbed;
$nom_genre = $data->genre[0]['$'];
$nom_genre2 = $data->genre[1]['$'];
$nom_genre3 = $data->genre[2]['$'];
$nom_genre4 = $data->genre[3]['$'];
$descrip = '' . $data->synopsis .'<br /><br />Date de sortie ' . datefr($date) . '('.$heure.':'.$minute.':'.$seconde.')<br />Réalisé par ' . $nom_realisateur . '<br />Avec ' . $nom_acteur . '<br />Genre ' . $nom_genre . '<br />Nationalité ' . $nom_pays . '<br /><img src="' . $data->poster . '" style="width: 190px; height: 260px;"></img><br />' . $data->trailerEmbed . '';
}
$sql = 'SELECT * FROM ' . $xoopsDB->prefix('xoopstube_videos') . ' WHERE lid=' . intval($lid);
$video_array = $xoopsDB->fetchArray($xoopsDB->query($sql));
$lid = $video_array['lid'] ? $video_array['lid'] : 0;
$cid = $video_array['cid'] ? $video_array['cid'] : 2;
$title = $video_array['title'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['title']) : ''.$titre.' [FilmFR]';
$vidid = $video_array['vidid'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['vidid']) : '';
$publisher = $video_array['publisher'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['publisher']) : '';
$screenshot = $video_array['screenshot'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['screenshot']) : '';
$descriptionb = $video_array['description'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['description']) : ''.$descrip.'';
$published = $video_array['published'] ? $video_array['published'] : 0;
$expired = $video_array['expired'] ? $video_array['expired'] : 0;
$updated = $video_array['updated'] ? $video_array['updated'] : 0;
$offline = $video_array['offline'] ? $video_array['offline'] : 0;
$vidsource = $video_array['vidsource'] ? $video_array['vidsource'] : 0;
$ipaddress = $video_array['ipaddress'] ? $video_array['ipaddress'] : 0;
$notifypub = $video_array['notifypub'] ? $video_array['notifypub'] : 0;
$vidrating = $video_array['vidrating'] ? $video_array['vidrating'] : 1;
$time = $video_array['time'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['time']) : ''.$heure.'h'.$minute.'min';
$keywords = $video_array['keywords'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['keywords']) : '';
$item_tag = $video_array['item_tag'] ? $xtubemyts->htmlSpecialCharsStrip($video_array['item_tag']) : ''.$data->genre[0]['$'].",".$nom_genre2.",".$nom_genre3.",".$nom_genre4.'';
Mais je vais les remettre car ça ne change rien et ils vont en avoir besoin au cas d'un update par exemple ou la les infos viendrons de mysql.
Rofl j'y comprend rien, j'ai remis addslashes mais il me coupe quand même le titre.
|