News
2021/04/03 Framework update for branch 4 (4.138.0) and 5 (5.1.0)
Add new methods on abstract model class- ociBindByName (for oracle use
- commit
- rollback
- getError
they return pdo method with same name
For abstract row
when you use unset() on a row objet, it delete on propertyTab and propertyToUpdate too
When get an error, the stacktrace avoid now function / methodes arguments
This will avoid in error case to write credentials or others sensitive data in logs
2021/01/01 New compatibles php 7.2 versions
To provide the way to run on php 7.2 (and upper) unless regressions risksYou have now 2 branch on framework v4 and v5
v4 for legacy framework compatible with php >= 5.2
v5 for new version compatible with php >= 7.2
On your side, change will be easy, you can see on download page a separation depending on php compatibility
First version number will be increment for each package
2020/04/08 Add a new method in plugin plugin_form/plugin_sc_form
We had a new method getSelectGroup in plugin plugin_form / plugin_sc_formThanks to @LLFT for his contribution :)
2020/04/01 Add new driver for Microsoft Sql Server
After try the new Microsoft Sql server native driver, we see a regression in getting last id insertNow you have a new driver pdo_mssql2
Since mkframework version 4.136.0
Make attention: there are some change in dblib connexion string (freetds)
With Microsoft Sql server native driver:
sqlserverExple.dsn="sqlsrv:Server=localhost;Database=blog"
sqlserverExple.sgbd=pdo_mssql2
sqlserverExple.username=root
sqlserverExple.password=XXXX
VS with freetds
sqlserverExple.dsn="dblib:dbname=blog;host=localhost"
sqlserverExple.sgbd=pdo_mssql
sqlserverExple.username=root
sqlserverExple.password=XXXX
2020/01/15 New options for oracle connector
Two features:1. you can set charset with oracle connexion with a new charset parameter in config file connexion.ini.php
2. you can now choose to ignore automatic protection for values of type TO_DATE()/TO_TIMESTAMP()
For example: (add properties 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 New framework version
We had a new feature: a different way to manage Xss:Start beginning of this framework, i decided to convert all user input in HTML: to save HTML converted string in database to avoid Xss attack when display.
Now, you have 2 new parameters which provide you since the 4.134 framework version to disable HTML conversion when retrieve user input (via getParam method) and to enable this only when use field row from database
In config file, you have now:
;to enable Xss via getParam method
xss.getParam.enabled=0
;or
;manage xss via model layer
xss.model.enabled=1
;customHtmlentities is init in file class_root.php of framework
;you can set an other if needed
xss.model.function=customHtmlentities
With this variable enabled, all your findMany/findOne request (only this, not findManySimple/findOneSimple) will return object list implementing abstract_row which was setup to protect/convert value when getting
For information, abstract_row has 2 new methods: enableCleaning() and disableCleaning().
note: by default, mkframework use customHtmlentities(), which is still use by getParam() to procect for Xss attack, but if you want setup an other, you can in config file :)
2018/11/06 Add OpenStreetMap module
Since the price increase of Google Map services, we should find an other way.That's what i did with this new module
You can download here
2018/08/13 Builder and Lib updated
New versions:- Builder: 2.1.0
- Lib : 4.132.0
- Package: 1.1.0
Units tests added on framework lib
Code coverage is available on this page .
2018/06/24 Update of the Builder
Fix generation module "Create a list class model"2018/06/12 Update of the Builder
Fix of menu module for templates bootstrap and scBootstrapUpdate of configuration file conf/site.ini.php (bloc about redirection, framework always use header way)
2018/05/23 Update of the Builder
Add two methods on the plugin plugin_form, plugin_sc_form getInputPassword() and getInputPasswordEmpty()Thanks llaffont ;)
2018/05/15 Update the mkframework distribution
You have now 3 repositories- framework lib only
- builder (web generator) only
- a package wich contains every things to start
2017/12/26 Correction of the oracle profil connexion
A user told me that the default Oracle connexion file was not comptabile with the builder. I fixed itThanks llaffont ;)
2017/07/11 update download system
Two points:- We add a json file which contains the framework version number, which provide the way to know the version even if you download the archive version then rename it
- We change the download system, now you use the github respository to download the zip archive of the framework
2017/05/22 Mysql driver update
Add protection quotes when ORM execute insert/update SQL requestYou can now use fields with "preserved word" liek order, limit, group...
2016/11/03 GoogleMap module upgrade
Google updated his API a few weeks ago, you need to fill a key for your moduleThe googleMap module is updated to be compatible with this patch, the website too
For information, you have two way to get a module, on the website , or with the market le market
This is the new method to fill this key
$oModuleGoogleMap=new module_googleMap();
$oModuleGoogleMap->setKey('VOTRECLEGOOGLEMAP');
2016/10/28 Builder navigation update + some bugfix
Since the version v4.128.0, you can see the new navigation with a Breadcrumbs.There is some fix to make the framework php7 compatible and some bugfix
For info, the changelog is available here
2016/10/08 Convert Crud Multi module for your bootstrap applications
You can generate now modules CRUD multi line for your bootstrap application (version >= 4.126.2)2016/04/16 Add a test unit module in the builder
Unit tests are often missed because of the difficulty to writeTo help you, a new version of the framework provide you a new module in the builder to generate template for your project.
You need the version of ramework >= 4.125.0
Tutorials will arrive to explain to you how use it.
2016/01/14 Plugin debug: new feature
In some of case, you need to add spy on a variable but because of a redirection you lose the spy.You can now spy despite redirection with this method:
plugin_debug::addSessionSpy('label',$oVar);
For example, you have an author form
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);
}
We need to check if the process enter in save condition
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/25 Application now available
Next step is launched, you can now purpose modules and plugins on your applicationYou don't need go to the website, you can use the market and install it with two clics
Now you can install GoogleMap, Guriddo modules or new plugin with few clics
Tutorials will be available to explain how write/purpose your own modules/plugins to the market.
2015/11/04 Upgrade builder market
Now you can install new builder extension with the new Market.Step 2 is launched (2/3), you should submit and/or install new extension on the builder without go to the website ;)
It's easier, you don't have to download and install zip archive ;)
Then you will have tutorials and process to submit new extension builder to the market.
Next step, we will add an Application market which will provide you the way to install new modules/plugins like (googleMap,phpExcel,Guriddo...)
This new feature will be installable with the new Market :)
2015/10/26 Important update of the builder
A new version of the framework which is a turning point in its history ;)You have in this version:
- new multilingual builder (web generator)
- modules refactorisation which become extensions
- the arrival of the new builder: lot 0 which only manage updates (of builder extension)
In the next days we will fix new bugs on this important update.
Then, we will continue on:
Builder market:
- update of the market to provide the way to add new extensions
- write a tutorial to explain how YOU can propose a new extension for the builder
Application market:
- new applicaiton market which provite to add modules, plugins...
- modules/plugins update management
2015/10/14 Auth module update
You can put all your website under authentication (var auth.enabled in conf/site.ini.php) with an exception list of moduleWith the new version (>= v4_118_0_r287), add in file 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 New roadmap page
A new "roadmap" page has been created, it shows to you works in progress and futures features2013/10/04 Builder: "authenticate + sign in" module update
The module generated check if the user exist before saving it2013/09/30 Builder: Update : CRUD has a new feature
You can define the label2013/09/22 Update of the builder and add a feature
You can generate a private module + an insert formLinks are grouped by type of link
2013/09/15 New features: the var cache
You can use a cache feature. It provide you 2 advantages:- be more performant
- discharge you SGBD database
note: you can indicate a timeout of validity for every cache
An example
public function findAll(){
$sId='articleFindAll';
//is there a cache var ?
if(_root::getCacheVar()->isCached($sId) ){
//if yes, we get the object array in cache
$tArticle=_root::getCacheVar()->getCached($sId);
}else{
//if no, we execute the request in the ORM and we save result in cache
$tArticle = $this->findMany('SELECT * FROM '.$this->sTable.' ');
_root::getCacheVar()->setCache($sId,$tArticle);
}
return $tArticle;
}
2013/09/10 Two new methods in ORM: findManySimple et findOneSimple
If you need performance, you can use this new methods wich returns simple objects (stdclass)You can show rows more quickly than findMany et findOne, but be aware that objects returns are simple, you can't interact with it: only show it.
2013/09/08 New tutorial to create authenticate module
A new tutorial explain you how generate an authenticate module there2013/08/20 Builder updates
You can generate now a private access moduleThe code browser display better the ini configuration files
2013/08/17 The builder is better and the site is multi-language
You can generate with the builder, read-only module, it's like a CRUD but you can only list and display rowsThe site is currently multi-language
2013/08/09 Mkframework available on GitHub
After discussions about this, and to increase the way to provide fix and new features, i provide it now on Github too.The adress: https://github.com/imikado/mkframework
For information, the subversion repository remains active, i will provide updates on both of them, but i suggest to use the subvesion for production environment.