From 8fd3acdd7b1095b4b866de84a5ab4205a53b2292 Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Wed, 7 Nov 2018 12:26:43 +0100
Subject: [PATCH] Squashed 'src/vitis/' changes from 01d199ce..771a5655
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

771a5655 Merge branch 'Sebastien-master-patch-58096' into 'master'
4398b26d Merge branch 'bug/4-formreader-champs-date-non-pris-en-compte-si-on-met-la-date-du-jour-en-insertion' into 'master'
d17933b9 Edit datetime picker event
b3b6ec06 Merge branch '1-js-sous-formulaire' into 'master'
41a15530 Load BO Javascript on subforms
e3923b17 Merge branch 'feature/impressions_144dpi' into 'master'
38bafafa Increase the WMS symbols size to match resolution
35163699 Merge branch 'hotfix/swagger_doc' into 'master'
275422b6 Make swagger work for dev installs
064924ec Mise à jour du fichier de version pour fonctionnait avec la version 11.0 de PostgreSQL
ee4da38b Add gitignore
f53e707d Merge branch 'master' of gitlab.veremes.net:Development/vitis_apps/sources/vitis
6c984bed Add client/vas dependencies
12a22d70 pull subtree
47cd4913 Squashed 'src/module_vm4ms/' changes from 4d95a3d..af1a2e3
7b55e678 Utilisation de dirname($_SERVER['SCRIPT_FILENAME']) au dlieu de __DIR__
24ea0f3d pull subtree
f4326e8a Squashed 'src/module_vm4ms/' changes from 4d95a3da..af1a2e36
c0b73f09 Squashed 'src/module_vm4ms/' changes from 373ef426..4d95a3da
906a7169 Modify client symlinks
1dccb17e Modify vas symlinks
07db5ec5 Update Readme
0bb9b2fa pull subtree
14758714 Squashed 'src/module_cadastreV2/' changes from e678ee10..8158b9a2
a9b2699c pull subtree
c499cef3 Squashed 'src/module_anc/' changes from b55c5e85..4321adc4
d82d485e pull subtree
1ad8c842 Squashed 'src/module_vm4ms/' changes from 4f506db7..373ef426
6702c1fb pull subtree
94998ed6 Squashed 'src/module_vmap/' changes from cf75b106..e7dabee0
3a2b6fe9 pull subtree
97c993d5 Squashed 'src/vitis/' changes from 01d199ce..7a1818a4
213795da Resolve require problems
c23b6587 Rights on write folders
4ac589ad Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
bc0e0830 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
b51e622f Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
3bd1ab17 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
53d54531 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
2d9fd6a5 Get rights to vas/server
0602efdb Compilation grunt
75c89c8b Try on push subtrees
246ebd0f Add pull.sh
2e026c10 Add pull.sh
37d37d03 Add grunt to the install
5b9cffc3 Update readme
7a1818a4 add subtree
6c1b3e3c Reset sources
a195a4d9 Init from SVN
4ad29c4b add subtree
1ac46cd9 Squashed 'src/closure/' content from commit 622066d
635a2f96 add subtree
7593c383 Squashed 'src/vitis/' content from commit 01d199c
b487cd6f Update from SVN
266e19a6 Initial commit
3f86c344 Ignore properties files
02a3be3e gitignore
578f9827 Ingore properties files
d1327b32 add subtree
59431f9c Squashed 'src/module_cadastre/' content from commit ee26cf16
950e5a10 Squashed 'src/module_cadastreV2/' content from commit e678ee10
c2e686cb add subtree
92d769cc Squashed 'src/module_anc/' content from commit b55c5e85
63a0562b add subtree
829e4cf3 Squashed 'src/module_vm4ms/' content from commit 4f506db7
3630a462 add subtree
8792eb7c Squashed 'src/module_vmap/' content from commit cf75b10
4fe41d6b add subtree
974b9dd8 add subtree
92032b6a Squashed 'src/closure/' content from commit 622066d
646709a4 Squashed 'src/vitis/' content from commit 01d199c
416c2c24 add subtree
06cc1a2d ignore properties files
192389a6 Get files from SVN
86c2affb Initial commit

git-subtree-dir: src/vitis
git-subtree-split: 771a5655bbf1b08d828c13eb909c3096e1a7e350
---
 .gitignore                                    |   6 +
 _install/client/fileToDelete.txt              |   4 +
 _install/client/folderToDelete.txt            |   8 +
 _install/client/listModuleApache.txt          |   5 +
 _install/vas/apache.conf                      |  70 +++
 _install/vas/listModuleApache.txt             |  16 +
 .../externs/formReader/formReaderDrtv.js      |  12 +-
 .../externs/formReader/formReaderSrvc.js      |  30 +-
 vas/doc/index.phtml                           |  12 +-
 vas/doc/swagger.php                           |   5 +-
 vas/rest/index.phtml                          |   4 +-
 vas/rest/ws/vitis/Properties.class.inc        |  26 +-
 vas/rest/ws/vitis/Versions.class.inc          | 404 +++++++++---------
 vas/util/printserver/client/map/map.js        |  34 +-
 14 files changed, 400 insertions(+), 236 deletions(-)
 create mode 100644 _install/client/fileToDelete.txt
 create mode 100644 _install/client/folderToDelete.txt
 create mode 100644 _install/client/listModuleApache.txt
 create mode 100644 _install/vas/apache.conf
 create mode 100644 _install/vas/listModuleApache.txt

