bo
Table of Contents
Packages
Classes
- IpAddressSqlDef
- Définition du schéma de la table ipaddress et de son contenu
- Request2GBox
- classe traduisant un URI correspondant à une requête WMS ou tile dans le GBox de la loc. de la requête
- HeatData
- construit un enregistrement pour carte de chaleur à partir de l'URI de la requête
- GBoxAsPolygon
- Analyse un GBox fourni par gdalinfo comme polygone GeoJSON pour déterminer s'il intersecte ou non l'antiméridien
- GBoxBo
- Ajout de fonctionnalités à \gegeom\GBox
- EBoxBo
- extension de EBox avec possibilité de création à partir du champ cornerCoordinates de gdalinfo
- GdalInfoBo
- contenu du gdalinfo d'un fichier .tif ou .pdf.
- GeoRefImage
- Image principale ou cartouche de la carte
- MapArchive
- analyse les fichiers d'une archive d'une carte pour évaluer sa validité et afficher le contenu
- MapArchiveStore
- Répertoire contenant 2 sous-répertoires archives et current
- MapMetadata
- construit les MD synthétiques d'une carte à partir des MD ISO dans le 7z
- My7zArchive
- étend la classe SevenZipArchive par l'ajout de 2 méthodes simplifiant l'extraction temporaire d'un fichier.
- Portfolio
- Portefeuille des cartes exposées sur ShomGt issu des fichiers .md.json
Constants
- FORCE_VALIDATION = false
- vrai ssi possibilité de forcer la validation d'une carte invalide
- JSON_OPTIONS = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
- JSON_OPTIONS = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
- JSON_OPTIONS = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
- LGEOJSON_STYLE = ['color' => 'blue', 'weight' => 2, 'opacity' => 0.3]
- MIME_TYPES = ['.png' => 'image/png', '.jpg' => 'image/jpeg', '.tif' => 'image/tiff', '.pdf' => 'application/pdf', '.xml' => 'text/xml; charset="utf-8"', '.7z' => 'application/x-7z-compressed', '.txt' => 'text/plain; charset="utf-8"', '.json' => 'application/json; charset="utf-8"']
- USER_TABLE_SCHEMA = ['description' => "Ce dictionnaire définit le schéma d'une table SQL avec:\n" . " - le champ 'comment' précisant la table concernée,\n" . " - le champ obligatoire 'columns' définissant le dictionnaire des colonnes avec pour chaque entrée:\n" . " - la clé définissant le nom SQL de la colonne,\n" . " - le champ 'type' obligatoire définissant le type SQL de la colonne,\n" . " - le champ 'keyOrNull' définissant si la colonne est ou non une clé et si elle peut ou non être nulle\n" . " - le champ 'comment' précisant un commentaire sur la colonne.\n" . " - pour les colonnes de type 'enum' correspondant à une énumération le champ 'enum'\n" . " définit les valeurs possibles dans un dictionnaire où chaque entrée a:\n" . " - pour clé la valeur de l'énumération et\n" . " - pour valeur une définition et/ou un commentaire sur cette valeur.", 'comment' => "table des utilisateurs", 'columns' => ['email' => ['type' => 'varchar(256)', 'keyOrNull' => 'primary key', 'comment' => "adresse email"], 'epasswd' => ['type' => 'longtext', 'comment' => "mot de passe encrypté, null à la créatin d'un compte temporaire non valide"], 'newepasswd' => ['type' => 'longtext', 'comment' => "nouveau mot de passe encrypté, utilisé en cas de chgt de mot de passe"], 'role' => ['type' => 'enum', 'enum' => ['normal' => "utilisateur normal ayant le droit de consulter les cartes, d'en ajouter et d'en supprimer", 'admin' => "administrateur ayant en plus de l'utilisateur normal des droits supplémentaires,\n" . "notamment le droit de changer le rôle des utilisateurs", 'restricted' => "utilisateur ayant le droit de consulter les cartes mais pas d'en ajouter, ni d'en supprimer", 'banned' => "utilisateur banni n'ayant aucun droit, et n'ayant pas le droit de réactiver son compte", 'suspended' => "utilisateur suspendu en l'absence de confirmation pendant un délai d'un an,\n" . "il n'a plus aucun droit jusqu'à ce qu'il réactive son compte.\n" . "Il peut réactiver son compte soit en cliquant sur le lien qui lui a été envoyé par mail,\n" . "soit en exécutant le processus de création de compte", 'closed' => "utilisateur ayant demandé à fermer son compte et pouvant le réactiver\n" . "en exécutant à nouveau le processus de création de compte", 'temp' => "utilisateur en cours de création dont la validité n'a pas été vérifiée,\n" . "et n'ayant aucun droit en attendant sa validation par mail", 'system' => "utilisateur utilisé en interne à ShomGT"], 'comment' => "rôle de l'utilisateur"], 'secret' => ['type' => 'varchar(256)', 'comment' => "secret envoyé par email et attendu en retour, null ssi le secret a été utilisé"], 'createdt' => ['type' => 'datetime', 'keyOrNull' => 'not null', 'comment' => "date et heure de création initiale du compte"], 'sent' => ['type' => 'datetime', 'comment' => "date et heure d'envoi du dernier mail de validation, null ssi le lien du mail a été activé"], 'valid' => ['type' => 'datetime', 'comment' => "date et heure de dernière validation, null ssi compte non validé"], 'extra' => ['type' => 'JSON', 'comment' => "données complémentaires stockées en JSON, notamment la liste des codes des zones dans le champ zones"], 'comment' => ['type' => 'longtext', 'comment' => "commentaire en texte libre"]]]
- Définition du schéma de la table user selon la structuration définie dans son champ description.
- ZONES_ZEE = [ //'FR'=> "France entière", 'FX-MMN' => "Métropole - Zone Manche et Mer du Nord", 'FX-Atl' => "Métropole - Zone Maritime Atlantique", 'FX-Med' => "Métropole - Zone Méditerranée", 'GP' => "Guadeloupe", 'MQ' => "Martinique", 'GF' => "Guyane", 'BL' => "Saint-Barthelémy", 'MF' => "Saint-Martin", 'PM' => "Saint-Pierre-et-Miquelon", 'RE' => "La Réunion", 'YT' => "Mayotte", 'TF' => "TAAF", 'CP' => "Clipperton", 'PF' => "Polynésie Française", 'WF' => "Wallis-et-Futuna", 'NC' => "Nouvelle-Calédonie", ]
- Liste des zones de la ZEE sous la forme [{nom} => {label}].
Functions
- durationInHours() : int
- prend en compte l'unité pour traduire la durée en heures
- queryForRecentAccess() : string
- retourne le texte de la requête SQL adhoc
- existingVersion() : string
- cmpVersion() : int
- cloneDir() : string|null
- fonction récursive de clonage.
- directoryEntries() : array<int, string>
- YamlDump() : string
- supprime les - suivis d'un retour à la ligne dans Yaml::dump()
- callingThisFile() : null|"web"|"cli"
- Permet de distinguer si un script est inclus dans un autre ou est directement appelé en mode CLI ou Web retourne null si ce script n'a pas été directement appelé, cad qu'il est inclus dans un autre, 'web' s'il est appelé en mode web, 'cli' s'il est appelé en mode CLI Doit être appelé avec en paramètre la constante __FILE__
- dumpString() : void
- rmdirRecursive() : void
- supprime un répertoire récursivement
- entryInArchive() : bool
- notFound() : void
- latLngBounds() : TLPos
- transforme un GBox en une structure latLngBounds@Leaflet
- createUserTable() : void
- création de la table des utilisateurs
- userRole() : string|null
- renvoit le role de l'utilisateur $user
- migrationAddExtraToUserTable() : void
- Fonction de migration d'ajout d'un champ extra dans la table user s'il n'existe pas
- badEmail() : string|null
- validation de l'email, renvoit null si valid, sinon l'erreur
- badPasswd() : string|null
- validation du mot de passe, renvoit null si ok, sinon l'erreur
- sendMail() : void
- Envoie un email avec le lien contenant le secret
Constants
FORCE_VALIDATION
vrai ssi possibilité de forcer la validation d'une carte invalide
    public
        mixed
    FORCE_VALIDATION
    = false
    
    
    
JSON_OPTIONS
    public
        mixed
    JSON_OPTIONS
    = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
    
    
    
JSON_OPTIONS
    public
        mixed
    JSON_OPTIONS
    = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
    
    
    
JSON_OPTIONS
    public
        mixed
    JSON_OPTIONS
    = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
    
    
    
LGEOJSON_STYLE
    public
        mixed
    LGEOJSON_STYLE
    = ['color' => 'blue', 'weight' => 2, 'opacity' => 0.3]
    
    
    
MIME_TYPES
    public
        mixed
    MIME_TYPES
    = ['.png' => 'image/png', '.jpg' => 'image/jpeg', '.tif' => 'image/tiff', '.pdf' => 'application/pdf', '.xml' => 'text/xml; charset="utf-8"', '.7z' => 'application/x-7z-compressed', '.txt' => 'text/plain; charset="utf-8"', '.json' => 'application/json; charset="utf-8"']
    
    
    
USER_TABLE_SCHEMA
Définition du schéma de la table user selon la structuration définie dans son champ description.
    public
        array{description: string, comment: string, columns: array} 
    USER_TABLE_SCHEMA
    = ['description' => "Ce dictionnaire définit le schéma d'une table SQL avec:\n" . " - le champ 'comment' précisant la table concernée,\n" . " - le champ obligatoire 'columns' définissant le dictionnaire des colonnes avec pour chaque entrée:\n" . "   - la clé définissant le nom SQL de la colonne,\n" . "   - le champ 'type' obligatoire définissant le type SQL de la colonne,\n" . "   - le champ 'keyOrNull' définissant si la colonne est ou non une clé et si elle peut ou non être nulle\n" . "   - le champ 'comment' précisant un commentaire sur la colonne.\n" . "   - pour les colonnes de type 'enum' correspondant à une énumération le champ 'enum'\n" . "     définit les valeurs possibles dans un dictionnaire où chaque entrée a:\n" . "     - pour clé la valeur de l'énumération et\n" . "     - pour valeur une définition et/ou un commentaire sur cette valeur.", 'comment' => "table des utilisateurs", 'columns' => ['email' => ['type' => 'varchar(256)', 'keyOrNull' => 'primary key', 'comment' => "adresse email"], 'epasswd' => ['type' => 'longtext', 'comment' => "mot de passe encrypté, null à la créatin d'un compte temporaire non valide"], 'newepasswd' => ['type' => 'longtext', 'comment' => "nouveau mot de passe encrypté, utilisé en cas de chgt de mot de passe"], 'role' => ['type' => 'enum', 'enum' => ['normal' => "utilisateur normal ayant le droit de consulter les cartes, d'en ajouter et d'en supprimer", 'admin' => "administrateur ayant en plus de l'utilisateur normal des droits supplémentaires,\n" . "notamment le droit de changer le rôle des utilisateurs", 'restricted' => "utilisateur ayant le droit de consulter les cartes mais pas d'en ajouter, ni d'en supprimer", 'banned' => "utilisateur banni n'ayant aucun droit, et n'ayant pas le droit de réactiver son compte", 'suspended' => "utilisateur suspendu en l'absence de confirmation pendant un délai d'un an,\n" . "il n'a plus aucun droit jusqu'à ce qu'il réactive son compte.\n" . "Il peut réactiver son compte soit en cliquant sur le lien qui lui a été envoyé par mail,\n" . "soit en exécutant le processus de création de compte", 'closed' => "utilisateur ayant demandé à fermer son compte et pouvant le réactiver\n" . "en exécutant à nouveau le processus de création de compte", 'temp' => "utilisateur en cours de création dont la validité n'a pas été vérifiée,\n" . "et n'ayant aucun droit en attendant sa validation par mail", 'system' => "utilisateur utilisé en interne à ShomGT"], 'comment' => "rôle de l'utilisateur"], 'secret' => ['type' => 'varchar(256)', 'comment' => "secret envoyé par email et attendu en retour, null ssi le secret a été utilisé"], 'createdt' => ['type' => 'datetime', 'keyOrNull' => 'not null', 'comment' => "date et heure de création initiale du compte"], 'sent' => ['type' => 'datetime', 'comment' => "date et heure d'envoi du dernier mail de validation, null ssi le lien du mail a été activé"], 'valid' => ['type' => 'datetime', 'comment' => "date et heure de dernière validation, null ssi compte non validé"], 'extra' => ['type' => 'JSON', 'comment' => "données complémentaires stockées en JSON, notamment la liste des codes des zones dans le champ zones"], 'comment' => ['type' => 'longtext', 'comment' => "commentaire en texte libre"]]]
    
        USER_TABLE_SCHEMA
ZONES_ZEE
Liste des zones de la ZEE sous la forme [{nom} => {label}].
    public
        array<string, string>
    ZONES_ZEE
    = [
    //'FR'=> "France entière",
    'FX-MMN' => "Métropole - Zone Manche et Mer du Nord",
    'FX-Atl' => "Métropole - Zone Maritime Atlantique",
    'FX-Med' => "Métropole - Zone Méditerranée",
    'GP' => "Guadeloupe",
    'MQ' => "Martinique",
    'GF' => "Guyane",
    'BL' => "Saint-Barthelémy",
    'MF' => "Saint-Martin",
    'PM' => "Saint-Pierre-et-Miquelon",
    'RE' => "La Réunion",
    'YT' => "Mayotte",
    'TF' => "TAAF",
    'CP' => "Clipperton",
    'PF' => "Polynésie Française",
    'WF' => "Wallis-et-Futuna",
    'NC' => "Nouvelle-Calédonie",
]
        Pour la définition de la zone d'intérêt, la valeur 'FR' est inutile car elle correspond à quasiment toutes les cartes.
Functions
durationInHours()
prend en compte l'unité pour traduire la durée en heures
    
                    durationInHours(string $duration) : int
    
        Parameters
- $duration : string
Return values
intqueryForRecentAccess()
retourne le texte de la requête SQL adhoc
    
                    queryForRecentAccess(string $access, int $durationInHours[, string|null $param = null ]) : string
    
        Parameters
- $access : string
- $durationInHours : int
- $param : string|null = null
Return values
stringexistingVersion()
    
                    existingVersion(string $PF_PATH, string $mapNum) : string
    
        Parameters
- $PF_PATH : string
- $mapNum : string
Return values
stringcmpVersion()
    
                    cmpVersion(string $v1, string $v2) : int
    
        Parameters
- $v1 : string
- $v2 : string
Return values
intcloneDir()
fonction récursive de clonage.
    
                    cloneDir(string $src, string $dest[, string $tab = '' ]) : string|null
    
        Parameters
- $src : string
- $dest : string
- $tab : string = ''
Return values
string|nulldirectoryEntries()
    
                    directoryEntries(string $path) : array<int, string>
    
        Parameters
- $path : string
Return values
array<int, string>YamlDump()
supprime les - suivis d'un retour à la ligne dans Yaml::dump()
    
                    YamlDump(mixed $data[, int $level = 3 ][, int $indentation = 2 ][, int $options = 0 ]) : string
    
        Parameters
- $data : mixed
- $level : int = 3
- $indentation : int = 2
- $options : int = 0
Return values
stringcallingThisFile()
Permet de distinguer si un script est inclus dans un autre ou est directement appelé en mode CLI ou Web retourne null si ce script n'a pas été directement appelé, cad qu'il est inclus dans un autre, 'web' s'il est appelé en mode web, 'cli' s'il est appelé en mode CLI Doit être appelé avec en paramètre la constante __FILE__
    
                    callingThisFile(string $file) : null|"web"|"cli"
    
        Parameters
- $file : string
Return values
null|"web"|"cli"dumpString()
    
                    dumpString(string $s) : void
    
        Parameters
- $s : string
rmdirRecursive()
supprime un répertoire récursivement
    
                    rmdirRecursive(string $path) : void
    
        Parameters
- $path : string
entryInArchive()
    
                    entryInArchive(string $fileName, My7zArchive $archive) : bool
    
        Parameters
- $fileName : string
- $archive : My7zArchive
Return values
boolnotFound()
    
                    notFound(string $fileName) : void
    
        Parameters
- $fileName : string
latLngBounds()
transforme un GBox en une structure latLngBounds@Leaflet
    
                    latLngBounds(GBox $gbox) : TLPos
    
        Parameters
- $gbox : GBox
Return values
TLPoscreateUserTable()
création de la table des utilisateurs
    
                    createUserTable() : void
    
    
    
    
userRole()
renvoit le role de l'utilisateur $user
    
                    userRole(string|null $user) : string|null
    
        Parameters
- $user : string|null
Return values
string|nullmigrationAddExtraToUserTable()
Fonction de migration d'ajout d'un champ extra dans la table user s'il n'existe pas
    
                    migrationAddExtraToUserTable() : void
    
    
    
    
badEmail()
validation de l'email, renvoit null si valid, sinon l'erreur
    
                    badEmail(string $email) : string|null
    
        Parameters
- $email : string
Return values
string|nullbadPasswd()
validation du mot de passe, renvoit null si ok, sinon l'erreur
    
                    badPasswd(string $passwd, string $passwd2) : string|null
    
        Parameters
- $passwd : string
- $passwd2 : string
Return values
string|nullsendMail()
Envoie un email avec le lien contenant le secret
    
                    sendMail(string $action, string $email, int $secret[, string|null $passwd = null ]) : void
    
        Parameters
- $action : string
- $email : string
- $secret : int
- $passwd : string|null = null