News
2021/04/03 Mise à jour du framework branch 4 (4.138.0) et 5 (5.1.0)
Au menu:Ajout methodes supplementaires dans la classe abstract model
- ociBindByName (pour oracle
- commit
- rollback
- getError
qui renvoi les méthodes du même nom de l'instance pdo
Au niveau d'abstract_row
sur l'utilisation de la méthode unset() sur un objet row, on supprime désormais du tableau de propriété ET du tableau propertyToUpdate
Suppression dans la stacktrace des arguments pour des raisons de securité
cela evite par exemple en cas d'erreur de login de stocker la stacktrace comprenant login/pass de connexion au service/sgbd..
2021/01/01 Nouvelles versions compatible php 7.2
Pour permettre d'avoir une version compatible php 7.2 sans créer des regressions pour les autres.Il y a désormais 2 branches sur le framework v4 et v5
v4 pour le framework historique compatible php >= 5.2
v5 pour la version compatible php >= 7.2
De votre coté le changement va être beaucoup plus simple, vous verrez dans la page de téléchargement une distinction en fonction de la compatibilité php.
Le premier numéro des versions est mécaniquement incrémenté pour chacun des packages.
2020/04/08 Ajout d'une méthode dans le plugin_form/plugin_sc_form
Une nouvelle méthode getSelectGroup est ajoutée dans le plugin_form et plugin_sc_formMerci à @LLFT pour sa contribution :)
2020/04/01 Ajout d'un driver pour Microsoft Sql Server
Apres des essais du nouveau driver natif proposé par Microsoft pour se connecter à sa base de donnée, il est apparu une regression lors de la récupération d'un id auto incrémenté.Désormais vous avez en plus le driver pdo_mssql2
A partir de la version 4.136.0
Attention la chaine de connexion diffère de dblib (freetds)
Avec driver natif Microsoft:
sqlserverExple.dsn="sqlsrv:Server=localhost;Database=blog"
sqlserverExple.sgbd=pdo_mssql2
sqlserverExple.username=root
sqlserverExple.password=XXXX
VS avec freetds
sqlserverExple.dsn="dblib:dbname=blog;host=localhost"
sqlserverExple.sgbd=pdo_mssql
sqlserverExple.username=root
sqlserverExple.password=XXXX
2020/01/15 Nouvelles options pour les connecteur oracle
Au menu deux choses:1. on peut desormais definir le charset lors d'une connexion oracle via un nouveau parametre charset_set dans le fichier de config connexion.ini.php
2. on peut desormais decider d'ignorer la protection automatique pour les values de type TO_DATE()/TO_TIMESTAMP()
Ceci avec par exemple: (ajout des propriétés character_set,escapeDateField)
oracleExple.dsn=
oracleExple.sgbd=oracle
oracleExple.username=username
oracleExple.password=pass
oracleExple.database=myOracleDb
oracleExple.hostname=myOracleHostname
oracleExple.character_set=AL32UTF8
oracleExple.escapeDateField=1
2019/12/20 Nouvelle version du framework
Au menu une fonctionnalité attendu par certains: la possibilité de changer la gestion de la protection Xss:Depuis le départ, j'avais pris le parti d'encoder toutes les entrées utilisateur en HTML, pour les enregistrer encodés afin d'eviter lors de l'affichage de ces valeurs des failles Xss.
Desormais vous avez de nouveaux paramètres qui vous permette à partir de la version 4.134.0 du framework de desactiver cet encodage à la récupération de l'entrée utilisateur, et de l'activer uniquement à l'affichage d'un champ issu de la base de donnée.
Dans le fichier de configuration, vous avez désormais les variables suivantes:
;pour activer la protection Xss sur la methode getParam
xss.getParam.enabled=0
;ou
;gerer la protection Xss dans la couche model
xss.model.enabled=1
;customHtmlentities est defini dans le fichier class_root.php du framework
;vous pouvez definir une autre fonction si besoin
xss.model.function=customHtmlentities
En effet, avec cette variable activée, toutes vos requetes findMany et findOne (uniquement, pas les findManySimple/findOneSimple) retourneront un tableau d'objets heritant d'abstract_row qui aura été paramétré pour protéger la récupération des propriétés.
Pour information, abstract_row contient en plus deux nouvelles méthodes : enableCleaning() et disableCleaning().
note: par défaut le framework utilise la fonction customHtmlentities(), qui est déja celle utilisé par getParam() pour protéger contre le Xss, mais si vous souhaitez en definir une autre, vous pouvez en modifiant dans le fichier de configuration :)
2019/06/03 Nouvelle publication dans le magazine Linux Pratique
Un article a été publié dans le numéro 113: Ecrire une application utilisant une gestion de droits ici2019/01/03 Nouvelle publication dans le magazine PROGRAMMEZ!
Un nouvel article vient d'être publié dans le numéro 225 du magazine, présent ici2018/11/06 Ajout du module OpenStreetMap
Depuis le changement de tarification de Google Map, il devenait important d'offrir une alternativeC'est chose faite avec ce nouveau module
Vous pouvez le télécharger ici
2018/08/13 Mise à jour du Builder et le la librairie
Nouvelles versions:- Builder: 2.1.0
- Lib : 4.132.0
- Package: 1.1.0
Ajout des tests unitaires sur la librairie du framework
La couverture de code est disponible sur cette page .
2018/06/24 Mise à jour du Builder
Correction du module de génération "Creer une classe modele de Liste"2018/06/12 Mise à jour du Builder
Correction d'un bug sur le module de generation de menu pour les templates bootstrap et scBoostrapEt mise a jour des fichiers conf/site.ini.php (partie redirection)
En effet ce parametre n'a plus lieu d'etre la redirection utilisée est toujours header('location')
Merci llaffont et viny1976 ;)
2018/05/23 Mise à jour du Builder
Ajout de deux méthodes sur les plugin plugin_form,plugin_sc_form getInputPassword() et getInputPasswordEmpty()Merci llaffont ;)
2018/05/15 Mise à jour du mode de distribution du mkframework
Vous avez désormais 3 dépots pour le framework- la librairie du framework seule
- le builder (generateur web) seul
- un package contenant l'ensemble pour débuter
2018/03/11 Mise à jour builder
Builder:- Mise à jour du module CRUD embarquee pour le profil SC
- Idem pour le module de génération du module menu
Barre de debug
- Mise à jour des templates, desormais la barre de debug est masquee par défaut.
2017/12/26 Correction du profil de correction Oracle
Un utilisateur m'a signalé que le profil de connexion oracle n'etait pas correcte pour fonctionner avec le builderIl est désormais corrigé
Merci llaffont ;)
2017/07/31 Bugfix du dépot git
Un utilisateur m'a signalé un soucis sur la dernière version, en effet depuis le switch sur dépot git, les repertoires vides n'étaient plus présents dans l'archiveCette absence de répertoires provoquaient de multiples erreurs.
J'ai corrigé en créant les fichiers .gitignore correspondant et généré une nouvelle version 4.130.5
Merci Skyline-gtr ;)
2017/07/11 Mise a jour systeme de telechargement du framework + ajout fichier de version
Deux choses ici:- Ajout d'un fichier json contenant notamment le numéro de version du framework, permettant notamment aux personnes telechargeant l'archive zip du framework de connaitre le numéro de version
- Changement du système de telechargement de l'archive: on télécharge désormais via le dépot github du framework
2017/05/22 Mise a jour driver mysql
Ajout des quotes de protection des colonnes lors d'insert/updateVous pouvez désormais utiliser des champs en utilisant des "mots reservés" tel que order, limit...
2017/03/19 Nouveau tutoriaux sur le nouveau template
Vous pouvez désormais trouver plusieurs informations supplémentaires pour vous présenter le nouveau template.Voici la page regroupant les tutoriaux.
- Introduction
- Présentation dans le builder
- Exemple d'un module utilisant l'architecture hexagonale
- L'impact sur la couche model
2017/03/04 Nouveau template disponible dans le builder
C'est avec un grand honneur que je peux enfin, après de longs mois de developpement vous présenter cette nouvelle version du framework incluant un tout nouveau template.Ce template s'inspire du mouvement "software craftsmanship"
J'ai d'ailleurs ajouté une page spécifique à ce nouveau template pour mieux le présenter: page software craftsmanship
2016/12/19 Nouveau tutoriel sur Docker
Deux nouveaux tutoriels vous permettront de mettre facilement en place une solution docker pour simplifier vos developpements.Rendez-vous sur la page tutoriaux , rubrique Docker
- Créer une image docker pour le mkframework
- Créer une application en utilisant cette image
2016/11/03 Mise à jour du module GoogleMap
Pour information, google a modifié son api il y a quelques temps, il faut désormais fournir une clé à votre module pour fonctionner.Le module googleMap a été mis à jour en conséquence, ainsi que la documentation associée
Pour rappel, vous avez deux méthodes pour récuperer un module: via le site web , ou via le market
Voici la nouvelle méthode de définition de la clé googleMap
$oModuleGoogleMap=new module_googleMap();
$oModuleGoogleMap->setKey('VOTRECLEGOOGLEMAP');
2016/10/28 Mise a jour de la navigation du builder + quelques correctifs
A partir de la version v4.128.0, vous aurez le plaisir de voir une navigation avec "fil d'ariane" afin d'éviter de surcharger l'affichage comme c'etait le cas avant.Il y a eu également quelques corrections pour rendre le framework compatible avec php7 ainsi que quelques bugfix
Pour rappel, le changelog complet est toujours disponible ici
2016/10/08 Migration du module Crud Multi pour les projets bootstrap
Vous pouvez désormais générer des modules CRUD multi ligne pour vos projets Bootsrap (version >= 4.126.2)2016/05/12 Ajout d'une verification sur le market
Certains utilisateurs ont rencontré un problème: ils ne peuvent pas accéder au market ou mettre à jour leur modulesCela vient d'un paramètre du php.ini allow_url_fopen qui n'autorise pas sur certaines configuration à accéder à une adresse web.
Un code a donc été ajouté, vérifiant ce paramétrage pour en informer l'utilisateur.
Pour les tests unitaires, des tutoriaux ont été ajoutés dans la page "tutoriaux"
2016/04/16 Ajout module test unitaire sur le builder
Les tests unitaires sont souvent omis pour des raisons de difficulté/ temps à mettre en place.Pour aider dans cette démarche de qualité, un nouvelle version est en ligne proposant un nouveau module de "test unitaires"
Je n'avais pas la possibilité ici simplement d'ajouter ce module dans le market (ce module necessitant quelques fichiers/fonctions en plus dans la gestion des modules, vous devrez alors telecharger la nouvelle version du framework.)
Version supérieur ou égal à v4.125.0
Des tutoriaux écrits et vidéos suivront pour bien expliquer ce nouveau module et l'utilisation de phpUnit pour tester vos applications existantes.
2016/01/14 Plugin debug: nouvelle fonctionnalité
Il arrive à certain moment que l'on veuille espionner une variable mais qu'a cause d'une redirection on ne puisse l'afficher dans la barre de debug.Vous pouvez désormais via la méthode
plugin_debug::addSessionSpy('label',$oVar);
Par exemple pour un formulaire d'édition d'un auteur
public function _edit(){
$tMessage=$this->processSave();
$oAuteur=model_auteur::getInstance()->findById( _root::getParam('id') );
$oView=new _view('auteur::edit');
$oView->oAuteur=$oAuteur;
$oView->tId=model_auteur::getInstance()->getIdTab();
$oPluginXsrf=new plugin_xsrf();
$oView->token=$oPluginXsrf->getToken();
$oView->tMessage=$tMessage;
$this->oLayout->add('main',$oView);
}
On souhaite vérifier que l'on est passé par là:
private function processSave(){
if(!_root::getRequest()->isPost() ){ //si ce n'est pas une requete POST on ne soumet pas
return null;
}
$oPluginXsrf=new plugin_xsrf();
if(!$oPluginXsrf->checkToken( _root::getParam('token') ) ){ //on verifie que le token est valide
return array('token'=>$oPluginXsrf->getMessage() );
}
$iId=_root::getParam('id',null);
if($iId==null){
$oAuteur=new row_auteur;
}else{
$oAuteur=model_auteur::getInstance()->findById( _root::getParam('id',null) );
}
$tColumn=array('nom','prenom');
foreach($tColumn as $sColumn){
$oAuteur->$sColumn=_root::getParam($sColumn,null) ;
}
if($oAuteur->save()){
//une fois enregistre on redirige (vers la page liste)
//on ajoute un espion sur cette variable
plugin_debug::addSessionSpy('auteur',$oAuteur);
_root::redirect('auteur::list');
}else{
return $oAuteur->getListError();
}
}
2015/11/29 Nouveau tutoriel pour le market
Un nouveau tutoriel permettant d' écrire et soumettre un plugin au market2015/11/25 Market Application disponible
La phase 2 du market est engagée, vous avez désormais un market permettant d'ajouter modules et plugins à votre applicationPlus besoin de passer par le site web pour télécharger le zip puis déplacer certains sous répertoire
Désormais, à partir du builder, en quelques clics installer un module GoogleMap, Guriddo...
Des tutoriaux suivront pour vous indiquer comment développer et soumettre vos propres modules/plugins
2015/11/07 Tutoriel de création d'une extension (market)
Trois nouveaux tutoriels vous permettent désormais d'écrire et soumettre des extensions pour le market ;)Comment créer une extension de builder
Comment développer votre extension de builder
Comment Soumettre une extension au market
Bien sur d'autres tutoriels suivront pour bien expliquer comment créer simplement des extensions.
2015/11/04 Mise à jour du market
On peut désormais installer des extensions via le Market.La phase deux est lancé (2/3) vous allez pouvoir proposer et/ou installer de nouvelles extensions sur le builder sans devoir passer par le site pour récupérer le dernier zip ;)
Viendrons dans les prochains jours tutoriel et procédure pour proposer vos propres extensions de génération ;)
Vous verrez c'est très simple à écrire
Pour la phases suivante, il manque le market pour vos applications qui permettra d'installer de nouveau modules comme googleMap,phpExcel,Guriddo... sur vos application en quelques clics (plus besoin de passer par le site) ;)
Cette nouvelle extension arrivera via ce nouveau market :)
2015/10/26 Grosse mise à jour du builder
Une nouvelle version du framework qui marque un tournant dans son histoire: l'arrivée d'un Market ;)Au menu de cette importante mise à jour:
- nouveau builder multi-lingue
- refactorisation/industrialisation des modules de générations qui deviennent des extensions
- l'arrivé du market lot 0, qui ne gère que les mises à jour des extensions
Les prochains jours permettront de corriger d'eventuels bugs sur ce gros chantier de refactorisation/traduction
Ensuite viendront les étapes logiques suivantes:
Market builder:
- mise à jour du market pour permettre d'ajouter de nouvelles extensions
- écriture de la procédure pour que VOUS puissiez soumettre de nouvelles extensions
Market application:
- arrivée d'un market sur les applications pour ajouter modules, plugins...
- gestion mise à jour modules/plugins existants
2015/10/14 Mise à jour gestion authentification
Vous pouvez désormais mettre tout votre site sous authentification (variable auth.enabled dans conf/site.ini.php) ET exclure une liste de module de cette authentification.Pour cela, avec la nouvelle version (>= v4_118_0_r287), ajoutez dans votre fichier conf/site.ini.php
[auth]
(...)
;liste des modules non concerne par l'auth: separe par des virgules
module.disabled.list=moduleAexclure,autreModuleAexclure
2015/10/13 Nouvelle page roadmap
Une nouvelle page "roadmap" a fait son apparition sur le site, elle permet de communiquer sur les developpements en cours et à venir.2015/09/20 Nouveau module PHPExcel
Plusieurs personnes ont déjà demandé comment utiliser cette puissante librairie avec ce framework.Vous avez désormais deux façons de le faire,
1. en suivant ce tutoriel
2. en téléchargeant le nouveau module PhpExcel
2015/09/08 Builder: ajout de la génération de CRUD multi-ligne
Nouvel ajout: possibilité de faire un CRUD multi-ligneVous avez ainsi un tableau de plusieurs enregistrements modifiable en une fois.
Des tutoriaux suivront prochainement.
2015/09/07 Builder: ajout de la génération d'ACL multi-groupes
Vous pouvez désormais générer une gestion d'ACL multi-groupes via le builder en quelques clics.PS: il y aura désormais les dates de publication sur les liens de téléchargements du framework.
2015/08/28 Builder: correction d'un bug sur la génération Guriddo
Certains utilisateurs m'ont remonté des problèmes avec la nouvelle fonctionnalité sur d'autres SGBDs que mysql.J'ai corrigé le builder en conséquence.
Vous devez télécharger la dernière version du module qui a également été mis à jour en conséquence.
J'en ai profité pour ajouter une rubrique "Actualités" dans la page de téléchargement de module.
2015/08/22 Builder: ajout d'un menu pour générer un CRUD avec Guriddo
Vous avez désormais la possibilité de générer un tableau CRUD appuyé sur la librairie GuriddoUne nouvelle entrée a été ajoutée sur la page de tutorial: ici
2015/08/07 Ajout d'un driver mongoDb
Mongodb est une base noSQL, il est désormais possible sur le framework de s'y connecter.Pour information, contrairement aux autres SGBD, il y a quelques différences dans le classe modèle mongodb
1. en noSQL on n'utilise pas de requete SQL
2. chaque collection (équivalent des tables en SQL) possède par défaut une clé primaire "_id"
3. n'ayant pas de structure fixe, dans le builder, vous devez indiquer les champ à créer dans votre CRUD (via l'interface)
Comme d'habitude, le builder vous facilite le travail en vous générant vos classe modèle
Voici un exemple de connexion mongodb
mongodb.dsn="mongodb://monuser:pass@localhost:27017/mabase"
mongodb.sgbd=mongodb
mongodb.database=mabase
Et voici un exemple de couche modèle mongodb
<?php
class model_article extends abstract_model{
protected $sClassRow='row_article';
protected $sTable='article';
protected $sConfig='mongodb';
protected $tId=array('_id');
public static function getInstance(){
return self::_getInstance(__CLASS__);
}
public function findById($uId){
return $this->findOne($this->sTable,array('_id' => new MongoId($uId)) );
}
public function findAll(){
return $this->findMany($this->sTable);
}
}
Vous noterez une différence dans la manière de requeter: ici au lieu de faire une requete SQL de select type:
return $this->findMany('SELECT * FROM '.$this->sTable);
return $this->findMany($this->sTable);
Et pour une recherche avec critère on passe un tableau
Au lieu de
return $this->findOne('SELECT * FROM '.$this->sTable.' WHERE id=?',$id);
return $this->findOne($this->sTable,array('_id' => new MongoId($uId)) );
Mais pour les autres paramètres, par exemple lister les articles d'une catégorie:
Au lieu de
return $this->findMany('SELECT * FROM '.$this->sTable.' WHERE category=?',$category);
return $this->findMany($this->sTable,array('category' => $category) );
2015/06/15 Ajout d'un driver oracle "natif"
Un nouveau driver oracle est désormais disponible, n'utilisant pas pdo.Il utilise les fonctions natives php oci_connect /oci_execute...
Pour l'utiliser, dans votre fichier de configuration:
oracleExple.sgbd=oracle
oracleExple.username=username
oracleExple.password=pass
oracleExple.database=myOracleDb
2015/06/15 Ajout d'un driver "virtuel"
On peut désormais ajouter un modèle virtuel, permettant de requeter fichiers/sgbd... afin de constituer un tableau php requetable/paginable et triable via des requête SQLPour l'utiliser, vous pouvez creer une classe modèle héritant de "abstract_modelVirtual"
Un tutoriel est disponible ici
2015/06/12 Le module Guriddo s'améliore
On peut désormais gérer une customisation "à la volée" du contenu ou des attibuts d'une cellule en fonction du contexteLa documentation et la page de téléchargement du module Guriddo
2015/06/01 On continue la traduction du builder
Si vous avez téléchargé la version 111.0 je vous invite à télécharger la suivante: il manquait les fichiers de traduction correspondant.2015/05/31 Debut du chantier builder multi-lingue
Suite à de nombreuses demandes, j'entreprend le mode multi-lingue du builderVous pouvez à partir de la verion 111.0 (révision svn 275) passer le builder en anglais, en modifiant le fichier conf/site.ini.php
Modifiez la vaiable "default", en= anglais, fr=français
[language]
;fr / en... //sLangue
default=en
allow=fr,en
2015/05/04 Nouvelle publication dans le magazine PROGRAMMEZ!
Un nouvel article vient d'être publié dans le numéro 185 du magazine, présent ici2015/04/20 Mise à jour Builder bootstrap
Vous pouvez désormais générer des module CRUD embedded avec le builder Bootstrap, les templates ont été migrés.Pour le plugin form, une correction a été appliquée concernant les champs disabled
Par défaut: on affiche dans le champ du formulaire la propriété de l'objet, celle-ci est écrasée par la valeur du POST en cas de soumission de celui-ci.
Mais dans le cas d'un champ disabled, sa valeur n'est pas transmise, et l'on se retrouvait avec un champ vide. C'est désormais corrigé, on écrase uniquement avec les valeurs soumises.
2015/04/08 Mise à jour de plugin_valid
Une mise à jour de la documentation vous explique comment ajouter une vérification ponctuelle iciPour permettre ceci, le plugin plugin_valid a été légèrement modifié: sa méthode ko() est passée publique.
Pour eviter de télécharger tout le framework, vous pouvez vous rendre dans la rubrique de téléchargement pour récupérer la dernière version du plugin
2015/02/26 Mise à jour du module Guriddo
Quelques amélioration du module Guriddo, je vous invite à visiter la page en question pour voir les mises à jourLa page sur le module Guriddo
2015/02/16 Nouveau module: Guriddo
Un nouveau module est disponible dans la rubrique téléchargement de modules: GuriddoCette librairie s'appuie sur jQuery et permet d'afficher des tableaux très pratique: on peut simplement
- trier,
- redimensionner les colonnes
- et filtrer
Voici le lien pour la télécharger et l'installer: le module Guriddo
2014/12/02 Amélioration du framework: ranger vos modules
Suite à une idée d'un utilisateur (merci oliverell62).L'idée est simple: pour une application un peu complexe on se retrouve rapidement avec une multitude de modules dans le répertoire du même nom.
Ici, vous pouvez désormais ordonner ceux-ci dans des répertoires.
Avant:
Après
Deux choses:
1. Pour indiquer le sous répertoire, on utiliser le caractère "_" (underscore).
Le module privé: module_private_article (module/private/article/)
class module_private_article extends abstract_module{
$oView = new _view('private/article::list');
Pour information, pour éviter toute regression sur les applications existantes, on externalise le chargeur de classes dans un plugin. Seul les nouvelles applications en bénéficie.
Mais vous pouvez, après avoir mis à jour le framework sur votre plateforme, en bénéficier en téléchargeant le nouveau fichier de plugin autoload ici
ET en désactivant le chargeur d'origine en mettant en commentaire la ligne suivante dans le fichier public/index.php
spl_autoload_register(array('_root','autoload'));
2014/10/11 Amélioration du builder: couche modèle
Le builder vous permet désormais, au moment de la génération de la couche modèle, d'ajouter des contraintes.Vous pouvez ajouter des contraintes par champ et indiquer le message d'erreur.
2014/09/29 Framework amélioration de la sécurité
Modification de la partie authentification: amélioration de la sécurité pour éviter qu'un tiers se connecte en volant le cookie de session.2014/09/27 Builder: nouvelle page d'ajout de droits
Le builder gagne une nouvelle fonctionnalité: ils vous facilite l'ajout de la gestion de droits.Qui propose de vous guider dans la génération des tables nécessaires
et vous générera un module pour enregistrer les permissions,renseigner le profil des utilisateurs et vous affichera le code à ajouter pour prendre en compte cette gestion de droits.
Pour rappel, le code pour vérifier un droit:
if(_root::getACL()->can('action','element')){
//code
}
Un tutoriel écrit ainsi qu'une vidéo suivront prochainement.
2014/09/21 Nouveau tutoriel pour l'utilisation de la barre de debug
Nouveau tutoriel pour expliquer le fonctionnement de la barre de debugLa documentation API a également été mise à jour pour prendre en compte ce plugin.
2014/09/16 Amélioration de la gestion d'erreur
Pour améliorer l'affichage des erreurs, une nouvelle variable fait son apparition.
[debug]
class=plugin_debugError
On a désormais le nom du fichier, mais également l'affichage du code source avec une mise en évidence sur la ligne en question.
Pour vos applications existantes:
- mettre le framework à jour
- insérer le bloc précédement cité dans votre fichier conf/site.ini.php
- télécharger le plugin plugin_debugError, disponible sur la page des plugins
- copier ce plugin dans le répertoire plugin de votre projet
2014/09/06 Nouveau driver SGBD : firebird
Un nouveau driver permettant désormais de se connecter à une base firebird (via pdo)Exemple de connexion firebird (dans votre fichier de configuration conf/connexion.ini.php)
firebirdExple.dsn="firebird:host=localhost;dbname=/var/www/firebirdDb"
firebirdExple.sgbd=pdo_firebird
firebirdExple.username=root
firebirdExple.password=root
2014/09/06 Builder: amélioration de la création de module d'authentification
Le module a été un peu simplifié sur la partie concernant les méthodes à copier dans votre classe modèle.Le screencast correspondant a été enregistré de nouveau, visible ici .
2014/09/02 Information driver ORM via PDO
Vous pouvez utilisez les placeholders avec vos requêtes préparés:Vous pouvez aussi bien écrire :
$this->findMany('SELECT FROM article WHERE id=?',12);
$this->findMany('SELECT FROM article WHERE id=:id',array('id'=>12) );
2014/08/19 Amélioration des logs en mode "production"
Lorsque vous passez votre application en mode production, le framework cache les messages d'erreurs.Vous pouvez à present décider d'écrire ces messages d'erreur dans un fichier de log (dans data/log/) ou intégrer ces messages dans le fichier de log d'apache.
Pour cela, deux nouvelles variables font leur apparition dans le fichier de configuration conf/site.ini.php
[log]
(...)
file.enabled=1
apache.enabled=1
2014/07/24 Automatisation de formatage à l'affichage et l'enregistrement
Suite à une question d'un utilsateur (NhyMbuS), j'ai ajouté dans la FAQ un paragraphe pour indiquer comment automatiser un traitement sur les row.Le cas est simple:
- Vous recevez une date dans un format et souhaitez afficher dans un autre sur vos pages.
- Vous utiliser un datePicker et souhaitez reformater la date avant d'enregistrer.
- Vous souhaitez formater la date en fonction de la langue du site.
La FAQ est ici.
2014/07/15 Correction suite dernière livraison
Une correction suite à la dernière livraison pour plus de souplesse:La fonction php array_merge_recursive créé un tableau si la valeur de configuration est déjà définie
Hors il est plus pratique/souple d'écraser cette valeur:
ainsi vous pouvez avoir vos fichiers de configuration de votre application et écraser certaines valeurs en ajoutant un fichier de configuration supplémentaire (par exemple en production)
2014/07/12 Corrections, optimisation + nouvelle fonctionnalité
Dans cette livraison, plusieurs corrections font suite à la dernière analyse sonarUne nouvelle fonctionnalité vous permet de generer un fichier de cache de vos fichiers de configurations.
Pour cela, il vous faut:
- un fichier de configuration path.ini.php afin de charger notamment le repertoire contenant le cache
- ajouter les lignes suivante dans votre fichier index.php:
$oRoot=new _root();
//enregistre les chemins des repertoires dans la configuration (necessaire pour la mise en cache)
$oRoot->setConfigVar('path',$tIni['path']);
//decommenter pour activer le cache de fichier de configuration
//$oRoot->setConfigVar('cache.conf.enabled',1);
2014/07/12 Corrections, optimisations, fragmentation
Plusieurs choses dans cette livraison:- correction d'un bug sur la gestion de la date de peremption du cache des pages.
- correction d'un bug sur la gestion du cache du fichier autoload (generant un tableau php de l'ensemble des classes)
- simplification du processus de chargement d'un module via l'ajout des methodes before() et after() au sein de la classes abstraite (ainsi plus besoin de verifier avant de lancer before() et after() de chaque module)
- separation du fichier site.ini en deux: site.ini et path.ini afin d'alleger le fichier index.php qui doit precharger la configuration pour charger le framework.
2014/07/07 Builder: allegement du code généré des modules CRUDs
Utilisation du plugin plugin_form pour les CRUDsCoté controlleur on a plus besoin de la méthode fillRow() qui permettait de remplir l'objet avec les valeurs soumises dans le formulaire (pour ne pas perdre sa saisie)
Cette fonctionnalité est gérée par le plugin plugin_form.
Coté vue, on passe de ce code:
<?php $oPluginHtml=new plugin_html?>
<form action="" method="POST" >
<table class="tb_edit">
<tr>
<th>titre</th>
<td><input name="titre" value="<?php echo $this->oArticle->titre ?>" /><?php if($this->tMessage and isset($this->tMessage['titre'])): echo implode(',',$this->tMessage['titre']); endif;?></td>
</tr>
<tr>
<th>resume</th>
<td><input name="resume" value="<?php echo $this->oArticle->resume ?>" /><?php if($this->tMessage and isset($this->tMessage['resume'])): echo implode(',',$this->tMessage['resume']); endif;?></td>
</tr>
<tr>
<th></th>
<td>
<p>
<input type="submit" value="Modifier" /> <a href="<?php echo $this->getLink('article::list')?>">Annuler</a>
</p>
</td>
</tr>
</table>
<input type="hidden" name="token" value="<?php echo $this->token?>" />
<?php if($this->tMessage and isset($this->tMessage['token'])): echo $this->tMessage['token']; endif;?>
</form>
<?php
$oForm=new plugin_form($this->oAuteur);
$oForm->setMessage($this->tMessage);
?>
<form action="" method="POST" >
<table class="tb_edit">
<tr>
<th>nom</th>
<td><?php echo $oForm->getInputText('nom')?></td>
</tr>
<tr>
<th>prenom</th>
<td><?php echo $oForm->getInputText('prenom')?></td>
</tr>
<tr>
<th></th>
<td>
<p>
<input type="submit" value="Modifier" /> <a href="<?php echo $this->getLink('auteur::list')?>">Annuler</a>
</p>
</td>
</tr>
</table>
<?php echo $oForm->getToken('token',$this->token)?>
</form>
2014/07/03 Pdo + Layout par défaut
Coté Pdo:On peut désormais définir les paramètres ATTR_ERRMODE et ATTR_CASE
[pdo]
;Plus d'informations ici: http://www.php.net//manual/fr/pdo.setattribute.php
;SILENT,WARNING,EXCEPTION
ATTR_ERRMODE=WARNING
;LOWER,NATURAL,UPPER
ATTR_CASE=NATURAL
Coté projets source du builder
- ajout des charset/encoding des différents layout
- changement par défaut doctype html: xhtml1 > html4 transitionnal
2014/06/30 (ORM) Ajout des methodes isset() et unset() sur les classes row
Vous pouvez désormais verifier l'existance d'une propriété d'objet avec isset()
$oArticle=model_Article::getInstance()->findById(2);
if(isset($oArticle->titre)){
echo $oArticle->titre;
}
2014/06/25 Ajout de plugins facilitant l'export XML
Vous pouvez désormais facilement convertir vos objets en xml pour les afficher ou les enregistrer dans des fichiersPour afficher un enregistrement en xml:
public function _showXml(){
$oAuteur=model_auteur::getInstance()->findById(_root::getParam('id'));
$oXml=new plugin_xmlObject($oAuteur);
$oXml->setListColumn(array('id','nom','prenom'));
$oXml->show();
}
public function _listXml(){
$tAuteur=model_auteur::getInstance()->findAll();
$oXml=new plugin_xmlListObject($tAuteur);
$oXml->setListColumn(array('id','nom','prenom'));
$oXml->show();
}
Et pour enregistrer dans un fichier, utilisez la méthode build() plutot que show():
public function _saveXml(){
$tAuteur=model_auteur::getInstance()->findAll();
$oXml=new plugin_xmlListObject($tAuteur);
$oXml->setListColumn(array('id','nom','prenom'));
$sXml=$oXml->build();
$oFile=new _file('../data/auteurs.xml');
$oFile->setContent($sXml);
$oFile->save();
}
2014/06/03 Ajout du framework sur packagist.org
Vous pouvez désormais installer le framework via composer, en effet le repository github du framework est désormais lié sur packagist.org , le gestionnaire de dépot de composer.Plus d'information sur composer ici: getcomposer.org
2014/06/01 Ajout d'une fonctionnalité pour les bases mysql
Mysql propose lors d'une insertion d'effectuer un update si il detecte une clé dupliqué, cette fonctionnalité s'appelle "ON DUPLICATE KEY"Via le builder, vous pouvez désormais, lors de la génération de la couche modèle activer l'utilisation de cette fonctionnalitée
2014/06/01 Ajout d'une page Slides
Ajout d'une page Slides vous proposant une autre façon d'expliquer le fonctionnement du framework via des diaporamas.2014/05/29 Mise à jour du builder: génération des CRUD
Une petite mise à jour graphique de la génération des CRUD, CRUD embedded et CRUD bootstrap2014/05/08 Publication d'un tutoriel sur developpez.com
Un nouvel article publié sur developpez.com permettant de faire une application full cache2014/05/08 Mise à jour du builder: possibilité d'exporter un projet
De base, vos projets sont générés dans le répertoire data/genere du framework, le moment où vous devez le livrer en test ou en production, il vous faut le copier sur un serveur ainsi que la librairie du framework.Jusqu'à maintenant vous deviez alors suivre la procédure disponible ici: dans la FAQ
Aujourd'hui vous avez un nouveau bouton de menu vous simplifiant cette partie en vous proposant deux choix:
1. copier votre projet et modifier le chemin d'accès à la librairie du framework
2. copier votre projet et la librairie du framework au sein de votre projet (et modifier le chemin de la librairie en conséquence)
2014/04/26 Sécurisation de la méthode _root::getLinkWithCurrent
Une correction de sécurité de la méthode _root::getLinkWithCurrent qui permet de récupérer les paramètres déjà présent dans l'URL. Par exemple pour des liens de changements de langue où l'on souhaite rester sur la page actuelle.2014/04/02 Ajout d'un plugin pour gérér facilement des classes métiers
Il peut vous arriver d'avoir des routines, logique métiers transverses, pour cela, vous avez désormais la possibilité d'ajouter vos propres classes dans une arborescence à part.Pour cela, pour vos applications existantes, téléchargez la classe plugin_autoload sur cette page
et ajoutez dans votre fichier public/index.php
//enregistrement de votre autoloader personnel
include($tIni['path']['plugin'].'/plugin_autoload.php');
spl_autoload_register(array('plugin_autoload','autoload'));
Pour l'utiliser écrivez simplement:
$oMetier= new my_metier;
//le plugin autoload va chercher le fichier myClasses/metier.php
Par défaut, dans la classe autoload fournie, on charge les fichiers débutant par "my_" dans le répertiore myClasses, mais vous pouvez modifier celle-ci à votre gré
2014/03/28 Publication dans le numéro 173 du magazine PROGRAMMEZ!
Parution d'un nouveau tutoriel dans le numéro 173 du magazine papier PROGRAMMEZ!Lien vers le numéro
2014/03/27 Ajout de Bootstrap
Vous pouvez désormais créer une application bootstrap avec le builder: créer des modules CRUD, menu et module d'authentification utilisant ce framework.2014/03/25 Ajout d'un nouveau type de tableau: tri/pagination en ajax
Le module table est mis à jour, avec son nouveau type complex5, il permet d'afficher un tableau dont la pagination et le tri se font en ajaxPlus d'informations sur la page dédiée: telechargerModule_table.html
2014/03/12 Correction du plugin debug
Petite correction sur le plugin_debug suite à l'ajout des permissions, vous pouvez téléchager la dernière version corrigée sur la page télécharger2014/03/10 Amelioration de l'affichage des permissions
Il est parfois difficile de mettre en place une gestion de droits, une amelioration du plugin de gestion de droits ainsi que le plugin de debug vont vous faciliter celle-ci.En effet vous allez avoir sur votre barre de debug un bouton supplémentaire "permissions" qui affichera un tableau listant les permissions vérifiées sur la page.
Vous pouvez ainsi voir des lignes en rouge quand non autorisé
Et en en vert quand autorisé
Pour être précis, il y a une ligne à chaque fois que vous allez appeler la vérification de droit via
_root::getACL()->can('action','composant')
note: pour bénéficier de cette mise à jour, télécharger les dernières versions des plugins plugin_gestionuser et plugin_debug dans la page télécharger
2014/03/09 Ajout d'un nouveau module téléchargeable de tableau
Il nous arrive souvent de faire des tableaux dans nos applications.L'idée ici est de capitaliser, d'éviter de ce repetter, on appelle ceci DRY: don't repeat yourself.
Vous pouvez désormais télécharger sur le site un nouveau module intégrable "Table"
Ce module permet de centraliser les types de tableau de votre site, n'hésitez pas à le personnaliser selon vos besoins pour le réutiliser.
Plus d'informations sur la page du module table
Quelques exemples de rendu:
2014/03/03 Nouvelles améliorations sur le plugin_chart
Ajout d'un nouveau type de graphique: le graphique barAmélioration des graphiques existants
La page d'utilisation a été mise à jour en conséquence: page FAQ
2014/02/23 Amélioration plugin plugin_chart
Plusieurs modifications pour améliorer ce plugin:- possibilité d'ajout de repères
- possibilité d'indique les min/max des axes x et y
- possibilité de définir une marge gauche pour le graphique
2014/02/22 Nouveau plugin plugin_rss
Dans le cadre d'un nouveau projet disponible sur github: mkdrawJ'avais besoin de mettre en place un webservice
J'ai créé un nouveau plugin plugin_rss pour l'occasion, dispnobile ici
2014/01/30 Nouvelle méthode getOutput() pour la classe _layout
Vous pouvez désormais créer une page complète et l'enregistrer facilement.Un tutoriel, à cette adresse explique comment créer un cache complet de site en utilisant cette méthode:
Faire un site avec un cache html complet
Les avantages:
- une base de donnée peu solicitée: juste à la génération de cache et lors de la modification de données
- de très bonnes performances, le serveur apache (ou autre) ne faisant que retourner de simples pages html
- coté sécurité: aucune faille xss,xsrf, nullbyte, sql injection ou autre: le client n'a accès qu'à des pages html
2014/01/27 Nouveau plugin plugin_form
Afin de rendre plus confortable la création de formulaire, un nouveau plugin fait son apparition: plugin_formIl permet de créer des éléments de formulaire en se prenant en compte l'objet modifié
Par exemple, pour l'édition d'un article
Coté vue:
<?php
$oForm=new plugin_form($this->oArticle);
$oForm->setMessage($this->tMessage);
?>
<table>
<tr>
<th>Titre</th>
<td><?php echo $oForm->getInputText('titre');?></td>
</tr>
<tr>
<th>Resume</th>
<td><?php echo $oForm->getInputText('resume');?></td>
</tr>
</table>
<p>Titre <input type="text" name="titre" value="<?php echo $this->oArticle->titre?>" /></p>
<table>
<tr>
<th>Titre</th>
<td>
<input type="text" name="titre" value="<?php echo $this->oArticle->titre?>" />
<?php if($this->tMessage['titre])):?>
<p class="error">
<?php echo implode(',',$this->tMessage['titre']; ?>
</p>
<?php endif;?>
</td>
</tr>
<tr>
<th>Resume</th>
<td>
<input type="text" name="resume" value="<?php echo $this->oArticle->resume?>" />
<?php if($this->tMessage['resume])):?>
<p class="error">
<?php echo implode(',',$this->tMessage['resume']; ?>
</p>
<?php endif;?>
</td>
</tr>
</table>
2014/01/26 Mise à jour du module google map
Une nouvelle méthode permet d'ajouter des pointers cliquables qui ouvre des fenêtre d'information.Plus d'information ici: telechargerModule_googleMap.html
2014/01/26 Amélioration sécurité plugin upload + génération CRUD
Le plugin upload enregistre désormais les fichiers sous forme de hash, cela permet d'éviter un utilisateur de retrouver des fichiers uploadés par bruteforceConcernant la génération de CRUD, un tableau des colonnes attendus permet d'éviter que l'utilisateur soumette des champs non attendu.
Merci à Lo000oL pour cette suggestion.
2014/01/02 Ajout d'un nouveau module: google Map
Vous pouvez désormais télécharger un nouveau module embarqué vous permettant de facilement ajouté une carte Google map dans vos sites.Vous pouvez télécharger le module ici: Module Google Map
2013/12/27 Ajout d'une méthode pour créer un lien avec le contexte actuel
Dans le cas où par exemple vous avez des liens permettant juste de changer de langueVous pouvez utiliser cette nouvelle méthode _root::getLinkWithCurren()
<a href="<?php echo _root::getLinkWithCurrent(array('langue'=>'fr') )?>">FR</a>
<a href="<?php echo _root::getLinkWithCurrent(array('langue'=>'en') )?>">EN</a>
2013/12/15 Ajout d'un plugin pour faire des graphiques en html5
A l'occasion un nouveau template (layout) html5 fait son apparition pour permettre d'utiliser ce nouveau plugin*Il permet pour l'instant de génerer des histogrammes, camembert et lignes.
Le projet avec exemple (générable via le builder) compte une page en plus utilisant ce plugin.
Sa documentation doxygen a été ajoutée ici
*note: ce plugin utilise la balise canvas html5
2013/12/10 Correction de la méthode getParams() de la classe request
Cette méthode qui retourne le tableau complet des paramètres ne protégeait pas le du XSS (contrairement à getParam() )2013/12/06 Ajout d'une page de recherche
Vous pouvez désormais chercher dans la documentation via une nouvelle page recherche. (tout en bas dans le menu de gauche)2013/12/03 Amélioration graphique du builder + futur application Android
Petite amélioration graphique du builder sur la partie génération d'index pour les bases xml et json.J'en profite également pour vous informer travailler sur une petite application Android permettant d'avoir dans vos smartphone la documentation du framework (sans être connecté)
2013/11/10 Amélioration de la génération de CRUD
Désormais, si vous avez une erreur à la validation d'un formulaire, vous retrouvez vos données saisies.2013/11/01 Nouveau sgbd: json
Un nouveau moteur vient s'ajouter au xml et csv: jsonVous pouvez désormais créer une base json et, comme pour une base xml, ajouter des index quand nécéssaire.
2013/10/31 Publication d'un tutoriel pour créer son site de microblogging sur developpez.com
Retrouvez sur developpez ce tutoriel: http://imikado.developpez.com/tutoriels/php/creer-votre-microblogging/2013/10/30 Dernières news
Au menu:- on peut désormais dans le builder choisir de générer un module CRUD avec/sans pagination.
- une nouvelle partie de la page de téléchargement permet désormais de télécharger des modules.
- Deux nouveaux projets sont disponibles dans la rubrique "Projets & Applications": un projet de reseau social, et un projet de microblogging
Pour information, vous pourrez retrouver dès demain sur developpez.com un tutoriel pour faire ce site de microblogging en moins d'une heure.
2013/10/19 Tutoriel sur le réseau social fini
Le tutoriel permettant de créer un réseau social est désormais fini et disponible ici .Ce projet est également disponible sur la page de Projets & Applications
2013/10/14 Ajout d'une nouvelle rubrique "Projets & Applications"
Depuis de longs mois, je travaille sur des projets, et ceux-ci étant basés sur ce framework, je vous les propose en téléchargementPour le moment il y a MkNotes et MkSql
MkNotes est une application de gestion de taches.
MkSql est une application d'écriture de requete SQL en mode graphique utilisant les drivers du framework.
note: ces projets sont et seront ajoutés chacun sur github sous licence LGPLv3
2013/10/10 Amélioration du log SQL
Vous avez désormais dans vos logs d'information les requetes SQL éxécutées.Pour rappel, pour activer ce log, il vous suffit de passer la variable information à 1 dans la section [log]
[log]
class=plugin_log
error=0
warning=0
application=0
information=1
2013/10/09 Amélioration du plugin plugin_debug
Ajout de la possibilité d'initié des chronos pour identifier dans votre code ce qui prend du tempsPar exemple chronométrer le temps de récupération d'une requete
public function findAll(){
plugin_debug::addChrono('debut requte A');
$tArticle=$this->findMany('SELECT * FROM article');
plugin_debug::addChrono('fin requete A');
return $tArticle;
}
2013/10/09 Amélioration du plugin plugin_debug
Ajout du log sql sur les drivers CSV et XMLAmélioration de l'affichage de la barre de debug plugin_debug
2013/10/08 Ajout d'un nouveau plugin: le plugin_debug
Celui-ci vous fournit en bas de l'écran (en mode dev) une barre de debug, celle -ci- affiche les variables d'environnements $_GET,$_POST,$_SERVER,$_SESSION
- affiche les variables de connexion
- affiche les variables de configuration
- permet de debuguer une variable en utilisant un espion
- permet d'afficher le fichier de log, si l'option est activée
Utiliser un espion dans votre code avec
plugin_debug::addSpy('mon commentaire', $oMaVariable);
note: si vous avez une application existante et que vous souhaitez utiliser ce plugin,
1. ajoutez dans votre fichier public/index.php
En début de script:
$iMicrotime=microtime();
if(_root::getConfigVar('site.mode')=='dev'){
$oDebug=new plugin_debug($iMicrotime);
echo $oDebug->display();
}
note: la documentation suivra très vite
2013/10/06 Amélioration du plugin plugin_routing
Vous pouvez désormais débrayer la page 404 si nécessaire:Lorsque l'url rewriging est activé, le plugin cheche pour chaque url si elle est renseignée dans le fichier de configuration.
Dans le cas contraire, il redirige vers la page 404 inscrite dans le fichier de configuration.
Vous pouvez désormais désactiver cette page 404 en renseignant une nouvelle variable use404 dans la section [urlrewriting] du fichier conf/site.ini.php
2013/10/06 Amélioration de l'explorateur de projet
Vous pouvez désormais dans l'explorateur de projet editer le fichier en entier en plus de ligne à ligne.2013/10/05 Amélioration du plugin_rouging et _cache
Coté cache, vous pouvez désormais supprimer un fichier de cache quand nécessaire (par exemple ajout d'un enregistrement)Coté plugin_routing, vous pouvez désormais forcer des variables de manières cachées
Par exemple, vous avez une url index_2.html et vous souhaitez non seulement appelé un module avec le paramètre 2, mais également initialisé une seconde variable
Fichier conf/routing.php
'index_:postsid:.html' => array(
'nav'=>'default::index',
'tParam'=>array('postsid','postsAction'),
'tParamHidden'=>array(
'postsAction'=>'show',
)
),
2013/10/04 Builder: amélioration du module authentification + inscription
Le module authentifaction + inscription généré via le builder vérfifie désormais la présence de l'utilisateur.Le fichier de connexion (conf/connexion.ini.php), contenant les profils de connexions a été un peu simplifié pour les connexions utilisant pdo
On passe de
mysqlExple.dsn="mysql:dbname=blog;host=localhost"
mysqlExple.sgbd=pdo_mysql
mysqlExple.hostname=localhost
mysqlExple.database=blog
mysqlExple.username=root
mysqlExple.password=root
mysqlExple.dsn="mysql:dbname=blog;host=localhost"
mysqlExple.sgbd=pdo_mysql
mysqlExple.username=root
mysqlExple.password=root
2013/09/30 Builder: amélioration des CRUD "normaux" et intégrable
Ajout de la possibilité de définir un label lorsque vous générer un module CRUD2013/09/27 Builder: amélioration du CRUD intégrable
Même modification que pour le module CRUD2013/09/26 Builder: amélioration du CRUD
Vous pouvez désormais, lors de la génération du CRUD, choisir les pages/actions à générer (ajout/modification/suppression/affichage) en cochant ou non des cases.2013/09/24 Nouveau tutoriel pour créer votre propre réseau social
Vous avez bien lu, un tutoriel permet de créer votre propre réseau social, celui-ci est en cours de rédaction, il est mis en ligne au fur et à mesureIl est disponible ici bigtutoriel_socialnetwork_I.html
2013/09/22 Refactorisation du builder et ajout d'une fonctionnalité
Coté coeur du builder: le builder a été refactoriséCoté visible: vous pouvez désormais générer un module d'authentification + un formulaire d'inscription
Le menu du builder a été un peu amélioré, il y a désormais un regroupement par type de liens.
2013/09/15 Nouvelle fonctionnalité: le cache de variable
Vous avez désormais la possibilité de gerer un cache de variable. Proposé à l'origine pour vos requetes ORM, il permet:- de gagner en performances
- de décharger votre SGBD
note: vous avez toujours la possibilité d'indiquer une date de "peremption" pour ce cache
Son utilisation:
public function findAll(){
$sId='articleFindAll';
//y a-t-il un cache pour cette variable ?
if(_root::getCacheVar()->isCached($sId) ){
//si oui, on recupere le tableau d'objets en cache
$tArticle=_root::getCacheVar()->getCached($sId);
}else{
//si non: on execute la requete dans l'ORM et on enregistre le tableau en cache
$tArticle = $this->findMany('SELECT * FROM '.$this->sTable.' ');
_root::getCacheVar()->setCache($sId,$tArticle);
}
return $tArticle;
}
2013/09/10 Deux nouvelles méthodes dans la couche modèle findManySimple et findOneSimple
Si vous avez besoin de performances, vous pouvez utiliser ces deux méthodes qui retourneront uniquement des simples objets (stdclass)Ce faisant vous afficherez vos enregistrements plus vite qu'avec findMany et findOne, en revanche, les objets retournés seront des objets "simples" vous ne pouvez pas interagir avec, juste les afficher.
2013/09/08 Nouveau tutoriel sur la génération de module d'authentification
Un nouveau tutoriel est disponible et montre comme utiliser le builder pour générer un module d'authentification ici2013/08/20 Mises à jour du builder
Le builder permet désormais de générer un module d'authentification en quelques clics.L'explorateur de projet a également été un peu amélioré pour afficher mieux les fichiers de configuration.
2013/08/17 Amélioration du builder et mise à jour du site
Le builder permet désormais en plus de générer des modules CRUD de generer des module équivalent en lecture seuleConcernant le site, il devient bilingue ;)
2013/08/09 Disponibilité sur GitHub
Suite à de nombreuses discussions à propos notamment de la possibilité de soumettre des mises à jour et corrections de bugs, je viens d'installer le framework également sur githubL'adresse: https://github.com/imikado/mkframework
Pour information, le dépôt subversion reste actif, je fairais des mises à jour sur les deux, mais préferez la version svn pour votre environnent stable.
2013/08/09 Nouvelles méthodes disponibles isset/unset pour le layout/view et amélioration de l'explorateur de projet
Deux nouvelles méthodes pour améliorer votre utilisation des layout et des vues de vos applications:Vous pouvez désormais vérifier l'assignation d'une variable avant de l'utiliser dans le layout et dans les vues.
Concernant l'explorateur de projet, l'adresse du fihier reste visible en amont du code même si vous scrollez
2013/08/01 Nouvelle fonctionnalité pour le Builder
Une nouvelle fonctionnalité importante sur le builder: l'explorateur de projet.Celui-ci, en beta, permet
- de naviguer à travers les fichiers de vos projets,
- d'avoir une documentation contextuel
- de naviguer entre vos appels de classes model/module
- d'éditer vos fichiers avec des aides de code
C'est la première brique d'une fonctionnalité qui va vous faire gagner du temps.
2013/07/05 Mise à jour de la page de tutoriaux vidéos
La page mettait trop de temps à charger, j'ai opté pour un système de lien qui ouvre une popup où se joue la vidéo youtube.2013/07/04 Correction des classes plugin sgbd_mysql, plugin_html et plugin_check
Ajout d'une méthode "isStrictlyEqual()" dans le plugin plugin_check permettant de faire un test d'égalité stricte contrairement à "isEqual()"Et sécurisation des classes sgbd_mysql et plugin_check, note: pour mysql préférez l'utilisation de pdo_mysql (plus sur)
2013/07/03 Correction de la classe plugin_check
Une correction a été apportée sur la vérification du format d'un email.2013/07/01 Nouvelle correction de la classe plugin_routing
Dernière correction en date qui corrige un problème lors de l'utilisation de plusieurs paramètres.Par exemple dans le cas "article_:id:_:categorie:.html", pour une url de type article_2_archive.html il trouvait uniquement une variable "id" qui contenait "2_archive"
Désormais c'est corrigé ;)
Encore merci à @modulo2 (de developpez.com)
2013/06/30 Ajout d'une page de documentation
Une nouvelle page de documentation permet d'expliquer les variables des différents fichiers de configuration2013/06/28 Correction de la classe plugin_routing
Un dernier bug concernant le plugin plugin_routing pour limiter le début et la fin de l'urlIl permettait d'indiquer de mauvaises url: zzz/backoffice/articles.html était aussi valide que backoffice/articles.html
Idem pour les caractères après: articles.html etait aussi valide que articles.html?variableInconnu=2
Pour rappel, vous pouvez télécharger uniquement le plugin corrigé dans la page de téléchargement
2013/06/27 Correction de la classe plugin_routing
Un autre bug a été corrigé concernant le plugin_routing, il ne retournait pas la bonne valeur en cas de variable en début de "pattern"Par exemple si vous aviez :id:_page.html, il récupérait la totalité de l'url jusqu'à _page.html
Merci à @modulo2 (de developpez.com)
2013/06/27 Correction de la classe plugin_routing
Un bug a été corrigé concernant le plugin_routing, il ne trouvait pas la bonne règle si le nom de ces pages se ressemblait, par exemple il confondait connexion.html et deconnexion.html (selon l'ordre dans lequel il était renseigné).Merci à @modulo2 (de developpez.com)
2013/06/18 Correction de la classe _root
Correction lors de l'appel du module principal, celui-ci appelait la méthode after_action() avant votre méthode _action()Merci à @modulo (de developpez.com)
2013/06/11 Page sur la sécurité
Une nouvelle page fait son apparition et vous indique quels éléments de sécurité sont gérés par le framework et lesquels sont à la charge du développeur.La page: http://mkdevs.com/security.html
2013/06/09 Correction du du builder (générateur web) et sources
Le sous menu permettant de générer un menu avait un soucis avec les projet généré "avec exemples", c'est désormais corrigéA ce propos deux choses au niveau des projets générés "avec examples":
1. les modules d'exemple (utilisé pour les générations) ne sont pu copiés
2. le module article d'exemple utilise des tableaux de jointures pour afficher le nom des auteurs ;)
2013/06/09 Correction du menu du builder (générateur web)
Lors d'une mise à jour du builder, j'ai malencontreusement livré une entrée dans le menu du générateur web pas encore prête "ajouter un module", j'ai créé une version en enlevant cette entrée.A terme il y aura un sous menu permettant d'ajouter certains types de module (authentification...)
2013/06/07 Mise à jour du site
Amélioration de la documentation: j'ai scindé la doc API en deux menus: d'un coté la documentation doxygen, de l'autre une page qui permet de trouver facilement la documentation d'une classe.2013/06/05 Générateur web: Ajout d'un menu pour créer un menu
Une nouvelle entrée dans le générateur web, elle permet de générer un menu à partir des modules présents sur votre projet.Vous pouvez, via un formulaire, sélectionner les méthodes des modules et leur libéllés dans le menu.
2013/06/01 Amélioration du plugin plugin_upload
Suite à une remarque pertinente d'un membre de developpez.com (modulo2,que je remercie au passage) le plugin a ainsi été amélioré.2013/05/30 Changement de licence, passage de la AGPLv3 à la LGPLv3
Suite aux nombreuses discussions que j'ai pu avoir sur le sujet, je change la licence du framework pour une licence plus permessive pour permettre une plus large adoption du framework ;)Le framework passe ainsi en LGPLv3 :)