diff --git a/.gitignore b/.gitignore
index e69de29b..fb23a1f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,6 @@
+vas/rest/class/*
+vas/rest/class/!*/
+vas/rest/class/!*.*
+vas/sql/*
+vas/sql/!*/
+vas/sql/!*.*
diff --git a/_install/client/fileToDelete.txt b/_install/client/fileToDelete.txt
new file mode 100644
index 00000000..ca3a9114
--- /dev/null
+++ b/_install/client/fileToDelete.txt
@@ -0,0 +1,4 @@
+javascript/externs/formreader/formreader.js
+javascript/externs/formreader/formreaderCtrl.js
+javascript/externs/formreader/formreaderDrtv.js
+javascript/externs/formreader/formreaderSrvc.js
\ No newline at end of file
diff --git a/_install/client/folderToDelete.txt b/_install/client/folderToDelete.txt
new file mode 100644
index 00000000..a0e7984d
--- /dev/null
+++ b/_install/client/folderToDelete.txt
@@ -0,0 +1,8 @@
+javascript/app
+javascript/require
+javascript/test
+javascript/externs/openLayers/ol
+javascript/externs/openLayers/ol.ext
+javascript/externs/studio/properties
+javascript/externs/studio/javascript
+modules/vitis/javascript
\ No newline at end of file
diff --git a/_install/client/listModuleApache.txt b/_install/client/listModuleApache.txt
new file mode 100644
index 00000000..2c0309e3
--- /dev/null
+++ b/_install/client/listModuleApache.txt
@@ -0,0 +1,5 @@
+alias
+deflate
+headers
+rewrite
+ssl
\ No newline at end of file
diff --git a/_install/vas/apache.conf b/_install/vas/apache.conf
new file mode 100644
index 00000000..2281b2e2
--- /dev/null
+++ b/_install/vas/apache.conf
@@ -0,0 +1,70 @@
+PassEnv TEMP
+Alias /rest[ENV] "[VASDIRECTORY]/rest"
+	<Directory "[VASDIRECTORY]/rest">
+		<FilesMatch ".+\.ph(p[345]?|t|tml)$">
+			SetHandler application/x-httpd-php_vitis[ENV]
+		</FilesMatch>
+		AllowOverride FileInfo
+		Options FollowSymLinks
+		Require all granted
+		<Files ~ "\.(map|log|inc|php)$">
+			Order allow,deny
+			Deny from all
+		</Files>
+	</Directory>
+
+Alias /doc[ENV] "[VASDIRECTORY]/doc"
+	<Directory "[VASDIRECTORY]/doc">
+		<FilesMatch ".+\.ph(p[345]?|t|tml)$">
+			SetHandler application/x-httpd-php_vitis[ENV]
+		</FilesMatch>
+		AllowOverride FileInfo
+		Options FollowSymLinks
+		Require all granted
+	</Directory>
+
+Alias /public[ENV] "[VASDIRECTORY]/public"
+	<Directory "[VASDIRECTORY]/public">
+		AllowOverride FileInfo
+		Options FollowSymLinks
+		Require all granted
+		<Files ~ "\.(map|inc|php)$">
+			Order allow,deny
+			Deny from all
+		</Files>
+		SetHandler application/x-download
+	</Directory>
+Alias /ws_data[ENV] "[VASDIRECTORY]/ws_data"
+	<Directory "[VASDIRECTORY]/ws_data">
+		AllowOverride All
+		Options FollowSymLinks
+		Require all granted
+		<Files ~ "\.(map|log|inc|php)$">
+			Order allow,deny
+			Deny from all
+		</Files>
+		SetHandler application/x-download
+	</Directory>
+Alias /proxy[ENV] "[VASDIRECTORY]/util/proxy"
+	<Directory "[VASDIRECTORY]/util/proxy">
+		<FilesMatch ".+\.ph(p[345]?|t|tml)$">
+			SetHandler application/x-httpd-php_vitis[ENV]
+		</FilesMatch>
+		AllowOverride FileInfo
+		Options FollowSymLinks
+		Require all granted
+		<Files ~ "\.(map|log|inc)$">
+			Order allow,deny
+			Deny from all
+		</Files>
+	</Directory>
+Alias /printserver[ENV] "[VASDIRECTORY]/util/printserver"
+	<Directory "[VASDIRECTORY]/util/printserver">
+		AllowOverride FileInfo
+		Options FollowSymLinks
+		Require all granted
+		<Files ~ "\.(map|log|inc|php)$">
+			Order allow,deny
+			Deny from all
+		</Files>
+	</Directory>
\ No newline at end of file
diff --git a/_install/vas/listModuleApache.txt b/_install/vas/listModuleApache.txt
new file mode 100644
index 00000000..c2626d94
--- /dev/null
+++ b/_install/vas/listModuleApache.txt
@@ -0,0 +1,16 @@
+actions
+alias
+cgi
+deflate
+headers
+ldap
+rewrite
+ssl
+proxy
+proxy_ajp
+proxy_connect
+proxy_fcgi
+proxy_ftp
+proxy_http
+proxy_scgi
+proxy_wstunnel
\ No newline at end of file
diff --git a/client/javascript/externs/formReader/formReaderDrtv.js b/client/javascript/externs/formReader/formReaderDrtv.js
index 283bbc43..48e7a37a 100644
--- a/client/javascript/externs/formReader/formReaderDrtv.js
+++ b/client/javascript/externs/formReader/formReaderDrtv.js
@@ -176,6 +176,8 @@ formReader.formReaderDirective = function ($q, formReaderService, propertiesSrvc
                                 }
                         });
                     });
