concrete5/concrete5 — pull request #1827 by ahukkanen (2014-08-08 15:44:17+00:00)
Title: DB_TYPE fixes and transactional support to 'mysqli'

- Fixed installation errors with the 'mysqli' DB_TYPE
- Made DB_TYPE configurable
- Added transactional support to 'mysqli' DB_TYPE by adding the 'mysqlit' DB_TYPE and all necessary libraries related to that
- Changed the default DB_TYPE into the new 'mysqlit' that works through the PHP's mysqli extension.
- Added all the opt/platform specific database definitions into db.xml for the 'mysqli' and 'mysqlit' db types.

Reason for all this: concrete5 does not work at all on systems that do not include the 'mysql' extension or if PHP 5.5+ is not compiled with the "--with-mysql" option.

Currently c5 is using the "mysqlt" DB_TYPE which is extension for the "mysql" DB_TYPE. This works through the PHP's deprecated mysql extension (instead of mysqli).

What this pull request basically includes is two things:
1. It fixes installation errors for the default 'mysqli' DB_TYPE, so that can be used if needed.
2. It extends the 'mysqli' DB_TYPE classes to add transactional support into that. This is done quite exactly the same way that the 'mysqt' DB_TYPE extends the 'mysql' DB_TYPE.

Because of 2., there is no functionality drawback in this pull request and it just drops dependency for the deprecated mysql extension in PHP in favor of the mysqli extension that is encouraged and pushed by the PHP team.

Background (if someone is wondering):
http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated

"The old API should not be used, and one day it will be deprecated and eventually removed from PHP. It is a popular extension so this will be a slow process, but you are strongly encouraged to write all new code with either mysqli or PDO_MySQL."