Documentation
I. Introduction
Introduits dans Xtense 2, les appels (nommés Callbacks en anglais) sont l'envoi des données reçues par Xtense aux mods de OGSpy. A chaque réception de données par le mod Xtense, il appellera les mods enregistrés pour leur envoyer les données.
Lors de cet appel, Xtense inclut un fichier spécial du mod, dans lequel il exécutera une fonction définie par l'appel.
II. Enregistrement
L'enregistrement est nécessaire pour recevoir des appels. A chaque enregistrement correspond un type d'appel et une fonction, vous ne pouvez pas définir pour un même appel plusieurs types de données à renvoyer.
Structure de la table MySQL stockant ces appels (
`prefix des tables` xtense_callbacks
- `id` int(3) : id de l'appel
- `mod_id` int(3) : id de votre mod
- `function` varchar(30) : nom de la fonction à appeler
- `type` enum() : type d'appel.
- `active` int(1) : determine le status de l'appel
Le champ `id` possédant une auto incrémentation, il ne faut pas le mettre dans la requête tout comme le champ `active` qui est par défaut à 1.
Lors d'un ajout, vérifiez si un enregistrement identique n'existe pas déjà dans la table.
Exemple
INSERT INTO ogspy_xtense_callbacks (mod_id, function, type) VALUES (1, 'prout_galaxy_import', 'system')
III. Fichiers
1. Structure des fichiers
Lors des appels, Xtense inclura le fichier _xtense.php qui doit être dans le dossier de votre mod.
Ce fichier doit respecter une certaine hiérarchie :
- La verification de la constante IN_SPYOGAME pour éviter les includes non sécurisées
- La présence d'une variable, nommée $xtense_version qui contiendra la version minimum du plugin pour laquelle ce fichier est correct. Si la révision du plugin Xtense est plus vielle que celle de votre fichier, l'appel sera ignoré
- Les fonctions appelées doivent commencer par le nom de votre mod pour éviter tout problème avec des fonctions définies plusieurs fois (ex: import_system qui peut être définie dans deux mods différents)
- Un nombre d'includes le plus faible possible pour éviter une surcharge trop importante mais aussi pour éviter des problèmes de surdéfinition (fonctions, constantes)
2. Contexte de développement
Il faut savoir que Xtense est maintenant totalement dissocié de OGSpy, aucun fichier de OGSpy n'est inclus (si ce n'est id.php). Donc toutes les fonctions, classes, constantes disponibles sont celles de Xtense. A noter que vos fichiers sont inclus depuis une fonction de Xtense (comme les mods). Voici une liste des variables globales utiles aux mods :
- $server_config : Contient toutes les directives de configuration de l'OGSpy contenues dans la table ogspy_config
- $user : Tableau avec les informations sur l'utilisateur actuellement connecté (pseudo, id, grand [tableau des droits pour Xtense (valeur 0 ou 1), index: system, ranking, empire, messages])
- $db : Instance de la classe MySQL utilisée dans Xtense
- $database : Tableau contenant les codes MySQL de l'espace personnel des joueurs
Structure$database = array( 'buildings' => array('M', 'C', 'D', 'CES', 'CEF', 'UdR', 'UdN', 'CSp', 'HM', 'HC', 'HD', 'Lab', 'Ter', 'Silo', 'BaLu', 'Pha', 'PoSa'), 'labo' => array('Esp', 'Ordi', 'Armes', 'Bouclier', 'Protection', 'NRJ', 'Hyp', 'RC', 'RI', 'PH', 'Laser', 'Ions', 'Plasma', 'RRI', 'Graviton', 'Expeditions'), 'defense' => array('LM', 'LLE', 'LLO', 'CG', 'LP', 'AI', 'PB', 'GB', 'MIC', 'MIP'), 'fleet' => array('PT', 'GT', 'CLE', 'CLO', 'CR', 'VB', 'VC', 'RE', 'SE', 'BM', 'SS', 'DE', 'EDLM', 'TR') );
IV. Utilisation de MySQL
Dans Xtense la classe MySQL utilisée diffère de celle dans OGSpy pour des questions pratiques (beaucoup plus de fonctionnalités - Débogage, journalisation ...). Voici une brève description de son utilisation.
1. Classe
Propriétés
Lien de la connexion mysql, utile pour utiliser des fonctions non implémentées directement dans la classe avec plusieurs connexions à la fois
Méthodes
Exécute la requête $query puis retourne le résultat
Exécute la requête $query puis retourne true si il y a au moins 1 enregistrement retourné, sinon false
Si aucune requête n'est spécifiée, il sera utilisé le résultat de la dernière
D'un ordre général cette fonction est une extension de mysql_fetch_assoc. Si une requête est placée en paramètre elle l'effectuera, sinon elle utilisera le résultat de la dernière requête effectuée.
Elle place dans un tableau bidimensionnel toutes les données de la requête. Le premier est un tableau numérique contenant ensuite le tableau des données avec comme index le nom des champs (mysql_fetch_assoc)
Exemple de données renvoyées
array(3) { [0]=> array(4) { ["system"]=> string(1) "1" ["ranking"]=> string(1) "1" } [1]=> array(4) { ["system"]=> string(1) "0" ["ranking"]=> string(1) "1" } [2]=> array(4) { ["system"]=> string(1) "1" ["ranking"]=> string(1) "1" } }
Si aucune requête n'est spécifiée, il sera utilisé le résultat de la dernière
Retourne le nombre d'enregistrement retournés par la requête
Si aucune requête n'est spécifiée, il sera utilisé le résultat de la dernière
Retourne l'ID du dernier enregistrement effectué
Retourne le nombre d'enregistrements affectés par la dernièr requête