#Informations de guilde
Ce projet consiste en une application destinée aux guildes pour le jeu Ryzom.
Les fonctionnalités proposées sont:
- Stockage des clés API en base de données
- Affichage du contenu des Hall de Guilde
- Tri et recherches dans les inventaires
- Listes des compétences des membres
##Mettre en place le projet
Premièrement, vous aurez besoin de Composer.
curl -sS https://getcomposer.org/installer | php
Téléchargez le présent repository, ouvrez un terminal dans le dossier et installez le projet en exécutant la commande
php composer.phar install
Enfin, il faut mettre en place un nouveau VirtualHost Apache.
sudo vim /etc/apache2/sites-available/fileName
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/path/to/directory/public"
ServerName domain.com
ServerAlias www.domain.com
<Directory "/path/to/directory/public">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
sudo a2ensite fileName
L'application est à présent disponible en local.
De plus pour le bon fonctionnement, vous avez besoin d'une base de données mysql active. Vous pouvez installer phpmyadmin pour gérer la base de données par exemple.
Une fois que vous avez installé votre gestionnaire de base de données préféré, créez une nouvelle base de données et exécutez le script suivant pour créer les différentes tables.
DROP TABLE IF EXISTS `gi_GeneralConfig`;
CREATE TABLE `gi_GeneralConfig` (
`RYAPI_APP_KEY` varchar(41) NOT NULL,
`RYAPI_APP_URL` text NOT NULL,
`RYAPI_APP_MAXAGE` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `RYAPI_APP_KEY` (`RYAPI_APP_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `gi_Guilds`;
CREATE TABLE `gi_Guilds` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`apiKey` varchar(41) DEFAULT NULL,
`mainGuildId` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `gi_Homins`;
CREATE TABLE `gi_Homins` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`apiKey` varchar(41) DEFAULT NULL,
`guildId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Avant d'aller plus loin il vous faut vous connecter sur l'application Ryzom, et ajouter une nouvelle app dans l'AppZone. Entrez un nom, indiquez l'url http://127.0.0.1/ryzom/app
, copiez la clé api et enregistrez.
Enfin, revenez sur la base de données et initialisez la configuration générale:
INSERT INTO `gi_GeneralConfig` (
`RYAPI_APP_KEY` ,
`RYAPI_APP_URL` ,
`RYAPI_APP_MAXAGE`
)
VALUES (
'yourAppKey', 'yourAppUrl/ryzom/app', '0'
);
Une fois que vous avez votre base de données, il reste une dernière étape, à savoir, configurer la connexion de l'application à la base de données. Pour cela, il suffit de changer les informations de connexion dans le fichier App/AbstractResource.php:38
.
$connectionOptions = array(
'driver' => 'pdo_mysql',
'host' => '...',
'dbname' => '...',
'user' => '...',
'password' => '...'
);
Enjoy.
##Je comprends rien à ton code!
Quelques explications s'imposent...
###Arborescence du projet
- guildinformations
App/
: php de l'applicationEntity/
: définition des objets, avec mapping pour l'ORMGeneralConfig.php
: objet encapsulant les configurations de l'applicationGuild.php
: objet représentant une guildeHomin.php
: objet représentant un homin
Repository/
: les requêtes sql customs sur les entités sont définies dans ce dossierResource/
: CRUD pour chaque entitéTwigExtension/
: fonctions personnelles utilisées dans TwigAbstractResource.php
: connexion de l'ORM à la base de donnéesLogger.php
: classe définissant le logger de l'applicationRouter.php
: définition des routes de l'applicationUtilities.php
: fonctions utiles
lang/
: contient tous les textes utilisés dans l'application, pour chaque langage supportélibs/
: les différentes librairies utilisées sont dans ce dossierlogs/
: les logs seront écrits dans ce dossierpublic/
: dossier racine du site webcss/
: ici les feuilles de style cssimages/
: ici les images.htaccess
: règles pour une application Slimindex.php
: point d'entrée
templates/
: contient toutes les vues de l'applicationcache/
: ce dossier est utilisé par le moteur de templates (requiert les droits d'écriture)ingame/
: on trouve ici les vues utilisées pour l'affichage dans le jeu*.html.twig
: les vues pour l'affichage depuis le navigateur web
LICENSE
: licenseREADME.md
: le présent fichiercomposer.json
: les dépendances du projetmigrate-database-v1-to-v2.sql
: script à utiliser pour migrer la base de données de la version 1 à la v2
###Documentations
L'application utilise SlimPHP pour servir le contenu (routing, middleware).
L'ORM utilisé est Doctrine pour gérer la persistance des données.
Le moteur de template pour générer les vues est Twig.