Raccourcis : Contenu - rubriques - sous rubriques
EN FR

jPref

jPref est une classe très simple qui va vous permettre de récuperer et d'enregistrer des préférences pour votre application. On parle ici de préférences qui peuvent évoluer dans la vie de l'application et non de préférences de configuration fixes qui, elles, se trouvent dans le mainconfig.ini.php ou autre.

Configuration

jPref est fourni par le module "jpref". Activez-le en lançant :


php dev.php module:configure jpref

Et lancez l'installateur de votre application.

jPref est en fait une classe qui encapsule jKVDb. Par conséquent, pour utiliser jPref il vous suffit de définir un profil pour jkvdb ayant comme nom jpref.

Dans votre profiles.ini.php:


[jkvdb:jpref]
...

Pour plus de détails sur la configuration de ce driver, voir la documentation de jKVDb.

Utilisation

  • jPref::get($key) : pour récupérer une préference.
  • jPref::set($key, $value) : pour enregistrer ou modifier une préférence.

Exemple :


jPref::set('nb.items.per.page', 20);

$val = jPref::get('nb.items.per.page');
// $val contient 20

Interface d'admin pour jPref

Un module jpref_admin est fournit afin gérer les préférences depuis votre interface d'administration. Les pages de ce module sont directement accessible depuis le menu de master_amin (menu "Système", lien "Préferences").

Il faudra d'abord renseigner le fichier var/config/preferences.ini.php afin d'organiser et configurer vos préferences (type, locale, valeur par défaut, groupe de préférences, droits de lecture/écriture).

Configuration d'une préférence

Dans votre fichier preferences.ini.php, vous avez une section pour chaque preference, dont le nom commence par "pref:" :


[pref:nom.systeme.de.la.pref]
; "string" | "integer" | "boolean" | "decimal" (défaut string)
type =
; clé de la locale pour le libellé
locale =
; identifiant du groupe auquelle appartient la préférence
group =
; sujet jAcl2 correspondant au droit de lecture de la préférence
read_acl_subject =
; sujet jAcl2 correspondant au droit d'écriture de la préférence
write_acl_subject =
; valeur par défaut
default_value =

Note : chaque parametre est optionel.

read_acl_subject et write_acl_subject permette de limiter l'accés aux préférences en fonction des utilisateurs. Certaines preferences peuvent par exemple n'être accessible et modifiable que par des administrateurs par exemple. Il vous faudra donc définir des droits dans jAcl2, et indiquer ici les "sujets" correspondant.

Si read_acl_subject et write_acl_subject ne sont pas rempli, tout utilisateur qui a le droit "jprefs.prefs.list" peut lire et modifier la préférence.

Configuration d'un groupe de préférences

Les préferences peuvent être regroupées, afin d'en faciliter la gestion. Vous pouvez avoir un groupe par module ou domaine fonctionnel par exemple.

Dans votre fichier preferences.ini.php, déclarez une section avec un prefix "group:". Une section contient le label du groupe et son ordre d'affichage.


[group:nom.syteme.de.la.pref]
; clé de la locale définissant le label du groupe
locale =
; ordre d'affichage dans la liste des préférences
order =

Note : chaque paramètre est optionel et peut ne pas être remplie.

Exemple


[group:contact]
locale = "contact~admin.pref.group.contact"
order = 1

[pref:telephone]
type = string
locale = "contact~admin.pref.telephone"
group = "contact"
read_acl_subject =
write_acl_subject = "contact.edit.infos"
default_value =


[group:shop]
locale = "contact~admin.pref.group.contact"
order = 2

[pref:nb.items.per.page]
type = integer
locale = "shop_admin~admin.pref.nb.items.per.page"
group = shop
read_acl_subject =
write_acl_subject =
default_value = 15

[pref:shop.is.open]
type = boolean
locale = "shop_admin~admin.pref.shop.is.open"
group = shop
read_acl_subject =
write_acl_subject = "shop.edit.shop.status"
default_value = "false"