+                } else {
+                    console.error('Error: form not valid');
                 }
             };
 
@@ -711,6 +713,9 @@ formReader.appFormFieldSpecificParamsDrtv = function ($timeout, $translate, prop
                     $(element)["datetimepicker"](oOptions);
 
                     // Si sélection d'une date : mise à jour du modèle (NE PAS SUPPRIMER!).
+                    $(element).on("dp.hide", function (e) {
+                        scope["oFormValues"][scope["sFormDefinitionName"]][element[0].name] = element[0].value;
+                    });
                     $(element).on("dp.change", function (e) {
                         scope["oFormValues"][scope["sFormDefinitionName"]][element[0].name] = element[0].value;
                     });
@@ -2151,8 +2156,8 @@ formReader.appSubformGridDrtv = function ($timeout, $translate, propertiesSrvc,
 
                                     // Récupère lélément en sélectionné
                                     formReaderService['getWebServiceData'](oFormWebService).then(function (aResult) {
-
                                         var oSubformDefinition = aResult[0]['bo_json_form'];
+                                        var sSubformJSDefinition = aResult[0]['bo_json_form_js'];
                                         var oSubformValues = {};
                                         var sModalId = 'formreader_' + scope['sFormUniqueName'] + '_grid_subform_modal';
 
@@ -2219,7 +2224,7 @@ formReader.appSubformGridDrtv = function ($timeout, $translate, propertiesSrvc,
                                             }
                                         });
 
-                                        formReaderService['showModalSubform'](sModalId, oSubformScope, oSubformDefinition, sSubformDefinitionName, oSubformValues);
+                                        formReaderService['showModalSubform'](sModalId, oSubformScope, oSubformDefinition, sSubformDefinitionName, oSubformValues, sSubformJSDefinition);
                                     });
                                 };
 
@@ -2247,6 +2252,7 @@ formReader.appSubformGridDrtv = function ($timeout, $translate, propertiesSrvc,
                         };
                         var sModalId = 'formreader_' + scope['sFormUniqueName'] + '_grid_subform_modal';
                         var oSubformDefinition = oBusinessObject['json_form'][0];
+                        var sSubformJSDefinition = oBusinessObject['json_form_js'];
                         var sSubformDefinitionName = 'insert';
 
                         // Grise le champ contenant la valeur du parent
@@ -2288,7 +2294,7 @@ formReader.appSubformGridDrtv = function ($timeout, $translate, propertiesSrvc,
                                 });
                             });
                         };
-                        formReaderService['showModalSubform'](sModalId, oSubformScope, oSubformDefinition, sSubformDefinitionName, oSubformValues);
+                        formReaderService['showModalSubform'](sModalId, oSubformScope, oSubformDefinition, sSubformDefinitionName, oSubformValues, sSubformJSDefinition);
                     };
 
                     /**
diff --git a/client/javascript/externs/formReader/formReaderSrvc.js b/client/javascript/externs/formReader/formReaderSrvc.js
index 6ca6ef29..613652f9 100644
--- a/client/javascript/externs/formReader/formReaderSrvc.js
+++ b/client/javascript/externs/formReader/formReaderSrvc.js
@@ -1230,15 +1230,15 @@ formReader.formReaderService = function ($translate, $rootScope, $q, $log, $time
          * @param {object} oSubformDefinition
          * @param {object} oSubformDefinitionName
          * @param {object} oSubformValues
+         * @param {string|null} sSubformJSDefinition
          */
