Auparavant il fallait chercher les différentes ressources de configuration de Dotclear un peu partout, dans les fichier index, dans le fichier de config, dans des constantes, etc. Depuis la version 2.28, toutes ces informations sont accessibles depuis une seule classe et ses méthodes. Cette classe n'est pas modifiable, n'est pas remplaçable, aucune de ses propriétés n'est accessible. Elle va récupérer toutes les informations, notamment depuis le fichier config.php (qui ne change pas), les traiter et les proposer via ses méthodes avec un typage de retour strict et défini. Elle va également faire les premières vérifications de ces valeurs.
Il n'est plus utile de lire les constantes de Dotclear, toutes les constantes de la version 2.27 existent toujours mais ont leurs méthodes associées en 2.28 dans App::config(), de part ce fait ces valeurs existent toujours et ont un type fixe ce qui facilite leurs utilisations.
Liste des informations disponibles :
startTime(): float;
DC_START_TIMEcliMode(): bool;
CLI_MODEdebugMode(): bool;
DC_DEBUGdevMode(): bool;
DC_DEVerrorFile(): string;
DC_ERRORFILEblogId(): string;
DC_BLOG_IDdotclearRoot(): string;
DC_ROOTdotclearVersion(): string;
DC_VERSIONdotclearName(): string;
DC_NAMEhasConfig(): bool;
configPath(): string;
DC_RC_PATHdigestsRoot(): string;
DC_DIGESTSl10nRoot(): string;
DC_L10N_ROOTl10nUpdateUrl(): string;
DC_L10N_UPDATE_URLdistributedPlugins(): string;
DC_DISTRIB_PLUGINSdistributedThemes(): string;
DC_DISTRIB_THEMESdefaultTheme(): string;
DC_DEFAULT_THEMEdefaultTplset(): string;
DC_DEFAULT_TPLSETdefaultJQuery(): string;
DC_DEFAULT_JQUERYminRequiredPhp(): string;
minRequiredMysql(): string;
minRequiredPgsql(): string;
nextRequiredPhp(): string;
DC_NEXT_REQUIRED_PHPvendorName(): string;
DC_VENDOR_NAMExmlrpcUrl(): string;
DC_XMLRPC_URLsessionTtl(): ?string;
DC_SESSION_TTLsessionName(): string;
DC_SESSION_NAMEadminSsl(): bool;
DC_ADMIN_SSLadminUrl(): string;
DC_ADMIN_URLadminMailfrom(): string;
DC_ADMIN_MAILFROMdbDriver(): string;
DC_DBDRIVERdbHost(): string;
DC_DBHOSTdbUser(): string;
DC_DBUSERdbPassword(): string;
DC_DBPASSWORDdbName(): string;
DC_DBNAMEdbPrefix(): string;
DC_DBPREFIXdbPersist(): bool;
DC_DBPERSISTmasterKey(): string;
DC_MASTER_KEYcryptAlgo(): string;
DC_CRYPT_ALGOcoreUpdateUrl(): string;
DC_UPDATE_URLcoreUpdateCanal(): string;
DC_UPDATE_VERSIONcoreNotUpdate(): bool;
DC_NOT_UPDATEallowMultiModules(): bool;
DC_ALLOW_MULTI_MODULESstoreNotUpdate(): bool;
DC_STORE_NOT_UPDATEallowRepositories(): bool;
DC_ALLOW_REPOSITORIESallowRestServices(): bool;
DC_REST_SERVICEScacheRoot(): string;
DC_TPL_CACHEvarRoot(): string;
DC_VARbackupRoot(): string;
DC_BACKUP_PATHcoreUpgrade(): string;
DC_UPGRADEpluginsRoot(): string;
DC_PLUGINS_ROOTmaxUploadSize(): int;
DC_MAX_UPLOAD_SIZEqueryTimeout(): int;
DC_QUERY_TIMEOUTshowHiddenDirs(): bool;
DC_SHOW_HIDDEN_DIRShttpScheme443(): bool;
DC_FORCE_SCHEME_443httpReverseProxy(): bool;
DC_REVERSE_PROXYcheckAddBlocker(): bool;
DC_ADBLOCKER_CHECKcspReportFile(): string;
DC_CSP_LOGFILE
Pour en savoir plus sur la signification de ces méthodes, il est recommandé de lire le contenu du fichier src/Interface/ConfigInterface.php. (Visible sur le dépôt git.)
Pour accéder à une de ces valeurs, il suffit de faire App::config()->cacheRoot();
.
Attention
Là où souvent il fallait tester la présence d'une valeur, par exemple :
if (defined('DC_DEFAULT_TPLSET')) { $tpl = DC_DEFAULT_TPLSET; }
Désormais cette valeur existe toujours, on peut éventuellement tester si elle est vide :
if (!empty(App::config()->defaultTplset())) { }
.
La discussion continue ailleurs
URL de rétrolien : https://dotclear.watch/trackback/439