Site Tools


Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2019/09/04 15:32]
188.165.109.105
start [2019/10/15 15:10] (current)
188.165.109.105
Line 6: Line 6:
   ├── cli [ **Scripts lancés en ligne de commande** ]   ├── cli [ **Scripts lancés en ligne de commande** ]
   │   ├── directus.php   │   ├── directus.php
-  │   ├── myzen.php +  │   ├── myzen.prod.php 
-  │   └── ​test_myzen.php+  │   └── ​myzen.dev.php
   ├── config [ **Fichiers de configuration des différentes entités sur les différents environnements** ]   ├── config [ **Fichiers de configuration des différentes entités sur les différents environnements** ]
   │   ├── myzen.cfg.php   │   ├── myzen.cfg.php
Line 68: Line 68:
   │   ├── directus_myzen.class.php   │   ├── directus_myzen.class.php
   │   └── myzen.class.php   │   └── myzen.class.php
 +  ├── interfaces [ **Contient les sources des interfaces custom** ]
 +  ├── pages [ **Contient les sources des pages custom** ]
   ├── sites [ **Sites annexes** ]   ├── sites [ **Sites annexes** ]
   │   └── directus.secom.io [ **Site permettant d'​explorer les collections d'un instance Directus**]   │   └── directus.secom.io [ **Site permettant d'​explorer les collections d'un instance Directus**]
Line 89: Line 91:
  
 Au fur et à mesure des développements,​ certaines méthodes seront sans doute amenées à être déplacées entre les parties communes ou plus spécifiques du code. Au fur et à mesure des développements,​ certaines méthodes seront sans doute amenées à être déplacées entre les parties communes ou plus spécifiques du code.
- 
- 
-===== Principales classes ===== 
  
 Les principales classes de connection aux API s'​organisent à travers le schéma d'​héritage suivant : Les principales classes de connection aux API s'​organisent à travers le schéma d'​héritage suivant :
Line 100: Line 99:
      ​└─ Directus_Myzen      ​└─ Directus_Myzen
            
-==== Classe API ====+===== Classe API =====
  
 Cette classe gère principalement les connections HTTP avec les APIs à travers la librairie Curl. Cette classe gère principalement les connections HTTP avec les APIs à travers la librairie Curl.
Line 106: Line 105:
  
  
-=== Instanciation ===+==== Instanciation ​====
  
 Cette classe n'est pas faite pour être instancée directement. Toutefois, il est prévu que son constructeur soit utilisé par les classes qui en dérivent. Celui-ci prend en argument un tableau associatif contenant les paramètres de configuration propres à la classe fille. Cette classe n'est pas faite pour être instancée directement. Toutefois, il est prévu que son constructeur soit utilisé par les classes qui en dérivent. Celui-ci prend en argument un tableau associatif contenant les paramètres de configuration propres à la classe fille.
Line 113: Line 112:
  
  
-=== Mode debug ===+==== Mode debug ====
  
 Si le tableau passé en paramètre au constructeur contient Si le tableau passé en paramètre au constructeur contient
Line 122: Line 121:
  
  
-=== Principales méthodes ===+==== Principales méthodes ​====
  
  
-== cfg($key, [$needed = false]) ==+=== cfg($key, [$needed = false]) ​===
  
 Permet d'​accéder aux paramètres de configurations passés au constructeur. Permet d'​accéder aux paramètres de configurations passés au constructeur.
Line 131: Line 130:
  
  
-== add_get_params(&​$url) ==+=== add_get_params(&​$url) ​===
   ​   ​
 Cette méthode ajoute des paramètres GET à une $url passée en paramètres. Cette méthode ajoute des paramètres GET à une $url passée en paramètres.
   ​   ​
  
-== curl($params) ==+=== curl($params) ​===
   ​   ​
 Cette méthode permet d'​effectuer une requête Curl sur l'API accessible sur le serveur correspondant au paramètre '​host'​. Cette méthode permet d'​effectuer une requête Curl sur l'API accessible sur le serveur correspondant au paramètre '​host'​.
Line 154: Line 153:
  
  
-== from_object($object,​ $key) ==+=== from_object($object,​ $key) ===
   ​   ​
 Cette méthode permet de récupérer une donnée dans l'​objet (ou le tableau associatif) passé en paramètre. Cette méthode permet de récupérer une donnée dans l'​objet (ou le tableau associatif) passé en paramètre.
