Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
scrutaridata:impl:mediawiki [2009/06/02 19:24] vincent créée |
scrutaridata:impl:mediawiki [2016/07/06 18:38] (Version actuelle) vincent [class-MediawikiScrutariDataWriter.php] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
L'exportation des données de MediaWiki vers le format ScrutariData a été fait pour le [[http://fr.coredem.info/wiki|Wikicoredem]]. Dans l'état actuel, il est assez simpliste, la base générée ne comprend qu'un seul corpus. Cette exportation se fait à l'aide d'une classe php !!MediawikiScrutariDataWriter!! qui utilise une classe utilitaire !!UtilXmlWriter!!. Les points à savoir pour comprendre le code sont les suivants : | L'exportation des données de MediaWiki vers le format ScrutariData a été fait pour le [[http://fr.coredem.info/wiki|Wikicoredem]]. Dans l'état actuel, il est assez simpliste, la base générée ne comprend qu'un seul corpus. Cette exportation se fait à l'aide d'une classe php !!MediawikiScrutariDataWriter!! qui utilise une classe utilitaire !!UtilXmlWriter!!. Les points à savoir pour comprendre le code sont les suivants : | ||
- | *La question de la connexion à la base de données n'est pas traitée, on considère qu'elle est établie préalablement (de là le simple appel //$resultat = mysql_query($requete);//) | + | *La question de la connexion à la base de données n'est pas traitée, on considère qu'elle est établie préalablement (de là le simple appel //$resultat = mysql_query($requete);//) |
- | *Les premières méthodes de //MediawikiScrutariDataWriter// qui commencent par **set** sont des méthodes de définition des différents paramètres utilisés dans la méthode principale //writeScrutariData()// | + | *Les premières méthodes de //MediawikiScrutariDataWriter// qui commencent par **set** sont des méthodes de définition des différents paramètres utilisés dans la méthode principale //writeScrutariData()// |
- | *L'argument //$file// de la méthode //writeScrutariData()// correspond à un pointeur vers un fichier, s'il est omis, le XML sera écrit en sortie (fonction **echo**) | + | *L'argument //$file// de la méthode //writeScrutariData()// correspond à un pointeur vers un fichier, s'il est omis, le XML sera écrit en sortie (fonction **echo**) |
- | *Seules les pages de l'espace de nom principal sont extraites. Pour affiner la requête, il faut modifier la ligne //$requete = "SELECT page_id,page_title FROM page WHERE page_namespace=0 ORDER BY page_id";//. | + | *Seules les pages de l'espace de nom principal sont extraites et les pages de redirection sont ignorées. Pour affiner la requête, il faut modifier la ligne //$requete = "SELECT page_id,page_title FROM page WHERE page_namespace=0 AND page_is_redirect != 1 ORDER BY page_id";//. |
+ | |||
+ | Le résultat est accessible ici : http://scrutari.coredem.info/infos/php/coredem.scrutari-data.php?lang=fr. | ||
===== class-MediawikiScrutariDataWriter.php ===== | ===== class-MediawikiScrutariDataWriter.php ===== | ||
Ligne 15: | Ligne 17: | ||
class MediawikiScrutariDataWriter { | class MediawikiScrutariDataWriter { | ||
- | private $uuid; | + | private $authority; |
private $baseName; | private $baseName; | ||
private $baseIcon; | private $baseIcon; | ||
Ligne 26: | Ligne 28: | ||
private $hrefParent; | private $hrefParent; | ||
- | public function setUuid($uuid) { | + | public function setAuthority($authority) { |
- | $this->uuid = $uuid; | + | $this->authority = $authority; |
} | } | ||
Ligne 67: | Ligne 69: | ||
public function writeScrutariData($file) { | public function writeScrutariData($file) { | ||
- | $xmlWriter = new UtilXmlWriter($file); | + | $xmlWriter = new UtilXmlWriter($file); |
- | $xmlWriter->appendDeclaration(); | + | $xmlWriter->appendDeclaration(); |
- | $xmlWriter->openTag('base'); | + | $xmlWriter->openTag("base"); |
- | $xmlWriter->openTag('base-metadata'); | + | $xmlWriter->openTag("base-metadata"); |
- | $xmlWriter->addElement('authority-uuid',$this->uuid); | + | $xmlWriter->addElement("authority",$this->authority); |
- | $xmlWriter->addElement('base-name',$this->baseName); | + | $xmlWriter->addElement("base-name",$this->baseName); |
- | $xmlWriter->addElement('base-icon',$this->baseIcon); | + | $xmlWriter->addElement("base-icon",$this->baseIcon); |
- | $xmlWriter->openTag('intitule-short'); | + | $xmlWriter->openTag("intitule-short"); |
- | $xmlWriter->addLibElement($this->lang,$this->baseIntituleShort); | + | $xmlWriter->addLibElement($this->lang,$this->baseIntituleShort); |
- | $xmlWriter->closeTag('intitule-short'); | + | $xmlWriter->closeTag("intitule-short"); |
- | $xmlWriter->openTag('intitule-long'); | + | $xmlWriter->openTag("intitule-long"); |
- | $xmlWriter->addLibElement($this->lang,$this->baseIntituleLong); | + | $xmlWriter->addLibElement($this->lang,$this->baseIntituleLong); |
- | $xmlWriter->closeTag('intitule-long'); | + | $xmlWriter->closeTag("intitule-long"); |
- | $xmlWriter->openTag('langs-ui'); | + | $xmlWriter->openTag("langs-ui"); |
- | $xmlWriter->addElement('lang',$this->lang); | + | $xmlWriter->addElement("lang",$this->lang); |
- | $xmlWriter->closeTag('langs-ui'); | + | $xmlWriter->closeTag("langs-ui"); |
- | $xmlWriter->closeTag('base-metadata'); | + | $xmlWriter->closeTag("base-metadata"); |
- | + | ||
- | $xmlWriter->write('<corpus corpus-name="'); | + | $xmlWriter->write("<corpus corpus-name=\""); |
- | $xmlWriter->write($this->corpusName); | + | $xmlWriter->write($this->corpusName); |
- | $xmlWriter->write('">'); | + | $xmlWriter->write("\">"); |
- | $xmlWriter->openTag('corpus-metadata'); | + | $xmlWriter->openTag("corpus-metadata"); |
- | $xmlWriter->openTag('intitule-corpus'); | + | $xmlWriter->openTag("intitule-corpus"); |
- | $xmlWriter->addLibElement($this->lang,$this->corpusIntituleCorpus); | + | $xmlWriter->addLibElement($this->lang,$this->corpusIntituleCorpus); |
- | $xmlWriter->closeTag('intitule-corpus'); | + | $xmlWriter->closeTag("intitule-corpus"); |
- | $xmlWriter->openTag('intitule-fiche'); | + | $xmlWriter->openTag("intitule-fiche"); |
- | $xmlWriter->addLibElement($this->lang,$this->corpusIntituleFiche); | + | $xmlWriter->addLibElement($this->lang,$this->corpusIntituleFiche); |
- | $xmlWriter->closeTag('intitule-fiche'); | + | $xmlWriter->closeTag("intitule-fiche"); |
- | $xmlWriter->addElement('type','CNC'); | + | $xmlWriter->addElement("type","CNC"); |
- | $xmlWriter->addElement('href-parent',$this->hrefParent); | + | $xmlWriter->addElement("href-parent",$this->hrefParent); |
- | $xmlWriter->closeTag('corpus-metadata'); | + | $xmlWriter->closeTag("corpus-metadata"); |
- | $requete = "SELECT page_id,page_title FROM page WHERE page_namespace=0 ORDER BY page_id"; | + | $requete = "SELECT page_id,page_title FROM page WHERE page_namespace=0 AND page_is_redirect != 1 ORDER BY page_id"; |
- | + | ||
- | $resultat = mysql_query($requete); | + | $resultat = mysql_query($requete); |
- | + | ||
- | while($row = mysql_fetch_row($resultat)) { | + | while($row = mysql_fetch_row($resultat)) { |
- | $page_id = $row[0]; | + | $page_id = $row[0]; |
- | $page_title = $row[1]; | + | $page_title = $row[1]; |
- | $xmlWriter->write('<fiche fiche-id="'); | + | $xmlWriter->write("<fiche fiche-id=\""); |
- | $xmlWriter->write($page_id); | + | $xmlWriter->write($page_id); |
- | $xmlWriter->write('">'); | + | $xmlWriter->write("\">"); |
- | $titre = str_replace("_"," ",$page_title); | + | $titre = str_replace("_"," ",$page_title); |
- | $xmlWriter->addElement("titre",$titre); | + | $xmlWriter->addElement("titre",$titre); |
- | $xmlWriter->addElement("lang",$this->lang); | + | $xmlWriter->addElement("lang",$this->lang); |
- | $href = rawurlencode($page_title); | + | $href = rawurlencode($page_title); |
- | $xmlWriter->addElement(href,$href); | + | $xmlWriter->addElement(href,$href); |
- | $xmlWriter->closeTag('fiche'); | + | $xmlWriter->closeTag("fiche"); |
- | } | + | } |
- | + | ||
- | $xmlWriter->closeTag('corpus'); | + | $xmlWriter->closeTag("corpus"); |
- | $xmlWriter->closeTag('base'); | + | $xmlWriter->closeTag("base"); |
} | } | ||
Ligne 142: | Ligne 144: | ||
function openTag($tagName) { | function openTag($tagName) { | ||
- | $this->write('<'); | + | $this->write("<"); |
$this->write($tagName); | $this->write($tagName); | ||
- | $this->write('>'); | + | $this->write(">"); |
} | } | ||
function closeTag($tagName) { | function closeTag($tagName) { | ||
- | $this->write('</'); | + | $this->write("</"); |
$this->write($tagName); | $this->write($tagName); | ||
- | $this->write('>'); | + | $this->write(">"); |
$this->write("\n"); | $this->write("\n"); | ||
} | } | ||
Ligne 161: | Ligne 163: | ||
function addLibElement($lang,$value) { | function addLibElement($lang,$value) { | ||
- | $this->write('<lib xml:lang="'); | + | $this->write("<lib xml:lang=\""); |
$this->write($lang); | $this->write($lang); | ||
- | $this->write('">'); | + | $this->write("\">"); |
$this->write($value); | $this->write($value); | ||
- | $this->write('</lib>'); | + | $this->write("</lib>"); |
} | } | ||