26/08/2020 by Dominique Fournier
FEATURES ADDED:
* form : disable the label linking to checkboxes and radio if more than 1
checkbox/radio is set
* spfcheck : Allow one to test an IP against the SPF DNS entries sets
* tcpserver : Allow one to stop correctely the server with a method
* tcpserver : New method to start the server in background
* tcpserver : Add unit tests
- tcpserver : Understand the bug with tests
* tcpserver : manage the timeout : disconnect the user and generate an
exception by default. Can be overloaded by the developer
* Password : manage all the existing PHP hash types. Allow more salt methods.
Add more OOP with the list of the allowed hashes.
Add also random password generators with ASCII, Alphanum and Alphabetics
outputs
* robotstxt : catch the errors with the associated lines.
* robotstxt : more unit tests
* ipaddresses : netmask2cidr mask wildcard is now calculable
* ipaddresses : Add cidr2netmask method for IPv4 masks. Can also calculate the
mask wildcard
CORRECTED BUGS:
* debian/control : remove the HTTP server dependency, add php-cli recommends
* tcpserver : Child management : catch the TERM/INT/CHLD signals
* Fork / TCPServer : manage the background job to catch the errors triggered
by PHP (do not hang without message if an error is raised)
* ipaddresses : invalid netmask2cidr mask was not correctely detected
* dblayeroo : getTableSchema was wrong if multiple tables have identical field
name
* modelGraph : better text indentation
* authparams : do not set the cookie in session if it doesn't exists. The
standard users don't need cookies
DEPRECATED FEATURES:
- It is the last version where the PHP5 compatibility is set
14/04/2020 by Dominique Fournier
FEATURES ADDED:
* Add modelGraph.php in Tools. Generate the ER Diagram of an existing
database. Based on graphviz
* Convert : update humanSize to supports negative numbers or numbers between
-1 an d 1. Add Unit Tests
* Add encrypt/decrypt support
* JWT : allow one to encrypt the payload
* authentication : allow one to store the user password if the REST
authentication is valid
* Update http bestChoice to support the priority provided by the user
* rest : add unit tests and rewrite to use the real MIME types
* XMPP Client : basic message send to XMPP server
CORRECTED BUGS:
* getopts : in case of execution in Website, do not generate any error
31/10/2019 by Dominique Fournier
FEATURES ADDED:
* mail : Add folding
* route : relative routes are now relative to site base and not relative to
current directory. Due to bad coded crawlers and browser as they don't
manage correctely the ../ in front of relative URL.
Pay attention if there is a proxy : the absolute path may be modified
* logger : remove the \n in syslog as they are written as #012
* dblayeroo : allow one to log with priority
* dblayeroo : transactions are now logged like the other commands
* console : Rewrite all the suggest call method. Parameter change is now an
array split
* form : Add Bootstrap4 support (change formThemplate to select). Bootstrap3
always the default one
CORRECTED BUGS:
* mail : getDetails return attachmentDetails at empty if no attach is defined
* console : up and down keys generate warning because of the timestamp record
* console : reset Bold was not working on linux TTY
10/09/2019 by Dominique Fournier
FEATURES ADDED:
* Add the macaddresses support
* file : add fileArray (can not be named 'file' as it is the class name)
* httpclient : allow one to get TCP source/dest IP and ports in getInfo method
* dblayeroo : Add BLOB support
* csrf : allow the user to get multiple browser windows by storing multiple
CSRF tokens
* form : remove the used CSRF token after getting the values
20/06/2019 by Dominique Fournier
FEATURES ADDED:
* JSON Web Token library
* authentication : allow one to set a JSON Web Token if the authentication is
valid. Remove it on logout.
* authjwt : allow one to authenticate users based on JSON Web Token
* httpclient : allow ssloptions to be set before connecting
* httpclient : add the authentication method and do not reset it between
connections
* httpclient : allow one to overwrite Content-Type with form data
* robotstxt : Allow one to read the robots.txt files available in websites and
give the rights to read the URL associated
* tcpclient/httpclient : add Meta() method to get the Ciphers/Protocol used in
SSL connections
* http : Add 416 Error code 'Range Not Satisfiable'
* outputdl : allow one to download a file from filesystem, and manage the
partial download if the browser request it
CORRECTED BUGS:
* route : The debug was HTML invalid (missing </pre>)
* route : add folding in code
* httpclient : do not force the namespace for domframework
13/05/2019 by Dominique Fournier
FEATURES ADDED:
* Queue support. Allow one to store data on disk and retrieve them by another
process
CORRECTED BUGS:
* dblayeroo : if the clean is done, do not generate a warning to found the
fields types
* remove the tables names if there is no collision risk. The display table is
not necessary the $this->table one.
25/04/2019 by Dominique Fournier
FEATURES ADDED:
* outputhtml : Catch the HTML errors and display them
* outputcsv : Allow multidimensional arrays
* Add authzgroupsoo, the replacement of authzgroups.php, with dblayeroo
backend
* authzgroupsoo : Get the state of the tables, allow one to delete the tables
and allow one to use a tableprefix
* authzgroupsoo : allow one to set the right to NO. It can be different of not
set
* authzgroupsoo.php : Allow one to access to DB objects
* csrf : allow one to extend the CSRF token expiration
* dblayeroo : get the foreignUsed fields and tables
* dblayeroo : Add meta support to do analyzis
* form : add method setter
* xdiff : side by side support with screen width parameter
* Add certification authority support
CORRECTED BUGS:
* authentication : if logout url is null, do not crash and redirect to
authentication page
* dblayeroo : Clean the columns name if there is only one table displayed,
even if join is used
* dblayeroo : do not normalize (trim) the arrays
* dblayeroo : manage namespace correctely
* dbalyeroo : clearRequest return now $this to be chained
* dblayeroo : get the primary key for PostgreSQL
* httpclient : reset the parameters when all the content is get (to allow the
redirect to work correctely)
* outputhtml : do not catch all the zones defined by {XXXX} but only the
layout defined ones
* form : do not test CSRF if it is disabled
* form : if the form contains only checkboxes, manage correctely the focus on
first one
* ratelimitfile : do not store more than 128 chars in filename
28/12/2018 by Dominique Fournier
FEATURES ADDED:
* httpclient : add rawData support
* httpclient : add getContent () method
* httpclient : de-zip the content of the page if Content-Encoding = gzip
CORRECTED BUGS:
* renderer : if the output is not defined in domframework, do not generate an
error to allow the loading of the class by the autoloader
* authentication : do not try to log in debug an array like a string
* httpclient : when the Content-Length is set to 0, waiting socket is not
needed
21/12/2018 by Dominique Fournier
FEATURES ADDED:
* Start the namespace conversion (no namespace defined, but add the needed
calls \Exception and __NAMESPACE__."\class")
* route : allow OPTIONS HTTP method
* xdiff : Add XDiff support in pure PHP. Allow one to see which lines of two
text files are modified, like the "diff" command. See
https://en.wikipedia.org/wiki/Diff
* route : catch the base of site on "." too
* dblayeroo : Add FLOAT support
* dblayeroo : Add normalize method by default (trim all the values, except the
null ones). Use it in verify too
* dblayeroo : Add the "realTypes" support with basic associated tests. The
realtypes are more specific than the SQL types. Examples the real type
"mail" will be stored in "varchar(255)". If the user want some custom
tests, it must extends the class and create checkRealType_XXX tests
* outputhtml : Allow one to get multiple data from the view and replace all
the array keys by their values (and not only and )
* tcpclient : Add timeout support
* httpclient : allow one to use http connection to GET/POST data with cookies
management and HTTPS support. All of this without allow_url_fopen need
CORRECTED BUGS:
* ipaddresses : update CIDR tests : was not catch error if the last char of
CIDR was a letter
16/07/2018 by Dominique Fournier
FEATURES ADDED:
* form : supports multiple forms on the same page
* form : add setters for fields
* form : The label is now optional
* form : add logging support for exceptions
* form : Add redirectIfError method to simplify the code in index files
$form = new \form ();
$values = $form->values ();
$errors = $spaceObj->verify ($values);
$form->redirectIfError ($values, $errors, $route, "/admin/space/");
$spaceuuid = $spaceObj->spaceCreateConceal ($values["spacename"]);
$route->redirect ("/admin/space/");
* form: add 'file' type to upload
* dblayeroo : Add support to natural sort in ORDER
* dblayeroo : allow one to orderAdd on aliases too
* dblayeroo : listTables : sort the tables. Do not return the sqlite_sequence
table
* file : add fileinfoMimeType and filesize
* console : allow one to print text and get textual data from user.
Manage correctely the Ctrl+W, Ctrl+U, Ctrl+L, Backspace and Delete keys,
Begin and End keys and the cursor move (with or without Ctrl).
Manage the history and the autocompletion with key up and down.
Allow one to hide the requested text, like password.
Supports correctely the UTF-8 chars.
Allow one to autocomplete with value+help message, or value only
Manage correctely the window size
When moving to an old history, keep the position of the cursor if the user
come back on the tmp stored entry
Add color support
Add bold and underline text support
* authentication: manage the session only if the authentication page is
required. Do not set a session cookie if the user don't need to be
authenticated
* authentication : Add X-Frame-Options "SAMEORIGIN" to authentication page
* language : do not set the cookie if it is not needed. Update it if it is
valid
* route : add setter/getter for debug param
CORRECTED BUGS:
* MAX(field) only -> SQL crash with GROUPBY without parameter
* dblayeroo : do not generate an error if a comma is provided to GROUP_CONCAT
* dblayeroo : Manage the GROUP_CONCAT in PgSQL without error of casting
13/03/2018 by Dominique Fournier
FEATURES ADDED:
* ipaddresses : add validCIDR, validIPv4CIDR, validIPv6CIDR to check the CIDR
* ipaddresses : add validIPAddressWithCIDR, validIPAddressIPv4WithCIDR and
validIPAddressIPv6WithCIDR
* ipaddresses : add compressIP to compress an IPv6 address (remove the 0 and
add the :: if possible)
* ipaddresses : add networkFirstIP and networkLastIP to get the first and last
address of a network. In IPv4, the first address is network address and the
last address is broadcast address.
* ipaddresses : add ipInNetwork to know if the provided ip address is in or
outside the network and cidr provided
* ipaddresses : Manage the IPv4 blocks in IPv6 : ::ffff:192.168.1.2
* tcpserver: allow the loop to be interrupted by a signal
* tcpclient : generate an exception if the DNS has an error
* tcpclient: Get the A and AAAA records before querying the CNAME only if
needed (speedup if the CNAME DNS can not be found and hang the request)
* tcpclient : Allow one to set the SSL options if needed
* tcpclient : use the TLS1.1 or TLS1.2 and no more the TLS1.0
* password : Add password management and the associated tests
* cli : Add controllersDir and modelsDir methods to set multiple paths for
controllers and models
CORRECTED BUGS:
* tcpclient: test correctely the certificate of the server by setting
correctely the name of the peer
* tcpclient: enable crypto : raise an exception in case of error
* tcpserver: do not generate a warning on screen if the client reject the
crypto enabling
* logger : to file, add a LOCK_EX to be sure that each message is finished to
be write before starting a new one
* daemon : do not start the daemon if the PID file is finished by a \n
* outputhtml : allow the class to be defined by an autoloader instead of hard
wire the class files
* authentication : use the ratelimit dir /tmp/ratelimit to not try to remove
all the files in /tmp
05/01/2018 by Dominique Fournier
FEATURES ADDED:
* route : Add the proxy support for baseURL and requestURL
* dblayeroo: allow the foreign keys to be a NOT NULL field, then not be tested
* dblayeroo: the post execute select must not convert a NULL to INT if a
column definition is INTEGER
* Add fork support
* Add daemon support
* Add TCP client support. Allow one to connect easily and get data in SSL or
unencrypted mode to a TCP server
* Add TCP server support. Allow one to create a TCP server with or without SSL
encryption
CORRECTED BUGS:
* form: select field : allow the provided value to be an integer and work
correctely in comparison with the string defaults values
30/10/2017 by Dominique Fournier
FEATURES ADDED:
* Add the PHP7 Support to Debian
26/09/2017 by Dominique Fournier
FEATURES ADDED:
* config: allow the DocComment to start with star
* config: Manage the configuration in update too. The params must be defined
starting by slash
* form: raise an exception if a default value is not a string
* fts: add [] to regex to the start/end of word
18/09/2017 by Dominique Fournier
* dblayeroo : bug in group by feature
18/09/2017 by Dominique Fournier
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
04/08/2017 by Dominique Fournier
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
01/08/2017 by Dominique Fournier
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
26/07/2017 by Dominique Fournier
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
26/07/2017 by Dominique Fournier
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
05/07/2017 by Dominique Fournier
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
14/06/2017 by Dominique Fournier
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
02/06/2017 by Dominique Fournier
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 one 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
22/05/2017 by Dominique Fournier
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 one 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 one 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
09/05/2017 by Dominique Fournier
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 one to sort the ORDER statements (the first added is the
first
used)
* dblayeroo: allow one 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
29/03/2017 by Dominique Fournier
FEATURES ADDED:
* authentication : allow logout to provide a url to be displayed after
successful logout
* color : allow one 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
23/12/2016 by Dominique Fournier
* 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
17/11/2016 by Dominique Fournier
* file : bug in the rmdir recursive
* file : add the filemtime function
* mail : allow 120 parts of the mail (allow one 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
03/10/2016 by Dominique Fournier
* 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
19/09/2016 by Dominique Fournier
* 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
06/09/2016 by Dominique Fournier
* 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)
03/08/2016 by Dominique Fournier
* file : add scandirNotSorted function
* cli : change the directory as soon as the cli object is created, allow one to
check if a relative path is available in next line
* authentication : allow one to define a specific logging function instead
using
the trigger_error
26/07/2016 by Dominique Fournier
* 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 one to have external verifyOne and verifyAll functions
* dblayer : allow one 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
29/06/2016 by Dominique Fournier
* 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 one to define a class text to form object
* csrf : add the exceptions code to Exceptions
* csrf : Allow one to get the CSRF token from the CSRF or FORM classes
27/06/2016 by Dominique Fournier
* smtp : add SMTP support to send emails (with TLS, authentication PLAIN and
LOGIN, debug, non standard port, STARTTLS)
* mail : Complete rewrite. Allow one 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
02/05/2016 by Dominique Fournier
* 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 one 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 one 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 one 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 ();
08/03/2016 by Dominique Fournier
* 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 one to have the defaults params in ->get() in case of array
without defined key
23/02/2016 by Dominique Fournier
* 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 one 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)
13/11/2015 by Dominique Fournier
* 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
14/10/2015 by Dominique Fournier
* 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 one 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)
20/08/2015 by Dominique Fournier
* 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 one 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
14/08/2015 by Dominique Fournier
* 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 one to display a form without defined fields
* form : add a "addfield" method to add a field in form
* form : remove the 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 one 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 one to overwrite the layout page when calling the function
* dblayer : create table : add "if not exists"
08/06/2015 by Dominique Fournier
* 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)
13/05/2015 by Dominique Fournier
* 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
07/05/2015 by Dominique Fournier
* 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
07/05/2015 by Dominique Fournier
* 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
30/04/2015 by Dominique Fournier
* BUG config : an array with "not configured" should not be presented if there
is another entry available
* Remove the CSRF debug log
29/04/2015 by Dominique Fournier
* 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 one to push multiple datas of multiple types in logs. The log
convert it in text to save them
* logger : allow one 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 one 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 one to put the parameters in any order
* routeSQL : Allow one 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)
27/01/2015 by Dominique Fournier
* BUG locale : Missing all the locales in Debian package
27/01/2015 by Dominique Fournier
* 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
26/09/2014 by Dominique Fournier
* 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)
22/09/2014 by Dominique Fournier
* 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
10/09/2014 by Dominique Fournier
* 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
08/08/2014 by Dominique Fournier
* dblayer : Add dropTable support
* Add multi-language support
* The exception captured by routing is now a valid HTML page
01/08/2014 by Dominique Fournier
* 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
28/07/2014 by Dominique Fournier
* 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)
27/06/2014 by Dominique Fournier
* 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
20/06/2014 by Dominique Fournier
* dbLayer : Create a operationnal list table for sqlite/mysql/pgsql
* authorization model
13/06/2014 by Dominique Fournier
* dbLayer : If SQLite, don't allow one 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
03/06/2014 by Dominique Fournier
* Debian Package