Line 164: Line 163:
  
  
-== from_json($json,​ $key) ==+=== from_json($json,​ $key) ===
   ​   ​
 Même fonctionnement que from_object,​ mais à partir d'une chaîne au format JSON. Même fonctionnement que from_object,​ mais à partir d'une chaîne au format JSON.
  
  
-== Méthodes statiques ==+==== Méthodes statiques ​====
  
 Deux méthodes statiques de cette classe sont utiles pour le débuggage : Deux méthodes statiques de cette classe sont utiles pour le débuggage :
  
  
-== API::​inspect($var,​ [$fold_limit]) ==+=== API::​inspect($var,​ [$fold_limit]) ​===
   ​   ​
 Cette méthode permet de retourner une chaine de caractères représentant un objet PHP issu du JSON reçu en réponse des APIs. Cette méthode permet de retourner une chaine de caractères représentant un objet PHP issu du JSON reçu en réponse des APIs.
Line 182: Line 181:
  
  
-== API::​dump($var,​ [$fold_limit]) ==+=== API::​dump($var,​ [$fold_limit]) ​===
   ​   ​
 Cette méthode affiche le résultat la méthode inspect sur la sorite standard au lieu de le retourner dans une chaîne de caractères. Cette méthode affiche le résultat la méthode inspect sur la sorite standard au lieu de le retourner dans une chaîne de caractères.
  
  
-==== Classe Chyro ====+===== Classe Chyro =====
  
 Cette classe comporte les fonctionnalités propres à l'API Chyro. Cette classe comporte les fonctionnalités propres à l'API Chyro.
 Si de nouvelles instances de Chyro doivent être prises en charge et que leur API s'​avère différente,​ il faudra sans doute dériver cette classe pour rendre compte de ces spécificités. Si de nouvelles instances de Chyro doivent être prises en charge et que leur API s'​avère différente,​ il faudra sans doute dériver cette classe pour rendre compte de ces spécificités.
  
-=== Instantiation ===+==== Instantiation ​====
  
 L'​objet se construit de la façon suivante : L'​objet se construit de la façon suivante :
Line 210: Line 209:
   * auto_reconnect => (bool) (En cas de réponse vide de l'API Chyro obtenue par la méthode '​get',​ une tentative de reconnection a lieu, avant que la méthode '​get'​ soit invoquée de nouveau.)   * auto_reconnect => (bool) (En cas de réponse vide de l'API Chyro obtenue par la méthode '​get',​ une tentative de reconnection a lieu, avant que la méthode '​get'​ soit invoquée de nouveau.)
  
-=== Principales méthodes ===+==== Principales méthodes ​====
  
-== login() ==+=== login() ​===
  
 Permet de se connecter à l'API Chyro, récupère et enregistre l'id de session PHP qui servira aux requêtes ultérieures. Permet de se connecter à l'API Chyro, récupère et enregistre l'id de session PHP qui servira aux requêtes ultérieures.
  
-== logout() ==+=== logout() ​===
  
 Appelle le endpoint auth/​deltoken de l'API Chyro, censée invalider le token (ne semble pas fonctionner : au départ, un paramètre de configuration auto_logout était disponible, déclenchant l'​appel automatique de cette méthode dans le destructeur de l'​objet,​ mais ce code a été retiré car il semblait inutile.) Appelle le endpoint auth/​deltoken de l'API Chyro, censée invalider le token (ne semble pas fonctionner : au départ, un paramètre de configuration auto_logout était disponible, déclenchant l'​appel automatique de cette méthode dans le destructeur de l'​objet,​ mais ce code a été retiré car il semblait inutile.)
  
  
-== get($action,​ $key = null, $params = [], $format = "/​format/​json"​) == +=== get($action,​ $key = null, $params = [], $format = "/​format/​json"​) ===
-166ee015+
  
 Cette méthode permet de faire une requête générique sur l'API Chyro. Cette méthode permet de faire une requête générique sur l'API Chyro.
Line 230: Line 228:
 Le paramètre $format correspond au format tel que spécifié par l'API Chyro (pour le moment uniquement testé avec "/​format/​json"​) Le paramètre $format correspond au format tel que spécifié par l'API Chyro (pour le moment uniquement testé avec "/​format/​json"​)
  
-== get_programs ==+=== get_programs ​===
  
 Récupère l'​ensemble des programmes classés par ordre croissants de date d'​update. Récupère l'​ensemble des programmes classés par ordre croissants de date d'​update.
  
   ​   ​
-== get_program($id_program) ==+=== get_program($id_program) ​===
  
 Récupère un programme d'​après son ID. Récupère un programme d'​après son ID.
  
  
