L'application est écrite en PHP, avec le FrameWork CakePHP version 3. Il a pas mal de documentation et une communauté française ici.
Ce framework n'est pas aussi répandu que Symphony ou d'autres, en revanche il est très efficace pur faire les 80% premier pourcent d'une application. Il sait générer une appli web qui permet de modifier le contenu d'une base de données simplement à partir du schéma de la base et de conventions de nommage.
adherents
id
adherent_id
Cake c'est déployable avec un outil qui s'appelle Composer (un package manager PHP).
L'outil de génération de CRUD s'appelle Bake (to bake a cake, logique)
addBehavior('Timestamp')
et addBehavior('Logging')
$article→created→format(DATE_RFC850)
https://github.com/FriendsOfCake/awesome-cakephp
namespace App\Model\Table; use Cake\ORM\Table; use Cake\ORM\RulesChecker; use Cake\ORM\Rule\IsUnique; class ArticlesTable extends Table { public function initialize(array $config) { $this->primaryKey('my_id'); $this->addBehavior('Timestamp', [ 'events' => [ 'Model.beforeSave' => [ 'created_at' => 'new', 'modified_at' => 'always' ] ] ]); } public function validationDefault(Validator $validator) { $validator ->requirePresence('title', 'create') ->notEmpty('title'); $validator ->allowEmpty('link') ->add('link', 'valid-url', ['rule' => 'url']); $validator ->add('title', 'notEmpty', [ 'rule' => 'notEmpty', 'message' => __('You need to provide a title'), ]) ->add('body', 'notEmpty', [ 'rule' => 'notEmpty', 'message' => __('A body is required') ]); $validator->add('email', 'valid', [ 'rule' => 'email', 'message' => 'Invalid email' ]); $validator ->add('role', 'validRole', [ 'rule' => 'isValidRole', 'message' => __('You need to provide a valid role'), 'provider' => 'table', ]); return $validator; } public function isValidRole($value, array $context) { return in_array($value, ['admin', 'editor', 'author'], true); } public function buildRules(RulesChecker $rules) { // Add a rule that is applied for create and update operations $rules->add($rules->isUnique(['email'])); $rules->add(function ($entity, $options) { // Return a boolean to indicate pass/failure }, 'ruleName'); // Add a rule for create. $rules->addCreate(function ($entity, $options) { // Return a boolean to indicate pass/failure }, 'ruleName'); // Add a rule for update $rules->addUpdate(function ($entity, $options) { // Return a boolean to indicate pass/failure }, 'ruleName'); // Add a rule for the deleting. $rules->addDelete(function ($entity, $options) { // Return a boolean to indicate pass/failure }, 'ruleName'); return $rules; } }