-        "showModalSubform": function (sModalId, oSubformScope, oSubformDefinition, oSubformDefinitionName, oSubformValues) {
+        "showModalSubform": function (sModalId, oSubformScope, oSubformDefinition, oSubformDefinitionName, oSubformValues, sSubformJSDefinition) {
             $log.log("showModalSubform");
 
             var sToken = this['sToken'];
             var oProperties = this['oProperties'];
 
-            if (goog.isDefAndNotNull(oSubformScope['loadSubForm'])) {
-
+            var loadForm = function(){
                 oSubformScope['loadSubForm']({
                     'sFormDefinitionName': oSubformDefinitionName,
                     'oFormDefinition': oSubformDefinition,
@@ -1246,6 +1246,30 @@ formReader.formReaderService = function ($translate, $rootScope, $q, $log, $time
                     'oProperties': oProperties,
                     'sToken': sToken
                 });
+            }
+
+            if (goog.isDefAndNotNull(oSubformScope['loadSubForm'])) {
+
+                if (goog.isDefAndNotNull(sSubformJSDefinition)) {
+                    var sUrl = sSubformJSDefinition;
+                    oVmap.log("initHtmlForm : javascript assoc. to : " + sUrl);
+                    loadExternalJs([sUrl], {
+                        "callback": function () {
+                            loadForm();
+                            try {
+                                if (goog.isDef(constructor_form)) {
+                                    constructor_form(oSubformScope, sUrl);
+                                }
+                            } catch (e) {
+                                oVmap.log("constructor_form does not exist");
+                            }
+                        },
+                        "async": true,
+                        "scriptInBody": true
+                    });
+                } else {
+                    loadForm();
+                }
 
                 $('#' + sModalId).modal('show');
             }
diff --git a/vas/doc/index.phtml b/vas/doc/index.phtml
index 086cb768..d4fedf02 100755
--- a/vas/doc/index.phtml
+++ b/vas/doc/index.phtml
@@ -1,6 +1,9 @@
 <?php
 session_start();
-require_once '../rest/conf/properties.inc';
+
+$_SERVER['VAS_PATH'] = pathinfo(dirname($_SERVER['SCRIPT_FILENAME']))['dirname'];
+
+require_once $_SERVER['VAS_PATH'] . '/rest/conf/properties.inc';
 
 function returnOverview($sFolder, $parent) {
     $aModules = array();
@@ -17,10 +20,12 @@ function returnOverview($sFolder, $parent) {
             }
         }
     }
+
     return $aModules;
 }
 
-$aOverview = returnOverview(__DIR__ . "/../rest/ws", "");
+$aOverview = returnOverview($_SERVER['VAS_PATH'] . "/rest/ws", "");
+error_log('$aOverview: '. print_r($aOverview, true));
 ?>
 
 <!DOCTYPE html>
@@ -59,7 +64,7 @@ $aOverview = returnOverview(__DIR__ . "/../rest/ws", "");
                     sToken = json.PrivateToken.token;
                 }   else {
                     sToken = code[0].outerText.split('<token>')[1].split('</token>')[0];
-                }  
+                }
                 if (sToken != "") {
                 $("input[name='token']").each(function () {
                     $(this).attr("value", sToken);
@@ -154,4 +159,3 @@ foreach ($aOverview as $key => $value) {
         </div>
     </body>
 </html>
-
diff --git a/vas/doc/swagger.php b/vas/doc/swagger.php
index 3437171a..aca8acff 100755
--- a/vas/doc/swagger.php
+++ b/vas/doc/swagger.php
@@ -1,8 +1,9 @@
 <?php
+$_SERVER['VAS_PATH'] = pathinfo(dirname($_SERVER['SCRIPT_FILENAME']))['dirname'];
 header('Content-Type: application/json');
-require_once "../rest/conf/properties.inc";
+require_once $_SERVER['VAS_PATH'] . "/rest/conf/properties.inc";
 require("vendor/autoload.php");
-$swagger = \Swagger\scan('../rest/ws/'.$_REQUEST['service']);
+$swagger = \Swagger\scan($_SERVER['VAS_PATH'] . '/rest/ws/'.$_REQUEST['service']);
 $aServer = explode("://", $properties["web_server_name"]);
 $swagger = str_replace("[service_alias]", $properties["services_alias"], $swagger);
 $swagger = str_replace("[protocol]", $aServer[0], $swagger);
diff --git a/vas/rest/index.phtml b/vas/rest/index.phtml
index 86af3b21..d4b4cffa 100755
--- a/vas/rest/index.phtml
+++ b/vas/rest/index.phtml
@@ -1,5 +1,7 @@
 <?php
 
+$_SERVER['VAS_PATH'] = pathinfo(dirname($_SERVER['SCRIPT_FILENAME']))['dirname'];
+
 require_once("class/vitis_lib/VitisError.class.inc");
 require_once("class/vmlib/cryptUtil.inc");
 require_once("conf/properties.inc");
@@ -199,4 +201,4 @@ function customErrorHandler ($errno, $errstr, $errfile, $errline, $context){
 }
 
 include ("index.vhtml");
-?>
\ No newline at end of file
+?>
diff --git a/vas/rest/ws/vitis/Properties.class.inc b/vas/rest/ws/vitis/Properties.class.inc
index d363c986..c7f65b41 100755
--- a/vas/rest/ws/vitis/Properties.class.inc
+++ b/vas/rest/ws/vitis/Properties.class.inc
@@ -14,7 +14,7 @@ require_once(__DIR__ . '/../../class/vmlib/BdDataAccess.inc');
  * 	\brief This file contains the Properties php class
  *
  * This class defines the rest api for properties
- * 
+ *
  */
 class Properties extends Vitis {
     /**
@@ -53,7 +53,7 @@ class Properties extends Vitis {
     }
 
     /**
-     * @SWG\Get(path="/properties", 
+     * @SWG\Get(path="/properties",
      *   tags={"Properties"},
      *   summary="Get properties",
      *   description="Request to get properties",
@@ -75,7 +75,7 @@ class Properties extends Vitis {
      */
 
     /**
-     * 
+     *
      * @return properties
      */
     function GET() {
@@ -85,19 +85,19 @@ class Properties extends Vitis {
         } else {
             $this->aFields = $this->aProperties;
         }
-        require_once __DIR__ . "/../../conf/version.inc";
+        require_once dirname($_SERVER['SCRIPT_FILENAME']) . "/conf/version.inc";
 
         if (VM_STATUS != "STABLE") {
             $this->aFields['VM_STATUS'] = "UNSTABLE";
         } else {
             $this->aFields['VM_STATUS'] = "STABLE";
-            if ($pointeur = opendir(__DIR__ . "/../../conf/")) {
+            if ($pointeur = opendir(dirname($_SERVER['SCRIPT_FILENAME']) . "/conf/")) {
                 while (($fichier = readdir($pointeur)) !== false) {
 
                     if (($fichier != '.') && ($fichier != '..')) {
 
-                        if (is_dir(__DIR__ . "/../../conf/" . $fichier)) {
-                            $sTexte = file_get_contents(__DIR__ . "/../../conf/" . $fichier . "/version.inc");
+                        if (is_dir(dirname($_SERVER['SCRIPT_FILENAME']) . "/conf/" . $fichier)) {
+                            $sTexte = file_get_contents(dirname($_SERVER['SCRIPT_FILENAME']) . "/conf/" . $fichier . "/version.inc");
 
                             if (strpos($sTexte, "define (\"VM_STATUS\", \"STABLE\");") == false) {
                                 $this->aFields['VM_STATUS'] = "UNSTABLE";
@@ -216,7 +216,7 @@ class Properties extends Vitis {
      *         description="Poprerties Response",
      *         @SWG\Schema(ref="#/definitions/properties")
      *     ),
-     * 
+     *
      *  )
      */
 
@@ -299,7 +299,7 @@ class Properties extends Vitis {
             // Message de retour
             $aMessage = array('status' => REQUEST_SUCCESS);
 
-            // Ouverture de php	
+            // Ouverture de php
             $sPropertiesFile = PHP_START . PHP_EOL;
 
             // Texte à ajouter avant le tableau des properties
@@ -343,14 +343,14 @@ class Properties extends Vitis {
                 $sPropertiesFile .= PROPERTIES_FOOTER . PHP_EOL;
             }
 
-            // Fermeture de php	
+            // Fermeture de php
             $sPropertiesFile .= PHP_END;
 
             // Sauve le fichier (LOCK_EX = accés exclusif au fichier)
             if ($this->aValues['module_name'] == 'vitis')
-                $sPathProperties = __DIR__ . '/../../conf/properties.inc';
+                $sPathProperties = dirname($_SERVER['SCRIPT_FILENAME']) . '/conf/properties.inc';
             else
-                $sPathProperties = __DIR__ . '/../../conf/' . $this->aValues['module_name'] . '/properties.inc';
+                $sPathProperties = dirname($_SERVER['SCRIPT_FILENAME']) . '/conf/' . $this->aValues['module_name'] . '/properties.inc';
             //
             if (file_put_contents($sPathProperties, $sPropertiesFile, LOCK_EX) === false)
                 $aReturn = array('status' => 0, 'message' => "FORM_ERROR_FILE_WRITING_CONFIGURATION");
@@ -424,4 +424,4 @@ class Properties extends Vitis {
 
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/vas/rest/ws/vitis/Versions.class.inc b/vas/rest/ws/vitis/Versions.class.inc
index 62b9cfcc..3a20a659 100755
--- a/vas/rest/ws/vitis/Versions.class.inc
+++ b/vas/rest/ws/vitis/Versions.class.inc
@@ -1,204 +1,202 @@
-<?php
-
-require_once 'Vitis.class.inc';
-require_once __DIR__ . '/../../class/vitis_lib/Connection.class.inc';
-require_once __DIR__ . '/../../class/vmlib/BdDataAccess.inc';
-
-/**
- * \file versions.class.inc
- * \class Versions
- *
- * \author Yoann Perollet <yoann.perollet@veremes.com>.
- *
- * 	\brief This file contains the Versions php class
- *
- * This class defines the rest api for versions
- * 
- */
-class Versions extends Vitis {
-    /**
-     * @SWG\Definition(
-     *   definition="/versions",
-     *   allOf={
-     *     @SWG\Schema(ref="#/definitions/versions")
-     *   }
-     * )
-     * @SWG\Tag(
-     *   name="Versions",
-     *   description="Operations about versions"
-     * )
-     */
-
-    /**
-     * construct
-     * @param type $aPath url of the request
-     * @param type $aValues parameters of the request
-     * @param type $versions ptroperties
-     */
-    function __construct($aPath, $aValues, $properties) {
-        $this->aValues = $aValues;
-        $this->aPath = $aPath;
-        $this->aProperties = $properties;
-        if (!empty($this->aValues['token'])) {
-            $this->oConnection = new Connection($this->aValues, $this->aProperties);
-        }
-    }
-
-    /**
-     * @SWG\Get(path="/versions",
-     *   tags={"Versions"},
-     *   summary="Get versions",
-     *   description="Request to get versions",
-     *   operationId="GET",
-     *   produces={"application/xml", "application/json", "application/x-vm-json"},
-     *   @SWG\Parameter(
-     *     name="token",
-     *     in="query",
-     *     description="user token",
-     *     required=false,
-     *     type="string"
-     *   ),
-     *  @SWG\Response(
-     *         response=200,
-     *         description="Poprerties Response",
-     *         @SWG\Schema(ref="#/definitions/versions")
-     *     )
-     *  )
-     */
-
-    /**
-     * 
-     * @return versions
-     */
-    function GET() {
-        if ($this->oConnection->oError == null) {
-            $this->getVersion();
-            if (!empty($this->aValues['token']) && in_array("vitis_admin", $this->oConnection->aPrivileges)) {
-
-                //$this->aFields = $this->aVersions;
-                $this->aFields['php_version'] = phpversion();
-
-                //*** PDO
-                $bPdo = false;
-                if (extension_loaded('pdo'))
-                    $bPdo = true;
-                else
-                    $bVeremap = false;
-                $this->aFields['pdo_extension_loaded'] = $bPdo;
-
-                //*** PDO Postgresql
-                $bPdoPgsql = false;
-                if (extension_loaded('pdo_pgsql'))
-                    $bPdoPgsql = true;
-                else
-                    $bVeremap = false;
-                $this->aFields['pdo_pgsql_extension_loaded'] = $bPdoPgsql;
-
-                //*** Curl
-                $bCurl = false;
-                if (extension_loaded('curl'))
-                    $bCurl = true;
-                else
-                    $bVeremap = false;
-                $this->aFields['curl_extension_loaded'] = $bCurl;
-
-                //*** Xsl
-                $bXsl = false;
-                if (extension_loaded('xsl'))
-                    $bXsl = true;
-                $this->aFields['xsl_extension_loaded'] = $bXsl;
-
-                //*** Ldap
-                $bLdap = false;
-                if (extension_loaded('ldap'))
-                    $bLdap = true;
-                $this->aFields['ldap_extension_loaded'] = $bLdap;
-
-                // OS.
-                $this->aFields['os_version'] = php_uname();
-
-                // Info disque.
-                $this->aFields['disk_free_space'] = round(disk_free_space("/") / 1073741824) . ' Go';
-                $this->aFields['disk_total_space'] = round(disk_total_space("/") / 1073741824) . ' Go';
-
-                //
-                $this->aFields['server_software'] = $_SERVER['SERVER_SOFTWARE'];
-                $this->aFields['server_addr'] = $_SERVER['SERVER_ADDR'];
-                $this->aFields['server_name'] = $_SERVER['SERVER_NAME'];
-                $this->aFields['server_port'] = $_SERVER['SERVER_PORT'];
-
-                //** Postgresql et Postgis
-                $bPostgresql = false;
-                $bPostgis = false;
-                if (!$this->oConnection->oBd->erreurRencontree) {
-                    $bPostgresql = true;
-                    $sSql = "SHOW server_version";
-                    $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
-                    $oPgVersion = $this->oConnection->oBd->objetSuivant($oPDOresult);
-                    $sPostgresql = $oPgVersion->server_version;
-                    $this->aFields['postgresql_version'] = $sPostgresql;
-                    $this->oConnection->oBd->fermeResultat();
-
-                    $aVersion = explode(".", $sPostgresql);
-                    $bExtension = false;
-                    if ($aVersion[0] >= 9) {
-                        if ($aVersion[1] >= 1) {
-                            $bExtension = true;
-                        }
-                    }
-                    if ($bExtension == true) {
-                        $sSql = "SELECT default_version FROM pg_catalog.pg_available_extensions where name = 'postgis';";
-                        $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
-                        if ($aPostgis = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
-                            $bPostgis = true;
-                            $sPostgis = $aPostgis['default_version'];
-                        } else {
-                            $bPostgis = false;
-                        }
-                    } else {
-                        $sSql = "SELECT datname FROM pg_catalog.pg_database where datname = 'template_postgis_20';";
-                        $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
-                        if ($aPostgis = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
-                            $bPostgis = true;
-                            $sPostgis = '2.0';
-                        } else {
-                            $bPostgis = false;
-                        }
-                    }
-                    $this->aFields['postgis_version'] = $sPostgis;
-                    $this->oConnection->oBd->fermeResultat();
-                    $sSql = 'SELECT distinct module_id from [sSchemaFramework].vm_mode';
-                    $aParams['sSchemaFramework'] = array('value' => $this->aProperties['schema_framework'], 'type' => 'schema_name');
-                    $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aParams);
-                    while ($aLigne = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
-                        $aModules[] = $aLigne['module_id'];
-                    }
-                    $iRecordset = $this->oConnection->oBd->fermeResultat();
-                }
-                $this->aFields['postgresql'] = $bPostgresql;
-                $this->aFields['postgis'] = $bPostgis;
-
-                // Recherche de mise à jour
-                // 
-                if (!empty($this->aValues['app'])) {
-                    $sUrl = "http://update.veremes.net/vai/" . $this->aValues['app'] . ".json";
-                    $json = file_get_contents($sUrl);
-                    $data = json_decode($json, TRUE);
-                    $this->aFields['appVersion'] = $data['version'];
-                }
-            }
-            $aXmlRacineAttribute['status'] = 1;
-            $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
-        } else {
-            http_response_code(403);
-            $aXmlRacineAttribute['status'] = 0;
-            $this->aFields['errorMessage'] = "ERROR : invalid token";
-            $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
-        }
-
-        return $sMessage;
-    }
-
-}
-
+<?php
+
+require_once 'Vitis.class.inc';
+require_once __DIR__ . '/../../class/vitis_lib/Connection.class.inc';
+require_once __DIR__ . '/../../class/vmlib/BdDataAccess.inc';
+
+/**
+ * \file versions.class.inc
+ * \class Versions
+ *
+ * \author Yoann Perollet <yoann.perollet@veremes.com>.
+ *
+ * 	\brief This file contains the Versions php class
+ *
+ * This class defines the rest api for versions
+ * 
+ */
+class Versions extends Vitis {
+    /**
+     * @SWG\Definition(
+     *   definition="/versions",
+     *   allOf={
+     *     @SWG\Schema(ref="#/definitions/versions")
+     *   }
+     * )
+     * @SWG\Tag(
+     *   name="Versions",
+     *   description="Operations about versions"
+     * )
+     */
+
+    /**
+     * construct
+     * @param type $aPath url of the request
+     * @param type $aValues parameters of the request
+     * @param type $versions ptroperties
+     */
+    function __construct($aPath, $aValues, $properties) {
+        $this->aValues = $aValues;
+        $this->aPath = $aPath;
+        $this->aProperties = $properties;
+        if (!empty($this->aValues['token'])) {
+            $this->oConnection = new Connection($this->aValues, $this->aProperties);
+        }
+    }
+
+    /**
+     * @SWG\Get(path="/versions",
+     *   tags={"Versions"},
+     *   summary="Get versions",
+     *   description="Request to get versions",
+     *   operationId="GET",
+     *   produces={"application/xml", "application/json", "application/x-vm-json"},
+     *   @SWG\Parameter(
+     *     name="token",
+     *     in="query",
+     *     description="user token",
+     *     required=false,
+     *     type="string"
+     *   ),
+     *  @SWG\Response(
+     *         response=200,
+     *         description="Poprerties Response",
+     *         @SWG\Schema(ref="#/definitions/versions")
+     *     )
+     *  )
+     */
+
+    /**
+     * 
+     * @return versions
+     */
+    function GET() {
+        if ($this->oConnection->oError == null) {
+            $this->getVersion();
+            if (!empty($this->aValues['token']) && in_array("vitis_admin", $this->oConnection->aPrivileges)) {
+
+                //$this->aFields = $this->aVersions;
+                $this->aFields['php_version'] = phpversion();
+
+                //*** PDO
+                $bPdo = false;
+                if (extension_loaded('pdo'))
+                    $bPdo = true;
+                else
+                    $bVeremap = false;
+                $this->aFields['pdo_extension_loaded'] = $bPdo;
+
+                //*** PDO Postgresql
+                $bPdoPgsql = false;
+                if (extension_loaded('pdo_pgsql'))
+                    $bPdoPgsql = true;
+                else
+                    $bVeremap = false;
+                $this->aFields['pdo_pgsql_extension_loaded'] = $bPdoPgsql;
+
+                //*** Curl
+                $bCurl = false;
+                if (extension_loaded('curl'))
+                    $bCurl = true;
+                else
+                    $bVeremap = false;
+                $this->aFields['curl_extension_loaded'] = $bCurl;
+
+                //*** Xsl
+                $bXsl = false;
+                if (extension_loaded('xsl'))
+                    $bXsl = true;
+                $this->aFields['xsl_extension_loaded'] = $bXsl;
+
+                //*** Ldap
+                $bLdap = false;
+                if (extension_loaded('ldap'))
+                    $bLdap = true;
+                $this->aFields['ldap_extension_loaded'] = $bLdap;
+
+                // OS.
+                $this->aFields['os_version'] = php_uname();
+
+                // Info disque.
+                $this->aFields['disk_free_space'] = round(disk_free_space("/") / 1073741824) . ' Go';
+                $this->aFields['disk_total_space'] = round(disk_total_space("/") / 1073741824) . ' Go';
+
+                //
+                $this->aFields['server_software'] = $_SERVER['SERVER_SOFTWARE'];
+                $this->aFields['server_addr'] = $_SERVER['SERVER_ADDR'];
+                $this->aFields['server_name'] = $_SERVER['SERVER_NAME'];
+                $this->aFields['server_port'] = $_SERVER['SERVER_PORT'];
+
+                //** Postgresql et Postgis
+                $bPostgresql = false;
+                $bPostgis = false;
+                if (!$this->oConnection->oBd->erreurRencontree) {
+                    $bPostgresql = true;
+                    $sSql = "SHOW server_version";
+                    $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
+                    $oPgVersion = $this->oConnection->oBd->objetSuivant($oPDOresult);
+                    $sPostgresql = $oPgVersion->server_version;
+                    $this->aFields['postgresql_version'] = $sPostgresql;
+                    $this->oConnection->oBd->fermeResultat();
+
+                    $aVersion = explode(".", $sPostgresql);
+                    $bExtension = false;
+                    if ($aVersion[0] . $aVersion[1] >= 91) {
+                        $bExtension = true;
+                    }
+                    if ($bExtension == true) {
+                        $sSql = "SELECT default_version FROM pg_catalog.pg_available_extensions where name = 'postgis';";
+                        $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
+                        if ($aPostgis = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
+                            $bPostgis = true;
+                            $sPostgis = $aPostgis['default_version'];
+                        } else {
+                            $bPostgis = false;
+                        }
+                    } else {
+                        $sSql = "SELECT datname FROM pg_catalog.pg_database where datname = 'template_postgis_20';";
+                        $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, array());
+                        if ($aPostgis = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
+                            $bPostgis = true;
+                            $sPostgis = '2.0';
+                        } else {
+                            $bPostgis = false;
+                        }
+                    }
+                    $this->aFields['postgis_version'] = $sPostgis;
+                    $this->oConnection->oBd->fermeResultat();
+                    $sSql = 'SELECT distinct module_id from [sSchemaFramework].vm_mode';
+                    $aParams['sSchemaFramework'] = array('value' => $this->aProperties['schema_framework'], 'type' => 'schema_name');
+                    $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aParams);
+                    while ($aLigne = $this->oConnection->oBd->ligneSuivante($oPDOresult)) {
+                        $aModules[] = $aLigne['module_id'];
+                    }
+                    $iRecordset = $this->oConnection->oBd->fermeResultat();
+                }
+                $this->aFields['postgresql'] = $bPostgresql;
+                $this->aFields['postgis'] = $bPostgis;
+
+                // Recherche de mise à jour
+                // 
+                if (!empty($this->aValues['app'])) {
+                    $sUrl = "http://update.veremes.net/vai/" . $this->aValues['app'] . ".json";
+                    $json = file_get_contents($sUrl);
+                    $data = json_decode($json, TRUE);
+                    $this->aFields['appVersion'] = $data['version'];
+                }
+            }
+            $aXmlRacineAttribute['status'] = 1;
+            $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
+        } else {
+            http_response_code(403);
+            $aXmlRacineAttribute['status'] = 0;
+            $this->aFields['errorMessage'] = "ERROR : invalid token";
+            $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
+        }
+
+        return $sMessage;
+    }
+
+}
+
 ?>
\ No newline at end of file
diff --git a/vas/util/printserver/client/map/map.js b/vas/util/printserver/client/map/map.js
index 2a870d9a..d6dcd882 100755
--- a/vas/util/printserver/client/map/map.js
+++ b/vas/util/printserver/client/map/map.js
@@ -7,7 +7,7 @@
 PrintMap = function (opt_options) {
 
     var this_ = this;
-    
+
     this.mapSize = [document.getElementById('map').offsetWidth, document.getElementById('map').offsetHeight];
 
     this.tileSize = (isDef(window.oProperties.print.tile_size) && window.oProperties.print.features_zoom >= 0) ? window.oProperties.print.tile_size : 2048;
@@ -29,7 +29,7 @@ PrintMap = function (opt_options) {
     this.mapJsonParser = new MapJSON({
         'properties': window.oProperties
     });
-        
+
     this.view = this.mapJsonParser.getViewFromDef(this.mapDefinition, {
         'size': this.mapSize,
         'tileSize': [this.tileSize, this.tileSize]
@@ -39,13 +39,13 @@ PrintMap = function (opt_options) {
 
     this.extent = this.getExtent(opt_options);
 
-    this.tileGrid = this.getTileGridFromDefinition(this.tileSize);    
-    
+    this.tileGrid = this.getTileGridFromDefinition(this.tileSize);
+
     this.layers = this.mapJsonParser.getLayersFromDef(this.mapDefinition, {
         'size': this.mapSize,
         'tileSize': [this.tileSize, this.tileSize]
     });
-    
+
     this.map = this.setMap(this.layers, this.view);
 
     this.featuresOverlay = this.setFeaturesOverlay(this.map);
@@ -63,6 +63,9 @@ PrintMap = function (opt_options) {
     // Supprime tous les controls par défaut
     this.removeMapControls();
 
+    // Taille des icones en fonction de la résolution demandée
+    this.setMapSymbolsResolution(this.map, this.resolutionCoeff)
+
     // Si aucune étendue a été donnée et que seul un point a été donné, alors zoom sur this.defaultScale
     if (!isDef(opt_options.extent) && !isDef(this.features)) {
         if (this.features.length === 1 && this.features[0].getGeometry().getType() === 'Point') {
@@ -310,7 +313,7 @@ PrintMap.prototype.getFeaturesFromEWKT = function (aEWKTFeatures) {
 };
 
 /**
- * Return true if EWKTGeom is an EWKT geometry 
+ * Return true if EWKTGeom is an EWKT geometry
  * @param {string} EWKTGeom
  * @returns {boolean}
  */
@@ -367,4 +370,21 @@ PrintMap.prototype.getGeomFromEWKT = function (EWKTGeom, proj) {
         return null;
     }
 
-};
\ No newline at end of file
+};
+
+/**
+ * For WMS layers set MAP.RESOLUTION and MAP.DEFRESOLUTION to rise the symbols size
+ *
+ * @param  {object} olMap
+ * @param  {integer} resolutionCoeff
+ */
+PrintMap.prototype.setMapSymbolsResolution = function (olMap, resolutionCoeff) {
+
+    var newRes = resolutionCoeff * 72;
+    var aLayers = olMap.getLayers().getArray();
+    for (var i = 0; i < aLayers.length; i++) {
+        if (aLayers[i].get('type') === 'imagewms' || aLayers[i].get('type') === 'tilewms') {
+            aLayers[i].getSource().updateParams({'MAP.RESOLUTION': newRes, 'MAP.DEFRESOLUTION': 72});
+        }
+    }
+}
-- 
GitLab