-== create_program($fields) ==+=== create_program($fields) ​===
  
 Crée un programme avec les champs du tableau associatif passé en paramètre. Crée un programme avec les champs du tableau associatif passé en paramètre.
  
  
-== update_program($fields) ==+=== update_program($fields) ​===
  
 Met à jour un programme avec les champs du tableau associatif passé en paramètre. Met à jour un programme avec les champs du tableau associatif passé en paramètre.
Line 251: Line 249:
  
  
-==== Classe Directus ====+===== Classe Directus ​=====
  
 Cette classe comporte les fonctionnalités propres à l'API Directus et communes aux différentes entités. Cette classe comporte les fonctionnalités propres à l'API Directus et communes aux différentes entités.
  
-=== Instantiation ===+==== Instantiation ​====
  
 L'​objet se construit de la façon suivante : L'​objet se construit de la façon suivante :
Line 274: Line 272:
  
  
-=== Principales méthodes ===+==== Principales méthodes ​====
  
-== login() ==+=== login() ​===
  
 Appelle connect() si l'​objet n'a pas de token. Appelle connect() si l'​objet n'a pas de token.
  
  
-== connect() ==+=== connect() ​===
  
 Appelle get_token() et stocke le résultat dans l'​objet. Appelle get_token() et stocke le résultat dans l'​objet.
  
  
-== get_token() ==+=== get_token() ​===
  
 Obtient un nouveau token. Obtient un nouveau token.
  
  
-== get($endpoint,​ $key = null, $params = []) ==+=== get($endpoint,​ $key = null, $params = []) ===
  
 Cette méthode permet de faire une requête générique sur l'API Directus. Cette méthode permet de faire une requête générique sur l'API Directus.
Line 299: Line 297:
  
  
-== get_first($endpoint,​ $key = null, $params = []) ==+=== get_first($endpoint,​ $key = null, $params = []) ===
  
 Idem que '​get'​ mais en ajoutant automatiquement ​ Idem que '​get'​ mais en ajoutant automatiquement ​
Line 306: Line 304:
  
  
-== get_all($endpoint,​ $key = null, $params = []) ==+=== get_all($endpoint,​ $key = null, $params = []) ===
  
 Par défaut, les résultats de type liste renvoyés par Directus sont limités en nombre d'​items. Par défaut, les résultats de type liste renvoyés par Directus sont limités en nombre d'​items.
Line 313: Line 311:
  
  
-== get_id($endpoint,​ $data) ==+=== get_id($endpoint,​ $data) ​===
  
 Récupère la valeur du champ '​id'​ de ce qui serait retourné par un '​get_first',​ le paramètre $data permettant de définir des filtres. Récupère la valeur du champ '​id'​ de ce qui serait retourné par un '​get_first',​ le paramètre $data permettant de définir des filtres.
Line 319: Line 317:
  
  
-== save($collection,​ $object) ==+=== save($collection,​ $object) ​===
  
 Permet de créer ou modifier un item dans une collection. Permet de créer ou modifier un item dans une collection.
Line 326: Line 324:
  
  
-== save_with_strcut($collection,​ $object) ==+=== save_with_strcut($collection,​ $object) ​===
  
 Idem que la méthode '​save',​ mais en réalisant une troncature des chaînes de caractères contenues dans $object en fonction de la longueur des champs retournés par la méthode '​fields_lengths'​ Idem que la méthode '​save',​ mais en réalisant une troncature des chaînes de caractères contenues dans $object en fonction de la longueur des champs retournés par la méthode '​fields_lengths'​
  
  
-== save_if_unique($collection,​ $object = [], $save_method = "​save"​) ==+=== save_if_unique($collection,​ $object = [], $save_method = "​save"​) ​===
  
 Idem que la méthode '​save',​ mais capture une éventuelle erreur Directus de type "​Duplicate Item" et ne fait rien dans ce cas. Cette méthode permet de créer un item seulement si il n'​existe pas déjà, puis éventuellement de le modifier (tant que les contraintes d'​unicités des champs sont respectées). Idem que la méthode '​save',​ mais capture une éventuelle erreur Directus de type "​Duplicate Item" et ne fait rien dans ce cas. Cette méthode permet de créer un item seulement si il n'​existe pas déjà, puis éventuellement de le modifier (tant que les contraintes d'​unicités des champs sont respectées).
Line 338: Line 336:
  
  
-== fields_lengths($collection) ==+=== fields_lengths($collection) ​===
  
 Cette méthode renvoie un tableau associatif contenant les longeurs des champs d'une collection. Cette méthode renvoie un tableau associatif contenant les longeurs des champs d'une collection.
