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

This is an old revision of the document!


secom.io

structure du projet

Le projet comporte les répertoires suivants :

secom.io
├── cli [ **Scripts lancés en ligne de commande** ]
│   ├── directus.php
│   ├── myzen.php
│   └── test_myzen.php
├── config [ **Fichiers de configuration des différentes entités sur les différents environnements** ]
│   ├── myzen.cfg.php
│   └── myzen.test.cfg.php
├── db [ **Fichiers de définition des collections/items** ]
│   └── myzen
│       ├── collections
│       │   ├── chyro_installs.json
│       │   ├── chyro_programs.json
│       │   ├── directus_relations.json
│       │   ├── languages.json
│       │   ├── programs.json
│       │   └── programs_translations.json
│       └── items
│           └── languages.json
├── directus [ **Copie de travail Git de Directus** ]
│   └── ...
├── directus.secom.io
│   └── config
├── env [ **Fichiers propres aux différents environnements** ]
│   ├── secom.io
│   │   ├── apache
│   │   │   └── apache24.conf
│   │   ├── config [ **directus/config contient des symlinks vers les fichiers de ce répertoire** ]
│   │   │   ├── api.gltv.php
│   │   │   ├── api.melodya.php
│   │   │   ├── api.melody.php
│   │   │   ├── api.museum.php
│   │   │   ├── api.myzen.php
│   │   │   └── api.php
│   │   └── public
│   │       └── admin [ **apache sert ces fichier comme s'ils étaient dans directus/public/admin** ]
│   │           ├── gltv.config.js
│   │           ├── melodya.config.js
│   │           ├── melody.config.js
│   │           ├── museum.config.js
│   │           ├── myzen.config.js
│   │           └── secom.config.js
│   └── test.secom.io
│       └── ...
├── exemples
│   └── ...
├── exports
│   └── ...
├── hooks [ **Contient le code des hooks Directus (inclus automatiquement d'après leur nom) ** ]
│   ├── find_hooks.php
│   └── myzen
│       └── actions
│           ├── item.create.php
│           └── item.delete.programs.php
├── inc [ **Classes utilisant les APIs de Directus, Chyro...** ]
│   ├── api.class.php
│   ├── bot_abstract.class.php
│   ├── bot_directus.class.php
│   ├── bot_entity.class.php
│   ├── bot_myzen.class.php
│   ├── chyro.class.php
│   ├── directus.class.php
│   ├── directus_gltv.class.php
│   ├── directus_myzen.class.php
│   └── myzen.class.php
├── sites [ **Sites annexes** ]
│   └── directus.secom.io [ **Site permettant d'explorer les collections d'un instance Directus**]
│       ├── apache
│       │   └── apache24.conf
│       └── www
│           └── index.php
└── tests
    ├── simpletest [ **Framework de test unitaires** ]
    │   └── ...
    └── unit [ **Test unitaires** ]
        ├── api.test.php
        ├── directus.test.php
        └── ...

Connection aux API

Les APIs Chyro et Directus ont quelques points communs : en particulier elles fonctionnent en REST et retournent principalement du JSON. Les classes PHP développées pour utiliser ces APIs tentent de mutualiser le code des déverses fonctionnalités de ces API au travers du principe d'héritage. De même, les particularités des différentes entités utilisant Chyro pourront se retrouver dans des classes spécifique dérivant d'une même classe mère contenant un socle commun. Au fur et à mesure des développement, certaines méthodes seront sans doute amenées à être plus ou moins 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 :

API
├─ Chyro
└─ Directus
   └─ Directus_Myzen
   

Classe API

Cette classe gère principalement les connections HTTP avec les APIs à travers la librairie Curl. Elle gère également la récupération des données dans les objets PHP ou Json.

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 propre à la classe fille.

Le paramètre 'host' est obligatoire.

Mode debug

Si le tableau passé en paramètre au constructeur contient

debug => true

alors le mode débug sera activé pour l'objet.

Principales méthodes
cfg($key, [$needed = false])

Permet d'accéder aux paramètres de configurations passés au constructeur. Si le paramètre n'existe pas, la méthode renvoie NULL. Si de plus celle-ci a été appelée avec le paramètre $needed à TRUE, une erreur sera produite.

add_get_params(&$url)

Cette méthode ajoute des paramètres GET à une $url passée en paramètres

curl($params)

Cette méthode permet d'effectuer une requête Curl sur l'API accessible sur le serveur correspondant au paramètre 'host'.

Les paramètres que l'on peut passer à la méthode par le tableau associatif $params sont les suivants :

  • url ⇒ (string) (l'URL qui complète le paramètre 'host' défini dans le constructeur)
  • ? ⇒ (array) (tableau associatif des paramètres GET qui seront ajoutés à l'URL)
  • head ⇒ (bool) (si défini, la requête HTTP sera de type HEAD)
  • post ⇒ (array) (requête HTTP de type POST envoyant les données contenues dans le tableau)
  • patch ⇒ (array) (idem que 'post' mais avec une requête HTTP de type PATCH)
  • delete ⇒ (bool) (si défini, la requête HTTP sera de type DELETE)
  • format ⇒ (string) (si format=json, un header “Content-Type: application/json” sera défini, et les données passées en POST ou en PATCH sont encodées en JSON plutôt que d'utiliser la méthode http_build_query.
  • cookie ⇒ (array) (les données du tableau associatif passé en paramètre seront définies en tant que cookie)

Si le mode debug est activé lors de l'instanciation de l'objet, les requêtes et réponses Curl faites à l'API

Méthodes statiques

Deux méthodes statiques de cette classe sont utilent pour le débuggage :

API::inspect($var, [$fold_limit=9])

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. Lorsque ces objets comportent des tableaux, ceux-ci sont tronqués pour une informations plus condensées, le nombre d'élements étant toutefois indiqué. Le paramètre optionnel $fold_limit permet d'afficher plus ou moins d'éléments dans un tableau. On peux le rendre égal à INF pour tout afficher. De même les chaînes de caratères trop longues seront tronquées, laissant apparaître le début et la fin de la chaîne, ainsi que le nombre de caractères manquants.

API::dump($var, [$fold_limit=9])

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

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.

Instantiation

L'objet se construit de la façon suivante :

$chyro = new Chryro($params);

où $params est un tableau associatif contenant obligatoirement les clés suivantes :

  • host ⇒ (string) (URL de l'API Chyro)
  • user ⇒ (string) (Utilisateur Chyro)
  • password ⇒ (string) (Mot de passe de l'utilisateur)

En outre, le tableau passé au constructeur peut contenir les clés optionnelles suivantes :

  • phpsessid ⇒ (string) (Pour réutiliser une session PHP. Vide par défaut.)
  • auto_login ⇒ (bool) (la méthode 'login' sera automatiquement appelée au premier appel de la méthode 'get'. TRUE par défaut)
  • 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
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.

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.)

get($action, $key = null, $params = [], $format = "/format/json")

Cette méthode permet de faire une requête générique sur l'API Chyro. Le paramètre 'action' correspond à l'action (endpoint) de l'API Chyro. Le paramètre 'key' permet

get_program

get_programs

Classe Directus

Cette classe comporte les fonctionnalités propres à l'API Directus et c

start.1567523889.txt.gz · Last modified: 2019/09/03 15:18 by 188.165.109.105