Ajout d'article par un flux xml

flipflipflipflip Member
Salut, je suis en train de mettre en place pluxml pour un projet et je dois ajouter automatiquement des articles générés par un flux xml. La seul manipulations faites par l'utilisateur est le choix de la catégorie et le choix d'un paramètres dans le flux. Donc j'ai repris le fichier admin/articles.php que j'ai appelé admin/cronarticles.php et vois les modifications :
<?php
include('prepend.php');
if($admin->aCats){
	foreach($admin->aCats as $k => $v){
		$acat[$k] = $v['name'];
	}
	$cat_all['Catégories'] = $acat;
}

$cat_all['Emplacements spécifiques']['home'] = 'Page d\'accueil';
$cat_all['Emplacements spécifiques']['draft'] = 'Brouillons';

### Edition ###
if (!empty($_POST)) {
	$msg = $admin->contentEdit($_POST['file'], $_POST);
	header('Location: cronarticles.php?p='.$_POST['file'].'&msg='.$msg.'');
}

if (!empty($_GET['p'])) {
	switch ($_POST['type']) {
		case 0:
        	$rss = file_get_contents('http://www.monflux.com/xml/contenu.php?login=5027684&tracker=cccc&pic=0&vid=0&dvd=1&ctb=0&sort=1');
		break;
		case 1:
        	$rss = file_get_contents('http://www.monflux.com/xml/contenu.php?login=5027684&tracker=cccc&pic=0&vid=1&dvd=0&ctb=0&sort=1');
		break;
	}

	$xml = new SimpleXMLElement($rss);

	foreach($xml->ListeContenu->Contenu as $item)
	{
		$file = $admin->con->query('/'.$_GET['p'].'.([0-9]{3}|home|draft)(.[a-z0-9-]*)*.xml$/','sort',0,1);
		$result = $admin->parseArticle(PLX_DOC.$admin->config['racine_xml'].$file['0']);
		$title = html_entity_decode(utf8_decode($item->Titre));
		$author = 'Philippe';
		$cat = $result['cat_num'];
		$date = date::heureIso2Admin($result['date']);
		$chapo = $result['chapo'];
		$content =  utf8_decode(addslashes($item->Description));
		$file_num = $result['file_num'];
		$art_num = $result['art_name'];
		$cat_num = $result['cat_num'];
		$allow_com = $result['allow_com'];
		$title_page = "Ajout d'articles";
	}
} else {
	$title = $cat = $chapo = $cat_num = $art_num = NULL;
	$author = $_SESSION['author'];
	$date = array ('year' => date('Y'),'month' => date('m'),'day' => date('d'),'time' => date('H:i:s'));
	$content = '<p></p>';
	$file_num = $admin->nextId();
	$title_page = "Ajout d'articles début";
	$allow_com = $admin->config['allow_com'];
}

include('top.php');
?>

<h2><?php echo $title_page; ?></h2>
<form action="cronarticles.php?p=<?php echo $file_num; ?>" method="post" id="change-content">
	<fieldset>
		<p class="field">
			<label>Type :</label>
			<?php printSelect('type', array('0'=>'Dvd','1'=>'Vidéo'), $type); ?>
		</p>

		<p class="field">
			<label>Emplacement :</label>
			<?php printSelect('cat_num', $cat_all, $cat); ?>
		</p>


		<p><input type="submit" value="Enregistrer" accesskey="s"/></p>
	</fieldset>
</form>
<?php
include('foot.php');
?>
Lorsque je valide le formulaire j'ai le message "Fichier non valide". J'ai retourné le truc dans tout les sens mais je ne comprend vraiment pas le fonctionnement des articles.
Comment sont récupérés les variables $_POST ? Est-ce qu'il y a un fichier intermédiare ?

Merci d'avance.

P.S. : je précise que la création d'articles par articles.php fonctionne correctement bien sur.

J'ai un string de l'array

Réponses

  • Bon ba je vois qu'il y a pas beaucoup d'activité sur le forum. Je continue mes recherche et maintenant je suis arrivé un truc qui utilise presque le fonctionnement normal de pluxml. Au contraire je but sur un soucis, je n'arrive pas à incrémenté de 1 la variable file_num dans ma boucle for.
    <?php
    include('prepend.php');
    if($admin->aCats){
    	foreach($admin->aCats as $k => $v){
    		$acat[$k] = $v['name'];
    	}
    	$cat_all['Catégories'] = $acat;
    }
    
    $cat_all['Emplacements spécifiques']['home'] = 'Page d\'accueil';
    $cat_all['Emplacements spécifiques']['draft'] = 'Brouillons';
    
    ### Edition ###
    if (!empty($_GET['p'])) {
    	switch ($_POST['type']) {
    		case 0:
            	$rss = file_get_contents('http://www.monflux.com/xml/contenu.php?login=5027684&tracker=videoclipx&pic=0&vid=0&dvd=1&ctb=0&sort=1');
    		break;
    		case 1:
            	$rss = file_get_contents('http://www.monflux.com/xml/contenu.php?login=5027684&tracker=videoclipx&pic=0&vid=1&dvd=0&ctb=0&sort=1');
    		break;
    	}	
    	
    	$xml = new SimpleXMLElement($rss);
    		
    	foreach($xml->ListeContenu->Contenu as $item) {	
    		$data = array();
    		$data['titre'] = htmlspecialchars(utf8_decode($item->Titre));
    		$data['cat_num'] = $_POST['cat_num'];
    		$data['year'] = date('Y');
    		$data['month'] = date('m'); 
    		$data['day'] = date('d'); 
    		$data['time'] = date('H:i:s');
    		$data['chapo'] = '';
    		$data['contenu'] = utf8_decode($item->Description);
    		$data['allow_com'] = 0;
    		
    		$msg = $admin->contentEdit($_GET['p'], $data);
    		header('Location: cronarticles.php?msg='.$msg.'');
    	}
    }
    
    $file_num = $admin->nextId();
    $title_page = "Ajout d'articles";
    
    include('top.php');
    ?>
    
    <h2><?php echo $title_page; ?></h2>
    <form action="cronarticles.php?p=<?php echo $file_num; ?>" method="post" id="change-content">
    	<fieldset>
    		<p class="field">
    			<label>Type :</label>
    			<?php printSelect('type', array('0'=>'Dvd','1'=>'Vidéo'), $type); ?>
    		</p>
    
    		<p class="field">
    			<label>Emplacement :</label>
    			<?php printSelect('cat_num', $cat_all, $cat); ?>
    		</p>
    
    		<?php printInput('file', $file_num, 'hidden');?>
    
    		<p><input type="submit" value="Enregistrer" accesskey="s"/></p>
    	</fieldset>
    </form>
    <?php
    include('foot.php');
    ?>
    

    J'ai un string de l'array

  • LaurentLaurent Member
    janvier 2011 modifié
    Finalement ca fonctionne ?

    Edit : Oki voila le déterrage, j'avais pas vu la date -.-
  • Bonsoir, ça a fonctionné sur la branche 4 de pluxml mais je n'utilise plus ce système donc je n'ai pas fais le portage pour la branche 5.

    Tu a une base travail

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.