Line 344: Line 342:
  
  
-== primary_key($collection) ==+=== primary_key($collection) ​===
  
 Cette méthode retourne le nom du champ de type '​primary_key'​ (souvent '​id'​ mais il y a des exceptions, comme pour la tble des langues.) Cette méthode retourne le nom du champ de type '​primary_key'​ (souvent '​id'​ mais il y a des exceptions, comme pour la tble des langues.)
Line 350: Line 348:
  
  
-== collections() ==+=== collections() ​===
  
 Retourne la liste des collections,​ en excluant les collections "​internes"​ de directus (préfixées par "​directus_"​). Retourne la liste des collections,​ en excluant les collections "​internes"​ de directus (préfixées par "​directus_"​).
  
  
-== relations() ==+=== relations() ​===
  
 Retourne la liste des relations entre collections. Retourne la liste des relations entre collections.
  
  
-== related($attr,​ $params) ==+=== related($attr,​ $params) ​===
  
 Récupère la collection correspondant à l'​attribut $attr, dans la relation spécifiée par $params. Récupère la collection correspondant à l'​attribut $attr, dans la relation spécifiée par $params.
Line 373: Line 371:
  
  
-== import_collections($dir) ==+=== import_collections($dir) ​===
  
 Permet d'​importer les collections définies par les fichiers JSON contenus dans $dir. Permet d'​importer les collections définies par les fichiers JSON contenus dans $dir.
Line 379: Line 377:
  
  
-== import_items($collection,​ $dir) ==+=== import_items($collection,​ $dir) ===
  
 Recherche un fichier "​$collection.json"​ dans $dir et réalise un '​save_if_unique'​ sur tous les éléments du tableau JSON contenu dans ce fichier pour la collection donnée. Recherche un fichier "​$collection.json"​ dans $dir et réalise un '​save_if_unique'​ sur tous les éléments du tableau JSON contenu dans ce fichier pour la collection donnée.
  
  
-== delete_item($collection,​ $id) ==+=== delete_item($collection,​ $id) ===
  
 Supprime de la collection $collection l'item correspondant à l'id $id. Supprime de la collection $collection l'item correspondant à l'id $id.
  
  
-== delete_items($collection,​ [$filters]) ==+=== delete_items($collection,​ [$filters]) ​===
  
 Supprime tous les élements d'une collection. Supprime tous les élements d'une collection.
Line 396: Line 394:
  
  
-==== Classe Directus_Myzen ====+===== Classe Directus_Myzen ​=====
  
-=== Pricipales méthodes ===+==== Pricipales méthodes ​====
  
-== get_chyro_install_id($ref) ==+=== get_chyro_install_id($ref) ​===
  
 Récupère l'id d'une chyro_install en fonction de la référence passée en paramètre. Récupère l'id d'une chyro_install en fonction de la référence passée en paramètre.
  
  
-== create_or_get_chyro_install_id($ref) ==+=== create_or_get_chyro_install_id($ref) ​===
  
 Crée une install chyro de référence $ref si elle n'​existe pas déjà, et retourne son ID. Crée une install chyro de référence $ref si elle n'​existe pas déjà, et retourne son ID.
  
  
-== get_chyro_programs([$fields]) ==+=== get_chyro_programs([$fields]) ​===
  
 Récupère l'​ensemble des chyro_programs. Récupère l'​ensemble des chyro_programs.
Line 417: Line 415:
  
  
-== get_chyro_program($id) ==+=== get_chyro_program($id) ​===
  
 Récupère un chyro_program en fonction de l'ID spécifié. Récupère un chyro_program en fonction de l'ID spécifié.
  
  
-== get_program($id) ==+=== get_program($id) ​===
  
 Récupère un program en fonction de l'ID spécifié. Récupère un program en fonction de l'ID spécifié.
  
  
-===== Fonctionnalités CLI =====+====== Fonctionnalités CLI ======
  
 Un certain nombre de fonctionnalités sont disponibles à partir de scripts exécutables en ligne de commande. Ceux-ci sont rangés dans le répertoire '​cli'​. Un certain nombre de fonctionnalités sont disponibles à partir de scripts exécutables en ligne de commande. Ceux-ci sont rangés dans le répertoire '​cli'​.
Line 435: Line 433:
  
  
-==== Script cli/​directus.php ====+===== Script cli/​directus.php ​=====
  
 Ce script execute les méthodes de la classe Bot_Directus (dédinie dans le fichier inc/​bot_directus.php). Ce script execute les méthodes de la classe Bot_Directus (dédinie dans le fichier inc/​bot_directus.php).
 Ce bot contient les méthodes maintenance de l'​installation de Directus. Ce bot contient les méthodes maintenance de l'​installation de Directus.
  
