Fix private properties in API

parent 48c04159
v2.5
======
* BUG: private properties in API was not working properly
v2.4 v2.4
====== ======
......
...@@ -9,7 +9,7 @@ framework: ...@@ -9,7 +9,7 @@ framework:
web_profiler: web_profiler:
toolbar: true toolbar: true
intercept_redirects: true intercept_redirects: false
swiftmailer: swiftmailer:
delivery_address: sebastian.castro@protonmail.com delivery_address: sebastian.castro@protonmail.com
......
...@@ -24,14 +24,19 @@ class ConfigurationAPIAdmin extends ConfigurationAbstractAdmin ...@@ -24,14 +24,19 @@ class ConfigurationAPIAdmin extends ConfigurationAbstractAdmin
$dm = $this->getConfigurationPool()->getContainer()->get('doctrine_mongodb'); $dm = $this->getConfigurationPool()->getContainer()->get('doctrine_mongodb');
$apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties(); $apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties();
$apiPropertiesChanged = [];
foreach ($apiProperties as $key => $value) {
$apiPropertiesChanged[$value] = $value;
}
$formMapper $formMapper
->with("Configuration", ["description" => "<div class='iframe-container'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/aa05a654-a5d6-472a-bb12-108e0f6ce18e' frameborder='0' allowfullscreen></iframe></div>"]) ->with("Configuration", ["description" => "<div class='iframe-container'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/aa05a654-a5d6-472a-bb12-108e0f6ce18e' frameborder='0' allowfullscreen></iframe></div>"])
->add('api.protectPublicApiWithToken', 'checkbox', array('label' => "Protéger l'api publique pour récupérer les élément avec des jetons utilisateurs (i.e. besoin de créer un compte pour utiliser l'api publique)", 'required' => false)) ->add('api.protectPublicApiWithToken', 'checkbox', array('label' => "Protéger l'api publique pour récupérer les élément avec des jetons utilisateurs (i.e. besoin de créer un compte pour utiliser l'api publique)", 'required' => false))
->add('api.internalApiAuthorizedDomains', 'text', array('label' => "Liste des domaines externe qui utiliseront l'API interne. Mettez * si vous voulez que n'importe quel domaine puisse y avoir accès. Cette option est nécessaire si vous voulez afficher vos données avec GoGoCartoJs mais sur un autre serveur.", 'required' => false)) ->add('api.internalApiAuthorizedDomains', 'text', array('label' => "Liste des domaines externe qui utiliseront l'API interne. Mettez * si vous voulez que n'importe quel domaine puisse y avoir accès. Cette option est nécessaire si vous voulez afficher vos données avec GoGoCartoJs mais sur un autre serveur.", 'required' => false))
->add('api.publicApiPrivateProperties', 'choice', array("choices" => $apiProperties, 'label' => "Liste des champs que vous ne voulez pas partager dans l'api publique", 'required' => false, 'multiple' => true)) ->add('api.publicApiPrivateProperties', 'choice', array("choices" => $apiPropertiesChanged, 'label' => "Liste des champs que vous ne voulez pas partager dans l'api publique", 'required' => false, 'multiple' => true))
->end() ->end()
->with("Liste des apis disponibles") ->with("Liste des apis disponibles")
->add('apilist', 'text', array('mapped' => false, 'label' => false, 'required' => false, 'attr' => ['class' => 'gogo-api-list'])) ->add('apilist', 'text', array('mapped' => false, 'label' => false, 'required' => false, 'attr' => ['class' => 'gogo-api-list']))
->end() ->end()
; ;
} }
......
...@@ -56,6 +56,7 @@ class ElementJsonGenerator ...@@ -56,6 +56,7 @@ class ElementJsonGenerator
if (!$element->getGeo()) { return; } if (!$element->getGeo()) { return; }
$config = $this->getConfig($dm); $config = $this->getConfig($dm);
$options = $this->getOptions($dm); $options = $this->getOptions($dm);
$privateProps = $config->getApi()->getPublicApiPrivateProperties();
// -------------------- FULL JSON ---------------- // -------------------- FULL JSON ----------------
...@@ -106,8 +107,10 @@ class ElementJsonGenerator ...@@ -106,8 +107,10 @@ class ElementJsonGenerator
// SPECIFIC DATA // SPECIFIC DATA
$baseJson .= $this->encodeArrayObjectToJson("stamps", $element->getStamps()); $baseJson .= $this->encodeArrayObjectToJson("stamps", $element->getStamps());
$baseJson .= $this->encodeArrayObjectToJson("images", $element->getImages()); $imagesJson = $this->encodeArrayObjectToJson("images", $element->getImages());
$baseJson .= $this->encodeArrayObjectToJson("files", $element->getFiles()); $filesJson = $this->encodeArrayObjectToJson("files", $element->getFiles());
if (!in_array('images', $privateProps)) $baseJson .= $imagesJson;
if (!in_array('files', $privateProps)) $baseJson .= $filesJson;
$baseJson = rtrim($baseJson, ','); $baseJson = rtrim($baseJson, ',');
// MODIFIED ELEMENT (for pending modification) // MODIFIED ELEMENT (for pending modification)
...@@ -128,6 +131,8 @@ class ElementJsonGenerator ...@@ -128,6 +131,8 @@ class ElementJsonGenerator
foreach ($element->getPrivateData() as $key => $value) { foreach ($element->getPrivateData() as $key => $value) {
$privateJson .= '"'. $key .'": ' . json_encode($value) . ','; $privateJson .= '"'. $key .'": ' . json_encode($value) . ',';
} }
if (in_array('images', $privateProps)) $privateJson .= $imagesJson;
if (in_array('files', $privateProps)) $privateJson .= $filesJson;
$privateJson = rtrim($privateJson, ','); $privateJson = rtrim($privateJson, ',');
$privateJson .= '}'; $privateJson .= '}';
$element->setPrivateJson($privateJson); $element->setPrivateJson($privateJson);
......
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