Ce projet consiste en une application destinée aux guildes pour le jeu Ryzom.
Les fonctionnalités proposées sont:
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 mail@domain.com
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.
Quelques explications s'imposent...
App/
: php de l'applicationEntity/
: définition des objets, avec mapping pour l'ORM
GeneralConfig.php
: objet encapsulant les configurations de l'applicationGuild.php
: objet représentant une guildeHomin.php
: objet représentant un hominRepository/
: 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 utileslang/
: 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éetemplates/
: 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 webLICENSE
: 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 v2L'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.