Commit 26f776a5 authored by Blaise de Carné 's avatar Blaise de Carné

Merge branch 'release/1.1.3'

parents 2f975a18 e5a0f577
Pipeline #64370 passed with stage
in 20 seconds
......@@ -8,7 +8,8 @@ et ce projet adhère à [Semantic Versioning](http://semver.org/spec/v2.0.0.html
## [1.1.3] - 2018-07-26
### Correction
### Modifications
- Mise à jour de la documentation
- Mise à jour du schema DATAtourisme
## [1.1.2] - 2018-07-26
......
......@@ -132,6 +132,15 @@
<td></td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_comment</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Description de la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>hasCreated</strong></td>
<td valign="top">[<a href="#/api/reference?id=pointofinterest">PointOfInterest</a>]</td>
<td>
......@@ -164,6 +173,24 @@ Le POI que cet Agent a publié.
<td></td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>foaf_homepage</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td>
L&#039;adresse du site internet d&#039;un Agent.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>foaf_title</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td>
La civilité d&#039;une personne.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>schema_gender</strong></td>
<td valign="top">[<a href="#/api/reference?id=schema_gendertype">schema_GenderType</a>]</td>
<td>
......@@ -267,7 +294,7 @@ Le nom officiel de l&#039;organisation, ex: Le nom de la société enregistré e
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td>
Un logo représentant l&#039;Organisation.
Un logo représentant l&#039;organisation.
</td>
</tr>
......@@ -629,26 +656,26 @@ Une description permet d&#039;associer la description textuelle d&#039;un POI a
<td></td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>isDedicatedTo</strong></td>
<td valign="top">[<a href="#/api/reference?id=audience">Audience</a>]</td>
<td colspan="2" valign="top"><strong>dc_description</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
L&#039;audience à laquelle cet item est dédiée.
Description longue de la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>dc_description</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td colspan="2" valign="top"><strong>isDedicatedTo</strong></td>
<td valign="top">[<a href="#/api/reference?id=audience">Audience</a>]</td>
<td>
Description longue de la ressource.
L&#039;audience à laquelle cet item est dédiée.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>shortDescription</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Utiliser cette propriété pour attacher une description courte qui pourra être utilisée sur des supports de publication où l&#039;espace est un critè re important.
......@@ -1428,6 +1455,24 @@ Tout objet touristique qui mérite d&#039;être décrit et valorisé. Un POI (P
Le type de la ressource
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_comment</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Description de la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_label</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Etiquette courte décrivant la ressource.
</td>
</tr>
<tr>
......@@ -1627,15 +1672,6 @@ Le propriétaire de ce POI, ou a minima celui qui en propose les services.
Identifiant de la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_comment</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td>
Description de la ressource.
</td>
</tr>
<tr>
......@@ -1662,15 +1698,6 @@ Les langues proposées par l&#039;équipement d&#039;information. Il est recomma
<td></td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_label</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Etiquette courte décrivant la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>reducedMobilityAccess</strong></td>
<td valign="top">[<a href="#/api/reference?id=boolean">Boolean</a>]</td>
<td>
......@@ -1689,29 +1716,29 @@ Nombre de personnes pouvant être accueillies dans le POI
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>olo_slot</strong></td>
<td valign="top">[<a href="#/api/reference?id=olo_slot">olo_Slot</a>]</td>
<td colspan="2" valign="top"><strong>isConsumableFor</strong></td>
<td valign="top">[<a href="#/api/reference?id=pointofinterest">PointOfInterest</a>]</td>
<td>
a pour élément de liste.
Permet de référencer un produit qui est un consommable d&#039;un POI. Le consommable ne peut avoir d&#039;existence propre (si le POI cible est supprimé , le consommable doit l&#039;être également).
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>takesPlaceAt</strong></td>
<td valign="top">[<a href="#/api/reference?id=period">Period</a>]</td>
<td colspan="2" valign="top"><strong>olo_slot</strong></td>
<td valign="top">[<a href="#/api/reference?id=olo_slot">olo_Slot</a>]</td>
<td>
La période sur laquelle se déroule cet événement.
a pour élément de liste.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>isConsumableFor</strong></td>
<td valign="top">[<a href="#/api/reference?id=pointofinterest">PointOfInterest</a>]</td>
<td colspan="2" valign="top"><strong>takesPlaceAt</strong></td>
<td valign="top">[<a href="#/api/reference?id=period">Period</a>]</td>
<td>
Permet de référencer un produit qui est un consommable d&#039;un POI. Le consommable ne peut avoir d&#039;existence propre (si le POI cible est supprimé , le consommable doit l&#039;être également).
La période sur laquelle se déroule cet événement.
</td>
</tr>
......@@ -2298,6 +2325,24 @@ Un itinéraire touristique est composé de parcours. Un parcours est un court
<td></td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>dc_description</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Description longue de la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_label</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Etiquette courte décrivant la ressource.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>isLocatedAt</strong></td>
<td valign="top">[<a href="#/api/reference?id=place">Place</a>]</td>
<td>
......@@ -2340,15 +2385,6 @@ L&#039;audience cible de cette randonnée.
Une représentation est un Media qui est lié à un POI. ex : une photo d&#039;un POI, un document PDF promotionnel, ...
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>dc_description</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td>
Description longue de la ressource.
</td>
</tr>
<tr>
......@@ -2385,15 +2421,6 @@ L&#039;altitude du point le plus haut sur le parcours. Exprimée en mè tres.
Le dénivelé du parcours (différence entre l&#039;altitude minimale et l&#039;altitude maximale). Exprimée en mètres.
</td>
</tr>
<tr>
<td colspan="2" valign="top"><strong>rdfs_label</strong></td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Etiquette courte décrivant la ressource.
</td>
</tr>
<tr>
......@@ -2432,7 +2459,7 @@ La durée estimée du parcours. Exprimée en minutes.
</tr>
<tr>
<td colspan="2" valign="top"><strong>ebucore_comments</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
La description de la ressource.
......@@ -2441,7 +2468,7 @@ La description de la ressource.
</tr>
<tr>
<td colspan="2" valign="top"><strong>ebucore_abstract</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
fournit un description courte.
......@@ -2455,7 +2482,7 @@ fournit un description courte.
</tr>
<tr>
<td colspan="2" valign="top"><strong>ebucore_title</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=langstring">LangString</a>]</td>
<td>
Titre de la ressource.
......@@ -2954,7 +2981,7 @@ L&#039;heure de fermeture du lieu ou du service le (s) jour (s) donné (s) de l
</tr>
<tr>
<td colspan="2" valign="top"><strong>schema_validThrough</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=datetime">DateTime</a>]</td>
<td>
La date de fin de la période d&#039;ouverture (aaaa-mm-jjThh:mm:ss).
......@@ -2963,7 +2990,7 @@ La date de fin de la période d&#039;ouverture (aaaa-mm-jjThh:mm:ss).
</tr>
<tr>
<td colspan="2" valign="top"><strong>schema_validFrom</strong></td>
<td valign="top">[<a href="#/api/reference?id=string">String</a>]</td>
<td valign="top">[<a href="#/api/reference?id=datetime">DateTime</a>]</td>
<td>
La date de début de la période d&#039;ouverture (aaaa-mm-jjThh:mm:ss).
......
......@@ -3,7 +3,7 @@
* Created by PhpStorm.
* User: blaise
* Date: 25/05/18
* Time: 18:32
* Time: 18:32.
*/
namespace Datatourisme\Api\Processor;
......@@ -13,8 +13,7 @@ use Youshido\GraphQL\Field\FieldInterface;
use Youshido\GraphQL\Parser\Ast\Interfaces\FieldInterface as AstFieldInterface;
/**
* Class Processor
* @package Datatourisme\Api\Processor
* Class Processor.
*/
class Processor extends \Youshido\GraphQL\Execution\Processor
{
......@@ -22,10 +21,10 @@ class Processor extends \Youshido\GraphQL\Execution\Processor
{
// hack to handle legacy langstring behavior
// will be deprecated in 2.0
if($field->getType() instanceof LangStringType && !count($ast->getFields())) {
if ($field->getType() instanceof LangStringType && !count($ast->getFields())) {
return $parentValue;
}
return parent::resolveObject($field, $ast, $parentValue, $fromObject); // TODO: Change the autogenerated stub
}
}
\ No newline at end of file
}
......@@ -101,6 +101,7 @@ class ProcessorBuilder
/**
* @return SchemaLoader
*
* @throws \Exception
*/
public function getLoader()
......
......@@ -62,7 +62,7 @@ class QueryHydrator
private function consume(array $fields, $res, $args)
{
$tabResult = [];
if($res) {
if ($res) {
foreach ($fields as $field) {
$fieldName = $field->getName();
......@@ -77,23 +77,23 @@ class QueryHydrator
$tabResult[$fieldName] = [];
$listRes = $res->all($property);
foreach ($listRes as $resourceValue) {
if(isset($args['lang']) && $resourceValue instanceof \EasyRdf_Literal && $resourceValue->getLang() && $resourceValue->getLang() != $args['lang']) {
if (isset($args['lang']) && $resourceValue instanceof \EasyRdf_Literal && $resourceValue->getLang() && $resourceValue->getLang() != $args['lang']) {
continue;
}
$tabResult[$fieldName][] = $this->consume($field->getFields(), $resourceValue, $args);
}
} elseif($res instanceof \EasyRdf_Literal) {
switch($fieldName) {
case "value": $tabResult[$fieldName] = $res->getValue(); break;
case "lang": $tabResult[$fieldName] = $res->getLang(); break;
} elseif ($res instanceof \EasyRdf_Literal) {
switch ($fieldName) {
case 'value': $tabResult[$fieldName] = $res->getValue(); break;
case 'lang': $tabResult[$fieldName] = $res->getLang(); break;
}
} elseif($res instanceof \EasyRdf_Resource && $res->hasProperty($property)) {
} elseif ($res instanceof \EasyRdf_Resource && $res->hasProperty($property)) {
$tabResult[$fieldName] = [];
/** @var \EasyRdf_Resource $res */
$propertyValues = $res->all($property);
foreach ($propertyValues as $value) {
if ($value instanceof \EasyRdf_Literal) {
if(isset($args['lang']) && $value->getLang() && $value->getLang() != $args['lang']) {
if (isset($args['lang']) && $value->getLang() && $value->getLang() != $args['lang']) {
continue;
}
$tabResult[$fieldName][] = $value->getValue();
......
......@@ -79,7 +79,7 @@ abstract class AbstractSchema extends \Youshido\GraphQL\Schema\AbstractSchema
'from' => new IntType(),
'sort' => new ListType(new $sortTypeClass()),
'filters' => new ListType(new $filterTypeClass()),
'lang' => new StringType()
'lang' => new StringType(),
],
'resolve' => function ($values, $args, ResolveInfo $info) use ($resolver, $entrypoint) {
return $resolver->resolve($entrypoint, $args, $info);
......
......@@ -33,7 +33,7 @@ class SchemaCompiler
'http://www.w3.org/2001/XMLSchema#float' => FloatType::class,
'http://www.w3.org/2001/XMLSchema#date' => DateTimeType::class,
'http://www.w3.org/2001/XMLSchema#dateTime' => DateTimeType::class,
'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' => LangStringType::class
'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' => LangStringType::class,
];
/**
......@@ -73,6 +73,7 @@ class SchemaCompiler
* @param string $namespace
*
* @return string
*
* @throws \Twig_Error_Loader
* @throws \Twig_Error_Runtime
* @throws \Twig_Error_Syntax
......@@ -97,6 +98,7 @@ class SchemaCompiler
* @param array $params
*
* @return string
*
* @throws \Twig_Error_Loader
* @throws \Twig_Error_Runtime
* @throws \Twig_Error_Syntax
......
......@@ -35,7 +35,7 @@ class SchemaLoader
public function __construct(SchemaCompiler $compiler)
{
$this->setCompiler($compiler);
$this->setCache(sys_get_temp_dir().'/datatourisme' . md5(__DIR__));
$this->setCache(sys_get_temp_dir().'/datatourisme'.md5(__DIR__));
}
/**
......
......@@ -3,7 +3,7 @@
* Created by PhpStorm.
* User: blaise
* Date: 25/05/18
* Time: 11:53
* Time: 11:53.
*/
namespace Datatourisme\Api\Schema\Type\Object;
......@@ -27,19 +27,20 @@ class LangStringType extends AbstractObjectType
],
'lang' => [
'type' => new StringType(),
'description' => 'Literal language'
]
'description' => 'Literal language',
],
]);
}
/**
* For legacy
* For legacy.
*
* @param $value
*
* @return bool
*/
public function isValidValue($value)
{
return is_array($value) || is_string($value);
}
}
\ No newline at end of file
}
......@@ -35,6 +35,7 @@ abstract class AbstractGraphQLTest extends TestCase
/**
* @param $payload
*
* @return string
*/
protected function queryGraqhQL($payload)
......
......@@ -11,9 +11,6 @@ namespace Tests\Datatourisme\Api\Processor;
class LangStringTest extends AbstractGraphQLTest
{
/**
*
*/
public function testLangString()
{
$res = $this->queryGraqhQL('
......@@ -34,9 +31,6 @@ class LangStringTest extends AbstractGraphQLTest
$this->assertEquals('{"data":{"poi":{"total":1,"results":[{"rdfs_label":[{"value":"Cransac Mediathec","lang":"en"},{"value":"M\u00e9diath\u00e8que de Cransac","lang":"fr"}]}]}}}', $res);
}
/**
*
*/
public function testLangStringArg()
{
$res = $this->queryGraqhQL('
......
......@@ -9,11 +9,12 @@ use PHPUnit\Framework\TestCase;
class SchemaLoaderTest extends TestCase
{
function testCompile() {
public function testCompile()
{
$compiler = new SchemaCompiler();
$loader = new SchemaLoader($compiler);
$loader->setCache(false);
$schema = $loader->load(__DIR__ . "/../../schema/datatourisme.yml");
$schema = $loader->load(__DIR__.'/../../schema/datatourisme.yml');
$this->assertTrue($schema instanceof AbstractSchema);
}
}
\ No newline at end of file
}
......@@ -7,16 +7,16 @@ header('Access-Control-Allow-Headers: Content-Type');
$payload = null;
switch($_SERVER['REQUEST_METHOD']) {
case "POST":
if (isset($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] === 'application/json') {
switch ($_SERVER['REQUEST_METHOD']) {
case 'POST':
if (isset($_SERVER['CONTENT_TYPE']) && 'application/json' === $_SERVER['CONTENT_TYPE']) {
$rawBody = file_get_contents('php://input');
$requestData = json_decode($rawBody ?: '', true);
} else {
$requestData = $_POST;
}
break;
case "GET":
case 'GET':
$requestData = $_GET;
break;
default:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment