Droits d'accès au champs de geolocalisation (latitude, longitude)

Bonjour,

Je souhaite rajouter la possibilité de spécifier les droits d’accès pour les champs de géolocalisation (latitude, longitude) comme les autres champs.

Je constate qu’il y a 2 manières de stocker l’information : soit dans bf_latitude, bf_longitude, soit dans geolocation : { bf_latitude, bf_longitude }

J’aimerais en savoir plus sur l’existence de ces 2 méthodes et notamment aborder la question de la rétrocompatibilité.

Avez vous des informations à me fournir ?

Merci d’avance,

Yves

Je pense que les 2 sont restées pour des raisons de retro-compatibilité…
On n’a pas vraiment tranché et j’imagine qu’on a les 2 utilisés dans le code (a vérifier).

De mon coté, j’ai creusé un peu afin d’y voir plus clair. Je constate que la fonction getValue dans mapfield semble gérer la rétrocompatibilité. Soit elle trouve un champ geolocation, soit elle cherche un champ carte_google, soit les champs bf_latitude, bf_longitude. Ce qui sort de cette fonction est un tableau standardisé contenant bf_latitude et bf_longitude.

Dans ma démarche pour rajouter la gestion des droits d’accès aux champs de geolocalisation, je souhaite supprimer la duplication des champs enregistrés dans la base : je supprime bf_latitude et bf_longitude de l’entrée pour ne garder que sa version dans le champ geolocation. En effet, la spécification des droits d’accès porte sur geolocation et non les champs séparé.

J’arrive à le faire en modifiant la methode MapField::formatValuesBeforeSaveIfEditable dont je trouve l’algorithme actuel assez bizarre. De manière général j’ai du mal à comprendre l’utilisation de cette fonction sachant que pour la classe mère BazarField elle ne fait rien et renvoie formatValuesBeforeSave. Quel est le propos de cette fonction formatValuesBeforeSaveIfEditable ? Dans mon esprit cette fonction devrait être instanciée dans la classe mère BazarField avec le test CanEdit.

Dans les commentaires on trouve : // this method is defined to check $this->canEdit with $isCreation
// without changing signature of formatValuesBeforeSave()

En quoi est il gênant de changer la signature ?

MANAGER

  • tools/bazar/services/EntryManager.php

    • create

      • formatDataBeforeSave
    • update

      • assignRestrictedFields

      • formatDataBeforeSave

    • assignRestrictedFields

      • canEdit
    • formatDataBeforeSave

      • formatValuesBeforeSaveIfEditable

FIELDS

      CLASS HIERARCHY DEPTH = 0
      ------------------------------------
  • tools/bazar/fields/BazarField.php : abstract class BazarField implements \JsonSerializable

    • formatValuesBeforeSaveIfEditable

      • formatValuesBeforeSave
    • formatValuesBeforeSave

      CLASS HIERARCHY DEPTH = 1
      ----------------------------------
      
  • tools/bazar/fields/AclField.php : class AclField extends BazarField

    • formatValuesBeforeSave
      • parent::formatValuesBeforeSave
  • tools/bazar/fields/BookmarkletField.php : class BookmarkletField extends BazarField

  • tools/bazar/fields/CalcField.php : class CalcField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/DateField.php : class DateField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/EmailField.php : class EmailField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/EnumField.php : abstract class EnumField extends BazarField

  • tools/bazar/fields/TextareaField.php : class TextareaField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/TextField.php : class TextField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/TitleField.php : class TitleField extends BazarField

    • formatValuesBeforeSave
      • formatValuesBeforeSaveIfEditable
  • tools/bazar/fields/UserField.php : class UserField extends BazarField

    • formatValuesBeforeSave
  • tools/helloworld/fields/AlertField.php : class AlertField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/FileField.php : class FileField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/HiddenField.php : class HiddenField extends BazarField

    • //formatValuesBeforeSave (commenté)
  • tools/bazar/fields/LabelField.php : class LabelField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/LinkedEntryField.php : class LinkedEntryField extends BazarField

  • tools/bazar/fields/LinkField.php : class LinkField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/MapField.php : class MapField extends BazarField

    • formatValuesBeforeSave

      • formatValuesBeforeSaveIfEditable
    • formatValuesBeforeSaveIfEditable

      • canEdit
  • tools/bazar/fields/MetadataField.php : class MetadataField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/OldField.php : class OldField extends BazarField

    • formatValuesBeforeSave
  • tools/bazar/fields/PasswordField.php : class PasswordField extends BazarField

    • formatValuesBeforeSave

      • formatValuesBeforeSaveIfEditable
    • formatValuesBeforeSaveIfEditable

      • canEdit
  • tools/bazar/fields/ReactionsField.php : class ReactionsField extends BazarField

  • tools/bazar/fields/SubscribeField.php : class SubscribeField extends BazarField

  • formatValuesBeforeSave

       CLASS HIERARCHY DEPTH = 2
       -------------------------
    
  • tools/bazar/fields/CheckboxEntryField.php : class CheckboxEntryField extends CheckboxField
  • tools/bazar/fields/CheckboxListField.php : class CheckboxListField extends CheckboxField

  • tools/bazar/fields/ConditionsCheckingField.php : class ConditionsCheckingField extends LabelField
  • tools/bazar/fields/TabChangeField.php : class TabChangeField extends LabelField
  • tools/bazar/fields/TabsField.php : class TabsField extends LabelField

  • tools/bazar/fields/ExternalCheckboxEntryField.php : class ExternalCheckboxEntryField extends CheckboxEntryField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalCheckboxListField.php : class ExternalCheckboxListField extends CheckboxListField

    • formatValuesBeforeSave

  • tools/bazar/fields/ImageField.php : class ImageField extends FileField

    • formatValuesBeforeSave
  • tools/bazar/fields/ExternalFileField.php : class ExternalFileField extends FileField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalRadioEntryField.php : class ExternalRadioEntryField extends RadioEntryField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalRadioListField.php : class ExternalRadioListField extends RadioListField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalSelectEntryField.php : class ExternalSelectEntryField extends SelectEntryField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalSelectListField.php : class ExternalSelectListField extends SelectListField

    • formatValuesBeforeSave

  • tools/bazar/fields/ExternalTagsField.php : class ExternalTagsField extends TagsField

    • formatValuesBeforeSave

  • tools/bazar/fields/RadioEntryField.php : class RadioEntryField extends RadioField
  • tools/bazar/fields/RadioListField.php : class RadioListField extends RadioField

  • tools/bazar/fields/CheckboxField.php : abstract class CheckboxField extends EnumField

    • formatValuesBeforeSave

      • formatValuesBeforeSaveIfEditable
    • formatValuesBeforeSaveIfEditable

      • canedit
  • tools/bazar/fields/RadioField.php : abstract class RadioField extends EnumField

  • tools/bazar/fields/SelectEntryField.php : class SelectEntryField extends EnumField

  • tools/bazar/fields/SelectListField.php : class SelectListField extends EnumField

  • tools/bazar/fields/TagsField.php : class TagsField extends EnumField

    • formatValuesBeforeSave

      CLASS HIERARCHY DEPTH = 3
      -------------------------
      
  • tools/bazar/fields/ExternalImageField.php : class ExternalImageField extends ImageField

    • formatValuesBeforeSave

MIGRATIONS

  • includes/migrations/20240425153022_CleanBase64.php

    • extractImages
      • formatValuesBeforeSaveIfEditable
  • includes/migrations/20240425172243_CleanOldCartoGoogle.php

    • extractOldCarto
      • formatValuesBeforeSaveIfEditable