Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
scrutaridata:exportapi:php [2010/02/11 19:51]
vincent
scrutaridata:exportapi:php [2016/09/21 18:19] (Version actuelle)
vincent
Ligne 1: Ligne 1:
 ====== Implémentation de l'API en PHP ====== ====== Implémentation de l'API en PHP ======
  
-L'​implémentation de l'API se présente sous la forme d'une série de fichiers correspondant chacun à une classe PHP. Toutes ​les classes ​et les constantes commencent par le préfixe **SED_** afin de minimiser le risque de conflits ​de noms avec d'autres ​classes ​PHPCes classes sont toutes présentes dans un même répertoire appelé ​//ScrutariDataExportLib//. Cette implémentation fonctionne avec PHP 5Elle est sous licence GPL v2.+L'​implémentation de l'API se présente sous la forme d'un fichier unique qui comprend ​les différentes ​classes de l'API ainsi que des classes ​utilitairesLa dernière version stable de ce fichier est disponible à cette adresse : http://dataexport.scrutari.net/impl/php/​scrutaridataexport.txt (remplacez ​.txt par .php pour l'​exécution)
  
-  ​Répertoire //​ScrutariDataExportLib//​ compressé : [[http://​dataexport.scrutari.net/​impl/​php/​ScrutariDataExportLib.zip]]+Toutes les classes et constantes de ce fichier commence par le suffixe ​**SDE_** afin de minimiser le risque de conflits de noms avec d'​autres classes PHPCette implémentation fonctionne avec PHP 5Elle est sous licence MIT.
  
-===== Utilisation de l'​implémentation =====+Ces scripts sont accessibles avec Git via https://​framagit.org/​Scrutari/​export-php
  
-Pour utiliser cette implémentation,​ il suffit de décompresser l'​archive et de faire appel au fichier //​class-ScrutariDataExport.php//​ dans son code PHP, ce fichier se charge d'​inclure tous les autres fichiers PHP de l'​implémentation.+Un autre accès avec Subversion :
  
-Tous les fichiers reprennent les noms de classe de l'API à l'​exception du fichier ''​class-XmlWriter.php''​ qui définit la classe ''​SED_XmlWriter''​. C'est une instance de cette classe qu'il faut créer tout d'​abord pour indiquer la destination du code XML qui va être produitLa classe ''​SED_XmlWriter''​ possède un constructeur qui prend comme unique argument un pointeur vers un fichier (construit avec la fonction PHP //file()//)Si la valeur nulle est transmise au constructeur,​ le code XML sera renvoyé vers la sortie standard (fonction ​//echo//).+  svn co http://​depot.exemole.fr/svn/web/apps/scrutari.net/php
  
-L'​instance de ''​SED_XmlWriter''​ est alors passé en argument au constructeur de la classe ''​SED_ScrutariDataExport''​ (fichier //​class-ScrutariDataExport.php//​). Ensuite, le comportement est celui indiqué dans l'API. 
  
