Backwards Compatibility Breaks
On this page you will find a list of all breaks in backwards compatibility. Once Flourish becomes stable this will only happen with major version releases. During the alpha phase they are bound to happen on a regular basis, whereas during beta they should be rare.
If you work with any protected methods or @internal public methods, be sure to check out the internal backwards compatiblity breaks page.
Beta Phase
Revision 760
fDirectory::scan() and fDirectory::scanRecursive() to strip the current directory's path before matching the $filter
Revision 736
Renamed fFile::getFilename() to fFile::getName(), fFile::getFilesize() to fFile::getSize(), fFile::getDirectory() to fFile::getParent() and fDirectory::getFilesize() to fDirectory::getSize()
Revision 735
Added the $force_cascade parameter to fActiveRecord::delete() and fActiveRecord::store(). This change require any classes that override those methods be updated to include at least one parameter.
Revision 726
fORM::addCustomClassTableMapping() was renamed to fORM::mapClassToTable()
Revision 721
Removed the $prefix parameter from the methods fSession::delete(), fSession::get() and fSession::set()
Revision 720
Removed support for date function translation in fDatabase/fSQLTranslation
Revision 700
Renamed fRecordSet::buildFromRecords() to fRecordSet::buildFromArray()
Revision 659
Before this revision one-to-one relationships were not properly detected, so some one-to-many functionality such as fActiveRecord::populate{RelatedRecords}(), fActiveRecord::build{RelatedRecords}() and fActiveRecord::associate{RelatedRecords}() was working on these one-to-one relationships when it should not have.
one-to-one relationships support fActiveRecord::create{RelatedRecord}(), fActiveRecord::populate{RelatedRecord}() and fActiveRecord::associate{RelatedRecord}() instead.
Revision 651
Renamed fORMValidation::addConditionalValidationRule() to fORMValidation::addConditionalRule(), fORMValidation::addManyToManyValidationRule() to fORMValidation::addManyToManyRule(), fORMValidation::addOneOrMoreValidationRule() to fORMValidation::addOneOrMoreRule(), fORMValidation::addOneToManyValidationRule() to fORMValidation::addOneToManyRule(), fORMValidation::addOnlyOneValidationRule() to fORMValidation::addOnlyOneRule(), fORMValidation::addValidValuesValidationRule() to fORMValidation::addValidValuesRule()
Revision 591
Removed fRecordSet::flagAssociate() and fRecordSet::isFlaggedForAssociation(), the $associate parameter is no longer passed to callbacks registered via fORM::registerRecordSetMethod()
Revision 567
The first parameter of fSession::clear() was removed, fSession::delete() should now be used instead
Revision 566
Moved fCRUD::printOption() to fHTML::printOption(), fCRUD::showChecked() to fHTML::showChecked(), fCRUD::removeListItems() and fCRUD::reorderListItems() to fException::splitMessage(), fCRUD::generateRequestToken() to fRequest::generateCSRFToken(), and fCRUD::validateRequestToken() to fRequest::validateCSRFToken()
Revision 562
Removed fORMSchema::enableSmartCaching(), fORM::enableSchemaCaching() now provides equivalent functionality. fSchema::setCacheFile() changed to fSchema::enableCaching() and now requires an fCache object. fSchema::flushInfo() was renamed to fSchema::clearCache().
Revision 525
Changed the second parameter of fFile::output() from $ignore_output_buffer to $filename
Revision 524
Removed fDate::getSecondsDifference(), fTime::getSecondsDifference(), fTimestamp::getSecondsDifference() and fTimestamp::getSeconds()
Revision 514
fCore::getOS() and fCore::getPHPVersion() were removed and replaced with fCore::checkOS() and fCore::checkVersion()
Revision 499
Renamed fORM::addCustomTableClassMapping() to fORM::addCustomClassTableMapping() and swapped the parameters
Revision 498
Changed fCryptography::symmetricKeyEncrypt() to not encrypt the IV since we are using HMAC on it
Alpha Phase
Most users will not have code from the Flourish alpha
Revision 403
fCore::stringlike() was removed
Revision 402
fCore::trigger() was removed
Revision 399
fPrintableException was renamed to fException
Revision 388
fCore::toss() was removed and all exceptions are now normally thrown with throw new ExceptionName(). fCore::registerTossCallback() was renamed to fPrintableException::registerCallback(), fGrammar::compose() was renamed to fText::compose() and fGrammar::registerComposeCallback() was renamed to fText::registerComposeCallback().
Revision 364
Swapped the order of the last two parameters of fORMRelated::setOrderBys() so that $route (which is really just NULL most of the time) was last and optional
Revision 361
Changed the existing file upload field name from __flourish_existing_column_name to existing-column_name and changed the delete file upload field name from __flourish_delete_column_name to delete-column_name
Revision 348
fNoResultsException was renamed to fNoRowsException, fResult::tossIfNoResults() was renamed to fRequest::tossIfNoRows(), fUnbufferedResult::tossIfNoResults() was renamed to fUnbufferedResult::tossIfNoRows(), fResult::getAffectedRows() was renamed to fResult::countAffectedRows() and fResult::getReturnedRows() was renamed to fRequest::countReturnedRows()
Revision 332
fActiveRecord::has() was renamed to fActiveRecord::hasOld() and fActiveRecord::retrieve() was renamed to fActiveRecord::retrieveOld()
Revision 331
replace:: hooks are no longer allowed in fORM::registerHookCallback(), instead use fORM::registerActiveRecordMethod(). fRecordSet::registerMethodCallback() has been renamed to fORM::registerRecordSetMethod().
Revision 308
Renamed fORMDatabase::getInstance() to fORMDatabase::retrieve() and renamed fORMSchema::getInstance() to fORMSchema::retrieve()
Revision 305
fUTF8::detect() went from being public to private
Revision 304
fResult::getPointer() was removed, same functionality is available from fResult::key()
Revision 303
fResult::areRemainingRows() was removed, same functionality is available from fResult::valid()
Revision 300
fUpload::upload() was renamed to fUpload::move()
Revision 294
Removed fPrintableException::prepareMessage()
Revision 293
Removed fTimestamp::combine()
Revision 289
Changed the replacement token in fRequest::overrideAction() from %%action%% to %action%
Revision 282
Changed the separator between the table name and column name for related form inputs from . back to :: because PHP converts . to _ - this reverts changes in r264
Revision 278
fRecordSet::build{RelatedRecords}() was renamed to fRecordSet::prebuild{RelatedRecords}() and fRecordSet::count{RelatedRecords}() was renamed to fRecordSet::precount{RelatedRecords}()
Revision 264
Changed the separator between the table name and column name for related form inputs from :: to . - users::user_id[] will now be users.user_id[]
Revision 263
Removed fRecordSet::buildFromPrimaryKeys(), changed fORMRelated::associateRecords() to only accept an fRecordSet? instead of an fRecordSet? or an array of primary keys
Revision 259
Renamed fORM::createActiveRecordClass() to fORM::defineActiveRecordClass()
Revision 258
Renamed fFilesystem::createUniqueName() to fFilesystem::makeUniqueName()
Revision 257
Renamed fTimestamp::createFormat() to fTimestamp::defineFormat()
Revision 253
Removed fORMDatabase::escapeByType(), added support for shorthand table.column names to fORMDatabase::escapeBySchema() to provide replacement functionality
Revision 251
The fourth parameter of fRecordSet::build() is now the page number instead of the offset. The page number is subtracted by one and multiplied by the limit to get the correct offset.
Revision 250
Removed fGrammar::registerHumanizeCallback()
Revision 249
fGrammar::replaceHumanize() was renamed to fGrammar::registerHumanizeCallback(), fGrammar::replaceJoinArray() was renamed to fGrammar::registerJoinArrayCallback(). fGrammar::addAllCapitalsWord() was removed and fGrammar::addHumanizeRule() was added with similar functionality.
Revision 239
fDate::setDate(), fDate::setISODate(), fTime::setTime(), fTimestamp::setDate(), fTimestamp::setISODate(), fTimestamp::setTime(), fTimestamp::setTimezone(), fTimestamp::getTimezone() were removed. The fDate, fTime and fTimestamp classes all became value objects (immutable) and fDate::adjust(), fTime::adjust() and fTimestamp::adjust() all now return new objects. Each class also gained a method called modify() which returns a new object based on the current object, replacing the various set methods.
Revision 225
fXML::prepare() was renamed to fXML::encode()
Revision 223
fRecordSet::flagForAssociation() was renamed to fRecordSet::flagAssociate()
Revision 222
fRecordSet::registerCallback() was renamed to fRecordSet::registerMethodCallback()
Revision 221
fORM::getClassName() was renamed to fORM::getClass() and fRecordSet::getClassName() was renamed to fRecordSet::getClass()
Revision 218
fHTML::checkForBlockLevelHTML() was renamed to fHTML::containsBlockLevelHTML() and fHTML::createLinks() was renamed to fHTML::makeLinks()
Revision 217
fCryptography::generateRandomString() was renamed to fCryptography::randomString()
Revision 216
fCRUD::createSortableColumn() was renamed to fCRUD::printSortableColumn()
Revision 215
Removed fFinancialTransaction and fShippingRates. Both were unlike the rest of Flourish in that they were tied to the APIs of other services and neither was very comprehensive in terms of the number of services supported.
Revision 206
Removed fORMDatabase::initialize(), you must now construct an fDatabase instance and pass it to fORMDatabase::attach()
Revision 205
fORMDatabase::prepareBySchema() was renamed to fORMDatabase::escapeBySchema() and fORMDatabase::prepareByType() was renamed to fORMDatabase::escapeByType()
Revision 204
fDatabase::escape() replaces fDatabase::escapeBlob(), fDatabase::escapeBoolean(), fDatabase::escapeDate(), fDatabase::escapeFloat(), fDatabase::escapeInteger(), fDatabase::escapeString(), fDatabase::escapeTime() and fDatabase::escapeTimestamp(). fDatabase::unescape() replaces fDatabase::unescapeBlob(), fDatabase::unescapeBoolean(), fDatabase::unescapeDate(), fDatabase::unescapeFloat(), fDatabase::unescapeInteger(), fDatabase::unescapeString(), fDatabase::unescapeTime() and fDatabase::unescapeTimestamp().
Revision 202
The second and third parameters of fMessaging::create() were swapped to be consistent with the other fMessaging methods
Revision 201
fORMColumn::configureDateCreatedColumn() was moved to fORMDate::configureDateCreatedColumn() and fORMColumn::configureDateUpdatedColumn() was moved to fORMDate::configureDateUpdatedColumn()
Revision 195
fORMColumn::configureMoneyColumn() was moved to fORMMoney::configureMoneyColumn()
Revision 184
fMoney::multiply() renamed to fMoney::mul() and fMoney::subtract() renamed to fMoney::sub() to be consistent with fNumber
Revision 174
fORMRelated::constructRecord() renamed to fORMRelated::createRecord(), fORMRelated::constructRecordSet() renamed to fORMRelated::buildRecords()
Revision 173
Renamed fRecordSet::create() to fRecordSet::build(), removed fRecordSet::createEmpty(), renamed fRecordSet::createFromObjects() to fRecordSet::buildFromRecords() and added a new first parameter, renamed fRecordSet::createFromPrimaryKeys() to fRecordSet::buildFromPrimaryKeys(), renamed fRecordSet::createFromSQL() to fRecordSet::buildFromSQL().
Revision 166
fValidation no longer has the methods fValidation::setEmailFields(), fValidation::setEmailHeaderFields() or fValidation::setRequiredFields(). The various fValidation::add*() methods should be used instead.
Revision 144
The method fImage::getInfo() went from being public to protected.
Revision 127
fRecordSet::preload{RelatedRecords}() became fRecordSet::build{RelatedRecords}().
Revision 125
The $debug parameter was removed from all calls to fActiveRecord hook callbacks.
Revision 84
Removed fRecordSet::preload{RelatedRecords}().
Revision 81
fInflection was renamed to fGrammar.
Revision 76
fMessaging::show() now behaves differently than it did before.
