Changelog

Version 0.46 Download Now 

  * dblayeroo : bug in group by feature

Version 0.45 Download Now 

  FEATURES ADDED:
  * form: if there is errors on hidden fields, display them as text with
    read-only. Like this, the error message is correctely displayed to
    the end user
  * fts: Add the simple-quote as separator too

  CORRECTED BUGS:
  * bash-completion: directory change for Debian etc/bash_completion.d/ ->
    usr/share/bash-completion/completions (see also
    https://bugs.debian.org/776954)
  * dblayeroo: insert return the primary key if the field is not an
    autoincrement or if the value is not null
  * dblayer: insert return the primary key if the field is not an
    autoincrement or if the value is not null
  * cli: don't display the list of methods in Stretch
  * Debian package: package-uses-deprecated-debhelper-compat-version 5 (go to 9)
  * Debian package: ancient-standards-version 3.9.6 (current is 3.9.8)
  * dblayeroo : change the Exception to $this->DBException
  * dblayeroo: GROUP BY was incorrect when there was a join and only one local
    grouped function: do not call the displayed field on the join objects
  * dblayeroo: Manage correctely the DISTINCT type of fields

Version 0.44 Download Now 

  CORRECTED BUGS:
  * dblayeroo: update check the unique columns. Allow string with comma
    separated values or array
  * dblayeroo: manage correctely the PGSQL string_agg (instead of GROUP_CONCAT)
  * dblayeroo: Manage correctely the Aliases (do not emit Notice in execute)
  * dblayeroo: do not allow an array of array to be provided to displayAdd
  * ratelimitfile: do a clean of the expired entries automatically

Version 0.43 Download Now 

  FEATURES ADDED:
  * dblayeroo: add directQuery support
  * Add sqlMigrate tool

  CORRECTED BUGS:
  * dblayeroo: insert/update null are not checked against the field format
  * dblayeroo: insert/update null are checked against the "NOT NULL" definition
    except for autoincrement key, which is allowed
  * verify: quote the regexp before using them

Version 0.42 Download Now 

  CORRECTED BUGS:
  * form: Block the submit button to not allow Chrome/Edge to submit multiple
    times in case of multiple clicks on slow server. Bug introduced in 0.41
    doesn't work with Chrome: the form is not submitted

Version 0.41 Download Now 

  FEATURES ADDED:
  * dblayeroo: add < and > comparisons
  * dblayeroo: Add DISTINCT feature to displayAdd
  * dblayeroo: Add IS NOT NULL operator to whereAdd
  * form: Block the submit button to not allow Chrome/Edge to submit multiple
    times in case of multiple clicks on slow server

  CORRECTED BUGS:
  * getopts: substr in PHP7 has not the same result as PHP5.
  * Add Exception if MB support is not available in PHP (External module in
    PHP7)
  * dblayeroo: whereAdd "IS NULL" : do not add the value as it doesn't exists
  * dblayeroo: whereAddParenthesisOpen: Add automatically AND before if there is
    no already defined operator
  * dblayeroo: in GROUP_CONCAT, allow the Separator to be set (use sqlite
    syntax, with a comma and the second optional parameter is the separator
    string)
  * dblayeroo: MySQL: push the group_concat_max_len to maximum allowed
  * dblayeroo: Add alias support (AS) to displayAdd
  * dblayeroo: UPDATE should not verify if the unique are not modified
  * dblayeroo: Update of multiple not unique fields should not be an exception
  * dblayeroo: if displayAdd is empty, remove all the previous defined displayed
    columns

Version 0.40 Download Now 

  FEATURES ADDED:
  * dblayeroo: supports foreign keys on multiple columns with syntax "col1,col2"

  CORRECTED BUGS:
  * dblayeroo: getTableSchema for sqlite if no autoincrement field is defined,
    the sqlite_sequence table doesn't exists and must not crash the method
  * dblayeroo: do not remove the foreign objects when using clearRequest method
  * modelGenerator: use the titles and foreign methods instead of using the
    properties
  * mail: Add the headers with \r\n instead of \n
  * mail: do not use not defined array keys and generate warnings
  * mail: getDetail subject is now really converted to UTF-8
  * mail: mail is now capable to read Mailer-Daemons and extract parts as
    attachment

Version 0.39 Download Now 

  FEATURES ADDED:
  * mail: allow 7bit contents
  * verify: check hashes
  * convert: ucwords in UTF-8 with delimiter

  CORRECTED BUGS:
  * All the require_once are now prefixed by domframework to allow multiple
    loading of the page (without "Cannot redeclare class output")
  * Add the require_once ("domframework/XXX.php"); if the class need another
    class to work
  * dblayeroo: syntax error in table creation for MySQL and PgSQL if multiple
    foreign keys are defined
  * file: glob remove the first char if there is no chroot
  * mail: add a Return-Path header is done on the first line and the other
    headers are added at the end of the headers
  * smtp: if multiple recipients are provided by comma separated string, convert
    them to array

  DEPRECATED FEATURE:
  * verify: obsolete all the methods with underscore

Version 0.38 Download Now 

  FEATURES ADDED:
  * Add the documentation on the Web site

  CORRECTED BUGS:
  * dblayeroo: the connect process need now the database name and generate an
    Exception if not provided in the DSN
  * modelGenerator: catch the Database connection exception correctely
  * route: catch the regex syntax error correctely
  * route: catch the exception generated by route itself and display the error
    page
  * smtp: throw an exception if the TO is not defined
  * file: update glob function to clean correctely in relative mode
  * file: add unit tests for glob function
  * mail: notice if malformed mail is corrected
  * markdown: allow to escape a part of string with backslash to not apply the
    markdown translation
  * markdown: manage correctely the backslashes and the emphasis and the HR
    separators

Version 0.37 Download Now 

  FEATURES ADDED:
  * Add display backtrace support
  * verify: add the verification of UUID
  * verify: Add isAllowedChars to check if a string contains invalid chars
  * dblayeroo: Add the GROUP BY feature and the function support
  * Add "modelGenerator" tool to create the model files based on an existing
    database
  - roleuser: allow to manage a role associated to a user. The data can be
    stored in an array (from configuration by example) or in database or both
    simultaneously

  CORRECTED BUGS:
  * verify: integer can be integer
  * verify: missing "static" on some static methods
  * smtp: remove the spaces in the FROM and TO addresses (or clean the address
    if toto<toto@toto.com> is provided)
  * outputxml: if the provided data are XML, do not change them and just display
    them with the headers
  * getopts: manage correctely the parameters if its value is "" (should not be
    ignored)
  * dblayeroo: autoincrement fields must be primary too
  * mail: allow to read bad formed mail without notice
  * mail: allow header to be set to empty
  * mail: convert the headers to UTF-8 if the mime encoding is set
  * mail: Remove the not needed CR in getDetails

Version 0.36 Download Now 

  FEATURES ADDED:
  * verify: add the static methods
  * verify: add the unit tests and the documentation
  * verify: add the dateSQL check
  * Add the convert format support with date and ucfirst for utf-8
  * Add RSS support
  * Add getopts support
  * Add UUID creation feature
  * dblayeroo: allow to sort the ORDER statements (the first added is the first
    used)
  * dblayeroo: allow to sort the Display statements (the first added is the
    first used)
  * dblayeroo: Do not allow autoincrement if the field is not integer
  * dblayeroo: Add a export configuration feature to return an array with all
    the defined parameters

  CORRECTED BUGS:
  * dblayeroo: review the join process and add the unit tests for it
  * form : If the error is not due to field (it has numerical key, put the focus
    on the first field (if available) and not on the global error

  DEPRECATED FEATURE:
  * dblayeroo: change displayColumns to displayAdd

Version 0.35 Download Now 

  FEATURES ADDED:
  * authentication : allow logout to provide a url to be displayed after
    successful logout
  * color : allow to translate a color in english to RGB or GD color
  * dblayeroo : add a new dblayer class. More OO, supports more options than
    dblayer
  * fts : The Full Text Search module for dummies
  * route : add the mapRoute function to know the matching route search
    comparison
  * dblayer : allow the read order to be written in lowercase too

  CORRECTED BUGS:
  * auth : manage correctely the urls with quotes
  * csrf : manage multiple CSRF tokens in the same PHP call (and provide the
    same result) : pseudo-singleton
  * dblayer : the length of the fields must be checked in UTF-8 and not in
    Latin1
  * route : redirect analyzer is not check if the value doesn't exists
  * route : do not cache the baseURL if the Absolute parameter is set

Version 0.34 Download Now 

  * file : Do not allow the locks to be done if the file to lock doesn't exists
  * DomCI : remove all the too long lines, the starting tabs, the ending spaces
  * DomCI : Validate the PHPDoc for all the parameters, methods and classes
  * smtp : if there is an error with the server, send QUIT and close correctely
    the connection
  * authparams : if the email is not provided by Shibboleth, reject the auth
    instead of having a warning
  * file : add the methods is_readable, is_writeable, is_executable, glob

Version 0.33 Download Now 

  * file : bug in the rmdir recursive
  * file : add the filemtime function
  * mail : allow 120 parts of the mail (allow to add 100 attached files)
  * mail : if addAttachmentInline, start the HTML to be mail compliant. Raise an
    exception if the html part is not provided before using getMail ();
  * mail : change the boundary format to be compatible with Orange Webmail

Version 0.32 Download Now 

  * form : don't force a <br/> at the end of the help messages
  * form : put the focus on first field NOT readonly and NOT hidden
  * form : display correctely the checkboxes (add label and div='checkbox')
  * form : manage correctely the checkboxes with values (the values can be
    defined and set to no "unset")
  * cli : If the provided argument is -?, display the variable with the phpdoc
    associated
  * Remove all the trailling spaces

Version 0.31 Download Now 

  * form : the overwriting of the hidden and read-only fields must be done by
    value
  * file : add md5_file and sha1_file support
  * outputjson : display an error message if the json to display is invalid
    (binary)
  * authentication : if there is no lastname/firstname provided, don't generate
    a warning

Version 0.30 Download Now 

  * Add more debug for authentication
  * ratelimitfile : raise an exception if the file already exists and is not
    writeable by the webserver
  * cli : go to the main directory in the constructor to allow configuration
    reading
  * file : copy can copy directory or files
  * file : if file_exists is used, a missing parent directory doesn't
    generate an exception
  * file : add chown, chmod, chgrp support
  * file : add flags support for file_put_contents
  * authentication : manage correctely the routes (no trailling slash)
  * authentication : when debugging, save the logs in file
  * authhtpasswd : return the only detail available -> email
  * auth : refresh the CSS to be more user friendly
  * auth : better error message display (red, with round corners)
  * route requestURL (true) in subdir invalid :
    http://localhostiptables/ipv4/filter/INPUT (missing directory)
  * form->values () : must overwrite readonly and hidden fields (the user
    can modify them, but it is not allowed)

Version 0.29 Download Now 

  * file : add scandirNotSorted function
  * cli : change the directory as soon as the cli object is created, allow to
    check if a relative path is available in next line
  * authentication : allow to define a specific logging function instead using
    the trigger_error

Version 0.28 Download Now 

  * dblayer : check if the table name is defined before using it
  * dblayer : check if the PDO Driver is installed in PHP before using it
  * dblayer : allow read with null value
  * dblayer : delete : raise a valid exception if the delete can't be done
  * dblayer : return all the verify errors in the same shot•
  * dblayer : allow to have external verifyOne and verifyAll functions
  * dblayer : allow to define the hook functions in the specification of the
    layer. Can be external ones.
  * smtp : manage the dot on first column : double it before sending the email
  * mail : add setSubject method
  * mail : cut the long attachment filenames in headers with the correct
    encoding
  * mail : manage correctely the double-quotes in filenames
  * language : Add a working cache management. No need to restart Apache after
    upgrade of .mo files if a cache directory is available
  * config : allow the defaults vals to be returned in array of arrays
  * authsql : missing fields in db connection
  * file : add rename and copy functions

Version 0.27 Download Now 

  * outputhtml : add a timestamp after the internal resources when creating the
    page. Like this, when updating a script, image or css file, it is updated by
    the client automatically (the browser don't use its cache)
  * form : if a convertDate field provided is empty, do no generate an error
  * form : Allow to define a class text to form object
  * csrf : add the exceptions code to Exceptions
  * csrf : Allow to get the CSRF token from the CSRF or FORM classes

Version 0.26 Download Now 

  * smtp : add SMTP support to send emails (with TLS, authentication PLAIN and
    LOGIN, debug, non standard port, STARTTLS)
  * mail : Complete rewrite. Allow to read an existing mail
  * cli : allow the controllers\\ to be optional
  * cli : allow the models\\ or controllers\\ to be optional if the name of the
    class is unique
  * cli : add a "-q" option to not display the return code
  * BUG dblayer : Can't read with OR if there is multiple time the same field
    with different values
  * cli : display the complete string instead of truncate it
  * form : add the conversion format for dates

Version 0.25 Download Now 

  * Update Unit tests to not depend of configuration
  * Update Unit tests to have a distinct database file by test file
  * file : all the management of the files, with integrated filesystem checks,
    and virtual chroot support
  * form : fieldwidth is now functionnal
  * form : add the methods getOldValues, getOldErrors, saveValuesErrors and
    saveValuesErrorsReset to simplify the codes.
    In views :
      $form = new \form ();
      $values = array ();
      $errors = array ();
      // If there is saved values, use them, else return the provided $values
      $values = $form->getOldValues ($values);
      $errors = $form->getOldErrors ($errors);
    In index.php :
      $form = new \form ();
      $values = $form->values ();
      $errors = $ipsetsObj->verify ($values);
      $form->saveValuesErrors ($values, $errors);
      if (count ($errors)) $route->redirect ("/ipsets/add");
      $ipsetsObj->createSet ($values["setname"], $values["typename"]);
      // If there is no error (catched by exception), clear the form for next
      // time
      $form->saveValuesErrorsReset ();
      $route->redirect ("/ipsets", "");
  * route : redirect without module : default = "";
  * route : allow to define a viewErrorClass and viewErrorMethod to catch the
    exceptions raised by the code. Simplfy th e index.php :
      $route->viewClass = '\views\ipsets';
      $route->viewErrorMethod = 'error';
      $ipsetsObj = new \controllers\ipsets ();
      $form = new \form ();
      $values = $form->values ();
      $errors = $ipsetsObj->verify ($values);
      $form->redirectIfErrors ($values, $errors, "/ipsets/add");
      $ipsetsObj->createSet ($values["setname"], $values["typename"]);
      $route->redirect ("/ipsets", "");
  * form : if the provided error for a field is not an array, use the default
    error class and use the value as message
  * route : if there is an error with the ratelimiter (directory not
    writeable...), overload the exception by the ratelimiter exception
  * auth : Add Shibboleth support
  * route : store in session the last valid get page to allow to return with
    small method : $route->lastValidGetPageRedirect ();
  * form : add the verify of forms. Actually check only the mandatory part
  * form : add maxlength support
  * mail : the mail creator. Allow to create complete mails easily
    $mail = new mail ();
    $mail->setFrom ("sender@example.com","Sender Example Com");
    $mail->addTo ("recipient1@example.com","Recipient1 Example Com");
    $mail->addTo ("recipient2@example.com","Recipient2 Example Com");
    $mail->setBodyText ("Content of TextBody part");
    $mail->addAttachment ("file0.text", "File content");
    $contentID1 = $mail->addAttachmentInline ("file2.jpg",
                                              file_get_contents ("file2.jpg"));
    $mail->setBodyHTML ("<p>Content of HTMLBody part with inline
                         <img src='cid:$contentID1'></p>");
    echo $mail->getMail ();

Version 0.24 Download Now 

  * Add DBJSON support. DBJSON is a NoSQL database, writing the data in one
    file. There is no optimizations, so it is not fast, but it works on all
    the PHP sites with filesystem access
  * phpunit : use assertSame in place of assertEquals
  * authhtpasswd : Check if the first char exists before testing it
  * inifile : check if the integers are correctely stored
  * markdown : Example of cron configuration
        * * * * * www-data /usr/share with 4 beginning spaces is not OK (remove
    all the stars and put a bullet)
    The lists (numbered or not) must start on first char
  * config : allow to have the defaults params in ->get() in case of array
    without defined key

Version 0.23 Download Now 

  * Add inifile support
  * authzgroups : Raise an exception if there is a SQL error
  * authzgroups : the "right" alias is now between double-quotes to be
    compatible with MySQL
  * language : allow to force the language from anoter source than the cookie
    and the browser params
  * Correct the syntax of data
  * Correct the syntax of information
  * route : Pass to renderer the information concerning the routing and the
    exception
  * form : add the javascript to focus on the first field if there is no error,
    or on the first error when there is one
  * Check if all the translations are done by dgettext("domframework",
  * ipaddresses : Add support to calculations on IP addresses
  * route : ratelimit the errors to not allow the hackers to brute force the
    backend
  * route : do not exit in error part to allow the unit tests
  * route : update the unit tests
  * BUG Markdown : if an automatic URL have two underscores, the <em> work and
    the URL is incorrect
  * dblayer : removing the unused create function (later than 0.8)

Version 0.22 Download Now 

  * dblayerauthzgroups : allow the user to be provided by auth object directely
  * route : allow the routing to be chained : return $this each time
  * route : multi now return $this to be chainnable
  * Add imap and authimap support
  * dblayer : support of null data was not working in insert/update
  * form : add the placeholder support

Version 0.21 Download Now 

  * language : correct the layout <html lang='en'> by the associated language
    <http://www.w3.org/TR/html5/dom.html#attr-lang>
   
 <http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry>
  * authzgroups : if the provided object start by a slash, don't add it.
  * authzgroups : add a local cache in the object, for the userrightsget, to
    not access to the database each time
  * dblayer : add the hookpreread and the hookpostread
  * dblayerauthzgroups : add the support to dblayer with authzgroups rights
  * dblayer : define the setters of properties to allow chained ->
  * dblayerauthzgroups : define the setters of properties to allow chained ->
  * dblayer : If provided select is not an array of array, throw an exception
  * dblayer : if the verify return an array with the field in key, the exception
    of update is now working
  * Add users and userssql
  * authhtpasswd : Add support to authenticate the user from a .htpasswd file,
    created by "htpasswd" command. Allow to add easily a new user if the admin
    password is lost
  * cli : add support to namespaces
  * cli : don't display the protected/private methods : can't be called
  * cli-completion : complete rewrite of the bash completion help
  * cli : if no controller or models exists, return nothing in listonly mode
    (bash_completion)

Version 0.20 Download Now 

  * logger : remove the [internal functions] (without file and line) from the
    logs
  * start : move the language selector to be available in the authentication
    page
  * logger : add a <br/> to messages displayed on screen to allow the traces to
    be readable
  * authentication : better error management in configuration (Exception in case
    of errors).
  * authentication : allow multiple source of authentication for the same
    authMethod (multiple LDAP servers by example). Conservative, allow the old
    authMethod to be used when only one entry is available
  * logger : allow to store the logs in session (to be readable in debug)
  * authzgroups : add the functions to check the accessRight, accessWrite,
    accessReadOnly
  * dblayer : add a Singleton to not reconnect each time we need to access the
    same database.
  * dblayer : add a method to disconnect the database engine
  * dblayer : add the transactions methods, linke in PDO
  * dblayer : remove the extension of PDO

Version 0.19 Download Now 

  * config : if no configuration file exists, create a default one in
    data/configuration.php
  * route : allow a prerouting information to be used in map comparisons
  * route : the URL are decoded before providing the information to map
  * renderer : add the html support directely in renderer
  * renderer : add a basic html page if the layout is not defined
  * form : don't allow to display a form without defined fields
  * form : add a "addfield" method to add a field in form
  * form : remove the &nbsp; in labels to be W3C compliant
  * form : rework the checkbox/radio to be compliant with bootstrap and ARIA
  * form : add the help support (which is hidden when there is an error)
  * form : display the help with the error if both are defined
  * form : allow checkbox to be multiple (in an array) or simple (in text)
  * form : add support to save the values and errors to redisplay the form in
    without code line ! Just add "$form->saveValuesErrors ($values, $errors);"
    in post routing to save the data, and in get they will be automatically
    re-displayed when going back in get
  * route : catch the http errors from PHP (with error code 0) as "Internal
    Server Error" (error code 500)
  * form : allow to define the bootstrap width for titles and fields columns
  * route : add the 'multi' method to allow multiple methods to be applied to
    the same route and function
  * route : redirect to myself : code 400
  * route : remove the automatic adding of the / to allow the redirect from
    word to word/ without error of loop
  * language : add the languageName support
  * ratelimitfile : allow the lockfile to be in the same directory than the
    ratelimit files
  * logger : add the support to catch all the trigger_error messages
  * logger : add the backtraceDisplay conditionnal
  * Add authentication class for REST/HTML pages, with multiple auth methods and
    multiple servers for each
  * logger : remove 1 backtrace step by default to have the right file
  * start : add the start file to easily start a new project. Copy the beginning
    of the file in a index.php file and that's all !
  * outputhtml : Add a basic HTML page when noting is declared
  * route : allow the 401 error code to be redirected to an external URL to
    authenticate the user
  * renderer : display the flash information automatically if it is defined.
    Allow to overwrite the layout page when calling the function
  * dblayer : create table : add "if not exists"

Version 0.18 Download Now 

  * config : return an Exception code when there is an error
  * config : allow the configuration file to be setted in the object and used
    instead of defined one
  * logger : add stderr support
  * BUG form : allow the values and the errors to be displayed (introduced in 
    0.17 version)

Version 0.17 Download Now 

  * route : the redirect can be done outside the site, with a warning
  * logger : allow the types of log to be a string or already an array
  * config : add the '@prefix' support
  * form : add the cols,rows for fields
  * form : the fields are now extendable (to add new types by extends the class)
  * outputtxt : allow the titles to be longer than the datas, without error

Version 0.16 Download Now 

  * route : requestURL wrong if the URL is at the base of the Web server
  * route : correct the routing if the mod_rewrite is disabled
  * unit test : update the tests for route.php with or without mod_rewrite

Version 0.15 Download Now 

  * form : add the textarea support
  * auth : if the user is already authenticated and the URL back is provided,
    add a link to the defined URL
  * logger : allow the facility and loglevel to be string. They are converted
    into integer before use
  * config : add the function docComment to read the parameters from the default
    config file. It allows one to create easily the interface to configure the
    soft

Version 0.14 Download Now 

  * BUG config : an array with "not configured" should not be presented if there
    is another entry available
  * Remove the CSRF debug log

Version 0.13 Download Now 

  * route.php : Add support of URL matching with or without Slash
  * dblayer : don't connect multiple times to the same database/username
  * dblayer : don't do the update if no data is provided
  * dblayer : add support to hooks (pre|post)(insert|update|delete)
  * authzgroups : update to support new dbLayer object
  * logger : allow to push multiple datas of multiple types in logs. The log
    convert it in text to save them
  * logger : allow to remove more entries in the dump stack to find the right
    file calling the logger
  * logger : log the readl client address when using a proxy
  * config : allow to read the configuration file from data or datas dir
  * module : Add support of modules analyzing
  * routeSQL : Add pagination support and informationArea
  * routeSQL : Add support to user-defined actions buttons
  * routeSQL : Actions buttons must be defined at start or end of line
  * routeSQL : Allow to put the parameters in any order
  * routeSQL : Allow to disable the internal CSS
  * routeSQL : Create a beautiful internal CSS for listing of entry (without
               external dependency)
  * routeSQL : Add Search support
  * routeSQL : Push in a cookie the numbers of displayed elements (by URL)
  * routeSQL : Push in a cookie the search criteria (by URL)
  * routeSQL : Add position of add button/paginator/search arround the table
  * routeSQL : Create a beautiful internal CSS for editing an entry (without
               external dependency)
  * routeSQL : search can now start by a ^ or finish by a $ to simulate a regex
  * routeSQL : Add support of url-defined var (like zone/XX/entry/YY)
  * routeSQL : Add an optional authorization support
  * routeSQL : Do a READ-ONLY mode
  * routeSQL : Display the HTML pages with the renderer to be more flexible
  * routeSQL : add REST support (without auth, nor chained mode)
  * routeSQL : Limit the list to the authorized of elements
  * routeSQL : Add the Chain support to REST support
  * routeSQL : Add the Authorization support to REST support
  * routeSQL : Add the module support for $route->redirect(XX,module)
  * routeSQL : do the translation in english/french
  * routeSQL : don't display the pages directely, but use the view layer to
    display the content variable
  * routeSQL : Display the associated unique field from a foreign key instead of
    the numerical value
  * routeSQL : Add a select list (or a text search) for foreign keys when insert
    or update
  * BUG routeSQL : incorrect cookie used when search in a page and go in a
    chained page : the chained page use the cookie without need !
  * auth : don't need bootstrap or jquery to work (all the CSS is integrated)
  * ratelimit : add the ratelimit abstract class with its first child (file
    storage)
  * lockfile : in file
  * authentication : if a proxy is used, the url to redirect is incorrect and
    should not be used (maybe a relative URL can be better)
  * route : if a proxy is used, the baseURL is wrong. It should be better if a
    relative URL is used. Need to modify the redirectURL too. There is a param
    $absolute to allow the old mode to be operationnal (not used by default)

Version 0.12 Download Now 

  * BUG locale : Missing all the locales in Debian package

Version 0.11 Download Now 

  * BUG dblayer : check if the unique multiple values are not used before
    updating
  * BUG Markdown : Two automatic links on the same line are not correct, the
    regex must be Ungreedy
  * BUG route : if using modules, the redirect was wrong
  * form : the submit text can be defined in the label too
  * form : add the hidden support to the fields
  * BUG dblayer : Add support to ordering if column name is 'group' by using the
    separator (need by SQLite)
  * HTTP authentication : return an exception with 401 to allow the browser to
    authenticate. Allow the REST API to work by catching the error instead of
    die

Version 0.10 Download Now 

  * BUG : dblayer : don't raise an exception when re-inserting unique record
  * dblayer : add more unit tests
  * route : In case of exception, a HTML page is sent. If REST, it should be a
    simple string, without presentation (can be done by using specifig error
    pages)

Version 0.9 Download Now 

  * authorization by groups
  * dblayer : add support to OR in WHERE clause
  * dblayer : add singleton access to DB
  * dblayer : force using UTF8
  * dblayer : add the unittest for the 3 db engines
  * dblayer : UPDATE : add the case of updating the primary key (actually
    oldvalue = newvalue and replace by the same value, so don't update)
  * dblayer : extract the verify tests (before insert/update) to a function
    available to public (can be launched when the developer want)
  * Add dblayer unit tests to check the unique functionality
  * BUG : route : allow redirect if the method is changed and the URL stay the
    same
  * route : Add support to errors from the application
  * BUG : auth : Add the path to the default login window to load the javascript
  * Add dblayer unit tests to check the foreign keys

Version 0.8 Download Now 

  * renderer : Add variables support to layout. All variable defined in 
    $variable is available in $XXX in the layout file. It can be used with php
    structures
  * cli : do a bash-completion module to find the classes and the methods
  * cli : add a trigger_error catch (display the errors in stderr)
  * route : add permanent redirect support
  * Markdown : add image support
  * Markdown : Add more tests
  * BUG : Markdown : remove http:// mandatory in links : can be relative !
  * BUG : Markdown : carriage return : missing space : see testCarriageReturn1
  * BUG : Markdown : emphasis : see testUnderscore
  * BUG : Markdown : the mailto links don't have the //
  * BUG : Markdown : Correct the OL/UL imbrication
  * BUG : Markdown : error ### l'utilisateur -> should be title h3

Version 0.7 Download Now 

  * dblayer : Add dropTable support
  * Add multi-language support
  * The exception captured by routing is now a valid HTML page

Version 0.6 Download Now 

  * BUG : cacheoutput : If the TTL is 0, remove the caching functionality
  * dblayer : Add the prefix support in tables name
  * dblayer : Check if the provided datas are not too long before saving them
  * dblayer : Check if the datas are in the ANSI SQL format (date datetime)
  * BUG dblayer : The missing foreign keys in update should not be tested
      (introduced in 0.5 version)
  * Add version support

Version 0.5 Download Now 

  * dblayer : Add a check before using unique/foreign to be sure that the field
  to be linked is in the fields array
  * dblayer : rename the function create to insert. Keep the create temporaly to
    be compliant with old soft
  * Create the phpunit tests : just run "phpunit" from the root directory
  * route : baseURL/requestURL : missing port when using not standard port
  * PHP Strict Standards:  Only variables should be passed by reference in
    cli.php on line 151 (on debian, whith ./cli/cli.php records)
  * Add support to variables in the renderer. They will be availabe to the view
    to be trated as needed
  * Add support to cache in file (anything can be cached)
  * Add support to easy cache HTML pages
  * Route : remove port in baseURL if it is the standard port (http->80,
    https->443)
  * cachefile : run the garbage collector each request (it will be skipped if
    it is run too early, before 24h)

Version 0.4 Download Now 

  * markdown: BUG for == titles / -- titles
  * markdown : BUG : * * * - - - shoud be SEPARATORS
  * markdown : BUG : the mails/url are not working caused by htmlentities
  * markdown : BUG : bad closing </li> in <ul> list
  * markdown : BUG : - line1\nline2 : should be the continuity of <li>, not <p>
  * markdown : BUG : the ### TITLEx doesn't work caused by the search empty line
    at the ned and at the start of the regex

Version 0.3 Download Now 

  * dbLayer : Create a operationnal list table for sqlite/mysql/pgsql
  * authorization model

Version 0.2 Download Now 

  * dbLayer : If SQLite, don't allow to use database if it is not writeable
  * dbLayer : Bug if update in unique field verification
  * dbLayer : Allow creation of tables from a definition (fields, uniques
              entries, foreign keys)
  * BUG cli : Variable used without initialisation

Version 0.1 Download Now 

  * Debian Package