Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| scrutaridata:exportapi:php [2016/09/07 16:13] – 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' | + | L' |
| Toutes les classes et constantes de ce fichier commence par le suffixe **SDE_** afin de minimiser le risque de conflits de noms avec d' | Toutes les classes et constantes de ce fichier commence par le suffixe **SDE_** afin de minimiser le risque de conflits de noms avec d' | ||
| - | Le dépôt subversion permet d' | + | Ces scripts sont accessibles avec Git via https:// |
| + | |||
| + | Un autre accès avec Subversion : | ||
| svn co http:// | svn co http:// | ||
| Ligne 52: | Ligne 54: | ||
| define(' | define(' | ||
| </ | </ | ||
| + | |||
| + | === Fichier comedie.php === | ||
| + | |||
| + | Ce fichier (http:// | ||
| + | |||
| + | Le fichier commence par l' | ||
| + | |||
| + | <code php> | ||
| + | // | ||
| + | require_once(" | ||
| + | </ | ||
| + | |||
| + | Vient ensuite la déclaration d'une classe utilitaire : | ||
| + | |||
| + | <code php> | ||
| + | /** | ||
| + | * Recensement des posts Wordpress retenus pour l' | ||
| + | */ | ||
| + | class PostCensus { | ||
| + | |||
| + | private $map; | ||
| + | |||
| + | function __construct() { | ||
| + | $this-> | ||
| + | } | ||
| + | | ||
| + | function put($id, $corpus) { | ||
| + | $this-> | ||
| + | } | ||
| + | | ||
| + | function get($id) { | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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 | ||
| + | */ | ||
| + | function addPosts($pdo, | ||
| + | $statement = $pdo-> | ||
| + | $array = array(); | ||
| + | while ($row = $statement-> | ||
| + | $array[] = $row[0]; | ||
| + | } | ||
| + | foreach($array as $postId) { | ||
| + | $postStatement = $pdo-> | ||
| + | $postRow = $postStatement-> | ||
| + | if ($postRow) { | ||
| + | $postCensus-> | ||
| + | $titre = $postRow[' | ||
| + | $soustitre = ""; | ||
| + | $date = ""; | ||
| + | $auteurs = ""; | ||
| + | $publication_annee = ""; | ||
| + | $publication_auteur = ""; | ||
| + | $publication_editeur = ""; | ||
| + | $metaStatement = $pdo-> | ||
| + | $dateDone = false; | ||
| + | while($metaRow = $metaStatement-> | ||
| + | $metaKey = $metaRow[' | ||
| + | $value = $metaRow[' | ||
| + | if ($metaKey == ' | ||
| + | $soustitre = $value; | ||
| + | } else if ($metaKey == ' | ||
| + | if ((!$dateDone) && (strlen($value) > 0)) { | ||
| + | $date = $value; | ||
| + | } | ||
| + | } else if ($metaKey == ' | ||
| + | if (strlen($value) > 0) { | ||
| + | $date = $value; | ||
| + | $dateDone = true; | ||
| + | } | ||
| + | } else if ($metaKey == ' | ||
| + | $auteurs = $value; | ||
| + | } else if ($metaKey == ' | ||
| + | $publication_annee = $value; | ||
| + | } else if ($metaKey == ' | ||
| + | $publication_auteur = $value; | ||
| + | } else if ($metaKey == ' | ||
| + | $publication_editeur = $value; | ||
| + | } | ||
| + | } | ||
| + | if ($corpusName == ' | ||
| + | $titre = "Note de lecture : " | ||
| + | if (strlen($soustitre) > 0) { | ||
| + | if (substr($titre, | ||
| + | $titre .= " | ||
| + | } | ||
| + | $titre .= " " | ||
| + | $soustitre = ""; | ||
| + | } | ||
| + | $soustitre = appendInfo($soustitre, | ||
| + | $soustitre = appendInfo($soustitre, | ||
| + | $soustitre = appendInfo($soustitre, | ||
| + | } | ||
| + | $ficheExport = $scrutariDataExport-> | ||
| + | $ficheExport-> | ||
| + | $ficheExport-> | ||
| + | $ficheExport-> | ||
| + | $ficheExport-> | ||
| + | if (strlen($date) > 0) { | ||
| + | $ficheExport-> | ||
| + | } | ||
| + | if (strlen($auteurs) > 0) { | ||
| + | parseAuteurs($auteurs, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Ajoute $value à la fin de $text en rajoutant une virgule si nécessaire | ||
| + | */ | ||
| + | function appendInfo($text, | ||
| + | $value = trim($value); | ||
| + | $value = str_replace(" | ||
| + | if (substr($value, | ||
| + | $value = substr($value, | ||
| + | } | ||
| + | if (strlen($value) == 0) { | ||
| + | return $text; | ||
| + | } | ||
| + | if (strlen($text) > 0) { | ||
| + | $text .= ", "; | ||
| + | } | ||
| + | $text .= $value; | ||
| + | return $text; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Récupère le nom des auteurs d'un post. Sur le site comedie.org, | ||
| + | * par meta_key=auteurs_plus dans la table wp_postmeta et sous la forme a: | ||
| + | * l' | ||
| + | */ | ||
| + | function parseAuteurs($auteurs, | ||
| + | $idx1 = strpos($auteurs, | ||
| + | if ($idx1 < 1) { | ||
| + | return; | ||
| + | } | ||
| + | $idx2 = strpos($auteurs, | ||
| + | if ($idx2 < 1) { | ||
| + | return; | ||
| + | } | ||
| + | $auteurId = substr($auteurs, | ||
| + | if ($auteurId == 572) { // | ||
| + | return; | ||
| + | } | ||
| + | $authorStatement = $pdo-> | ||
| + | $auteur = $authorStatement-> | ||
| + | if ($auteur) { | ||
| + | $ficheExport-> | ||
| + | } | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * 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 | ||
| + | */ | ||
| + | function addTerms($pdo, | ||
| + | $statement = $pdo-> | ||
| + | $array = array(); | ||
| + | while ($row = $statement-> | ||
| + | $id = $row[0]; | ||
| + | $name = $row[1]; | ||
| + | if ((strlen($name) > 0) && (strpos($name, | ||
| + | $array[] = $id; | ||
| + | $motcleExport = $scrutariDataExport-> | ||
| + | $motcleExport-> | ||
| + | } | ||
| + | } | ||
| + | foreach($array as $termId) { | ||
| + | $postStatement = $pdo-> | ||
| + | while ($postId = $postStatement-> | ||
| + | $corpusName = $postCensus-> | ||
| + | if (strlen($corpusName) > 0) { | ||
| + | $scrutariDataExport-> | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | C'est alors que commmence l' | ||
| + | |||
| + | <code php> | ||
| + | //Test si l' | ||
| + | $file = false; | ||
| + | if (strlen(SCRUTARIDATA_PATH) > 0) { | ||
| + | $file = fopen(SCRUTARIDATA_PATH, | ||
| + | } | ||
| + | |||
| + | //Accès à la base de données | ||
| + | $pdo = new PDO(' | ||
| + | |||
| + | // Instance de PostCensus recensant les posts inclus dans l' | ||
| + | $postCensus = new PostCensus(); | ||
| + | |||
| + | // Instance de SDE_XmlWriter recensant les posts inclus dans l' | ||
| + | $xmlWriter = new SDE_XmlWriter($file, | ||
| + | $scrutariDataExport = new SDE_ScrutariDataExport($xmlWriter); | ||
| + | </ | ||
| + | |||
| + | Vient ensuite l' | ||
| + | |||
| + | <code php> | ||
| + | // | ||
| + | $baseMetadataExport = $scrutariDataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | $baseMetadataExport-> | ||
| + | |||
| + | //Création du corpus experience correspondant aux fiches de http:// | ||
| + | $corpusMetadataExport = $scrutariDataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | |||
| + | //Ajout des posts des expériences (12 est l' | ||
| + | addPosts($pdo, | ||
| + | |||
| + | //Création du corpus monographie correspondant aux fiches de http:// | ||
| + | $corpusMetadataExport = $scrutariDataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | |||
| + | //Ajout des posts des monographies | ||
| + | addPosts($pdo, | ||
| + | |||
| + | //Création du corpus video correspondant aux fiches de http:// | ||
| + | $corpusMetadataExport = $scrutariDataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | |||
| + | //Ajout des posts des vidéos | ||
| + | addPosts($pdo, | ||
| + | |||
| + | //Création du corpus lecture correspondant aux fiches de http:// | ||
| + | $corpusMetadataExport = $scrutariDataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | $corpusMetadataExport-> | ||
| + | |||
| + | //Ajout des posts des notes de lecture | ||
| + | addPosts($pdo, | ||
| + | |||
| + | //Création du thésaurus motcle | ||
| + | $thesaurusMetadataExport = $scrutariDataExport-> | ||
| + | $thesaurusMetadataExport-> | ||
| + | |||
| + | //Ajout des termes, les mots-clés sont distingués des autres termes par la taxonomie mots-clefs | ||
| + | addTerms($pdo, | ||
| + | |||
| + | //Fin de l' | ||
| + | $scrutariDataExport-> | ||
| + | </ | ||
| + | |||
| + | Ce script peut facilement être adapté à un autre site sous Wordpress. Les grandes différences d'un site à l' | ||
| + | |||
