Enregistrement du content d'un article en ajax

je-evrardje-evrard Member
février 2017 modifié dans Entraide
Bonjour,

Dans le cadre d'un projet j'ai besoin d'enregistrer en ajax le contenu des pages statique et des articles :

Pour les pages statiques c'est relativement simple :
[== Indéfini ==]
<?php
require( 'ajax.php' );

$page_id = (isset($_GET['page_id'])) ? $_GET['page_id'] : '';
$page_type = (isset($_GET['page_type'])) ? $_GET['page_type'] : '';
# post var widget jquery
$input = file_get_contents("php://input");
parse_str($input, $post_var);

/* static */

$filename = PLX_ROOT.$plxAdmin->aConf['racine_statiques'].$page_id.'.'.$plxAdmin->aStats[ $page_id ]['url'].'.php';

$post_var["content"] = visualwizard_utils_unSlash($post_var["content"]);

//echo ($filename);
# On écrit le fichier

if(plxUtils::write($post_var["content"],$filename))
	echo true;
else
echo false ;

?>

Mais pour les articles c'est une autre histoire à cause de la complexité de la structure interne de l'article.
Sachant que je ne veux que :
[list=*]
[*]ouvrir l'xml de l'article (j'ai son id)[/*]
[*]remplacer le contenu de la balise content uniquement (simplexml ?)[/*]
[*]et enregistrer l'article sans toucher au reste de la structure[/*]
[/list]

Si vous avez une solution simple....

Merci d'avance,

jeje

Réponses

  • je-evrardje-evrard Member
    février 2017 modifié
    Voila ma solution :
    [== Indéfini ==]
    <?php
    
    // http://coffeerings.posterous.com/php-simplexml-and-cdata
    class SimpleXMLExtended extends SimpleXMLElement {
    	public function addCData($cdata_text) {
    		$node = dom_import_simplexml($this); 
    		$no   = $node->ownerDocument; 
    		$node->appendChild($no->createCDATASection($cdata_text)); 
    	}
      
    }
    
    require( 'ajax.php' );
    
    $page_id = (isset($_GET['page_id'])) ? $_GET['page_id'] : '';
    if(($aFile = $plxMotor->plxGlob_arts->query('/^'.$page_id.'.(.+).xml$/')) == false) { # Article inexistant
    	return false;
    }
    
    $filename = PLX_ROOT.$plxMotor->aConf['racine_articles'].$aFile['0'];
    $articlexml = new SimpleXMLExtended(file_get_contents($filename));
    $articlexml->content = NULL; // VERY IMPORTANT! We need a node where to append
    $articlexml->content->addCData('Site Title');
    $xml = $articlexml->asXML();
    
    # On écrit le fichier
    if(plxUtils::write($xml,$filename))
    	echo true;
    else
    echo false ;
    
    ?>
    
  • Trop puissant!
  • je-evrardje-evrard Member
    février 2017 modifié
    cdev a écrit:
    Trop puissant!
    C'est trop vraiment :) .

    N'étant qu'un codeur moyenne gamme. Si quelqu'un a mieux... je suis preneur héhé.
Connectez-vous ou Inscrivez-vous pour répondre.