Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • picotg/differentihal
1 result
Show changes
Commits on Source (3)
<?php <?php
/** /**
* Utilitaires pour comparé 2 requêtes sur Hal * Utilitaires pour comparer 2 requête sur Hal
* *
* @author Gaël PICOT <gael.picot@univ-grenoble-alpes.fr> * @author Gaël PICOT <gael.picot@univ-grenoble-alpes.fr>
* *
...@@ -33,7 +33,7 @@ if(!isset($_SESSION['personalKey'])) { ...@@ -33,7 +33,7 @@ if(!isset($_SESSION['personalKey'])) {
} }
$personalKey = $_SESSION['personalKey']; $personalKey = $_SESSION['personalKey'];
// recupération paramétre de requête // récupération paramètre de requête
$request1 = isset($_GET['request1'])?$_GET['request1']:''; $request1 = isset($_GET['request1'])?$_GET['request1']:'';
$request2 = isset($_GET['request2'])?$_GET['request2']:''; $request2 = isset($_GET['request2'])?$_GET['request2']:'';
$fields = isset($_GET['fields'])?$_GET['fields']:''; $fields = isset($_GET['fields'])?$_GET['fields']:'';
...@@ -69,14 +69,14 @@ $requestName2 = isset($_GET['requestName2'])?$_GET['requestName2']:''; ...@@ -69,14 +69,14 @@ $requestName2 = isset($_GET['requestName2'])?$_GET['requestName2']:'';
<p>Ce script permet de faire 2 requêtes sur Hal en parallèle et de créer quatre fichiers CSV contenant le résultat de ces requêtes ainsi que les différences.</p> <p>Ce script permet de faire 2 requêtes sur Hal en parallèle et de créer quatre fichiers CSV contenant le résultat de ces requêtes ainsi que les différences.</p>
<p>Les champs requête 1 et requête 2 doivent recevoir des requêtes de recherche Hal. (Voir la documentation : <a href="https://api.archives-ouvertes.fr/docs/search">https://api.archives-ouvertes.fr/docs/search</a>). Les paramètres fl et start ne sont pas utilisables. Pour exécuter la requête jusqu'au bout, ce script utilise les curseurs (<a href="https://api.archives-ouvertes.fr/docs/search/?#cursors">https://api.archives-ouvertes.fr/docs/search/?#cursors</a>). Le paramètre fl est commun aux deux requêtes et correspond à la valeur des Champs à affiché.</p> <p>Les champs requête 1 et requête 2 doivent recevoir des requêtes de recherche Hal. (Voir la documentation : <a href="https://api.archives-ouvertes.fr/docs/search">https://api.archives-ouvertes.fr/docs/search</a>). Les paramètres fl et start ne sont pas utilisables. Pour exécuter la requête jusqu'au bout, ce script utilise les curseurs (<a href="https://api.archives-ouvertes.fr/docs/search/?#cursors">https://api.archives-ouvertes.fr/docs/search/?#cursors</a>). Le paramètre fl est commun aux deux requêtes et correspond à la valeur des Champs à afficher.</p>
<p>L'exécution du script produit quatre fichiers, nommé d'après les champs "Nom requête 1" et "Nom requête 2" du formulaire : <p>L'exécution du script produit quatre fichiers, nommés d'après les champs "Nom requête 1" et "Nom requête 2" du formulaire :
<ul> <ul>
<li>le fichier "Nom requête 1".csv : contenant les résultats trouver par la requête 1</li> <li>le fichier "Nom requête 1".csv : contenant les résultats trouvés par la requête 1</li>
<li>le fichier "Nom requête 2".csv : contenant les résultats trouver par la requête 2</li> <li>le fichier "Nom requête 2".csv : contenant les résultats trouvés par la requête 2</li>
<li>le fichier "Nom requête 1"-"Nom requête 2".csv : contenant les résultats trouver par la requête 1 mais pas par la requête 2</li> <li>le fichier "Nom requête 1"-"Nom requête 2".csv : contenant les résultats trouvés par la requête 1 mais pas par la requête 2</li>
<li>le fichier "Nom requête 2"-"Nom requête 1".csv : contenant les résultats trouver par la requête 2 mais pas par la requête 1</li> <li>le fichier "Nom requête 2"-"Nom requête 1".csv : contenant les résultats trouvés par la requête 2 mais pas par la requête 1</li>
</ul> </ul>
</p> </p>
...@@ -90,19 +90,19 @@ $requestName2 = isset($_GET['requestName2'])?$_GET['requestName2']:''; ...@@ -90,19 +90,19 @@ $requestName2 = isset($_GET['requestName2'])?$_GET['requestName2']:'';
<input class="input" id="request2" name="request2" type="text" style="width: 100%;" value="<?= $request2 ?>"><br /> <input class="input" id="request2" name="request2" type="text" style="width: 100%;" value="<?= $request2 ?>"><br />
<label class="label" for="requestName2">Nom requête 2 : </label> <label class="label" for="requestName2">Nom requête 2 : </label>
<input class="input" id="requestName2" name="requestName2" type="text" style="width: 100%;" value="<?= $requestName2 ?>"><br /> <input class="input" id="requestName2" name="requestName2" type="text" style="width: 100%;" value="<?= $requestName2 ?>"><br />
<label class="label" for="fields">Champs à affiché (séparé par une virgule) : </label> <label class="label" for="fields">Champs à afficher (séparés par une virgule) : </label>
<input class="input" id="fields" name="fields" type="text" value="<?= $fields ?>"><br /> <input class="input" id="fields" name="fields" type="text" value="<?= $fields ?>"><br />
<input class="button is-primary" type="submit" > <input class="button is-primary" type="submit" >
</form><br /><br /> </form><br /><br />
<?php <?php
/** /**
* génére les fichier temporaire * génère les fichiers temporaires
* *
* @param HalRequestIterator $a itéraateur sur la requête numéro 1 * @param HalRequestIterator $a itérateur sur la requête numéro 1
* @param HalRequestIterator $b itéraateur sur la requête numéro 2 * @param HalRequestIterator $b itérateur sur la requête numéro 2
* @param array $fields champs à renvoyer dans le fichier * @param array $fields champs à renvoyer dans le fichier
* @param string $key clés unique pour créé des fichier différent pour chaques utilisateurs * @param string $key clé unique pour créer des fichiers différents pour chaque utilisateur
* @return array tableau des noms de fichier * @return array tableau des noms de fichier
*/ */
function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields, string $key) { function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields, string $key) {
...@@ -113,7 +113,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields, ...@@ -113,7 +113,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields,
'a-b' => $a->getName().'-'.$b->getName(), 'a-b' => $a->getName().'-'.$b->getName(),
'b-a' => $b->getName().'-'.$a->getName(), 'b-a' => $b->getName().'-'.$a->getName(),
]; ];
// accé aux fichiers générés // accès aux fichiers générés
$files = [ $files = [
'a' => fopen('tmp/'.$a->getName().$key.'.csv', 'w'), 'a' => fopen('tmp/'.$a->getName().$key.'.csv', 'w'),
'b' => fopen('tmp/'.$b->getName().$key.'.csv', 'w'), 'b' => fopen('tmp/'.$b->getName().$key.'.csv', 'w'),
...@@ -123,7 +123,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields, ...@@ -123,7 +123,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields,
// ajout en-tête BOM UTF-8 à chaque fichier CSV pour amélioration compatibilité avec excel // ajout en-tête BOM UTF-8 à chaque fichier CSV pour amélioration compatibilité avec excel
foreach($files as $key => $file) fwrite($file, "\xEF\xBB\xBF"); foreach($files as $key => $file) fwrite($file, "\xEF\xBB\xBF");
// itération sur chaque résultat document renvoyer par la reuquête a // itération sur chaque résultat document renvoyé par la requête a
foreach($a as $doc_a) { foreach($a as $doc_a) {
// itération jusqu'à trouver le document courant dans la requête b ou atteindre la fin d'une requête // itération jusqu'à trouver le document courant dans la requête b ou atteindre la fin d'une requête
while(true) { while(true) {
...@@ -174,7 +174,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields, ...@@ -174,7 +174,7 @@ function paralelle(HalRequestIterator $a, HalRequestIterator $b, array $fields,
} }
/* /*
* verification de la présence des champs requie dans les parametre de la requête get * vérification de la présence des champs requie dans les paramètres de la requête get
*/ */
if(isset($_GET['request1'])&&isset($_GET['request2'])&&isset($_GET['fields'])&&isset($_GET['requestName1'])&&isset($_GET['requestName2'])) { if(isset($_GET['request1'])&&isset($_GET['request2'])&&isset($_GET['fields'])&&isset($_GET['requestName1'])&&isset($_GET['requestName2'])) {
if(strpos($fields, 'docid')===false) $fields = 'docid,'.$fields; if(strpos($fields, 'docid')===false) $fields = 'docid,'.$fields;
...@@ -185,7 +185,7 @@ if(isset($_GET['request1'])&&isset($_GET['request2'])&&isset($_GET['fields'])&&i ...@@ -185,7 +185,7 @@ if(isset($_GET['request1'])&&isset($_GET['request2'])&&isset($_GET['fields'])&&i
$fields = explode(',', $fields); $fields = explode(',', $fields);
$filenames = paralelle($request1, $request2, $fields, $personalKey); $filenames = paralelle($request1, $request2, $fields, $personalKey);
?> ?>
<h2>Résultat</h2> <h2>Résultats</h2>
<?php foreach($filenames as $filename):?> <?php foreach($filenames as $filename):?>
<a href="csv.php?filename=<?= $filename ?>">téléchager <?= $filename?></a> <br/> <a href="csv.php?filename=<?= $filename ?>">téléchager <?= $filename?></a> <br/>
<?php endforeach; ?> <?php endforeach; ?>
......