-===== Exemple d'Utilisation ​=====+===== Exemple ​du site www.comedie.org ===== 
 + 
 +L'​exemple suivant est celui du site www.comedie.org. Celui-ci est en Wordpress. La structure des données de Wordpress étant assez simple, il a été choisi ​d'écrire un script interrogeant directement les données de la base MySQl plutôt que de passer par une procédure plus lourde d'​extension Wordpress. 
 + 
 +Outre le fichier scrutaridataexport.php,​ cette extraction est basé sur deux fichiers : comedie.scrutari-data.php qui comprend la configuration de l'​accès (voir http://​dataexport.scrutari.net/​impl/​php/​comedie.scrutari-data.txt et ci-dessous) et comedie.php qui comprend l'​extraction proprement dite (voir http://​dataexport.scrutari.net/​impl/​php/​comedie.txt). 
 + 
 +=== Fichier comedie.scrutari-data.php ​=== 
 + 
 +Ce fichier contient les informations de la configuration (accès à la base de données).
  
 <code php> <code php>
 <?php <?php
-/* Chargement de la bibliothèque ScrutariDataExportLib +//Indication que les données transmises sont du XML 
-*+header("content-type:​ text/xml;​charset=UTF-8");
-require_once("ScrutariDataExportLib/class-ScrutariDataExport.php");+
  
- /* Ouverture d'un fichier en écriture +// Nom de la base de données de WordPress. 
- *+define('​DB_NAME'​'​*'​);
-$file = fopen("​test.scrutari-data.xml"​"​w"​);+
  
- /* Construction d'une instance SED_XmlWriter +// Utilisateur de la base de données MySQL. 
- Pour que le code XML s'affiche dans la sortie standardon écrirait $xmlWriter = new SED_XmlWriter(NULL);​ +define('​DB_USER', ​'*');
- *+
-$xmlWriter = new SED_XmlWriter($file);+
  
-/* On inclus préalablement ​la déclaration XML : <?xml version="​1.0" encoding="​UTF-8"?>​ +// Mot de passe de la base de données MySQL
-(méthode hors API) +define('​DB_PASSWORD',​ '*');
-*+
-$xmlWriter->​appendDeclaration();+
  
-/* Construction d'une instance ​de SED_ScrutariDataExport qui suit l'API de ScrutariDataExport +// Adresse ​de l'hébergement MySQL. 
-*/ +define('​DB_HOST',​ '​localhost'​);
-$scrutariDataExport = new SED_ScrutariDataExport($xmlWriter);+
  
-/* Début ​de l'​export,​ $baseMetadataExport est une instance ​de SED_BaseMetadataExport +// Jeu de caractères à utiliser par la base de données 
-*/ +define('​DB_CHARSET',​ '​utf8'​);
-$baseMetadataExport = $scrutariDataExport->​startExport();+
  
-/* Définition des métadonnées de la base +// Chaine vide pour SCRUTARIDATA_PATHles données XML sont affichées directement ​en sortie 
-SED_INTITULE_SHORT correspond à la constante INTITULE_SHORT de l'​API +define('​SCRUTARIDATA_PATH'​''​);
-*/ +
-$baseMetadataExport->​setAuthorityUUID("​e17a05b0-c45e-11d8-9669-0800200c9a66"​);​ +
-$baseMetadataExport->​setBaseName("​test"​);​ +
-$baseMetadataExport->​setBaseIcon("​http://​monsite.net/​icon-16x16pixels.png"​);​ +
-$baseMetadataExport->​setIntitule(SED_INTITULE_SHORT"​fr",​ "​Test"​);​ +
-$baseMetadataExport->​setIntitule(SED_INTITULE_SHORT,​ "en", "​Test"​);​ +
-$baseMetadataExport->​setIntitule(SED_INTITULE_LONG"​fr",​ "Test du format scrutariData"​);​ +
-$baseMetadataExport->​setIntitule(SED_INTITULE_LONG,​ "​en",​ "​ScrutariData Format Test"​);​ +
-$baseMetadataExport->​addLangUI("​fr"​);​ +
-$baseMetadataExport->​addLangUI("​en"​);+
  
-/* Insertion d'un corpus avec de nom « fiches » +// Appel de comedie.php 
-$corpusMetadataExport est une instance de SED_CorpusMetadataExport +require("comedie.php"); 
-*/ +</​code>​
-$corpusMetadataExport = $scrutariDataExport->​newCorpus("fiches");+
  
-/* Définition des métadonnées du corpus +Si on avait voulu que l'​extraction soit enregistrée dans un fichier, on aurait cette définition pour //SCRUTARIDATA_PATH//​ :
-*/ +
-$corpusMetadataExport->​setCorpusType("​EXP"​);​ +
-$corpusMetadataExport->​setIntitule(SED_INTITULE_CORPUS,​ "​fr","​Fiches d'​expérience"​);​ +
-$corpusMetadataExport->​setIntitule(SED_INTITULE_FICHE,​ "​fr",​ "Fiche d'​expérience n° ");+
  
-/* Définition de deux champs complémentaires +<code php
-*/ +define('​SCRUTARIDATA_PATH'​'/​path/​to/​directory/​comedie.scrutari-data.xml'​); 
-$numero = $corpusMetadataExport->addComplement();​ +</code>
-$corpusMetadataExport->​setComplementIntitule($numero,"​fr","​Auteurs"​);​ +
-$corpusMetadataExport->​setComplementIntitule($numero,"​en","​Authors"​); +
-$numero = $corpusMetadataExport->addComplement();​ +
-$corpusMetadataExport->​setComplementIntitule($numero,"​fr","​Organismes"​);​+
  
-/* Premier exemple d'une fiche +=== Fichier comedie.php ===
-$ficheExport est une instance de SED_FicheExport +
-*/ +
-$ficheExport ​$scrutariDataExport->​newFiche("​1"​);​ +
-$ficheExport->​setTitre("​Première fiche"​);​ +
-$ficheExport->​setDate("​2006-03"​);​ +
-$ficheExport->​setFicheType("​DOC"​);​ +
-$ficheExport->​setFicheIcon("​http://​monsite.net/​icon2-16x16pixels.png"​);​ +
-$ficheExport->​addComplement(2,"​Collectif"​);​+
  
-/*Second exemple ​de fiche+Ce fichier (http://​dataexport.scrutari.net/​impl/​php/​comedie.txt) comprend plusieurs parties. 
 + 
 +Le fichier commence par l'​appel à scrutaridataexport.php 
 + 
 +<code php> 
 +//​Chargement ​de la bibliothèque ScrutariDataExport,​ supposée être dans le même répertoire que ce script 
 +require_once("​scrutaridataexport.php"​);​ 
 +</​code>​ 
 + 
 +Vient ensuite la déclaration d'une classe utilitaire : 
 + 
 +<code php> 
 +/** 
 +* Recensement des posts Wordpress retenus pour l'​extraction,​ avec indication du nom du corpus correspondant
 */ */
-$ficheExport = $scrutariDataExport->​newFiche("​2"​);​ +class PostCensus {
-$ficheExport->​setTitre("​Seconde fiche"​);​ +
-$ficheExport->​setSoustitre("​le sous titre"​);​ +
-$ficheExport->​setDate("​2006-03"​);​ +
-$ficheExport->​setLang("​fr"​);​ +
-$ficheExport->​setHref("​http://​monsite.net/​ma-fiche-1.html"​);​ +
-$ficheExport->​addComplement(2,"​L'​ASSO"​);​ +
-$ficheExport->​addComplement(1,"​Martin Dupont"​);​+
  
-/* Exemple d'​indexation : celle-ci peut de se faire à n'​importe quel moment +    private $map; 
-même s'il ne s'agit du mot-clé ou de la fiche en cours ou que le thésaurus ou le corpus + 
-n'ont pas encore été définis.+    function __construct() { 
 +        $this->map = array(); 
 +    } 
 +     
 +    function put($id, $corpus) { 
 +        $this->​map["​id_"​.$id] = $corpus; 
 +    } 
 +     
 +    function get($id) { 
 +        return $this->​map["​id_"​.$id]; 
 +    } 
 + 
 +
 +</​code>​ 
 + 
 +Puis la définit des fonctions. 
 + 
 +<code php> 
 +/** 
 +* Ajoute les posts appartenant à la catégorie indiquée par $termTaxonomyId,​ 
 +* ces posts étant destiné à être inclus dans le corpus de nom $corpusName
 */ */
-$scrutariDataExport->​addIndexation("fiches", "​1",​ "motscles", "A01",1);+function addPosts($pdo, ​$scrutariDataExport, $termTaxonomyId,​ $postCensus,​ $corpusName) { 
 +    $statement = $pdo->query('​SELECT object_id FROM `wp_term_relationships` WHERE `term_taxonomy_id` = '​.$termTaxonomyId);​ 
 +    $array = array(); 
 +    while ($row = $statement->​fetch(PDO::​FETCH_NUM)) { 
 +        $array[] = $row[0]; 
 +    } 
 +    foreach($array as $postId) { 
 +        $postStatement =  $pdo->​query('​SELECT * FROM `wp_posts` WHERE `ID` = '​.$postId." ​AND post_status='​publish'​"); 
 +        $postRow = $postStatement->​fetch(PDO::​FETCH_ASSOC);​ 
 +        if ($postRow) { 
 +            $postCensus->​put($postId$corpusName);​ 
 +              $titre = $postRow['​post_title'​];​ 
 +            $soustitre = ""; 
 +            $date = "";​ 
 +            $auteurs = "";​ 
 +            $publication_annee = "";​ 
 +            $publication_auteur = "";​ 
 +            $publication_editeur = "";​ 
 +            $metaStatement =  $pdo->​query('​SELECT * FROM `wp_postmeta` WHERE `post_id` = '​.$postId);​ //​Interrogation de postmeta pour récupérer les données associées au post 
 +            $dateDone = false; 
 +            while($metaRow = $metaStatement->​fetch(PDO::​FETCH_ASSOC)) { 
 +                $metaKey = $metaRow['​meta_key'​];​ 
 +                $value = $metaRow['​meta_value'​];​ 
 +                 if ($metaKey == '​sous-titre'​) { 
 +                    $soustitre = $value; 
 +                } else if ($metaKey == '​annee_debut'​) { 
 +                    if ((!$dateDone) && (strlen($value) > 0)) { 
 +                        $date = $value; 
 +                    } 
 +                } else if ($metaKey == '​annee_creation'​) { 
 +                    if (strlen($value) > 0) { 
 +                        $date = $value; 
 +                        $dateDone = true; 
 +                    } 
 +                } else if ($metaKey == '​auteurs_plus'​) { 
 +                    $auteurs = $value; 
 +                } else if ($metaKey == '​publication_annee_publication'​) { 
 +                    $publication_annee = $value; 
 +                } else if ($metaKey == '​publication_auteur'​) { 
 +                    $publication_auteur = $value; 
 +                } else if ($metaKey == '​publication_editeur'​) { 
 +                    $publication_editeur = $value; 
 +                } 
 +            } 
 +            if ($corpusName == '​lecture'​) { //​Traitement particulier au corpus des notes de lecture 
 +                $titre = "Note de lecture : "​.$titre;​ //le titre étant celui de l'​ouvrage,​ Note de lecture est ajouté avant 
 +                if (strlen($soustitre) > 0) { 
 +                    if (substr($titre,​ strlen($titre) -1,1) != ".") { 
 +                        $titre .= "​.";​ 
 +                    } 
 +                    $titre .= " "​.$soustitre;​ //le sous-titre étant celui de l'​ouvrageil est placé à la suite du titre 
 +                    $soustitre = ""​
 +                } 
 +                $soustitre = appendInfo($soustitre$publication_auteur);​ 
 +                $soustitre = appendInfo($soustitre,​ $publication_editeur);​ 
 +                $soustitre = appendInfo($soustitre,​ $publication_annee);​ 
 +            } 
 +            $ficheExport = $scrutariDataExport->​newFiche($postId);​ 
 +            $ficheExport->​setTitre($titre);​ 
 +            $ficheExport->​setSoustitre($soustitre);​ 
 +            $ficheExport->​setHref("http://​www.comedie.org/?​p=".$postId);​ 
 +            $ficheExport->​setLang('​fr'​);​ 
 +            if (strlen($date) > 0) { 
 +                $ficheExport->​setDate($date);​ 
 +            } 
 +            if (strlen($auteurs) > 0) { 
 +                parseAuteurs($auteurs$pdo, $ficheExport); 
 +            } 
 +        } 
 +    } 
 +}
  
-/* Insertion d'un thésaurus de nom « motscles » +/** 
-$thesaurusMetadataExport est une instance ​de SED_ThesaurusMetadataExport+* Ajoute ​$value à la fin de $text en rajoutant une virgule si nécessaire
 */ */
-$thesaurusMetadataExport ​= $scrutariDataExport->​newThesaurus("motscles");+function appendInfo($text,​ $value) { 
 +    ​$value trim($value); 
 +    $value = str_replace(" ​;", ",",​ $value); 
 +    if (substr($value,​ strlen($value) -1,1) == "​."​) { 
 +        $value = substr($value,​ 0, strlen($value) -1); 
 +    } 
 +    if (strlen($value) == 0) { 
 +        return $text; 
 +    } 
 +    if (strlen($text) > 0) { 
 +        $text .= ", "; 
 +    } 
 +    $text .= $value; 
 +    return $text; 
 +}
  
-/* Définition ​des métadonnées ​du thésaurus+/*
 +* Récupère le nom des auteurs d'un post. Sur le site comedie.org,​ les véritables auteurs d'un post sont indiqués 
 +* par meta_key=auteurs_plus dans la table wp_postmeta et sous la forme a:​1:​{i:​0;​s:​2:"​67";​}. 67 est ici 
 +* l'​identifiant ​du post correspondant à l'​auteur (le nom complet de l'​auteur est le titre du post)
 */ */
-$thesaurusMetadataExport->​setIntitule(SED_INTITULE_THESAURUS,"fr","​Mots-clés"); +function parseAuteurs($auteurs, $pdo, $ficheExport) { 
-$thesaurusMetadataExport->setIntitule(SED_INTITULE_THESAURUS,​"en","​Keywords");+    $idx1 = strpos($auteurs, "\""); 
 +    if ($idx1 < 1) { 
 +        return; 
 +    } 
 +    $idx2 = strpos($auteurs, "\"", $idx1 + 1); 
 +    if ($idx2 < 1) { 
 +        return; 
 +    } 
 +    $auteurId = substr($auteurs,​ $idx1 + 1, $idx2 - ($idx1 + 1)); 
 +    if ($auteurId == 572) { //​l'​auteur générique Comédie est ignoré 
 +        return; 
 +    } 
 +    $authorStatement = $pdo->query('​SELECT post_title FROM `wp_posts` WHERE `ID` = '​.$auteurId);​ 
 +    $auteur = $authorStatement->​fetchColumn();​ 
 +    if ($auteur) { 
 +        $ficheExport->​addAttributeValue("sct", "authors", $auteur); 
 +    } 
 +}
  
-/* Exemple d'​insertion d'un mot-clé au sein du thésaurus ​en cours+/*
 +* Ajoute les termes de la taxonomie $taxonomy sous la forme de mots-clés du thésaurus ​de nom $thesaurusName,​ 
 +* la fonction récupère également les posts liés au terme et crée une indexation si le post a bien été recensé 
 +* préalablement dans $postCensus
 */ */
-$motcleExport = $scrutariDataExport->​newMotcle("​1"​);​ +function addTerms($pdo, $scrutariDataExport, $taxonomy, $postCensus,​ $thesaurusName) { 
-$motcleExport->​setLibelle("​fr","​Eau");+    $statement = $pdo->query("SELECT wp_term_taxonomy.term_taxonomy_id,​ wp_terms.name ​ FROM wp_terms,​wp_term_taxonomy WHERE wp_term_taxonomy.term_id = wp_terms.term_id AND wp_term_taxonomy.taxonomy = '"​.$taxonomy."'"​);​ 
 +    $array = array(); 
 +    while ($row = $statement->​fetch(PDO::​FETCH_NUM)) { 
 +        $id = $row[0]; 
 +        $name = $row[1]; 
 +        if ((strlen($name) > 0) && (strpos($name,​ "MOT"​) ​!== 0)) { 
 +            $array[] = $id
 +            ​$motcleExport = $scrutariDataExport->​newMotcle($id);​ 
 +            ​$motcleExport->​setLibelle("​fr", ​$name); 
 +        } 
 +    } 
 +    foreach($array as $termId) { 
 +        $postStatement = $pdo->​query("SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id=".$termId); 
 +        while ($postId = $postStatement->​fetchColumn(0)) { 
 +            $corpusName = $postCensus->​get($postId);​ 
 +            if (strlen($corpusName) > 0) { 
 +                $scrutariDataExport->​addIndexation($corpusName,​ $postId, $thesaurusName,​ $termId,​1);​ 
 +            } 
 +        } 
 +    } 
 +
 +</​code>​
  
-/* Autre exemple d'insertion d'indexation n'importe où*/ +C'est alors que commmence l'initialisation avec l'utilisation des constantes définies dans comedie.scrutari-data.php pour l'​accès aux données :
-$scrutariDataExport->​addIndexation("​fiches",​ "​fiche2",​ "​motscles",​ "​A01",​4);​+
  
-/* L'​indexation précédente n'a pas changé ​l'état de l'​export,​ on travaille +<code php> 
-toujours sur le premier mot-clé */ +//Test si l'extraction est écrite dans un fichier ou directement vers la sortie 
-$motcleExport->setLibelle("​en"​,"Water");+$file = false; 
 +if (strlen(SCRUTARIDATA_PATH) ​0) { 
 +    $file = fopen(SCRUTARIDATA_PATH, "w"); 
 +}
  
-/* Fin de l'​export +//Accès à la base de données 
-*/ +$pdo = new PDO('​mysql:​host='​.DB_HOST.';​dbname='​.DB_NAME.';​charset='​.DB_CHARSET,​ DB_USER, DB_PASSWORD);
-$scrutariDataExport->​endExport();+
  
-/* Fermeture du fichier *+// Instance de PostCensus recensant les posts inclus dans l'​extraction 
-fclose($file);+$postCensus = new  PostCensus();​ 
 + 
 +// Instance de SDE_XmlWriter recensant les posts inclus dans l'​extraction 
 +$xmlWriter = new SDE_XmlWriter($file, true, true); 
 +$scrutariDataExport = new SDE_ScrutariDataExport($xmlWriter);
 </​code>​ </​code>​
 +
 +Vient ensuite l'​extraction proprement dite avec la définition des méta-données,​ des corpus et thésaurus et les appels aux fonctions pour la récupération des données et la fin de l'​extraction.
 +
 +<code php>
 +//​Démarrage de l'​export avec la définition des méta-données
 +$baseMetadataExport = $scrutariDataExport->​startExport();​
 +$baseMetadataExport->​setAuthority("​comedie.org"​);​
 +$baseMetadataExport->​setBaseName("​site"​);​
 +$baseMetadataExport->​setBaseIcon("​http://​scrutari.coredem.info/​comedie.png"​);​
 +$baseMetadataExport->​setIntitule(SDE_INTITULE_SHORT,​ "​fr",​ "​Comédie"​);​
 +$baseMetadataExport->​setIntitule(SDE_INTITULE_LONG,​ "​fr",​ "​Comédie - Concertation,​ participation et médiation appliquées à l’environnement et au territoire"​);​
 +$baseMetadataExport->​addLangUI("​fr"​);​
 +
 +//Création du corpus experience correspondant aux fiches de http://​www.comedie.org/​ressources/​fiches-experiences/​
 +$corpusMetadataExport = $scrutariDataExport->​newCorpus("​experience"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_CORPUS,​ "​fr","​Expériences"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_FICHE,​ "​fr",​ "​Expérience n°");
 +
 +//Ajout des posts des expériences (12 est l'​identifiant du terme correspondant à la catégorie des expériences)
 +addPosts($pdo,​ $scrutariDataExport,​ 12, $postCensus,​ "​experience"​);​
 +
 +//Création du corpus monographie correspondant aux fiches de http://​www.comedie.org/​ressources/​monographies/​
 +$corpusMetadataExport = $scrutariDataExport->​newCorpus("​monographie"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_CORPUS,​ "​fr","​Monographies"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_FICHE,​ "​fr",​ "​Monographie n°");
 +
 +//Ajout des posts des monographies
 +addPosts($pdo,​ $scrutariDataExport,​ 15, $postCensus,​ "​monographie"​);​
 +
 +//Création du corpus video correspondant aux fiches de http://​www.comedie.org/​ressources/​videos/​
 +$corpusMetadataExport = $scrutariDataExport->​newCorpus("​video"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_CORPUS,​ "​fr","​Vidéos"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_FICHE,​ "​fr",​ "​Vidéo n°");
 +
 +//Ajout des posts des vidéos
 +addPosts($pdo,​ $scrutariDataExport,​ 18, $postCensus,​ "​video"​);​
 +
 +//Création du corpus lecture correspondant aux fiches de http://​www.comedie.org/​ressources/​notes-de-lecture/​
 +$corpusMetadataExport = $scrutariDataExport->​newCorpus("​lecture"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_CORPUS,​ "​fr","​Notes de lecture"​);​
 +$corpusMetadataExport->​setIntitule(SDE_INTITULE_FICHE,​ "​fr",​ "Note de lecture n°");
 +
 +//Ajout des posts des notes de lecture
 +addPosts($pdo,​ $scrutariDataExport,​ 14, $postCensus,​ "​lecture"​);​
 +
 +//Création du thésaurus motcle
 +$thesaurusMetadataExport = $scrutariDataExport->​newThesaurus("​motcle"​);​
 +$thesaurusMetadataExport->​setIntitule(SDE_INTITULE_THESAURUS,"​fr","​Mots-clés"​);​
 +
 +//Ajout des termes, les mots-clés sont distingués des autres termes par la taxonomie mots-clefs
 +addTerms($pdo,​ $scrutariDataExport,​ "​mots-clefs",​ $postCensus,​ "​motcle"​);​
 +
 +//Fin de l'​export
 +$scrutariDataExport->​endExport();​
 +</​code>​
 +
 +Ce script peut facilement être adapté à un autre site sous Wordpress. Les grandes différences d'un site à l'​autre sont la façon avec laquelle les posts que l'on veut extraire sont distingués des autres. Ici, la sélection se fait grâce à des termes (table wp_term et wp_term_taxonomy) spécifique. ​
 +
 +
 +
  
scrutaridata/exportapi/php.1265914318.txt.gz · Dernière modification: 2010/02/11 19:51 par vincent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0