-=== Méthodes de Bot_Directus ===+==== Méthodes de Bot_Directus ​====
  
-== php cli/​directus.php --upgrade ==+ 
 +=== php cli/​directus.php --install === 
 + 
 +Lance l'​installation de Directus et effectue les tâches de la méthode update. 
 + 
 + 
 +=== php cli/​directus.php --update === 
 + 
 +Cette commande effectue : 
 +- un git pull du dépot principal 
 +- la création dans Directus les liens symboliques vers les fichiers de configuration PHP contenus dans les dossiers '​config'​ du répertoire '​env'​ 
 +- la compilation des interfaces et des pages custom et la création des liens symboliques correspondants dans Directus. 
 + 
 + 
 +=== php cli/​directus.php --upgrade ​===
  
 Cette commande permet de mettre à jour Directus en effectuant les opérations suivantes : Cette commande permet de mettre à jour Directus en effectuant les opérations suivantes :
Line 450: Line 462:
  
  
-== php cli/​directus.php --symlink_config == +===== Script cli/​myzen.php ​=====
- +
-Cette commande permet de créer dans Directus les liens symboliques vers les fichiers de configuration PHP contenus dans les dossiers '​config'​ du répertoire '​env'​. +
-Cette commande doit être lancée lorsqu'​un nouvel environnement ou une nouvelle entité Directus est crée. +
- +
- +
-=== Script cli/​myzen.php ===+
  
 Ce script éxecute les méthodes de Bot_Myzen qui étend les fonctionnalités de Bot_Entity (qui contiendra les fonctionnalités communes aux différentes entités). Ce script éxecute les méthodes de Bot_Myzen qui étend les fonctionnalités de Bot_Entity (qui contiendra les fonctionnalités communes aux différentes entités).
  
-Le script ​cli/​test_myzen.php utilise le même Botmais avec la configuration propre à api.myzen.test.secom.io au lieu de api.myzen.secom.io.+Le script ​se décline en réalité selon les environnements en myzen.prod.php, myzen.dev.php, etc. 
 +Pour simplifier, nous utiliserons ci-dessous cli/myzen.php.
  
 La plupart des méthodes peuvent être lancées en rajoutant l'​option --debug qui rajoute alors automatiquement la propriété debug => true aux configurations utilisées, ce qui affiche par exemple sur la sortie standard les requêtes et réponses Curl de communication à travers les APIs Directus et Chyro. La plupart des méthodes peuvent être lancées en rajoutant l'​option --debug qui rajoute alors automatiquement la propriété debug => true aux configurations utilisées, ce qui affiche par exemple sur la sortie standard les requêtes et réponses Curl de communication à travers les APIs Directus et Chyro.
  
  
-=== Méthodes de Bot_Entity ===+==== Méthodes de Bot_Entity ​====
  
-== php cli/​myzen.php --install ==+=== php cli/​myzen.php --install ​===
  
 Installe la base de données (collections et items) d'​après les fichiers du répertoire db. Installe la base de données (collections et items) d'​après les fichiers du répertoire db.
  
  
-== php cli/​myzen.php --show_collections ==+=== php cli/​myzen.php --show_collections ​===
  
 Affiche le liste des collections. Affiche le liste des collections.
  
  
-== php cli/​myzen.php --empty_collection --collection=<​collection>​ ==+=== php cli/​myzen.php --empty_collection --collection=<​collection> ​===
  
 Permet de vider une collection. Permet de vider une collection.
  
  
-=== Méthodes de Bot_Myzen ===+==== Méthodes de Bot_Myzen ​====
  
-== php cli/​myzen.php --import_chyro_programs ==+=== php cli/​myzen.php --import_chyro_programs ​===
  
 Importe les chyro_programs depuis les instances de Chyro configurées. (Utilisé dans le processus de synchro.) Importe les chyro_programs depuis les instances de Chyro configurées. (Utilisé dans le processus de synchro.)
  
  
-== php cli/​myzen.php --import_programs ==+=== php cli/​myzen.php --import_programs ​===
  
 Importe les programs à partir des chyro_programs. (Utilisé dans le processus de synchro.) Importe les programs à partir des chyro_programs. (Utilisé dans le processus de synchro.)
start.1567611158.txt.gz · Last modified: 2019/09/04 15:32 by 188.165.109.105