pristine:0000000280-b0f6e985251e8e5ee288aada741fea21a95f5a75f323035b0b1bd434ed47a256 [Tailorization tailor@vps.wbond.net**20080430064525 Import of the upstream sources from Repository: http://svn.flourishlib.com Kind: svn Module: /trunk Revision: 1 ] hash: 0000000223-1ebbdaa6468c9d778d20503e3b9a8d77e3ce8d8fa4c0d3e69311c49fcb8deae6 [2 wbond**20080430064759 Import from old repository to overcome limitation of Trac ] hash: 0000632339-067a0b0864edd3c8a7e75763fb3bc9011a38f29c72f6634afd9312e33656ea84 [3 wbond**20080503015854 Added methods for new file/image creation, changed filesystem transactions to cover image modifications ] hash: 0000146514-0fd804a5c9f0bf8a5598623585c37e13fa7e555dfb2738c0356355f7c3f75276 [4 wbond**20080503020247 Added the ability to grab a single scalar value from a database result ] hash: 0000000481-ad5f90e7224044bb8324ae88ad957101d4c986e5412cc59b80a3de0fc0eb748c [5 wbond**20080503021405 Decided that I don't want to tackle HTML sanitization. http://htmlpurifier.org looks like it might be a good library to use. ] hash: 0000036744-78186689e31eac6fb55ba49cef6d64c2a149c6c3b5361fab0ed9cc1956b3b286 [6 wbond**20080503040632 Major development on the ORM ] hash: 0000116444-f668bddcfcc685f4c16fa739c3c0a0ebb32bcb7d3ab24d2d193b1e14563e8583 [7 wbond**20080506044022 Another significant step towards completing the ORM ] hash: 0000145145-e15737fb31f0039ec7c74bf54df76be5791a8ee0ac038471e7a3b2dbbded0a9b [8 wbond**20080507032539 Updated the filesystem classes to use new code standards, including alphabetical method ordering ] hash: 0000140108-a55ddd78c84300a3cf17d18567b6f378800d260395b5933d21dd82ada3abdf20 [9 wbond**20080508020555 Code standards changes and work on the ORM ] hash: 0000246016-0329893850b60b0a5f1e1e0ee2d5dfa13de038998f11231788091f48d1eddd84 [10 wbond**20080509164436 Fixed ticket #5 and updated all of the rest of the code to the new code standards ] hash: 0000644416-07b0d512237329c6f122c4969a1d80353284690e9bff34d916882f1a5d71ee01 [11 wbond**20080509170139 Fixed buffered element placing for elements that are blank at the initial place ] hash: 0000000351-3fd9352ab1fc8f457667769778a8029488faddfa2f50caaaf5fab2d2c5a9a705 [12 wbond**20080512184507 Fixed some bugs with fDatabase and added some unit tests for fDatabase ] hash: 0000100871-e8f34c7c0e94d82c74f668aa9a61ecbc82a3b02b206fd99b2f1cf8edc97775e8 [13 wbond**20080513132935 Fixed some PDO bugs with fDatabase and fixed some code standards issues with fCore ] hash: 0000034838-8e85a37169db79960f4c0115a1809b6e67ddffe68b1a054030626f8b329d57f0 [14 wbond**20080514032451 Some tweaks to the filesystem classes ] hash: 0000102322-6c188a382a4754b36d2c6b5a3b93ed96164ef9dd02056faad17509ea7169928d [15 wbond**20080514035924 Bug fixes and additions in moving to hit the beta release ] hash: 0000015769-531cd04e40bcc9f52d32887e5c04225f49f8e1db4ac2e258aaa48d4cd905a7fd [16 wbond**20080514045523 Small bug fix for fImage ] hash: 0000000610-abbcf62049e9b98a4f3c6d1cfd6e93ee8dedb238b9bb94477aa5ca0935779cc0 [17 wbond**20080515041507 More bug fixes and tweaks ] hash: 0000010602-6dcde5b72aa25bb66d7046b2fa7ee75ca41bbda0346fc911649e4b6a3c8a58f2 [18 wbond**20080516044711 More work on the ORM ] hash: 0000019976-85bbf0a9a0570ecb42483895495bcb00c57ebb32e4a0c922ee83a43d8fe83df6 [19 wbond**20080517144355 Seem to have populate() and populate{RelatedClass}() working decently for [wiki:ClassDocs/fActiveRecord fActiveRecord] ] hash: 0000013351-30eed01ae333f48ba4b8c182c5537613a16c95e13a98086b81841358b230f6fd [20 wbond**20080517195151 Fixed whitespace issues, simplified some of the API ] hash: 0000308500-01c415439e8316287c03e6a22efa633be0383eac98c4cd5ca05dd7da4006619f [21 wbond**20080517204400 Changed fDatabase to use lazy connections ] hash: 0000001065-323b8674d60f6dfb78ed3065fa0e2aeec42946af9d6ebb59c994a34bc996775b [22 wbond**20080518062648 Removed @uses PHPDoc tags since I found an automated way to detect usage dependencies ] hash: 0000005889-479d8b2e4ed3a8adfebb55c7f09c004a7f7ade81c9e970f3ff52c6dc29deeb34 [23 wbond**20080519010849 Removed the need to explicitly open the session. Now if you use get(), set(), clear(), etc it will automatically open the session for you. This also prevents the sessions from being opened unnecessarily. ] hash: 0000002191-0447c53a41824eaf5087d481ece0ea50fc57983e084cd9f26e762f480dd24457 [24 wbond**20080520121721 More bug fixes ] hash: 0000012912-46edeb5a46fd6fecd2b3b8690c733bb3844aa6b9c4433e8b9a3514f0b9234b11 [25 wbond**20080521012027 Fixed some bugs in the unit test script and with some of the unit tests ] hash: 0000112039-18d39453099e3c42f95538c9bb340e4701e918106add449c914b877605cbd31d [26 wbond**20080521122455 Work on related data validation ] hash: 0000022644-e930a6be328b3b1e2ca47bf0db5f2a8b4e508a3607bc915c4293b8d5bfb142c5 [27 wbond**20080522124351 Added hooks to fActiveRecord ] hash: 0000022671-3c8add9c140d5a8ce4aeac69726eba1e9e442bd158a0ccfd879f577c2c8d4f6e [28 wbond**20080522130326 Fixed a bug with checking for hooks ] hash: 0000000171-75e3ac8bdd80f741ed77e43047ac8e155d81f07d2954689a61bfdec7c034753e [29 wbond**20080523123342 Fixed ticket #6, added decimal place detection to fSchema ] hash: 0000016523-6fb249c3dd15bac37c0e322820a337a3de5f1390b8c0d8c8eae10a5968e026c2 [30 wbond**20080527033040 Changes to the ORM and debugging-related methods ] hash: 0000056045-c31987b45f3446ad9612ac8eadd82c623a0a87736c892fd2012c1f3d0321b378 [31 wbond**20080527172507 ORM bug fixes ] hash: 0000005803-6aa17e1f2472fb14cd8ae2b7be1fb5408756bd4f5abb1dde4b4042f10d8b2dd0 [32 wbond**20080528042024 Bugs fixes for related records ] hash: 0000000355-e73b95051e4f8d9152c78819b40688ad7649e42c662ff1a8f1c324f0cc7e80a7 [33 wbond**20080528215955 Added ORM column options, lots of work tweaking various ORM specifics ] hash: 0000069996-17e00a610eeb7a3e734ba79d1b20b56348f5890cac3775c349439f7c174f0255 [34 wbond**20080530135507 Work towards getting ORM file manipulation functioning, streamlines some code ] hash: 0000035806-f7445cd2379742cf8c7ebb780cd75b343c9b683fec4e56155ec973d85f6a800d [35 wbond**20080531013501 Finished the functionality for fORMFile ] hash: 0000050694-608fe153850547ad31fc9e4c5cf0fe31822cbc6bad85265086dda6202e923f84 [36 wbond**20080531144022 A number of missing features from fORMFile ] hash: 0000016576-9d39f6e949b21ee3a22c85a1651c969840eeba858fac4d8e7ff20bfe9b93a46d [37 wbond**20080601205320 Worked on sorting and preloading in fRecordSet, fixed a bug with removing old files in fORMFile ] hash: 0000017101-13439a7956c5344661a1a550adee49d37240869068ede3b0f80810edeb338949 [38 wbond**20080602125642 Added the missing populate() hook for fORMFile ] hash: 0000001551-28450d14b6f68ce5fa96a6dbd5d6cf2cd21c729a7f52e8315b321ae51a48c0a5 [39 wbond**20080602221525 Various bug fixes ] hash: 0000004102-5ebd4d53338b09c26aceea8ef9aab8f2fcbd4427abc8bd90d71534e0af36e884 [40 wbond**20080607172049 fixed #7 ] hash: 0000000178-be14949c78d21d0bf437a7016f187aacb38817b70729a0e5e7bdcc0ab5230369 [41 wbond**20080607182442 Made place() slightly more robust by allowing the file type to be (optionally) specified if the auto-detection does not work. Expanded the auto-detection for php and rss files. Fixed ticket #8. ] hash: 0000004590-ee4016a35e1b3eee4e2b6245bd535f638c7067ec0540b9de1867af9e85852afc [42 wbond**20080613114719 Refactored fORMValidation to not use exceptions internally ] hash: 0000009842-e32b17ba4aadf27f497676133714cb884cbefa8d2f0744fd7fb99e6c3bd764a8 [43 wbond**20080616114035 Updated Flourish to use UTF-8. Also added better support for MSSQL. Still need to support decoding nchar, nvarchar and ntext columns from MSSQL databases. ] hash: 0000099199-4387a89d00491af1c117e009fb2e181fbae669f990f4baa975441f39214e0ea5 [44 wbond**20080617102841 Bug fixes related to UTF-8 support ] hash: 0000001590-29ec1453d065f66becdd20ac77759df0a38d4e5e632947e9b8fdbec94c83fe44 [45 wbond**20080618121526 Bug fixes for file uploads ] hash: 0000002989-beaed1c18eb9e2a458a923e0ea795779e70bb8c31091a27ecb893ceffdacd1cf [46 wbond**20080618165702 Fixed some more bugs with file uploads ] hash: 0000014937-082ff60f1532df7876a7be4d4d6e8b9818e5c6a5694b4d0083879d85e6203657 [47 wbond**20080619024510 Various bug fixes ] hash: 0000006533-2072188b1b216110987fe7e8ebede7c818336e154087500a26faa90d7a3549cb [48 wbond**20080619042000 Fixed a bunch of little documentation inconsistencies in the database classes ] hash: 0000038884-f76a7d1ced79edd55b851834cc085c4067a7327108f8e34fe09647497e2c9f66 [49 wbond**20080620083914 Lots of bug and documentation fixes. Tickets #11 and #12 are also fixed. ] hash: 0000045081-0f8c970293c0418960aed8fc19cf0ca0e826cc194743fed395a7c17a35be5182 [50 wbond**20080620084257 Fixed a little bug with the new web path translation code ] hash: 0000000256-41ec11e8157a63c9f96288cfb4be59007c7aa536138048d3fe18110704497d84 [51 wbond**20080620084554 Another bug fix for web path translation ] hash: 0000000309-29f1fd3e1f73994e1ff775fbf224cb276ab2e2f8a474a1f27fa7fb33dc84beac [52 wbond**20080620115903 Fixed a bug introduced when fixing ticket #11 ] hash: 0000000454-35903222a73b2c9d7a282b363b8095cbeda63eaa6077cbb8bc39ec188a89ab04 [53 wbond**20080620172021 Some minor bug fixes ] hash: 0000007189-1a53ac571350010bf108b940c6aae244aea0fb8f77fe0e444d394a9248ba7c62 [54 wbond**20080622180730 Bug fixes for Craig ] hash: 0000001131-d2fca93f2b6537c3e95026a565596e0ffdd80f25e5544e6b65cb4f5e2aebb986 [55 wbond**20080622200537 Fixed a bug with checking for image processing on file upload fields ] hash: 0000000357-0d73aefae0988f2de433c390fcf3b2cdad77a2121d484386413f3dfa8984f58e [56 wbond**20080622221538 Fixed an issue where PDO, odbc and sqlsrv transaction queries (like BEGIN, COMMIT, etc) would cause invalid exceptions to be thrown ] hash: 0000000622-e782703dac7188e888a34f45526c8257328fd1edb57e20832300f1d255b97b14 [57 wbond**20080623105149 Added the last escape/unescape methods to fDatabase, update documentation for escape/unescape methods and UTF-8 notices ] hash: 0000006826-4cc7cbf9166eeb1b17667316d32d49b308bd07ab762aabdc5ef02b57713c1c2b [58 wbond**20080623133335 Fixed a fatal error in fDatabase ] hash: 0000000186-a1a426eb88fce853b01ba23546061c5ae67faa6012506b656360119d3de6e9f4 [59 wbond**20080625130140 Added fEmail and `fCore::stringlike()` ] hash: 0000026563-682146926e79e8bb3174c227bd5c7e10fb78a8fb908d73dcb8649d94f0d5c1cf [60 wbond**20080626112037 Updated to the ORM to allow proper generation of existing primary key where clause ] hash: 0000013170-077e49dcd9f2d6e4bbffe95ff351c5a8c2681734399edc99849ce1534ac7e041 [61 wbond**20080627021631 Fixed ticket #14 ] hash: 0000000176-d9bd0a168d0bc45a47ebb024bfb3e7ea754f6f96234401dbdf9e20c08f322291 [62 wbond**20080627114649 Added fAuthorization::checkIP() and fAuthorization::addNamedIPRange(), fixed ticket #13 ] hash: 0000002960-b0638d364cb15417adc65b9f59fc2ab9cdc0bf8e6ef41f031726435a8c1ec343 [63 wbond**20080628012509 Fixed ticket #16 and other errors in fValidation ] hash: 0000000584-d679acf1bc9c7697e944993530d7763eec040211552b060164cdb8c7d73b2514 [64 wbond**20080628015741 Fixed some documentation bugs in fAuthorization ] hash: 0000000655-f719b79bdeb6817d023e232e5c21048b4ca48a337ae6d00aca520ccb6017a46c [65 wbond**20080628021523 Bug fixes for fEmail ] hash: 0000006291-8b25c687561a33afeaa669d6f05ffaa780d4dc40fb6f1c62cc3614c951281e96 [66 wbond**20080628022932 Documentation updates ] hash: 0000002405-93b1e35e49bdb676696c65f851299e2075c53d79f519b3531a8ac1f811c4e48a [67 wbond**20080628124751 Changed fORM::objectify() to not use variable class instantiation so that dependency tracking would properly pick up fDate, fTime and fTimestamp ] hash: 0000000914-56c3169700acd6dfb690715ef5d05118c3fc04cfbea8f1083ca259d962ed96b8 [68 wbond**20080628131408 Removed an extraneous character from fORM ] hash: 0000000146-c0757b707c6218c63bc7b1aa3e684f048674402b740a042f5b71fd2221300239 [69 wbond**20080628194508 Added @package tags to every class, slight documentation tweaks ] hash: 0000021708-c86bd8c3c60e1cce30303a42964104c997fe9a94faeb6a85e1237f075368d58f [70 wbond**20080628215536 fRecordSet will now ensure fActiveRecord::configure() has been called for the class is creating a set of ] hash: 0000003714-f958404c45f61d709e5712196890afb7a664dc936866255a4b6863b399868753 [71 wbond**20080629124823 Fixed tickets #17 and #18 ] hash: 0000000288-5ad296b68518e85baecbe55f1e091a51f78ae3bb61ab5033d4bcaf50b9ec94eb [72 wbond**20080629195136 Changed fCore::showDebug() to fCore::enableDebugging() (also in fDatabase, fSQLTranslation, fFinancialTransaction and fShippingRates). Also changed fCore::addTossCallback() to fCore::registerTossCallback(). Fixed a regression in fORMSchema. Fixed some documentation bugs. ] hash: 0000010433-17d044d3b6b3b052ce5b46d3f726e1b9de054a0054cc35053c618dc00305a9c6 [73 wbond**20080630035813 Added fCore::compose() to allow for localization of Flourish ] hash: 0000005004-f4b95b6e890c72fe50baade01bd38b4516d05559a056b301a9da6b0dfc192b42 [74 wbond**20080630070819 Created fORMOrdering, see fORMOrdering::configureOrderingColumn() for usage. ] hash: 0000016236-41a5ebeb9edbcbd2d34ecc0ec6a653e6581cb3cd6aeacc469abd02601815b76d [75 wbond**20080630071558 Fixed a documentation bug in fCore and a code bug in fORMValidation ] hash: 0000000379-fde792dcabf3e3517f26d2eb21632ccf32455f2d53f2af5909ad95a7d670c1c5 [76 wbond**20080630072242 BackwardsCompatibilityBreak - fHTML::show() now does what fMessaging::show() used to, and fMessaging::show() now does a message retrieval in combination with a show ] hash: 0000002239-3d631c982fda7b03f8309eb1dda5e93f69f5c470f27d0baaeedf9cc882905bc1 [77 wbond**20080701015432 ORM plugin bug fixes ] hash: 0000000794-4796bd3c8b6fc0bb0b8edf99bf65ab38ebac55b1dac6f569cbaa7811c99a1b73 [78 wbond**20080701102123 Updated fActiveRecord to use fCore::compose() ] hash: 0000020322-221fe9a84a307f1a96d6bebdb6e12bac3ca9d214739904425a03cca582db5202 [79 wbond**20080701112300 Added fActiveRecord::inspect{Column}() functionality that will get schema information for a column. Plugins can override this to provide extra information (which is the case for fORMFile, fORMColumn and fORMOrdering). ] hash: 0000010370-16efffdcbff699ce549361ac6b9554f67fe50584ccecc2dcd19160e69014f3ce [80 wbond**20080702170601 Fixed bugs in fORMOrdering and fActiveRecord, updated a bunch of the ORM classes to use fCore::compose() ] hash: 0000022912-e1948f87c660e17e78f720b534da1fc1553286bb44034f7086a1759d07abb2a8 [81 wbond**20080703123336 BackwardsCompatibilityBreak - Changed fInflection to fGrammar, fixed bugs in fURL and fORMFile, added ability to reset saved search values in fCRUD using the query string '?reset' ] hash: 0000045403-2f58e93b733d0449dcf93ec3de3b259ec030a913419a7b87b753766950fae192 [82 wbond**20080703130709 Fixed a bug in fORMFile ] hash: 0000000164-0b6f22b0f571971dae61b2c7824ba9b4f85be868f45659b0031abd539fc8f399 [83 wbond**20080703165718 Fixed some bugs with image resizing ] hash: 0000001108-4ce3897a7d57822ac28d093429dd6abc810159ccb84eaf460ee5d81411e93765 [84 wbond**20080704050410 BackwardsCompatibilityBreak - Removed ability to preload related records for a record set due to ever increasing complexity ] hash: 0000013965-12b028a7bf3d27697d20d41e0d4f942067319ed7dda4e4f5d5f2df89cbad4767 [85 wbond**20080706044934 More work towards I18n of messaging ] hash: 0000058607-1176f47f56a56dc1363e489c5b7cd06f45c02c0ba4b2704f190f36dc9367141e [86 wbond**20080706171120 Changed fCRUD::highlightSortedColumn() to fCRUD::getColumnClass() ] hash: 0000000747-af31fd355ae77a27ce6f52083f4153ed79e98358a9976286c5ca884b84fb3de1 [87 wbond**20080706182039 Fixed fCRUD so that sortable column info would be erased with a reset, and also changes it so the reset query string parameter could be present with other qs parameters ] hash: 0000001766-71953e91f4c59f4c103ac5a72bfdaa7318a1fe46125833a8ffedc3b99b1c7c31 [88 wbond**20080707115831 Changed fRecordSet to only return a record once when joining a *-to- many relationship ] hash: 0000004026-162481b8b2118013174380d7bfdec4b0d87d13eb67a2eb3ba11dc11a793f35e1 [89 wbond**20080708042953 Fixed capitalization of SQL ] hash: 0000006621-af482f14fb9390b6888b4555fc4b9a7ccb768a490cb414e4c24d31cc01059b6f [90 wbond**20080708043243 Fixed ticket #20 ] hash: 0000000282-b6a75ded6f0309ddd72e5139cd0a34c0410d7462baca94b57aa9d257b01f6088 [91 wbond**20080708044408 Fixed ticket #19 ] hash: 0000000365-2e320df6a39aea916daddc560e26e60a1bb490004935b583aedee090019c323d [92 wbond**20080708073406 Re-added (simplified) preloading for fRecordSets with *-to-many relationships ] hash: 0000008843-053b30b6d8942aac50d7f47613a7f10ade45f591f6386fb5fd82b6664e7d30fe [93 wbond**20080709111437 Fixed some bugs in the ORM ] hash: 0000000781-a76ab41c1853a21547d07785caf5919089109950f3153f56d82c66b5cf5928de [94 wbond**20080709113745 Finished implementing S/MIME in fEmail, tested Return-Path (bounce to email) for windows and linux ] hash: 0000026559-dadeaf9d3925b3f691625ff1d4681ac501abe2bbff71fc63f7da902433c36c9c [95 wbond**20080710022527 Finished setting up messaging for I18n ] hash: 0000057160-1d3f8aafeca83fd54370deb6907024dca6fa97c318fb5bd5ef2169e203519d3a [96 wbond**20080710050222 Fixed ticket #21 ] hash: 0000001770-e3cbe071230e5727e0824f3c7678d07353f3224ef5e2ab7b775ae7ffcde3d0f4 [97 wbond**20080710053011 Changed fRecordSet to use the fUTF8 class for sorting ] hash: 0000000638-8f261d9399c68892b4af370fe5d739144c26427b097b0c784613340ebb1d645f [98 wbond**20080710054209 Added I18n possibilities to the datetime classes ] hash: 0000001548-7b05b6c284f045f46d6098c5d94c4c43e9d6f7fa2245485d78684e37752c3713 [99 wbond**20080711113726 Fixed ticket #23, fixed a warning in fORMValidation and changed fRecordSet to rewind when sorted ] hash: 0000001009-61529b4485d913b78009892b6c4d2f609d1f0b423a49e02bb4adabb85df8e452 [100 wbond**20080712205848 Fixed a bug with fUTF8::chr() ] hash: 0000001067-e2255764a10e5872f8a500b3768b6aad1e719d812e55efbbe044b7d2324a66d6 [101 wbond**20080712210257 Fixed a bug with preloading *-to-many records for an fRecordSet ] hash: 0000000278-4af6b7166dec9d9658f51bb36aa6fb5db0f429a46242ec5068045f8e0f8c9342 [102 wbond**20080712210545 Fixed two bugs with formatting callback for fDate and fTime objects ] hash: 0000000417-5b0939d2dbff726a4ce23d230575ec278ff1a4427e0dc414b0b8ede4893b3783 [103 wbond**20080712212900 Added fJSON ] hash: 0000015824-6f631b453321949d8454076f300c2900b46ee0c2541254bc915c89d132c7faeb [104 wbond**20080713185216 Fixed a couple of bugs with calling fCore::dump() on arrays containing references ] hash: 0000000490-502d878c1742028e62b5b62f4f6405de12f6dfbab56f82603a2a5d86070739bd [105 wbond**20080714090347 Fixed another bug with dumping values ] hash: 0000000265-e653a1ffc50f7c08000dfb579030afaf0ca36fef588280b190fd44ae0c0b2059 [106 wbond**20080714090839 Fixed a bug that could case infinite redirects ] hash: 0000000395-cfe57356c56c514dda4c18f1a15aedbb153a534023a1ba545c2a80783ca39637 [107 wbond**20080714092516 Fixed some bugs in fJSON ] hash: 0000015171-7aa1fa4ddc286ee9a615f6b2a0940352221c7bb740608a95c9abaed3dbafdbf9 [108 wbond**20080716112556 Fixed a bug with message ordering ] hash: 0000000378-b845e09edeb2f54b6c5c2a97a4caf6d123b75c93c49740bcddd9de95cda25bb5 [109 wbond**20080716112935 Fixed some bugs if fUTF8 for server withs mbstring on PHP < 5.2 ] hash: 0000000662-4e4e422d237df9d358aec34005d67043b38023b36541de60f89ba03d85183fc2 [110 wbond**20080716114047 Changed some double quotes to single quotes ] hash: 0000000349-89ac91e7b0f1e67d988b6657fe3aa4085963c8b5f0aeef3e442fd26f0863f6de [111 wbond**20080716174755 Fixed an issue with open_basedir warnings in fImage ] hash: 0000004498-3763fe35b33cb0f156cedf59d605e70c572f9d200c0bc0cebe775fb486a484d9 [112 wbond**20080717020601 Fixed a bug with deleting existing files with the ORM ] hash: 0000000359-fc6ec17d27c0e36bb7f76987ec585077417dff2e640740c7b1f66cf6d3ef3962 [113 wbond**20080717020832 Fixed ticket #26 ] hash: 0000000206-25f9e4f7028873886c582778c69df614cb7c112999dfcc7279dee50428f4db04 [114 wbond**20080717021358 Fixed a typo in an fActiveRecord::validate() error message ] hash: 0000000285-a48f4c4c6eeed2afd05deaad7850b516ba3b86654c810fe3be93921dacac5801 [115 wbond**20080717024259 Changed fURL::makeFriendly() to replace a ' with nothing instead of _ ] hash: 0000000301-1dd67e1200cc060698f317245ab9d6fd6ed4c08605ca52e4ffe35613f8a93e34 [116 wbond**20080717122354 Fixed a bug with iterating through an fUnbufferedResult object ] hash: 0000000199-b0591486115b4e69c44f53aff5288b85e2383e2bbab5aac4d2dee09acf5531b9 [117 wbond**20080717162934 Various bug fixes ] hash: 0000002240-af4be3fdafcedf41391c6547d08ad0987e37d16ff9e9165b2c6bc12a1c17cdf1 [118 wbond**20080719202441 Updated fCore to only send a single email (or write to a file once) even for multiple errors/uncaught exceptions on a page ] hash: 0000005505-3c951941f6271ba715d0f39d078cd517d795c661e5bc92c474f2981930d2ed3f [119 wbond**20080719203240 Fixed a bug in fURL::getQueryString() where the URI would be returned if there was no query string ] hash: 0000000296-0f24426ea9e0dd12e7434d36ff777e030fbf3e389577ff2d85696d66d0ac8d94 [120 wbond**20080719203641 Fixed a bug with shorthand order by arrays where a blank column name would generate invalid SQL ] hash: 0000000419-550bfbd07b69683bbf818c0d235524af80f9f2ba2a6cb2cd14f13d6a6cc82470 [121 wbond**20080719205504 Added the ability to monitor for slow queries ] hash: 0000001920-2e8851c9a9db43fbdcc1c87a567d77516ab687766b56e4d4ae182f33ca98ef40 [122 wbond**20080720183524 Fixed a few bugs with fORMFile and fFilesystem ] hash: 0000009548-f72d0a501875fa7107ca9e4d581233509dc88387b9771a449650a9b5655bca4b [123 wbond**20080720184121 Fixed a bug with saving a previously uploaded file with a new record creation ] hash: 0000000343-16642f08b55894ab201d7d3663edbf0268fad29581fa4c7519cfddd8bc82b5ec [124 wbond**20080721000738 Fixed some variable names ] hash: 0000011938-b3c89ac8793cab3e61a0cd93b8f57d8d80dc4151486697353ea234619585c58f [125 wbond**20080721002810 BackwardsCompatibilityBreak - Removed the debug flag from fActiveRecord. All end-user code that uses hooks needs to remove $debug from the list of parameters. ] hash: 0000014499-d7f629a25e657c4b4a0db979115943a5229074e033877eebebb7b2d5a08bea05 [126 wbond**20080721104954 Fixed a few parse errors ] hash: 0000000440-d3c2b18ac37e890ce64c3fbc798f2348b7c97510bcc4d684e77cc6d4488c3f71 [127 wbond**20080722071054 BackwardsCompatibilityBreak - fRecordSet used to have ->preloadRelatedRecords(), is now ->buildRelatedRecords(). Added ability to count related records from an active record by calling ->countRelatedRecords() on either an individual fActiveRecord, or if called on an fRecordSet will load the counts for every record in the set. ] hash: 0000017976-1ab1bc76a7327b6f1dbb459ab778246c21a0ded5f0bc37559e22f6c6d7465a9a [128 wbond**20080722072112 Fixed ticket #30 ] hash: 0000000440-34a1610351cab359400495892aa98198c2cfe7e062ffc54eda29cbc73a8ca67a [129 wbond**20080722072640 Fixed ticket #29 ] hash: 0000000680-a709939b829a3091d5bd70e3d279810b2e6075b250cca0f0f85f1b9214f53b56 [130 wbond**20080722171347 Fixed a bug with checking related records before doing a delete on an fActiveRecord class ] hash: 0000001645-8a523f28a6a82cab9db9f572375264241d4a8fb5c3e5778f6693f7a38baf9d90 [131 wbond**20080724121056 Fixed a bug in fActiveRecord related to overloading methods via replace:: hooks ] hash: 0000000200-ce7a7d60326a9fe4469adb7b3403916867a5268223703dc56173427eaa735bd7 [132 wbond**20080725054143 Fixed a broken variable reference - ticket #31 ] hash: 0000000204-7a74a05caa6b881717117d6a3dd7d9a018dc617fa730904f18c1aeda809ca7fa [133 wbond**20080729035131 Fixed some regular expressions to use less stack space ] hash: 0000008875-8611bb17ae6663b0dfdfc958d274912285e5ec90db84a9ba898acb27a5103b21 [134 wbond**20080729132035 Changed the template root to protected to allow extending classes to access it ] hash: 0000000188-d08fcbd948e4b271d44029d199d5265f90f5f4203d080034035e9b4750065726 [135 wbond**20080730130350 Fixed messaging with multiple interpolations to use positional replacements to allow for other languages ] hash: 0000022896-9bb82cd7feab92eb3b09fa23d82409c991dbd664320d0d36ae712cde6f213f93 [136 wbond**20080806015122 Fixed a bug with counting related record when no related records exist ] hash: 0000000610-82cf77a8cb9507a5046d2f457e05fdd7b8ef9e1082f9607069a5a4e7383cd6d7 [137 wbond**20080806174835 Fixed a few bugs from adding counting of related records ] hash: 0000001631-6a05c48c9839596427206f6cbf5d71fa4d251110418ff78e3b262b64c3f41d02 [138 wbond**20080807083131 Created fNumber ] hash: 0000074241-db9e2881e168d1fa69ae9d8772beccc2738626612f6aa17c15549c3d5bdb8bfe [139 wbond**20080807083525 Fixed a few small ORM bugs ] hash: 0000000298-97f4f02e1951f0b76deff1333800bdb245228092f155150696e92f2adb918824 [140 wbond**20080810185051 Created fMoney ] hash: 0000014981-e2cc850d66ae23d108d9b5c61293eaa70e32cb6d29d5f02428a8c449e171f7a4 [141 wbond**20080810185702 Added some inline documentation about expected exceptions being thrown ] hash: 0000001848-80735f5d8ba3d7c26cc01700ddc8e041b0d080e70e5abe9300d0915c0f2f5c4a [142 wbond**20080812014812 Fixed undefined index errors when tables had no primary key ] hash: 0000000349-ded125687a77e58c687829d668e13b73ac37961f1a5adc5e707d81db9715c091 [143 wbond**20080812015450 Implemented a suggestion from ticket #34 to default to the message name for the CSS class in fMessaging::show() ] hash: 0000000613-3a9f626ff104cce33dbbd7afe299d21f3c4688e6244010f16aaf9e0c80a463b0 [144 wbond**20080812042052 BackwardsCompatibilityBreak - fImage::getInfo() is now protected. Also added some info accessors per ticket #35. ] hash: 0000000967-1c134d27e4c543cf470a6715aa5179d182bb04bd6ae1b720f1108657d2b46094 [145 wbond**20080812072553 Added support for more where conditions in fRecordSet per request from ticket #32 ] hash: 0000007834-7bde38f611307fe0ce23a9976d6af1a90e478153b46623852ea517109f9d30b0 [146 wbond**20080812073007 Fixed bugs in error message formatting ] hash: 0000002253-a9dc8051ed6468e81325a024a807cb8cce87d9af7215bf86a5b718d47ccb5756 [147 wbond**20080812081509 Added fORMColumn::configureMoneyColumn() ] hash: 0000005328-b1cc83de8db0dd824af14fb2245b7f97c5c90c78b7301bd1c8ceccef26859ea4 [148 wbond**20080812081802 Changed the fMoney constructor so that it will accept formatted money values ] hash: 0000001034-5ded0ff5f76f503f57744d430584df5376b926f26bfe46cfe5aed994cdc75f70 [149 wbond**20080812082233 Added encoding for money columns ] hash: 0000001838-4942ef24e5d405a48525833b2a4465fdd248e7a6bf018769558b8aae2138addc [150 wbond**20080812130959 Fixed an issue with the fMoney constructor accepting formatted money values for currencies other than USD ] hash: 0000000375-c44d97a7e0daea679ec74824cd262413f8d624c2cafefa394230373e2183ee1e [151 wbond**20080814043920 Fixed ticket #38 ] hash: 0000000416-09b0fed696104531a7a42578651c284784919a890d7ed7dc361bb0b9c1ca95da [152 wbond**20080814045643 Added fValidation::addEmailFields(), fValidation::addEmailHeaderFields() and fValidation::addRequiredFields() ] hash: 0000001805-f95bcaa0580231d8752665a1cc90c5dce02d95f841e5cc89f02e87aa22edf285 [153 wbond**20080815024454 Fixed a recurrence of ticket #33 ] hash: 0000000256-601a232ec695ad304e4ce41b85d8f86ba1c625e070c497991267a0f7cc640fe7 [154 wbond**20080818172337 Fixed ticket #43 ] hash: 0000000151-db981b450a9759641ae6b9b3a287d0655741b1802b8f9fd4a9431256a4029943 [155 wbond**20080818173934 Fixed a bug with cleaning arrays from fRequest ] hash: 0000001230-2d75f139c53cfb1d1b4e394ad988f478285c8833e99af7ce775d4c256ece9de1 [156 wbond**20080818174841 Fixed a bug in error messaging of mime-type restricted file uploads ] hash: 0000000265-9dd07ace9d673dde7c3d382e2b7dcbcb1529d48d83622411cf5b0e9fee212378 [157 wbond**20080818175726 Fixed a bug with PHP error notices for counting related records when no related records exist ] hash: 0000000402-17592ea9a89df5b34cb3deabcc0e1218c4fa8874bd6098b19d50efcc2251c3ee [158 wbond**20080818180446 Fixed a bug with formatting fMoney objects larger than 999 ] hash: 0000000378-20198887fc8a8b8266e135c11536e7d52b02404340020463ee60033fc9938df7 [159 wbond**20080818183301 Fixing changes the last commit (fMoney) ] hash: 0000000383-16891d4483d86533dca8a0c93adac15311317059e06896a3124081655e9e29d5 [160 wbond**20080822025143 Fixed a couple of small bugs in fValidation ] hash: 0000000404-10b9c56610043790552e83ca3a124dce5041eee1a815b6b7d0d722d78c6b5f4b [161 wbond**20080822025624 Fixed a couple of bugs when fDatabase uses the mysqli extension ] hash: 0000000379-f63f137151fd27731da54acba4a0a90fac913bbef38e309b3a54ebfd5253365a [162 wbond**20080823191739 Added support for + in email addresses when using fHTML::createLinks() ] hash: 0000000308-bb6e1901024f07d746e8abeb2cc496a7fd5244ded2b20d2a11458ddf3cfd6fc2 [163 wbond**20080826033400 Fixed ticket #46 ] hash: 0000000167-1f315b84ff00a84025639b4ed3c6621384584ef4b172c4bdb30b1822959bf967 [164 wbond**20080826035114 Fixed ticket #44 and added fActiveRecord::reflect() ] hash: 0000038251-fbad361c8f74c644492d5f47ebe9d58803c1a96606d56ba9df90a54481f862bd [165 wbond**20080826044023 Fixed a bug with validating unique constraints ] hash: 0000000413-2df188acb4faef5172f22d39afe4e57883c245426b7434689909d63e298f4e1a [166 wbond**20080826050613 BackwardsCompatibilityBreak - removed fValidation::setEmailFields(), fValidation::setEmailHeaderFields(), fValidation::setRequiredFields() - fixed ticket #50 ] hash: 0000004922-bbaec1d81dff10cee98b4100b0f276bd3838d19191f7b4dc8dbf9377f3d81f60 [167 wbond**20080826051645 Added fTemplating::destroy() (ticket #49) ] hash: 0000000843-8ffe14144ac298d96e9fc7a53d1148469c8fd5ded14e59da2e9a4eaeb186cf02 [168 wbond**20080826052616 Added fCRUD::showChecked() (ticket #48) ] hash: 0000001017-bf101180fbded3614749f0f1bfc4f92b15f9110986db871fe6b28c03897160d0 [169 wbond**20080826054207 Fixed ticket #47 ] hash: 0000000642-fa9b74abab0dbe80739f6e63fe9c3a4ed4f8086efa5b7deab7c02b138d73c4b2 [170 wbond**20080826061016 Added max_length elements for char fields in fSchema::getColumnInfo() - first part of ticket #42 ] hash: 0000000692-00fbd564e6608b348b38a87ec262b45698bded86a5277c2dd7d56c2fb91098cd [171 wbond**20080826062118 Changed fORMValidation to require the exact number of characters for a char column - part 2 of ticket #42 ] hash: 0000001145-81257552b1e58e7f85c4880eb6689cf1eb5114fd85d0ba6c14cab4ebe8c0f249 [172 wbond**20080826062807 Completed ticket #39 ] hash: 0000000372-1113981321b6da04ad197e9bb245cd49c2b65c6e393a06474b3ed84d75694dfd [173 wbond**20080826065355 BackwardsCompatibilityBreak - 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() ] hash: 0000005852-c73a111e566428369e6248e47ad5bd1776ab693ca620e43733fad2d702c6e085 [174 wbond**20080826070608 BackwardsCompatibilityBreak - fORMRelated::constructRecord() renamed to fORMRelated::createRecord(), fORMRelated::constructRecordSet() renamed to fORMRelated::buildRecords() ] hash: 0000003493-4f9a5f2cf0057b4a6d82ef939cc561309894ca248305aae75cdae69e4ce72e4b [175 wbond**20080826175313 Fixed loading related records from the same table through a join table ] hash: 0000119099-fa4ba53f3f48d98e45ce0a2376411e57f2d73ca12bca39d3b70aea9ee87e107a [176 wbond**20080828043037 Implemented fRecordSet::call(), fRecordSet::filter(), fRecordSet::map() and fRecordSet::reduce() ] hash: 0000005500-8daa43ef1db93f5f9bd286d3a73c5877cb0ff8bc504c8b71efe61fe93e760a72 [177 wbond**20080828043333 Fixed a bug where true values coming out of the database driver would be unescaped as false ] hash: 0000000272-198d933b42140f9693fa6887eec05f4979d79e253a1c37e32e35a69e559212f4 [178 wbond**20080828055543 Created fCryptography::random() with some code to make sure a "good" seed is provided each script execution to help prevent cross application attacks ] hash: 0000001358-a31cd4a875153d41b1de2874d9a70d6cc872d57098c4cb2e01c197d86d44a7ca [179 wbond**20080828064640 Fixed some issues with escaping and unescaping integers and floats ] hash: 0000063695-28908bc9b48ae9a1e7374b59b7a5c3d2937107b8bdb53bab8921de841ebdca85 [180 wbond**20080830024113 Fixed ticket #55 ] hash: 0000000152-57ea6513f7d3a7c6f6e8b79ead6a1319ce3dcdfb5ab39afa5ad29d3b54284b0b [181 wbond**20080831015226 Changed the way that fImage handles the ImageMagick temp directory ] hash: 0000001617-a46ec32b1fc60505ea9e1bb762556935d716c42a443414eb8fc577836e84fd29 [182 wbond**20080831015601 Changed conditional ORM validation rules to allow NULL values ] hash: 0000000226-906484ed91c63b724602e68dc93ae91e28e09c5f8a8391c1232411f9130d854f [183 wbond**20080831145512 Fixed some code formatting ] hash: 0000178025-0956fcdba484992855d0107466200edcf899936efe5d34eecdfbcad9d685ef2a [184 wbond**20080831151651 BackwardsCompatibilityBreak - fMoney::multiply() is now fMoney::mul() and fMoney::subtract() is now fMoney::sub(), makes fMoney and fNumber APIs consistent and fixes ticket #53 ] hash: 0000000456-51ff6e79fc6f4cc3f92dfd84dddd29ac8e70665ec459a2f5a39fd907300d6194 [185 wbond**20080831154232 Changed fMoney to allow non-fMoney objects to a number of methods, instead they now convert strings/integers to an fMoney object of the current default currency on the fly - fixes ticket #52 ] hash: 0000005039-fb4c3783eddd8cacb87243e4000b44437c74493f16e9c971b8a25ad338112442 [186 wbond**20080831185532 Added fNumber::format() ] hash: 0000003321-e4ee29749b842d0cfc0d5452ad4311b6bb41e81e770007cf5b47b04ded45a71f [187 wbond**20080831195431 Added fORMColumn::configureNumberColumn() - finished ticket #54 ] hash: 0000012409-b2a27c472b71e0232233f36bc0ee45b2a4890bb60937e2ad954a3cbe7ce81dad [188 wbond**20080901130431 Fixed ticket #51 - when calling associate{RelatedRecords}() you can now pass either an fRecordSet or an array of primary keys, also fixed a few bugs with multiple associations between two tables ] hash: 0000003365-e55b88aeb24289df30bbe32e86b40ba7819c64a0a0a001262ef5d1c18124923d [189 wbond**20080902155951 Fixed fDatabase test issues ] hash: 0000099169-b1f9997f1d39a6cf63c66653581018c2bdef3a105812ae6f67b6686e06cfcd95 [190 wbond**20080903033603 Added the fCookie class ] hash: 0000006811-d0034fb2a8ebfd1f787f63293132e87f237f7d83db3ad466c36716b6bb00cb78 [191 wbond**20080906200517 Added fMoney::getCurrencies() ] hash: 0000000617-020433fb53ed6691127e931719c7413140fcca4e592a56f3e3e50758ef3249a2 [192 wbond**20080906200740 Fixed some issues with requesting column info from non-existent tables ] hash: 0000001786-9d00eae32308077c2a327e69dd6eeff611e57d17726667f230914885a9fc0cb3 [193 wbond**20080906214819 Changed fMessaging::show(), fHTML::show() and fCRUD::showChecked() to return a boolean indicating if something was printed ] hash: 0000000936-a08d6e0a08f96a241e72aaa110bac877f65b3511ea7abb3a71665f02549e9e62 [194 wbond**20080906215124 Fixed a bug with scalarizing old values when validating ] hash: 0000000462-7f1256e83e9938c0300beb8c02665458bb1c1a6ddc2a25968d2dd11526c44f34 [195 wbond**20080906215729 BackwardsCompatibilityBreak - fORMColumn::configureMoneyColumn() was moved to fORMMoney::configureMoneyColumn(). fORMMoney::configureMoneyColumn() now accepts a column to be used for storing the currency. Added fActiveRecord::assign() for standardizing $values -> $old_values storage, updated fActiveRecord, fORMFile and fORMColumn to use it. ] hash: 0000034213-f2e2fef403f1668dd7168b85c17d5678801c945f5411b7cddcaf78c9d2537868 [196 wbond**20080906220215 Removed an erroneous @internal flag on fMoney::getCurrencies() ] hash: 0000000152-17059f5041be0a5363422983c46278bc8f817b47e99c269ed6d06a8c54c136f5 [197 wbond**20080907191149 Added fMoney::getDefaultCurrency() ] hash: 0000000306-b44fe6f00e0c1705a8d51c24310892b70359831ecaa37440d3d604942def2574 [198 wbond**20080907193017 Added the ability to hook callbacks for all classes by specifying '*' for the class name ] hash: 0000002327-6aebb3278e85577e15e82e7ea44899e5cb68775bf317b796656c6563bbf8c381 [199 wbond**20080908020240 Made fTimestamp::isValidTimezone() static and public and changed fTimestamp::__toString() to no longer convert to the default timezone ] hash: 0000001960-90d426a1929d8f3d17d97889a42e652af599b1972ed79909344496593b8db68f [200 wbond**20080908020648 fORMMoney bug fixes ] hash: 0000001861-36699a51c9d5d41d8b6ee8d0ac1fc1efcf66ca8b22474e2c283fe6cdc8b3a7f8 [201 wbond**20080908021630 BackwardsCompatibilityBreak - fORMColumn::configureDateCreatedColumn() was moved to fORMDate::configureDateCreatedColumn() and fORMColumn::configureDateUpdatedColumn() was moved to fORMDate::configureDateUpdatedColumn(). Added fORMDate and ability to save the timezone of a timestamp with fORMDate::configureTimezoneColumn(). ] hash: 0000024751-d089b77ba195a7527316f03cf8260f1754bbcf725d163849af78ec0d5a461126 [202 wbond**20080908022247 BackwardsCompatibilityBreak - The second and third parameters of fMessaging::create() were swapped to be consistent with the other fMessaging methods ] hash: 0000000530-0c3cb2e596a12bf85352abd6d2c533571cbf59d2d3a40f106bae6c84aa49bfeb [203 wbond**20080909113424 Added automatic UTF-8 handling to fDatabase::translatedQuery() and fDatabase::unbufferedTranslatedQuery() for MSSQL databases ] hash: 0000017797-3cdbc2b7131692d398086b7105d568ff2f352f88bb388ccb4ad68ddfe3e8002d [204 wbond**20080910041850 BackwardsCompatibilityBreak - 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(). Added ability to do printf()-style interpolation in fDatabase::escape(), fDatabase::query(), fDatabase::translatedQuery(), fDatabase::unbufferedQuery() and fDatabase::unbufferedTranslatedQuery(). ] hash: 0000016474-59e41ff2acd7e68efe9334a4e2620f5c8e4810c7fcb97c2764f50ea696bc5f0c [205 wbond**20080910042427 BackwardsCompatibilityBreak - fORMDatabase::prepareBySchema() was renamed to fORMDatabase::escapeBySchema() and fORMDatabase::prepareByType() was renamed to fORMDatabase::escapeByType() ] hash: 0000014559-57452f4e3ef41abaf9b455c969efdc4447b9060a10ce19a84e73a13ef50bcd81 [206 wbond**20080910044436 BackwardsCompatibilityBreak - Removed fORMDatabase::initialize(), you must now construct an fDatabase instance and pass it to fORMDatabase::attach() ] hash: 0000001223-283fc968cb16aa3d80e803c255ffa68849274f7b5ed13791be0a267894c39263 [207 wbond**20080910054324 Added fJSON::sendHeader() ] hash: 0000000304-0fdc95ac671869836ea43fa3c26cbf2b847617d80f1052df937403555713758f [208 wbond**20080910072737 Added fRequest::getAcceptLanguages(), fRequest::getAcceptTypes(), fRequest::getBestAcceptLanguage() and fRequest::getBestAcceptType() ] hash: 0000004071-796287d0f2a98a85e04d7c74503cd65fb95c6c6301da151dd144c0341dca17e2 [209 wbond**20080910155042 Fixed issues with the fDatabase unit tests ] hash: 0000103534-9479768100fe92233c34a14f0ce72c8623bf190cf38d7d34815a84939d08893a [210 wbond**20080911031432 Simplified the internals of fRecordSet and added the ability to register callbacks to add methods to fRecordSet ] hash: 0000013278-90f521cabbada7dfd4bac4f4472b3e23f619d22394d6485f58f46988ece08102 [211 wbond**20080911114013 Added the ability to register a reflect callback for all classes via '*' ] hash: 0000001535-d5b41b21a8eb79660df4e70cef91b97b0f262074947a52cedfc49efa0f825bdc [212 wbond**20080911114424 Clean up some internals of fRecordSet ] hash: 0000012493-2961a742a6385b03096ac26ee0637d88a7579ddf402d181d2cc394461744ffec [213 wbond**20080911114937 Added fORMJSON, which provides the toJSON() method to fActiveRecord and fRecordSet classes ] hash: 0000006033-be060a58cfa9893c3ee80240fe6a46cc3da4ee3f51955429db99a208711052bb [214 wbond**20080912175140 Moved all of the classes out of subdirectories for easier browsing and autoloading ] hash: 0000102216-b81583a23eae706da46f1f9744a61942b2e6fa149fd3eeea5393598f73b817a8 [215 wbond**20080913011429 BackwardsCompatibilityBreak - 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. ] hash: 0000000363-95e80c6e9dd60e25ae9b50e0f0b146ced56cb3e78fdcfe84644becec8d6db4da [216 wbond**20080913115410 BackwardsCompatibilityBreak - fCRUD::createSortableColumn() was renamed to fCRUD::printSortableColumn() ] hash: 0000002353-f125bd0f4eb7d2a2eecb01691c90706fc3921d30912094e64e9b3b1379cd7552 [217 wbond**20080913135301 BackwardsCompatibilityBreak - fCryptography::generateRandomString() was renamed to fCryptography::randomString() ] hash: 0000003604-503c1a12328341ab89074ee743362e88c3ee5bd609af33d081ac8d2833b3487c [218 wbond**20080914015748 BackwardsCompatibilityBreak - fHTML::checkForBlockLevelHTML() was renamed to fHTML::containsBlockLevelHTML() and fHTML::createLinks() was renamed to fHTML::makeLinks() ] hash: 0000003254-0e449f084d5397c53b547cdc2049318117404c54210dba4a12bde0e55b8da431 [219 wbond**20080914020744 Fixed tickets #57 and #58 ] hash: 0000000402-20ac96342421ed4d8e99abeb01a5208f3f9bf793e5d36584275211ca08796efb [220 wbond**20080914022226 Fixed some variable names ] hash: 0000003031-2e349dfe0077af09506cfb1ad961e504197f78b4042be3f60579e8cd74140762 [221 wbond**20080914023141 BackwardsCompatibilityBreak - fORM::getClassName() was renamed to fORM::getClass() and fRecordSet::getClassName() was renamed to fRecordSet::getClass() ] hash: 0000006223-b980f0d1b094906c7ead0bd110d1bc04cd4d658bc39fa718ee25c0899c45b177 [222 wbond**20080914024418 BackwardsCompatibilityBreak - fRecordSet::registerCallback() was renamed to fRecordSet::registerMethodCallback(). fORMJSON refactored slightly. ] hash: 0000002833-de7d078a3d74d66594a32e69e4101be1c6260bdeb25889165925bec795eeb335 [223 wbond**20080914025049 BackwardsCompatibilityBreak - fRecordSet::flagForAssociation() was renamed to fRecordSet::flagAssociate() ] hash: 0000000448-4375fb3ebd052fea2eb200fff6f499d1d2aa0121971cffa3d41b79f681df4722 [224 wbond**20080914030147 Removed an unnecessary attempt at reducing dependencies ] hash: 0000000487-ea444bd01a119c1f01f850676fd972ed27f58f1be139455f04b8324448122438 [225 wbond**20080914030902 BackwardsCompatibilityBreak - fXML::prepare() was renamed to fXML::encode() ] hash: 0000000586-3ec9ff7da7f465e596e6077ea45d1b5c59727169e463388a671173d4606bc09b [226 wbond**20080914031140 Fixed ticket #60 ] hash: 0000000122-a17525187a01faaf22b61b95193c21010d8949d65fcb9441d67c9236603bd13a [227 wbond**20080914135052 Fixed a bug with escaping values that start with an integer or float but contain other characters (such as a date) ] hash: 0000000521-46731afa71cfa314544c074340f7cc1ccf994600d5cc46b00b8dfdd97dba7dfc [228 wbond**20080914135442 Fixed ticket #61 ] hash: 0000002329-401caea6862b679709aabf978e806c33468982277c26acf2132b1119a3718926 [229 wbond**20080916013013 BackwardsCompatibilityBreak - Changed fCRUD::removeListItems() so its parameters were consistent with fCRUD::reorderListItems() ] hash: 0000000894-d65e3f2fda388eaf7747a6cee62a08d2bc2ccf11255064dc2ef5e37e699f0884 [230 wbond**20080918012817 Fixed some phpdocs that explicitly referenced the class they were inside when not necessary ] hash: 0000000613-d264fb8de1919d387bbe037a823e8fb541a26a74ca476c3a80dd5fd35387fa19 [231 wbond**20080919115531 Changed fCryptography to use the OS random number generator as a seed when possible ] hash: 0000000974-830d60f98696a000dcf9005ffd9af259b1c02dd61c200fbc71ec5a6cf8ee71ca [232 wbond**20080920114418 Fixed it so that slashes are automatically removed when calling fCookie::get() on a server with magic_quotes turned on ] hash: 0000000333-c002b2a12ce05e1c54fdc6db074dfff9cc55e3a81c631b188c0c75ddf58ad8fc [233 wbond**20080920120110 Updated fRequest to also retrieve data from PUT and DELETE requests ] hash: 0000008157-d13985a4161bb5f66f41bd5a54d8c48e7e89c98f4e93a3991209d9a5827dab41 [234 wbond**20080921201648 Fixed a couple of slight fEmail API documentation bugs ] hash: 0000000437-f9e095f3c34a7a1b7b3e4406e29aa119a7964aa0516383247a96fec1588ef243 [235 wbond**20080923041737 Changed fDatabase and fORMDatabase to convert objects to strings before escaping values for SQL statements ] hash: 0000000817-108b7b1e29cbbb1032ff567870b5bb9f53adf71d38308b330a628b2c56f61987 [236 wbond**20080923173127 Improved the documentation for fORMDatabase::insertFromAndGroupByClauses() ] hash: 0000000757-7296840ec6e40425d318e7b43bdf3fe1950a5109b746d24f3810f5dbbf96ca38 [237 wbond**20080924162705 Added fMessaging::check() ] hash: 0000000533-996eca8339817a99eeae322192fe9a5be7c86b92e1a75ca783d5f64748b1a126 [238 wbond**20080924172644 Updated fDate, fTime and fTimestamp to allow more input types for the constructor and difference methods ] hash: 0000007249-b9bf6491491dd5d77d28de449ad15c922640212019f4e15ad1ed8cfac0f81a1d [239 wbond**20080925051614 BackwardsCompatibilityBreak - 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. Added support for ISO week formats to fDate and fTimestamp constructors. ] hash: 0000053469-ecf4d182ff5a958277593ca417c352b3b730ca8ef1d7637ff366c3ced62a57bb [240 wbond**20080925054717 Fixed the API documentation for fTimestamp::__toString() ] hash: 0000000402-112256746e8713da293790026bdc35c97e20865713a6b74700e74150481b2010 [241 wbond**20080926131239 Added fCryptography::publicKeySign() and fCryptography::publicKeyVerify() ] hash: 0000007956-38cf662195dddcb85dccc7fddb0baef15e43738e4948ac41da45c44dad04387a [242 wbond**20080926132338 Fixed some issues with casting objects to strings ] hash: 0000002261-525245687310691ffce75e747efb254205d8f14366611063af9b8db25ccf631c [243 wbond**20080927025353 Fixed a bug with fRecordSet::countWithoutLimit() ] hash: 0000000200-2a1963122a6b204e690ec23b052bbdf66a5b0aac8ee9983650edaffb8f95081e [244 wbond**20080927030622 Fixed a bug with fORMDatabase::escapeByType() that caused booleans to be escaped an integers ] hash: 0000000547-ed1956d0734ab3c55e62aec77ce6098e6c13ef0c1332d4728168f66bf9a9cf00 [245 wbond**20080927031117 Fixed a bug where fGrammar::singularize() would return 'hous' for 'houses' ] hash: 0000000222-28ea84cfda4a4e9d354069afd9ac78cb659dc9bd32059394889d914039c2f067 [246 wbond**20080927031449 Fixed ticket #64 ] hash: 0000000698-fe3a28d4f48871cb60bafa937ee49d4d64164196509b0e59840a4ef03e314d02 [247 wbond**20080927135237 Added fGrammar::addCamelUnderscoreRule() ] hash: 0000001367-afe252f78916b23bc7d1aab2d3b91aa3e866604e1c12f23ebf22be32414fd5d2 [248 wbond**20080927142922 Changed the way that method names are parsed by the ORM ] hash: 0000004270-21dcbeaa7381064386bf760f386f43aa6bd093ae6f9149af0d1b44d916912380 [249 wbond**20080927180812 BackwardsCompatibilityBreak - 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. ] hash: 0000003450-2f7d74a6d6052016bc451f91daf7c1e35974badb78049dfad22ca43fa8409a78 [250 wbond**20080929035608 BackwardsCompatibilityBreak - Removed fGrammar::registerHumanizeCallback() ] hash: 0000001251-0d3c6311d0931f48f1a9c6d19f2e5e08154070ee56782adc5d3da0d991984bd6 [251 wbond**20080929165820 BackwardsCompatibilityBreak - 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. ] hash: 0000002106-947fbc813d0e66ef4dd796e14092d881c9bec0fd9c3e36c354ea7caf78b26f68 [252 wbond**20080929171233 Fixed some issues with populating and storing one-to-many related objects ] hash: 0000006256-f37b992b6e69aad6326fead03716b28b7079e2c71e057f72ba52784c9dabc150 [253 wbond**20080930170454 BackwardsCompatibilityBreak - Removed fORMDatabase::escapeByType(), added support for shorthand table.column names to fORMDatabase::escapeBySchema() to provide replacement functionality ] hash: 0000006910-d1815657aebb91cea10f94824ff461d33f459a7af8f1f4a645c8ede40bfc6958 [254 wbond**20080930180112 Fixed an issue with not passing the currency to the fMoney constructor unformat callback ] hash: 0000000700-212ef97f7a5773597885a065da889437d52c0af5d78343a81188bceb0b43ee49 [255 wbond**20081001005245 Fixed a few mis-typed variables in the ORM ] hash: 0000001539-a5184576e6ee6c194335798226b1935bda9f64a25e0f4de1472f93cee065dd26 [256 wbond**20081001030742 Fixed a few visibility issues with fCryptography ] hash: 0000000446-53cc45caf14af20676b17c3b28f16bdc9bfc0411b214e65e2aa5e7722cf48026 [257 wbond**20081001032231 BackwardsCompatibilityBreak - Renamed fTimestamp::createFormat() to fTimestamp::defineFormat() ] hash: 0000001690-a2f5e3badea2d766fb0b8ca130e400a488013799c52954e21801a30ec39c185e [258 wbond**20081001032545 BackwardsCompatibilityBreak - Renamed fFilesystem::createUniqueName() to fFilesystem::makeUniqueName() ] hash: 0000004012-ee545d89a69344b77fb323b42127b6eae1a3450328fae6828260904b851a65ef [259 wbond**20081001033339 BackwardsCompatibilityBreak - Renamed fORM::createActiveRecordClass() to fORM::defineActiveRecordClass() ] hash: 0000001503-4b6fc65b90de2611b05cacf9bb16162bd65b7eda61937c854f7c252c507c3f48 [260 wbond**20081001041908 Removed the class fSQLParsing and merged the relevant bits into fSQLTranslation ] hash: 0000004955-87a33507f38afd245aee0280ea46bb2c27bdf58d3c0b1d895217ed4de4ff062d [261 wbond**20081001044937 Fixed ticket #65 ] hash: 0000001266-fa1fa84ebe91e16297df488b621cea491b7147392af8746c31d60b3e2a768651 [262 wbond**20081002030728 Fixed some issues with MSSQL database and fDatabase and changed fResult and fUnbufferedResult to automatically convert the database encoding to UTF-8 on retrieval ] hash: 0000004907-6b58165b0d8da3a5a77ce6418603f1e86b72f912cdc48154e8d9d433b64f5779 [263 wbond**20081002031943 BackwardsCompatibilityBreak - Removed fRecordSet::buildFromPrimaryKeys(), changed fORMRelated::associateRecords() to only accept an fRecordSet instead of an fRecordSet or an array of primary keys ] hash: 0000006948-ed2f10312b64b968a749db90cfc7f5271eff39a230ba5c6088b986ccd7b92eb2 [264 wbond**20081002033349 BackwardsCompatibilityBreak - 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[] ] hash: 0000001310-e7aeb3664ce04f13c625647afe0a8fcfe8ded1025a8463b14fa1d64d475fae47 [265 wbond**20081003053930 Added class constants to all classes with static methods to allow for nicer callback syntax ] hash: 0000022749-a61338eaff4d93c4793b013b52e5c03cc4130e390a346a3e3796ab62b11b34b3 [266 wbond**20081003055410 Added two missing callback constants ] hash: 0000000430-b880fae6d09c93c0581e9c1b3562f0ce7298259631ed5eb0452920c9dab22d70 [267 wbond**20081003181459 Added instance callback handlers ] hash: 0000005689-e1ab149205d4cdfe4c22a8fb4b7996c283cbdad5b7e3bccb769232c17daf8c95 [268 wbond**20081003182430 Add support for dynamic constants ] hash: 0000001425-8f219d87050c1d5c6a38a4ea888847fde87c946bf77638e6ef0f2673dc5d6195 [269 wbond**20081004134407 Changed fURL::makeFriendly() to allow .s ] hash: 0000000406-948c09ab649eae103752571fa5c35fd2ffa77b1a840cd00787d9abaffed36300 [270 wbond**20081004151908 Added fCore::call() and switched all applicable callbacks to class::method style ] hash: 0000014031-07dabed4aa0d1e9e02d7228110f5f531ce63bea5b74eecffe0bc25e9fcbcb641 [271 wbond**20081007025748 Added fCore::callback(), change fCore::call() to accept two different parameter styles and changed all of the remaining static method callbacks to use fCore::callback() ] hash: 0000005546-1f2f6eebdda1744e403eb2193079dccf7eeca16732139951182be206a123c2b8 [272 wbond**20081007030305 Update the API documentation for fCore::call() ] hash: 0000000288-0f9e5b135c223c1af2ffbf9e7599f6b95bbf8eed1f07f7791b97802094029542 [273 wbond**20081007031208 Added comments to explain class constants for static method callbacks ] hash: 0000004365-96698ee1a0514db79f2ca63a17b259fb1b96bcd2a4a4ee535525a5ced8afc702 [274 wbond**20081007032421 Changed fDirectory::scan() and fDirectory::scanRecursive() to create fImage objects when applicable instead of just fFile objects ] hash: 0000000997-170f5a59dc1578f6472c5834321e16e899a0bd8d524d26a141350a55727b0710 [275 wbond**20081007033148 BackwardsCompatibilityBreak - Removed fRecordSet::countWithoutLimit() and added the $ignore_limit parameter to fRecordSet::count() ] hash: 0000001147-a5a7d96607ed1fba03c92bcc5ec2852b27ae60a524b20c7ea325cd006d7fb5a0 [276 wbond**20081007170302 BackwardsCompatibilityBreak - fRecordSet::build{RelatedRecords}() was renamed to fRecordSet::prebuild{RelatedRecords}() and fRecordSet::count{RelatedRecords}() was renamed to fRecordSet::precount{RelatedRecords}(). fRecordSet::precreate{RelatedRecords}() was added. ] hash: 0000007744-1eb7f63942a0e83d290287ea59d514da4a924af8fba711ab40caecc7ea8bae13 [277 wbond**20081007170504 Removed some unused methods from fORMDatabase ] hash: 0000003165-3328ca562996fa9b863a756cb954eed262c51f1d72d883c03a33b481497a0ebc [278 wbond**20081007170906 Fixed some issues with fSchema detecting the proper data type of SQLite columns ] hash: 0000000315-38c345593cc9306be233da8f145f81fd0f14153a490b153ac1558fae2565502b [279 wbond**20081008013219 Fixed a bug with fCore::call() ] hash: 0000000186-094c273631b4c60cfa1b1ac349deb5c8d1a9279c743f73891b0d797773348bcc [280 wbond**20081008015754 Fixed ticket #67 ] hash: 0000000635-16b96f740b82e8862322331ee56fb4dbcbb9085d30cf12c55192e8f63b1499b1 [281 wbond**20081009004229 Fixed a bug with S/MIME encryption of fEmail messages ] hash: 0000000205-b386ab3c756c3a390855c7e006d90bc1bd877d82399c072145dbd49d0c835e0f [282 wbond**20081009004724 BackwardsCompatibilityBreak - 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. ] hash: 0000001008-8043f91d907c25824eb98f62ca6b1f92c6a4bb435a90c1443015f66aeb4c3037 [283 wbond**20081009173748 Fixed a bug with multi-column where conditions when building record sets ] hash: 0000000739-1d022d6746c0a5d823910258120e11383a3e596f41760605d13f31f9d8c828fa [284 wbond**20081011022429 Changed auto-generated joins to be LEFT JOIN instead of INNER JOIN ] hash: 0000000405-9050abc7b75a378e1c019e56035270929032b5c7f8c105d3f06811cd3e418899 [285 wbond**20081011044411 Added the cache array to fActiveRecord objects, also added additional methods related to old values ] hash: 0000006158-1e693726496f6692d4f48308d7cba31cebdd178cdbc6edb9de3ab603d43253d3 [286 wbond**20081012020846 Added reset() methods for all classes with static members ] hash: 0000014437-63bd79a62e94ca603bdea8a670045aad5ebaca6936b4e60e8308758ec79180eb [287 wbond**20081012021814 Made session prefix creation consistent across classes ] hash: 0000004147-ff74e2f2e83b3aa2bc9dc35ed27d11cbc21ef45d0d04967822aa3b25e5f95a9f [288 wbond**20081012022604 Refactored how fRecordSet ensures that classes are configured ] hash: 0000001052-9024ef3c7772f8d1a3684a16d8a7a0d7721f771d131d2fb49f9fe4b44a6d9e13 [289 wbond**20081013023459 BackwardsCompatibilityBreak - Changed the replacement token in fRequest::overrideAction() from %%action%% to %action% ] hash: 0000000616-b135e5a8554897c00ae38ff5ba590e9ae184e8ecf30dba2faab551c165e5638c [290 wbond**20081013030650 Changed fResult::getResult() and fUnbufferedResult::getResult() to be hidden in the API documentation by default ] hash: 0000000257-d81a07d162c18230ae7f31b18d62657d7260e856cb99de1a72c6ed629232696a [291 wbond**20081013030943 Added missing @internal documentation flag to fSQLTranslation::enableDebugging() ] hash: 0000000183-247ce71e5ca4ad53957dd4f507c8e03ec66ddc334dcc265ec9f397dc9ce66a2f [292 wbond**20081013033939 Fixed a constant reference in the unit test for fAuthorization ] hash: 0000000350-9956de3bf1d502a85c89b6d1df0255bb504ba46190fcce0824352513970c2d2f [293 wbond**20081014030427 BackwardsCompatibilityBreak - Removed fTimestamp::combine() ] hash: 0000000832-a7b1e114db7a0cbbc385bdbd0e0a8b25470c3e390ce27015d53e392e60695af0 [294 wbond**20081014033325 BackwardsCompatibilityBreak - Removed fPrintableException::prepareMessage() ] hash: 0000000347-55814cceab9175cd71b389f4e5ea4977d4da63bc9eb5c7487b0ae000fce23e64 [295 wbond**20081014035633 Fixed a bug where fPrintableException::printTrace() would not print the backtrace ] hash: 0000000219-beda16a88d5f186b84a9ca302f58e032e286422c06a011921362cf32860d68d7 [296 wbond**20081015011918 Fixed a bug with fPrintableException::printMessage() ] hash: 0000000198-84d0928bafb3e30248f60b2006c8bad35a989896e2f21e2827d8a089d5f7fa58 [297 wbond**20081015012228 Fixed ticket #70 ] hash: 0000001122-c33cfb3787c16709e65cd7426777d194d0dac917e779a2c16200ea75a69fdb1b [298 wbond**20081015020602 BackwardsCompatibilityBreak - Change fUpload from a static class to an instance class ] hash: 0000006549-3b55a7c19eb3675c10a1617798e2ac8ec510938228b88da59e9eb5cdbd4f09c5 [299 wbond**20081015125749 More updates to the fUpload class ] hash: 0000004846-9e126eb0c04f98f1d7ae446cc9bab617195ff92af8821136f8aa5b81807b9bed [300 wbond**20081016031442 BackwardsCompatibilityBreak - fUpload::upload() was renamed to fUpload::move() ] hash: 0000002264-e528389c46363f928c098f914fbb04858e94354de507b0cd01371fa51ad5cd89 [301 wbond**20081016031758 Fixed a bug with linking related records to an fActiveRecord ] hash: 0000000307-c4a1d6f0804148b024d0e0633ba3cca5d99db537bb351416be323fc919905b5f [302 wbond**20081016043237 Updated fUpload to check file upload error messages for max file size issues ] hash: 0000000474-e7b8d3a6a9aa6f75e2a34a87ab865be2ef4082139ff46a28cac073692d0b8a13 [303 wbond**20081016045933 BackwardsCompatibilityBreak - fResult::areRemainingRows() was removed, same functionality is available from fResult::valid() ] hash: 0000000746-13b00863cc2d4040a3d1cbe5b1bd31be27f7f5eb08b9eef648fd2b4a3c85a980 [304 wbond**20081016050546 BackwardsCompatibilityBreak - fResult::getPointer() was removed, same functionality is available from fResult::key() ] hash: 0000000410-a23b6130aa31ffe83fb4ae4b904d59ccc878e2cb44e273c393eab9a98e08a05d [305 wbond**20081016054757 BackwardsCompatibilityBreak - fUTF8::detect() went from being public to private ] hash: 0000000286-656df2f970f1569020892e89472dad1279e80e311232af10f9387321eab38f4e [306 wbond**20081016055131 Changed fUTF::ascii() to be @internal ] hash: 0000000117-2e6150fe867afdbd28eb79e338dc3765e049bd25d006b7e2ecac50bf5e1c062c [307 wbond**20081016055721 Changed fCookie to ensure cookie values are cleaned of invalid UTF-8 characters ] hash: 0000000214-0128582a8150b1dfeb31b8b580785e931da7344945162a481569234c3459e3aa [308 wbond**20081016172700 BackwardsCompatibilityBreak - Renamed fORMDatabase::getInstance() to fORMDatabase::retrieve() and renamed fORMSchema::getInstance() to fORMSchema::retrieve() ] hash: 0000024104-2df21ed1e30bcf13be9898ac57c17a673799ecdee72364d5d380124d03b49a1f [309 wbond**20081017002316 Fixed some bugs in fEmail and fORMDatabase ] hash: 0000000918-7a80afdd89f78f8a5d5dc9f5e55bca245ce7ebe81004c38a4722b37673b59cea [310 wbond**20081017004449 De-coupled fXML from fHTML ] hash: 0000000215-11389f8c72ad4d06ea3a006aaaa13a5bcba6d49eeed5cb7bf345b455535944e2 [311 wbond**20081017173225 Some updates to API documentation ] hash: 0000019877-526c4dc37456cda3134a8799bd31c929d286309dd345d8a2b4ab8c178b1586dd [312 wbond**20081017225907 Work on variable parameter documentation ] hash: 0000000569-69459c1496ef4438ef1b07663d8247fdc54e4718c27655095323b5c38d54eb59 [313 wbond**20081017230247 More work on variable parameter documentation ] hash: 0000000145-f7abd19d691825e95433a820129aaf740580374f75615d8bd3dfdae1a44daeb3 [314 wbond**20081018121731 More PHPDoc changes for testing API documentation generation ] hash: 0000004526-3b8ad14faf300ca426b55e45e38c1a08e3a88d034c58cf1626581675d0270267 [315 wbond**20081019043249 More API documentation updates ] hash: 0000056633-56777e02392e63981ea3a1f9b90681da4d64901fc8d8c261e09a2c309b2c0d3e [316 wbond**20081021055409 More API documentation updates ] hash: 0000060464-1358f79d839bd908a97f213056744a8a5ed3000a390773fbea373dd96c6ed815 [317 wbond**20081021055838 Added the missing fUpload::__get() method ] hash: 0000000400-1fc7e141c1177984b6d71ead9cd4c78f90b6f4aa7ced5cfcaabc3864fc86433e [318 wbond**20081021060249 Removed some extraneous code from fDatabase::escape() ] hash: 0000000848-7e6baa45ad77fe0e22710f39f7ffd5afa8317335d00e44534231f2712ffa83ce [319 wbond**20081021061500 Fixed a bug with fGrammar::compose() ] hash: 0000000213-7c32939c74a802917143fc33a8d724c24f5ed04cf16c84aa10b4868a4c3c16e1 [320 wbond**20081021175742 More API documentation updates ] hash: 0000035558-517574f75d7da79d5388b77bdedce9a5d013f3343b1fe6c1d46fc0adc3990a53 [321 wbond**20081022022609 More API documentation updates ] hash: 0000032211-43c216c933e4f4e5fe6304053b95915476a544029c0c4fd915e2a3009ca478ba [322 wbond**20081023012438 Fixed ticket #72 ] hash: 0000000229-d3fcf0752b7da080cd2322d1c70b90d1cbda972bcbc9da543e4b411794948eaa [323 wbond**20081023012653 Removed an extraneous debugging statement ] hash: 0000000127-7c9a5c411b211752cb6e0f2f789b897ce5a59fbc2a7b44264926bee0ef813661 [324 wbond**20081023020355 Fixed a bug in fORMDatabase::createPrimaryKeyWhereClause() ] hash: 0000000333-3f5e74a4fde66cb70b34045f5fe03e1e6af3f79a076284e5b97c57d4d58d2832 [325 wbond**20081023053559 Added the ability to set a column as case-insensitive when performing uniqueness checks, fixed conflicting primary key value checking ] hash: 0000005273-3ad697e95c4341d35e2c7ab01fe8c299abda5b94e2b55bb512d6166be2534776 [326 wbond**20081023180211 Fixed ticket #73 ] hash: 0000000607-e15ce2ec6d6d24bb29fdd59d22e8eec1dcd49b9192a7b827c2b7e17176434a9f [327 wbond**20081023180700 Fixed a bug with checking for the group by placeholder in fORMDatabase::insertFromAndGroupByClauses() ] hash: 0000001102-ace7862995aff55fa391dba60315e622ff3f528eb1b96733d4055bd7034e6921 [328 wbond**20081026002950 Changed fORMFile to create an fImage file when resurrecting an existing file and the file is actually an image ] hash: 0000000444-8511fcd2aca3bac7973eb493f23f41bcd8378d98efbed0b3d7578ce729c7948b [329 wbond**20081026003252 Fixed a few bugs with *-to-many validation using fORMValidation ] hash: 0000002091-ab70d06a2d2ee61ae76d88162b09468579f9fb5b5f08876b28752d719520db12 [330 wbond**20081026021537 Moved the identity map and configure checking into fActiveRecord from fORM ] hash: 0000008075-e8bb8a3511588d34cabbf5fa61a1f02088b1e9256948290760d8827e2deb6552 [331 wbond**20081026204403 BackwardsCompatibilityBreak - 'replace::' hooks are no longer allowed in fORM::registerHookCallback(), instead use fORM::registerActiveRecordMethod(). fRecordSet::registerMethodCallback() has been renamed to fORM::registerRecordSetMethod(). ] hash: 0000026797-dfbb0b9e2a623c1f39144e1007d49dfd752ab5c31a79a9b75705c06fb3099c80 [332 wbond**20081026211158 BackwardsCompatibilityBreak - fActiveRecord::has() was renamed to fActiveRecord::hasOld() and fActiveRecord::retrieve() was renamed to fActiveRecord::retrieveOld() ] hash: 0000004170-3f48ea87ed410e01a8a869bc5ffa5109110287ba280b1608ba1f443c4dfa2cdd [333 wbond**20081027011915 Removed fISchema ] hash: 0000000877-db4fb5c916a4ef27da8f0fa5c30b4a0b51eab08cd1332d80d4747dcdbed4b9d7 [334 wbond**20081027023018 Removed parameter type hints ] hash: 0000002846-b6aa5e9557ceaeb9ed909fdde114acb193e8b05ad9d7d54714112af4160dccd7 [335 wbond**20081027053552 Added fRecordSet::merge() ] hash: 0000002613-71df5b633d11883a0c4d24fd2b82a544b94bb131c09bd4d45aed794b2b80af9c [336 wbond**20081027053848 Fixed an API documentation bug ] hash: 0000000195-991713e2295b8e4333dd25c533b0bdcf06df87b78ab3247d7a05d18db5892316 [337 wbond**20081027173225 Fixed a bug in fORMJSON ] hash: 0000000158-efa20f7758cb2892dfc7decbcc4809bed869ca67b4007c27f6be42e6a5abb0ab [338 wbond**20081027175906 Changed fAuthorization::checkLoggedIn() to include checking the user token ] hash: 0000000345-b23070179885cb54289544d4e373f874f8cf460fd2400496e66455833bbb2ddf [339 wbond**20081028002838 Fixed fSchema so it does not improperly flag some tables as joining tables ] hash: 0000002257-6d5f200fba164cc6a8c7eeead2e57734603a7fb275461bfa8cb87988e554d653 [340 wbond**20081028003351 Added fRecordSet::slice() ] hash: 0000000702-4eb8f9ff58bfd1c59b8e4bca294fd38e5a3e822892a2f71e08b597e922997424 [341 wbond**20081028171134 Fixed some issues related to PHP converting objects to integers ] hash: 0000000636-85d3634f0099cedd60c3ae6880b9d3a6cfac2791cf1525fe461b59a112137a2a [342 wbond**20081028172646 Added support for multi-class record sets ] hash: 0000004438-839346fe2a65b7e35bd963d14e86289714c4f20349e92005f5dc1d851a8c3a27 [343 wbond**20081029013516 Added search term parsing to column|column|column~ conditions when calling fRecordSet::build() ] hash: 0000002447-ada5515184b35def2bf623eab9e49c4e6895318634a81495c05ee2698cdcb5dc [344 wbond**20081030011051 Added fFilesystem::makeURLSafe() ] hash: 0000000755-2c1ab1f0fb920556e07fc9065f1e22603480fe0642da14d15b31d49cca0fcb87 [345 wbond**20081030011337 Changed fURL::makeFriendly() to not allow . or ' in the output ] hash: 0000000509-f5e58b94f8eb819dd20ac183948299886da3032bec83dc40c93f11753be0d44e [346 wbond**20081030013959 Added support for aggregate function calls in fRecordSet::build() where conditions, fixed precreate action for fRecordSet ] hash: 0000008755-7ee8c914a91f3b2e2054206ca326de4402b44f497e87b46d1b1df5443652fa0f [347 wbond**20081030052934 Added custom message support to fResult::tossIfNoResults() and fUnbufferedResult::tossIfNoResults() ] hash: 0000001202-761cd98ada5498bda1fbbfccd73bc39a2cc376c7a25a3c7e01e15b7b6fae13c1 [348 wbond**20081030054341 BackwardsCompatibilityBreak - 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() ] hash: 0000005129-2b5a6397285731cce4d7714a78d464f10c374cff5d08d95fdd32556e34bf24ca [349 wbond**20081030173251 More fixes to fURL::makeFriendly() and fFilesystem::makeURLSafe() ] hash: 0000000433-9b5485cf907c5d5682ae7f2c65daa869ea72ca4cafbf4f748b32d82ca8938fbf [350 wbond**20081030173723 Fixed the prepare method for link columns to accept the $create_links_and_line_breaks parameter ] hash: 0000000379-bc456e55ae4dd11fe1e4af5e3a23dfe8f029d626dda669bdabb764bc62a6f42c [351 wbond**20081031011514 Fixed fORMDatabase::parseSearchTerms() to return stop words even if $ignore_stop_words is TRUE when a search phrase contains only stop words ] hash: 0000001111-8f35c3196d7ac42ef914935100cd6220d63110f84edd8871d3826e22ce3e93f7 [352 wbond**20081031023553 Added the ability to filter an fRecordSet based on a conditions array in addition to a callback ] hash: 0000005352-87b70125ca72e1460444fc50de007dba7d27da87a17cf336cbeb977dc17152f8 [353 wbond**20081031025757 Fixed a bug with fRecordSet::reduce() where the callback was being seeded with a record instead of the initial value ] hash: 0000001040-0163fbbb62c7d74be8d2ebdbd4d8cbf6fc8feb057ef5ca8345b17f1ae499d23c [354 wbond**20081031060150 Fixed a few small bugs in fRecordSet::slice() ] hash: 0000000968-b1b819865acb26db9b1a2218de2d32254dc7fd9161004ac568effd0042d9edfd [355 wbond**20081031061543 Fixed a couple of little bugs with fActiveRecord and fORMColumn ] hash: 0000000625-f15835f20b0760529353cc0671b26342a546e20a4240794d1767ede7b405c3f6 [356 wbond**20081031062307 Added a processColumnName() method for image upload columns - will take the existing image and reprocess it ] hash: 0000002533-72c88a792c5f743cc221e93a70384f688af466993dc3e93213d52d8d651a7058 [357 wbond**20081031180425 Fixed a bug in fORMFile ] hash: 0000000147-8aeefaa68bfe654332a7aa7a2a1e34e01464ec2e233f7b526dd87061a6542826 [358 wbond**20081031181018 Added ~ condition support to fRecordSet::filter() ] hash: 0000003918-3070df873b19105865808630ad644e55fc86d243069755d187b68aa5e9018093 [359 wbond**20081031183227 Added the ability to generate a new random string when a column is configured with fORMColumn::configureRandomColumn() ] hash: 0000004300-13f16b25a676c970ef8b0507162e2188001d430af2c5e27e45b6c1fd6f20a3ac [360 wbond**20081031185118 Changed fORMColumn::configureRandomColumn() to only generate a random string for new records if another access code has not already been set ] hash: 0000000302-29f2c9e7c4c331310aeddfbfb5c5bc8487ddfdc4651aef667326b9d8cd65b507 [361 wbond**20081101151528 BackwardsCompatibilityBreak - Changed the existing file upload field name from __flourish_existing_column_name to existing-column_name and change the delete file upload field name from __flourish_delete_column_name to delete-column_name ] hash: 0000000578-c626714ea7713c231c2c6f18896da829879274a8d990e88ebe945beac09b997f [362 wbond**20081101185439 Disabled the enableOverwrite method for fORMFile::addFUploadMethodCall() to prevent issues with multiple records being associated with a single file name ] hash: 0000000494-e3b034f74f2cf81653f61da0064edb1a650da11b8c5b94c933821ec8901a4d69 [363 wbond**20081101192327 Added server-side verification for image upload columns ] hash: 0000000957-bb94a2c76086f89a9a4103355b69a22082e9c11d1266a33ada468a97ea38d1b8 [364 wbond**20081103042940 BackwardsCompatibilityBreak - 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 ] hash: 0000000770-b0a3e77ec2cb4566ae581ab7eab57a70ed70dc0cbe17c3a69abba852c4563a7a [365 wbond**20081106055051 Fixed fEmail so it properly throws an exception when there is incorrect information for an email ] hash: 0000000426-11480a54408ce4bf83b640b50c7d5af5e075d94cbec0a59fe806e3272fc9107a [366 wbond**20081106055132 Added fFile::getMimeType() ] hash: 0000007043-d2ec573851a55134a2c1f0530b531c0652a6efa69481aba08d51b99d86dae618 [367 wbond**20081106140319 Added a few more common internet mime types to fFile::getMimeType() ] hash: 0000001806-4d47d4181550df777815e69425f6a6c67a8332ffa37ad437ffceb57d93358f91 [368 wbond**20081109022131 Reworked fFile::getMimeType() and added support for more audio, video and text formats. Changed fUpload to use server-side mime type checking for uploads. ] hash: 0000017983-867568c8da6f7ee4260cb81cfff4a149ed8442f33b1e524b74a5be35ff5471c1 [369 wbond**20081109022243 Fixed a bug where date created and date updated columns would not be set before calling validate() outside of store() ] hash: 0000000312-fbcbf95b15929cd3bdcee726f3d4795dfccb9f7864ddfdd8f0d286816987db6f [370 wbond**20081109022424 Fixed ticket #79 ] hash: 0000000308-84ab378dbda01d9eb3a1b6ecbb19d05bf498930326e540d0c3a3302264651484 [371 wbond**20081109022524 Fixed documentation for change in r370 ] hash: 0000000410-34ca4a0ccec6e3d22f449cdff6dab54bb4e7e7e03a0cb6600a3dbd0b4eccf77e [372 wbond**20081109024316 Fixed ticket #78 ] hash: 0000000601-f97329309c26e77cdf1c735af39086572845a8c57b8ffac638d0d6b47729b63e [373 wbond**20081109025441 Set fActiveRecord to hook itself back into the identity map when unserialized ] hash: 0000000561-60d519603f3be5fe17b2212243c39b1df3e24e04362ce3e44101a8460fa80840 [374 wbond**20081109201508 BackwardsCompatibilityBreak - fActiveRecord hooks and method calls now have a &$cache parameter after the &$related_records parameter, but before any other parameters. Any method registered to a hook will need to have the method signature updated. ] hash: 0000024380-f9b1147354108d5b6052a7990cfbdd2810bf0940b3a6b9db812bb13c2f20bc92 [375 wbond**20081109210242 Added fCRUD::generateRequestToken() and fCRUD::validateRequestToken() as a took to prevent cross site request forgeries ] hash: 0000002433-a8bd93255ca741174a86be3a660a2e552522444ffc8c844172e22e4cda016237 [376 wbond**20081110005407 Fixed ticket #80 ] hash: 0000000093-b12b3da31659ed5e7c9f4432260bfc54f169667f172684d768619cc4eaafaec6 [377 wbond**20081110185533 Fixed fORM documentation to include new &$cache parameter for hooks and registered methods ] hash: 0000000305-f941a6a838d21eba18fb565235af2e8eeb66cbf06b0f0be7b94fb368633d4d2f [378 wbond**20081110185735 Fixed it so that fActiveRecord::configure() is called when a record is unserialized ] hash: 0000000446-b0628e5117f35d449a968fe512b339d44824322f8fa2db7aeb78ddb58ce02938 [379 wbond**20081111184813 Removed an incorrect hook from fORM::registerHookCallback() ] hash: 0000000359-0f586e6c071440e30b33916ac5cb791562b498b2ab26c8adf81beeb6ffa07b6e [380 wbond**20081112184701 Fixed fUpload issues with checking the mime type ] hash: 0000000387-d7a71914b19f5e94d54863c0be1f424365a4acd39d2849e30d57e80f0388a2e3 [381 wbond**20081112185239 Fixed bugs in fCRUD with reordering and removing list items from exceptions ] hash: 0000000550-f0be70d5bdf158308371baeed0fad33c4e6bd538591fec177dcbd194b53c77c1 [382 wbond**20081112190532 Changed fAuthorization to regenerate the session id whenever new user info is set ] hash: 0000000817-b7bbca86d24bbd32075c702ed53fe615cd34094aa5b63b6ee1446094c7b0e84b [383 wbond**20081112191532 Added fSession::setPath() ] hash: 0000001014-78b2216689bacf52638f74d3549484a0c63d8e57e30d393789716b07257a8486 [384 wbond**20081113012612 Added fNumber::getScale(), fixed an issues where the scale was being determined using an old method ] hash: 0000002245-cbb2ee8523e9b169b5460f29a24130983c459d130b045670c436a2e31fd49f5f [385 wbond**20081113012838 Fixed a misspelling in fAuthorization ] hash: 0000000151-dc70e846922888f2ee762a4845ded9eadaca96a3f3e77b65549aea07e72f3f33 [386 wbond**20081113022207 Fixed ticket #84 - changed fMoney to only use the defined precision for storing the amount instead of the defined precision + 1, calculations still use defined precision + 1 but then round back to defined precision ] hash: 0000004314-cc30bc83b6db879cbd48dfd2c9e99d9a0e4d0f8912601a3a098cfc4f31c83751 [387 wbond**20081113025814 Fixed auto session regeneration in fAuthorization ] hash: 0000000445-16a1a796e49b70f7c5b981d995c22d49ee09bb1f9c403696bd364f43918be5a7 [388 wbond**20081114012810 BackwardsCompatibilityBreak - fCore::toss() was removed and all exceptions are now normally thrown with thrown new ExceptionName. fCore::registerTossCallback() was renamed to fPrintableException::registerCallback(), fGrammar::compose() was renamed to fText::compose() and fGrammar::registerComposeCallback() was renamed to fText::registerComposeCallback() ] hash: 0000162741-08873ee9e81e7a7689b8bdcf025baeba6deeba095e0794457dc93c5478d2bf07 [389 wbond**20081114030110 Added the option of specifying the URL for fCRUD::generateRequestToken() and fCRUD::validateRequestToken() ] hash: 0000001555-f3f2af38b831f37ac2032dfa6878800cf3e37a751df22879af7109ad0468118c [390 wbond**20081114035025 Changed fSession to force using cookies and only cookies for session identifiers ] hash: 0000000226-280bf64e380b389cbf93482d62765a0269e5838e1b2c3bbde1967613e79be656 [391 wbond**20081114045951 Fixed a bug with creating exceptions ] hash: 0000000945-38da850c2075b6b245dac70b692be230f3eff567f97fe9c783aab1f619a5b543 [392 wbond**20081114181742 Fixed a parse error with fRecordSet ] hash: 0000000107-b837c4cd19dcf7d40c445e98e28324f829f24afd0e41ba38bd594b657bbd840f [393 wbond**20081114182253 Fixed ticket #85 ] hash: 0000000315-c81efd2aeff8bcd71fd8afdc74c2ddcb1df811b064a3b07d50811fc79d195f80 [394 wbond**20081115025332 Updated all functions that deal with entities to use ENT_QUOTES and made sure they all specify 'UTF-8' ] hash: 0000001328-9b71e05ec99fa2890691da9b0308b4a4d6bc72a5031c75ed45362b25e2bba3b4 [395 wbond**20081115034650 Fixed ticket #86 - fixed some outdated references to methods ] hash: 0000000466-6f675b4f664d6081e1a020941d5a7362fb20b3b95ada95e666ed6283a7975993 [396 wbond**20081115034800 Added a missing method name const ] hash: 0000000331-271dc8f396f1adda7963d9ed19f931cb3d297bc20b46558888791b4d39173aae [397 wbond**20081115160429 Added a newline check for the subject in fEmail::validate() ] hash: 0000000289-ec49f0d5ce1dd49aeba4b568c5e0a4945eeb31af947023aa1b5b6e1a05b44ca0 [398 wbond**20081115164350 Added the D modifier to the appropriate preg_* calls ] hash: 0000013353-b4b3a6c1afde47893eb4a7cbd3ed8ec01682ae9681736f10be9760f47fcd5d13 [399 wbond**20081116183728 BackwardsCompatibilityBreak - Renamed fPrintableException to fException ] hash: 0000003442-7de2940772a24dc53a2aac335cc4465161baf0ba1dc5edd2ce900573f4d635c0 [400 wbond**20081116193142 fExpectedException and fUnexpectedException are no longer abstract ] hash: 0000000382-30dff635f62efbd53a7fbf5d236163fc0aa59160acdb653035dbb836254655da [401 wbond**20081117025104 Fixed errors in some messages ] hash: 0000002882-d87571496633edb77c74d7f3b41029392da043df18c1d73486941391676f3fa8 [402 wbond**20081117035101 BackwardsCompatibilityBreak - Removed fCore::trigger() ] hash: 0000005102-2b66131be7f43c43d7a888d4d80c6fb83a358266eed591bd0cd7880e774dfd26 [403 wbond**20081117043426 BackwardsCompatibilityBreak - Removed fCore::stringlike() ] hash: 0000007276-421f4a71dbde87b755f9042b7726e50696e9e265605265780c2c85b16befe283 [404 wbond**20081117065708 Added a few missing callback constants ] hash: 0000000198-6e93c80cdda5e99e0ce23478816f8b2411f65595cd0f93bbac0f261e0e9943b8 [405 wbond**20081118020131 Fixed ticket #87 ] hash: 0000000257-1029a289f5a7f8ea3e98890462336538e4e7d0fd10fd2037220615dc09f2ffc2 [406 wbond**20081118020647 Fixed ticket #88 ] hash: 0000000424-85d1c971d09fdab337a697a68d4a0d364325425d7a3c1ff943a33f49fc22880d [407 wbond**20081119134752 Added the ability to specify quality when saving a JPEG via fImage::saveChanges() ] hash: 0000002291-8edd48136de29958bcd25e4d4ba3a47435ec2889099be38d8eaae5abe6c95ec8 [408 wbond**20081119135747 Changed fImage to return itself from manipulation methods, allowing for method chaining ] hash: 0000001095-48e5772363f3a67691c93bf81d38da2e3176dded07c44813430bb4a4554c3d2b [409 wbond**20081124005715 Updated fFile to allow method chaining off of fFile::rename() and fFile::write() ] hash: 0000000760-7999b28ad12f1f939269ffe425922a69d1dbbd6f97290b9a6a55e9a99a5b58a9 [410 wbond**20081124042534 Fixed fFile::getMimeType() to properly detect Microsoft Office file formats, fixed ticket #90 ] hash: 0000002421-63afccdf7757321902a7127fdc21f3363c7eea9ad59b8e612f5231e5dbbf7d19 [411 wbond**20081125041525 Fixed a few bugs with objectifying ORM column data. Bugs were introduced in r403 when fCore::stringlike() was removed. ] hash: 0000001976-ac8e7fffe3be8a86089c359aa84746ee00001f635d93c500d4722b4c8127b857 [412 wbond**20081125042615 Changed the fFile constructor to throw an exception if a directory is passed instead of a file ] hash: 0000000485-c16584ece8ae68ec507c2fc93470979aed6d2c422134ec00d304e29cbc1eef9b [413 wbond**20081125055658 Fixed a bug with validating the uploaded file's size ] hash: 0000000905-556522cde2126dc5e7789e87634233e6dfc220bd5b6c4758e341b7a282fbdc07 [414 wbond**20081129231800 Fixed ticket #93 ] hash: 0000000176-988d74e3befaeed24f5026b760b2faf677957418855260d8aaa8b4ffd3d8a6fa [415 wbond**20081129232945 Fixed a bug with fRecordSet::current() (and thus also fRecordSet::fetchRecord()) where it was throwing the wrong type of exception ] hash: 0000000985-bff7366721ef92efdac315873320e3b07ff49ee7440d621b60eb02a0ac9266ce [416 wbond**20081130005243 Fixed ticket #94 ] hash: 0000001231-d1ebcde229ab25a730b2182bbe67adffb049303a26c71a7472591feb40524d64 [417 wbond**20081203031150 Fixed a bug where an escaped % in an exception class constructor was improperly throwing an error about not enough parameters ] hash: 0000000423-47e7fc1c4cf1fae0721d91adebc08b7f3bee3871dfd9e94b9cc9f81fc71037b3 [418 wbond**20081203031654 Fixed the API documentation for the fException constructor ] hash: 0000000356-58107f0e0b44110594284ce45e56db41f0fbc78b933b13e9bb1650fecefbfbfa [419 wbond**20081204130048 Changed fActiveRecord to remove an auto-incrementing primary key, detach values and cache from the identity map, clear the related records cache and reset the old values array when cloning ] hash: 0000001566-b183ced1418a2f997563f3f8cacc2fc8b99618fe5cc913bc17c7966aad4ebdae [420 wbond**20081204130227 Fixed ticket #104 ] hash: 0000000173-026dfb96c7c23c3d973c8a3cd2e15aa80493234a116d803db9c8ca3da44aae09 [421 wbond**20081204130607 Updated the changelog for fActiveRecord ] hash: 0000000391-fc225d63801c946297eb0bb9cac5a4419a2d19175f2f7ed45597c3352df96152 [422 wbond**20081204131140 Fixed ticket #105 ] hash: 0000000419-43503dc2687de851d451a5e6563b556a5009e96201fbd5c1c2515b19a04e2106 [423 wbond**20081204131226 Added a missing callback constant to fSession ] hash: 0000000153-7696205fa3849d3c037c7b74e31f19b39de3f979a3865364cfd58f1b0e54e6e5 [424 wbond**20081204133924 Fixed ticket #101 - added support for != and <> to fRecordSet::build() and fRecordSet::filter() ] hash: 0000003553-2bdc39e123b3d93e2ef352984720a3a33e62e55fd235c8de84890e825bea58f5 [425 wbond**20081205180058 Fixed ticket #108 ] hash: 0000003342-faeec27525a7a513b82404dfa4603158596516a8cb93e8b98b4252ecf741211f [426 wbond**20081205180248 Fixed a bug in fORMDatabase from r424 ] hash: 0000000251-d92b60b269574e91b5a0157bb16b8060f283ab6b2979a82f1e74e7ef8747f1a4 [427 wbond**20081205180446 Fixed ticket #106 ] hash: 0000000246-b0b54ef30d4617f3b81f3b569d2d1f9c5530f08efb20fe8d389381672a54801e [428 wbond**20081209013128 Fixed a bug with fORMValidation::addManyToManyValidationRule() ] hash: 0000000447-087218c0ad72cc7cf3cd2624e5528e05e18443570dc81fdce122133a2173b46f [429 wbond**20081211050345 Fixed ticket #110 ] hash: 0000000204-f01b4d1c403610216ba4288f225ecd18fe46cc52efa191a3a7ee0484830ae11d [430 wbond**20081211052047 Cloning an fFile object now causes it to be duplicated on the filesystem ] hash: 0000000990-edd14d510dc0e400d45ac03cdfe19ca77e6c550298ccd4dd77fee67a7e94af28 [431 wbond**20081211052514 Fixed fFilesystem to properly update the file path map and exception map for fFile objects that are modified during a rollback ] hash: 0000000496-b3fbdca99e12ad11af7872978a02b0fe0fe8d8b9c9d12152f12b3f0bdaa532e5 [432 wbond**20081211053237 Removed a whole bunch of unnecessary error suppression operators (@) ] hash: 0000003693-5a02ec30a08b79ffb613b5a4f23d7b1e08e9fc3c11dd5e0b3949bd546e8e5469 [433 wbond**20081211054018 Cloning an fActiveRecord now also clones any objects contained in the values or cache arrays ] hash: 0000000847-19eb34ae19edd075ccd4c77ff5423b34d431a38310b8409460df343666dec0bf [434 wbond**20081211190227 Fixed ticket #111 ] hash: 0000001026-957ce1aa3bb125211d47b8c3c9be6bb1eb0cff90fdc01b241f8ba72196b70669 [435 wbond**20081212025353 Fixed a small bug in the fORMDatabase::createPrimaryKeyWhereClause() documentation ] hash: 0000000315-4ff55bc4fcf44ecd3b9d87b5bec8f6c58b2c7bed4fe97de66da652cdb05d106a [436 wbond**20081212064658 Fixed ticket #109 by adding fActiveRecord::replicate() and supporting methods fORM::replicate(), fORM::registerReplicateCallback() and fORMFile::replicate() ] hash: 0000008197-ea221fb2a22b74ec6f1a9406e0ea0fd06dfde5fe8dbc1ae95163692793cdb446 [437 wbond**20081212071016 Fixed fActiveRecord to use the plural class name when replicating related records via fActiveRecord::replicate() ] hash: 0000001625-5e4a414d1c87ab6114a57c6fa461644a0a01e21fcd1096eb1e8c46343eef03e1 [438 wbond**20081212180659 Fixed a bug with fORMValidation::addManyToManyValidationRule() - previous attempt in r428 ] hash: 0000000569-9990e5bfb99a6b60b880de2aa5d8a0436831c4a91e12fe09557aeb5e240bcb23 [439 wbond**20081217041836 Fixed ticket #113 ] hash: 0000000168-0961d55c99f2d9d29c495bbe622ff1625db478b4cc05b6db1361cfed88b1de9b [440 wbond**20081217052739 Changed fFile to implement the Iterator interface, returning one line per iteration. Added fFile::getMTime() and fFile::output(). ] hash: 0000004488-1a62632020a00fcaa1ca065d4446a5827e6e189716c09880bf932c8869744228 [441 wbond**20081217172004 Updated the class change logs for that last 15 commits ] hash: 0000004120-84d28dd0a13b99aba7b0c737befedc8c4894c76cb5e1cc219dbcc5e8e103be4d [442 wbond**20081217172715 Fixed a static method callback constant in fORM ] hash: 0000000390-b71152dbaa41a3fe8ac793a4862e3cbd7d33c527d4304e2c160fee9cb082770a [443 wbond**20081218180923 Fixed fImage::saveChanges() to not delete the image if no changes have been made ] hash: 0000000795-febd5585dfcadb58b8ee0882fc7e3a6fe4942ede4b4c7f980b816d19e02e695c [444 wbond**20081218181024 Fixed fORMFile to not thrown an exception if a file can't be found ] hash: 0000000380-c98c777acb799343333c49a05f4415fb7927f8364c8679c94d0e5259f41dcbfc [445 wbond**20081223190646 Fixed fORMFile::replicate() to ensure that the temp directory exists and fixed fORMFile::set() to create the copy of the file in the temp directory instead of the main directory ] hash: 0000001142-3d64d75fde95a0b8a0fc8a67386a30f32c4afe23309838633a9179454e40378b [446 wbond**20081224015532 Changed fORMFile to include an extra check to ensure that the current file doesn't get deleted if it was an old value also ] hash: 0000000410-aca1e5f1138385bc80ffe2826ef862b42cba3957ca6db3c256c59998c6c77358 [447 wbond**20081224045800 Updated the change log for fORMFile ] hash: 0000000410-ddad1fdb304173476cc47214f11e10d224a2880eae321afe79d8445fe37a8fdb [448 wbond**20081224060602 Updated copyright notices and licenses to use Will instead of William, corrected a few dates ] hash: 0000023731-fb62e92f1dd8a55c80d98f0521dad8fae1f0df776f64ba04a298c67caa65582f [449 wbond**20081224203632 Fixed #117, loading related records in the same table through a one- to-many relationship no longer causes recursion ] hash: 0000000800-11ea9ec75bd625786747c406341d2809d5f26f2e758adb4017bc5c9e49031273 [450 wbond**20081229135833 Changed fActiveRecord to accept either a primary key scalar value, primary key array or unique key array for the constructor. Fixed the post::__construct() hook to be called once per record even when created from a result object. ] hash: 0000005310-ec861907b07f2149fe512654d7960f6afb2b69d9b9eeb49971aba633e031cc15 [451 wbond**20081229140410 Fixed logic errors with splitting static method callbacks for PHP 5.1 ] hash: 0000003087-b0896b1f48672b1e66cffeb0290d990c5670d28cb040a2594b443f9a540cae5c [452 wbond**20081230184414 Fixed fActiveRecord so that the post::__construct() hook is not triggered when a class is force-configured ] hash: 0000000973-9593a158e4ec2fb5a74b6c85b8aed2ac2be3509e36c434c3bfd999d2fdbd7c5e [453 wbond**20081231051319 Removed the adjustment amount check on fDate::adjust() and fTime::adjust() since it was incorrect sometimes ] hash: 0000000793-0fc5ac9f8f4715fce371efd92028651063951d924476dcce5995bb33a0bcb9d8 [454 wbond**20081231191507 Fixed a bug with fORMDatabase::parseSearchTerms() when the search terms contain only stop words ] hash: 0000000194-0a8c9ddfa9ab1157f8f6884d79991066ff0944c26b967ab2998279b02740e4ab [455 wbond**20090103224300 Fixed ticket #119, fSchema was not properly detecting multi-column unique keys ] hash: 0000000372-74b4cfbd8ca48c192c737bcaea878bd7b69d5018b9dbd7a4831884898fdcdf28 [456 wbond**20090104030012 Fixed ticket #118, fImage was silently failing to resize images when exec function was disabled ] hash: 0000000325-45e08c4de422b81b7b9e881f4d91b1bcb157a50e354eacc5f72307789174ceb1 [457 wbond**20090104031359 Updated change logs from the past 4 commits ] hash: 0000001987-d43b90af9c6e8568e8baf66d11840235f0c5e4ff47a729ceeb241b64355a4f02 [458 wbond**20090106025959 Fixed formatting for a couple of cross-API documentation links ] hash: 0000000376-0c7059c26bcbbd31281a073b42591124579ddb6f283ada72a17ce0cc1352511a [459 wbond**20090106031314 Removed the dependency of fUpload on fRequest ] hash: 0000001416-c9848bb39847d48289cde917beb51ac62c1a12bec450a9d75b105e20c2caf463 [460 wbond**20090106033413 Fixed fImage::cropToRatio() and fImage::resize() to always return the object even if nothing is to be done ] hash: 0000000471-a999ab8ac940654885f627305fcf0ebd31c73b023fab9c5c22381b56ee6ef19e [461 wbond**20090106033652 Updated fUpload::validate() so it properly handles upload max filesize specified in human-readable notation ] hash: 0000000485-351edd59208f80b214d6efea33be39cc314e29bd53bde4751333e9a312c26da3 [462 wbond**20090106034910 Removed some unnecessary error suppression operators from fUpload::move() ] hash: 0000000559-48d0be4722103e1fe11015beeed622c8491ca36fece122472a3fc4a121b00407 [463 wbond**20090106035432 Removed the dependency of fFile on fBuffer ] hash: 0000000315-fe980f9e3668c6a19781bc74d65aba39acad1e18f833db7d677ca66001f44ef8 [464 wbond**20090106040910 Fixed fFile::duplicate() so an exception is not thrown when no parameters are passed ] hash: 0000002636-fe2563d5e3a328b32969f893a8285b83264cd7c1a46db2257463fc7485c60aa9 [465 wbond**20090106041430 Changed fFile::__clone() and fFile::duplicate() to copy file permissions to the new file ] hash: 0000000478-55d3291e27053dc4a0b705d9a42b5b3cca2115c139f69cc88d22bebe71e97c75 [466 wbond**20090106044628 Added the $regex_filter parameter to fDirectory::scan() and fDirectory::scanRecursive(), fixed a bug in fDirectory::scanRecursive() ] hash: 0000002134-645070e67d3044ac58db11340ce0e551e24f071ead0f37f8aaa351db05f3a87a [467 wbond**20090106061237 Made fSession::open() public, fixed some consistency issues with setting session options through other fSession methods ] hash: 0000002982-1eac0ef08e614845fbb6dd6f87bf8ada2feee22531cd91825ecbbef71c74cb77 [468 wbond**20090108140257 Fixed ticket #120, fHTML::makeLinks() was double-linking some links in the form http://www.example.com ] hash: 0000006127-ce041cd3645031306f0df7501dfcc3385f5c7e47c6b3ab33d32acf65cd1841ff [469 wbond**20090108185335 Renamed unit_tests/ to tests/ since it contains both unit and integration tests ] hash: 0000000136-75b28a747b1a7ac951ba8252c4f964c24c1a160ea3b2ab22fb08d2fe08477595 [470 wbond**20090109142432 Fixed ticket #121, added the method fTemplating::inject() ] hash: 0000000885-c0661e00ae7acde92bb9e85d84a5d6ae9bfd9d21b71d0b0f824d21a82a6d2921 [471 wbond**20090110161135 Updated the fTemplating change log and copyright year ] hash: 0000000661-c1c00a47aaebee518741dbecca3509bb44c22d9044aa9d28c1f06f6e7804f5eb [472 wbond**20090111023035 Fixed bugs with fEmail including sending S/MIME encrypted messages having an extra incorrect header plus extra spacing and a bug there a notice would be thrown when an incorrect private key password was provided for S/MIME signing ] hash: 0000001554-e7679a575261a70f9480a54810fa2d8fd62546ba5038f36eb60623c17de3097d [473 wbond**20090111025926 Fixed a bug with using named IP ranges in fAuthorization::checkIP() ] hash: 0000000877-82c4f2a980474a14699efc28138c97801f9ae3778e3a705a3f7226eddd6ada25 [474 wbond**20090111200528 Fixed detection of the data type of MySQL timestamp columns and added dynamic default date/time value support for fSchema::getColumnInfo() ] hash: 0000002709-d196d06d412f6e7fb20667bf4c78ac521d950cb17fc592005b2dcae3882f3178 [475 wbond**20090112041046 Fixed the fEmail copyright date ] hash: 0000000333-8569f26c4051fe036ca76ef4b21ee078ecc145fefc8ae86414da7f769abacad5 [476 wbond**20090112042007 Added support for CURRENT_TIMESTAMP, CURRENT_DATE and CURRENT_TIME SQL keywords to fDate, fTime and fTimestamp as appropriate ] hash: 0000002297-b225651af1994303d940753785b58d42bd8a61ee56cfba2bec4136b1c27821dc [477 wbond**20090112045154 Fixed fActiveRecord::exists() to properly detect cases when an existing record has one or more NULL values in the primary key ] hash: 0000001261-3df76a3fa665ac29e2bcae3338dd41eca4a793bed0880e8c30e519e68b2437f8 [478 wbond**20090112054447 Changed fActiveRecord::__construct() to populate database default values when a non-existing record is instantiated ] hash: 0000000608-d49e8431f4f9e526eaa1ab2ec8478c7b83799de5a3aa93babb0481f24c4731a6 [479 wbond**20090112061551 Changed fMessaging::show() to accept more than one message name, or * for all messages ] hash: 0000002637-2928cc47ddf8f7ff63f68afba27c8cd7ae3830f4d3d5ea564c476e1bdfe9623d [480 wbond**20090114172859 Fixed a bug with retrieving fActiveRecord methods registered for all classes in fORM ] hash: 0000000756-8fb06e2a2c202e17ddf7c6c6fa7fb68c92d482835e0269fd7df36538034918a1 [481 wbond**20090114173920 Fixed a documentation bug in fActiveRecord ] hash: 0000000221-554197b86b3ea6dc1810e3c485289a66e4282bdd232d834d93459675f2bf6c10 [482 wbond**20090114174102 Fixed a bug with missing content in the fValidationException thrown by fEmail::validate() ] hash: 0000000439-e5255ff4b62bc0ce23f4b3695437923db379cc3629e37104d6c2281fe5ecd55d [483 wbond**20090114174955 Added a few error suppression operators back to fDatabase so that developers don't get errors and exceptions when a SQL query fails ] hash: 0000003459-e8f2f896b77c9f0b07ff0e11855f14f08eb60767c121236adf3d25aed796f3d1 [484 wbond**20090118040140 Updated the test runner script and README file ] hash: 0000001411-326ed1e595e9116f475c633ef076d64c84c224c718010687fca3a7097f055849 [485 wbond**20090118040358 Added support to fSchema for MySQL binary data types, numeric data type options unsigned and zerofill, and per-column character set definitions ] hash: 0000001067-a90bce7ec9af1637b69dacd88708999f45440b9edff89f638e33105118f3e8ed [486 wbond**20090119161137 fSchema::setColumnInfo(): fixed a bug with not grabbing the real database schema first, made general improvements ] hash: 0000003061-75b105d15817081ec02e7d3c9a6ed8ac18a3ecec836dd4b894f435037f10403d [487 wbond**20090119162148 Fixed a bug in fSchema with detecting MySQL columns that accept `NULL` ] hash: 0000000881-41de52ae934cab06454c7f1dc7ba0dcbc49d9337f97f8dd796cbd21d18592a2c [488 wbond**20090121052832 Refactored the test runner to handle errors properly for all different combinations of test methods and test methods with data providers, added comments explaining the general steps ] hash: 0000005229-cfa1ef5bcf357a3460ba087d2082226342babe783892e74185f0ec0aace13d83 [489 wbond**20090121055001 A few fixes to the test runner for handling consecutive data-provided test methods ] hash: 0000000658-06d2eb9ff31e01484a8f6096369efefc4152493b331d6426113ec3b7f8e65a94 [490 wbond**20090121055455 Added some tests for fCore ] hash: 0000004471-daa358b08ede6429316d869d4fa33fc9b5200c24252d0d8f0da084249e589d89 [491 wbond**20090121061130 Updated the test init script to set the document root ] hash: 0000000231-a53d17c60209c25de22c7a1094ac8ea5fd127071bd69ed64b429b9d0b54b4e1e [492 wbond**20090122020859 Updated fDate, fTime and fTimestamp to more robustly handle the difference in return values between PHP 5.0 and 5.1 ] hash: 0000001330-2f90c556a2df7550df7cf8f4e4d3c25e5026f6b2b72f29428ab8a4d7b3d01229 [493 wbond**20090122024944 Added fFilesystem::createObject() and updated fDirectory, fUpload and fORMFile to use it - updated fImage to throw exceptions in the constructor in the same way fFile does ] hash: 0000004632-e0f775f954f3875365d783463d1a48fe92fe167630e89b5d30ade6047cb41301 [494 wbond**20090122031916 Changed fORMFile::set() to accept objects and reject directories ] hash: 0000000828-72371f3f551b746d5f1eecd686e87c629e26ff14b5b898f9fdb228b5b9d65cf9 [495 wbond**20090123181507 Implemented ticket #124: added fValidation::addDateFields() and fValidation::addURLFields() ] hash: 0000004647-a4458db41a1592fafca80549d7028ebcb5a2e053468f7d8a1391485733afdcd4 [496 wbond**20090123182018 Added unit tests for fValidation and fixed some issues with the test runner ] hash: 0000019557-c5079038e607df179d7c272d3e0eb79a5ced1af267c3edf741798bc4385ebe81 [497 wbond**20090126034306 Fixed a bug where some words would lose capitalization with fGrammar::pluralize() and fGrammar::singularize() ] hash: 0000001585-aa45a243c56e2d2476708189c75e95c63e525406f5405f3eedfb1c4f0f68329f [498 wbond**20090126133506 BackwardsCompatibilityBreak - changed fCryptography::symmetricKeyEncrypt() to not encrypt the IV since we are using HMAC on it ] hash: 0000002804-2282fc92c5e98635efdab8bf8f4fdd96e3e625bf7a5ab36620eaa14183e88d92 [499 wbond**20090126133952 BackwardsCompatibilityBreak - renamed fORM::addCustomTableClassMapping() to fORM::addCustomClassTableMapping() and swapped the parameters ] hash: 0000002878-6cf903f1ab44a8e96e1b371b2eb79639745b9b5684ac1090de42599a95e94e91 [500 wbond**20090126134634 Added tests for recent changes to fORM and fCryptography ] hash: 0000005163-6a77dc9b333af415f39d196eb6b508564544338151634ff971c5433c0d8afb1c [501 wbond**20090127045406 Changed @ error suppression operators to `error_reporting()` calls ] hash: 0000006045-142b2fa99bf7190ef1df3352c240cb9c5367a92264d9788a5befde9882dbdb47 [502 wbond**20090128135146 Fixed a bug with detecting MySQL timestamp columns in fSchema ] hash: 0000000904-3818a5be56b40d7bfb7dbe1382cad368bff0d21b268527537facdb247651e8f6 [503 wbond**20090201203707 Fixed #132 - fSchema: mapped the MySQL data type `'set'` to `'varchar'`, however valid values are not implemented yet ] hash: 0000000764-b7e1f72819b31fc1661eadd2b6ea696aabe12341ced92cc20213dd46aaf0ff2b [504 wbond**20090205135244 Fixed ticket #133, fUTF8::explode() was malfunctioning when using zero-length delimiters on strings with newline characters ] hash: 0000002003-6e96424d1b37cb70b8d04aac9e59163927518cd6254a28b887e0df71c8e57522 [505 wbond**20090205181433 Fixed ticket #134, fSession::clear() now properly handles situations when the `$key` is `NULL` ] hash: 0000000379-6cfcf3c8443331f4adccaf526d0eec3f2a9e9c9d504ecb0a5473d4f2868c4020 [506 wbond**20090206141330 Fixed ticket #135, fUTF8::rpos() had a parameter that was named incorrectly ] hash: 0000001676-c29009de445106b5c378d2f17189c29189b72a36b4351a0cae9dc4a83a394721 [507 wbond**20090206190515 Updated fText to handle components passed as an array, updated fException to automatically escape non-formatting % signs ] hash: 0000007891-22d6e12e1011642c452783b6b20cc580c72f4dcaa006aa2366dc7e46fac2bbc3 [508 wbond**20090208031159 Implemented ticket #136, added fCore::registerDebugCallback() ] hash: 0000001968-aceb6eba1d0e750b7633686fbb916afd23fc1cb01c80e340949f206fb43d25cf [509 wbond**20090209192049 Fixed ticket #137, fEmail::validate() no longer contains a typo in the recipient error message ] hash: 0000000434-c33ff94f7c136c391275438f1e86dd517ef08c44febb218f71c7fc2498559ac0 [510 wbond**20090212175900 Fixed a bug with fDatabase where executing transaction queries would fail when using the mysqli extension ] hash: 0000000492-87e88b1a9b37919971b615458f8d07a4d418fbc6f68dddd27f36d2f6cddc7082 [511 wbond**20090215201033 Fixed ticket #140, fORMValidation::checkUniqueConstraints() now works when checking case-insensitive columns ] hash: 0000001204-807cd2a7f780781ee0b579e29cf2670d2a6400409da8855efb1131f67cc58147 [512 wbond**20090215220324 Changed fCore::handleError() to display the error type as the header ] hash: 0000001556-420bc33e16f74b914d7ef0b1f9059d770d86dcdecb0e5588ca390676b622df1a [513 wbond**20090216205659 Fixed ticket #142, fSchema now detects unsigned and zerofill MySQL data types that do not have a parenthetical part ] hash: 0000001028-02245a2bd3d3e28c2a41e2499751e3f1c65336baa653a9d9b687544655dc8d0e [514 wbond**20090217040719 BackwardsCompatibilityBreak - fCore::getOS() and fCore::getPHPVersion() were removed and replaced with fCore::checkOS() and fCore::checkVersion() ] hash: 0000013139-b968f5ab500077b75d824489e182e9f7a452563c8e402fb6437c08090fcb1c38 [515 wbond**20090221203203 Fixed a bug where fSQLTranslation was throwing a notice with SQLite foreign key constraints having no `ON` clauses ] hash: 0000000950-7995b5dd6090d2bca876547b9fefa44fa5f0595bd2f410c38a290ee791d69ae9 [516 wbond**20090224024408 Fixed an outdated fCore method call in fTime ] hash: 0000001635-f366da998c463acd7c997410a80b9985eb580fe7435b7cc1d0d7cb207aaf2cde [517 wbond**20090224025650 Added the ability to pass a class instance to fORM::addCustomClassTableMapping() ] hash: 0000000523-78db81632d44d3b3054fda1dcbb35fac47d9ad3686d72bc8bd628e8de89b1258 [518 wbond**20090225024923 Added fSchema::getDatabases() ] hash: 0000001510-73bb56982a47dbb3255a93674222d763465a45833c43d1cf4c4ee46650b57571 [519 wbond**20090226040059 Fixed ticket #143, fSchema now handles MySQL column definitions with comments ] hash: 0000003376-24d7a058679d0a1aca16dead79f211c318016e65c3bb8b14a3582b7dfd534982 [520 wbond**20090227190105 fSchema now properly detects multi-column primary keys for MySQL ] hash: 0000000512-3d7a4233336371c5ceec823ba45fe69084d1b2e9ffd2a5b5d04acec9f593362b [521 wbond**20090302182919 Fixed a bug with fORMOrdering::inspect(), 'max_ordering_value' was being returned as 'max_ordering_index' ] hash: 0000001193-4811fef719252f5e67ef704e69f5b97e0a29ae89f79a9030da73f3c3cb01d926 [522 wbond**20090303135013 Fixed a bug in fSchema with detecting PostgreSQL columns having both a CHECK constraint and a UNIQUE constraint ] hash: 0000000543-26acdddc8f9f2717d514f1ed97d51db4829bf82e82c9c1a6bf1b6f0fd14cdd9f [523 wbond**20090303135428 fORMFile::upload() and fORMFile::set() now set the `$values` entry to `NULL` for filenames that are empty ] hash: 0000003113-3e93a46b435a75e3acdf978ad913e73f70bdadc0224be9758b1bf84002bcf53b [524 wbond**20090306180021 BackwardsCompatibilityBreak - Removed fDate::getSecondsDifference(), fTime::getSecondsDifference(), fTimestamp::getSecondsDifference(), fTimestamp::getSeconds(). Added fDate::eq(), fDate::gt(), fDate::gte(), fDate::lt(), fDate::lte(), fTime::eq(), fTime::gt(), fTime::gte(), fTime::lt(), fTime::lte(), fTimestamp::eq(), fTimestamp::gt(), fTimestamp::gte(), fTimestamp::lt(), fTimestamp::lte(). ] hash: 0000009444-0e1a63922a49cb5999d0d97713fc2e95f2a041c97c801395f1836121df6caf09 [525 wbond**20090306182429 BackwardsCompatibilityBreak - Changed the second parameter of fFile::output() from `$ignore_output_buffer` to `$filename` ] hash: 0000001870-b6b614841a760ca46873e359a5456910f9440ba49e64fd125674df95db6ee946 [526 wbond**20090308033622 Fixed ticket #149, fCore no longer throws a notice during the error/exception destination check when a log file is specified ] hash: 0000000548-199cc19406c80aed3b9348e1aa4f30710815f972681c4372cfa4e4a739a5e5da [527 wbond**20090311184243 Fixed ticket #152, fFile::rename() should no longer error when overwriting existing files on Windows ] hash: 0000000654-2907f3096ad68be525e777d17201eeac7195a31114a1399be668df1567ccb43f [528 wbond**20090311184903 Fixed ticket #151, fCore no longer throws an error while getting the server name for error messages when running on the command line ] hash: 0000000511-2d46f3fb43cccb05b356e9b7d3eacef87d1dc9531c672ce4be929a995d167646 [529 wbond**20090318165417 Fixed a bug in fORMOrdering with setting a new record to anywhere but the end of a set ] hash: 0000000522-8f71e7a1068c27ff1ad28b9c6cbac91b1486ba919f5be730b88d9f574ef6866f [530 wbond**20090318165747 Fixed a bug in fCRUD::redirectWithLoadedValues() preventing loaded search values from being included in redirects ] hash: 0000001308-874aae0ca06656140cd571afab15632c84e9dcda22ebbee15447203a63fd678e [531 wbond**20090318170108 Changed fImage::processWithGD() to explicitly free the image resource ] hash: 0000000342-72fdc1ff40654624ad3dd951bbbda8e05b85d410a29e3dffa948bfb3895ec6d1 [532 wbond**20090318175126 Fixed a bug with fImage not saving changes to files ending in .jpeg when using GD ] hash: 0000002237-815ac13217aeb39380cbf43473ed8a8a794f384a4931b8574b6e96288906d746 [533 wbond**20090322203955 Fixed a bug with fFile detecting the mime type of some MP3s ] hash: 0000000381-e8e86d4609df79cbdd98180666408206cd3eaaece2618dd88143cd33aa458b06 [534 wbond**20090322204238 Fixed fURL::makeFriendly() so that _ doesn't appear at the beginning of URLs ] hash: 0000000836-69d5124116b8773af496811b72b66bc86cc6cbb83df272fcaf712917a481f90e [535 wbond**20090322205651 fActiveRecord::__wakeup() no longer registers the record as the definitive copy in the identity map, fixing issues storing records in the session ] hash: 0000003184-030d191a800307ff6d07e293c6a2c8e3d1eb517e9d2a9cf6082a8d6aa7821f74 [536 wbond**20090322205959 Fixed ticket #156, fActiveRecord::encode() no longer adds commas to float values ] hash: 0000000441-5e3b1c7c3c7d718a8f25eac82cc6c7beb5b23858af50d4319f203b3bf87fb1fa [537 wbond**20090322211719 Fixed ticket #157, fActiveRecord::set() now removes commas from integers and floats to prevent validation issues ] hash: 0000000784-cc5472db3e766951d9b8e373e3611f15c8afe98466b57c8b7370ec48a40d3868 [538 wbond**20090323174709 Added support for MPEG-2 MP3s to fFile ] hash: 0000000647-894c83532ebc68f0a69b1399f67087d858f33389b7498a15ebef2d5b36b75a1e [539 wbond**20090323175537 Added the ability to do method chaining for fActiveRecord and fRecordSet methods that don't return anything ] hash: 0000002001-ca876a54955a3ff041b23f8fa0c6aa578b977fed150511bf750504350375603b [540 wbond**20090323180029 Finished ticket #159, added support for using the current filename as the attachment filename ] hash: 0000000826-51369199cdadce1506e7804b8ab6bd450ae75f0c697ee5e5177394e477210f74 [541 wbond**20090324044129 Fixed a bug with calling fMoney::format() when a format callback is set, fixed `NULL` `$element` handling in fMoney::getCurrencyInfo() ] hash: 0000001095-396e77e5b435660c055785c81befa8646f4e6aea193a4a4f56f5c745654c9512 [542 wbond**20090328025411 Fixed ticket #160, fRecordSet::__call() was changed to prevent exceptions coming from fGrammar when an unknown method is called ] hash: 0000000856-fdeeab2a4c366ed1a124e3086a7449a53598ee5f218df04e6cb68a3ba6913914 [543 wbond**20090328030858 fRecordSet::build() will now refrain from wrapping related table columns in the aggregate function max() when contained in the $order_bys array if the columns are inside of a cast() call or preceded by a CASE or WHEN keyword ] hash: 0000001555-b7c744d859c3ffcfe3abcc5a19b87f0e8783747e9d14479f15a3382ac44f6568 [544 wbond**20090328031301 Updates to fURL::makeFriendly() to prevent _-_ and multiple sequential _s from appearing in URLs ] hash: 0000000440-30f9c59b4fca2b1432af91c49594b4ff6bad8d25aabd71b02cb635cc8ab36735 [545 wbond**20090328034429 Fixed ticket #164, fEmail was not properly encoding validation messages containing < and > ] hash: 0000001032-116e4c315c2cd5a4b0e482d029db1cebc2b064321eb25063cfa91edaf5ee036f [546 wbond**20090329020222 Updated fSchema to support MySQL column definitions containing the COLLATE keyword ] hash: 0000001066-780c0f8530dad20508f5ef80657f90d7e14a272452ea71d4ab6b084141a693df [547 wbond**20090329021134 Updated fSchema to support the three different types of identifier quoting in SQLite ] hash: 0000001492-244a5a6fc296e4b840bf9d7dd6907fddd12f9257d12a895482d1bf9b6f5228c2 [548 wbond**20090504013008 Fixed tickets #189 and #190, fActiveRecord now properly handles manually set values for auto-incrementing primary key columns ] hash: 0000001061-e01a955caece133fb8e857d7238239fc01cf81501a0a9b44f7611735d5588c04 [549 wbond**20090504013546 Fixed ticket #186, fURL::getDomain() now includes the web server port number if non-standard ] hash: 0000000994-92af061ec117fcb75b8d958b8d4759b3e32778effb668bad097af74fd143a6f2 [550 wbond**20090504020704 Fixed tickets #176 and #180, fRecordSet::build() now allows NULL in $where_conditions and $order_bys parameters, fRecordSet::buildFromSQL() now errors out if SQL statement is not in the form SELECT * FROM table ] hash: 0000002552-d051300604b9a631376628016f7ee425ac6578e044ca3886359433b6fdda8284 [551 wbond**20090504021227 Fixed ticket #179, added fFile::__sleep() and fFile::__wakeup() methods ] hash: 0000001221-4dd24b82a49805bc26612c24a725ee945ef7aaa45b09e3a891866c946c636327 [552 wbond**20090504024434 Fixed ticket #174, fORMPopulate::populateRecords(), and thus `fActiveRecord::populate{RelatedRecords}()`, now allows input arrays to have arbitrary keys instead of sequential ones from 0 ] hash: 0000001298-6b39f601858e70bf6c46990634b1d125ab948d1c0c1ebeb9a4513e12e2044ba8 [553 wbond**20090504052336 Fixed ticket #163, fSession now works with existing sessions ] hash: 0000002147-0214b6eecd3524bb0651be84dfc332bb68e73a250264bb7324ef0ad1583cfdd9 [554 wbond**20090504053541 Fixed ticket #192, added documentation about session cache limiter warnings ] hash: 0000000876-02f33618eee55dee5e846ff157a9d90508c235770b116248687ee99b33926738 [555 wbond**20090504054828 fException::__construct() now checks the `$code` parameter to ensure it is numeric ] hash: 0000000724-fde01bc11437fc657cb6af8d0032018485f0dbcea56f1656cec49c33d1759846 [556 wbond**20090504055116 fRecordSet::build() can now accept an array of values for one of the values in an OR-condition ] hash: 0000005245-e679ec6c7eff21313139434151c4986a22c3c49b0505649ff3992637d9cb5f3d [557 wbond**20090504055303 Fixed a bug in fORMValidation::checkOnlyOneRule() where no values would not be flagged as an error ] hash: 0000000867-848aa180d1ac6827a728dd4aebb2928e46508fbb1d9282841ab67fc9ff1b4966 [558 wbond**20090504055534 fCore::backtrace() now properly replaces the document root with {doc_root} on Windows ] hash: 0000001296-8175adf77199ce94579e6fa395e6ee2828b65e5bbe0c6e05122efcab3cd559bf [559 wbond**20090504065748 Changed fFile::__sleep() to not reset the iterator since it can cause side-effects ] hash: 0000000525-39b3873520452ec0f48f99c05de5c892f598736e264d9705e4fe5ca0279c77bb [560 wbond**20090504070051 Updated fJSON to be consistent with PHP 5.2.9+ when encoding and decoding invalid data ] hash: 0000002580-0ceb3e6b3b4b0adb6521433b7b2442476c4669e6f3931f92769edb7a44cad42a [561 wbond**20090504071403 Fixed ticket #168, fFile::rename() will now rename the file in its current directory if the new filename has no directory separator ] hash: 0000000863-9d8e2a982569d291fddcc721ceacc4937772a4d425bd0342d3bf6d72e3145504 [562 wbond**20090505175503 BackwardsCompatibilityBreak - removed fORMSchema::enableSmartCaching(), fORM::enableSchemaCaching() now provides equivalent functionality. fSchema::setCacheFile() changed to fSchema::enableCaching() and now requires an fCache object. fSchema::flushInfo() renamed to fSchema::clearCache(). Fixed tickets #139, #144, #173 and #185. Added Oracle support and the fCache class. Added a whole slew of new database tests. ] hash: 0000337162-32d78612723e8a26c1b8328657463421197421d08065cdf2f4441622354a61c6 [563 wbond**20090507010229 Fixed a bug in fJSON::decode() where the pure PHP version would only return one key per JSON object when returning associative arrays ] hash: 0000003833-5102c8851850fb274635fe872f54981bf72506ee0b35551458cef1a1e9eb0d73 [564 wbond**20090507011812 Fixed an incorrect variable reference in fActiveRecord::store() ] hash: 0000000547-2e6a203e0c250fefceda13a562e61f08f927c0979b94cf897dc2e5272c78015b [565 wbond**20090507012202 Added the missing fSQLTranslation::__get() method that was causing errors in fORM::enableSchemaCaching() ] hash: 0000000656-afb593a287ca1be26621789c82c4d8671cec272b03960ce88f6085b01889f13c [566 wbond**20090508130302 BackwardsCompatibilityBreak - 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() ] hash: 0000018331-939a33f99169964b35506389b3c741cb0b9e1528e71e53721760698dd0ae3038 [567 wbond**20090508130744 BackwardsCompatibilityBreak - the first parameter of fSession::clear() was removed, fSession::delete() should now be used instead ] hash: 0000003415-339314affe3c33545e603668d72ecab8905594df8065c171a419ec4e9d749fb2 [568 wbond**20090510024833 Fixed ticket #187 - fDatabase::escape() now properly handles floats that start with a . ] hash: 0000000495-d517ca9d8f7cd0530b803da45431f2800d1fe4f793d3510c941ca47f14ab4f91 [569 wbond**20090510030203 Fixed ticket #147 - fEmail now encodes UTF-8 recipient names, also fixed a small bug with encoded word handling of spaces ] hash: 0000001231-a8f9e0abb9efc1be7cd60626f2d89898978ce6a3e865ed9ab6c50a7bb604ecea [570 wbond**20090510030621 Fixed ticket #200 - fHTML::prepare() now properly handles multi-line HTML comments ] hash: 0000000598-59db1144d34462170ffa8457a84121eb285ea9709a34eb437bd2e3b05989977c [571 wbond**20090510030836 Fixed ticket #199 - fTime API documentation typo fixed ] hash: 0000000359-a65cd2eca61a7799c60e51d0ec00b7a649ad58c20598450d6dc52abd516e50aa [572 wbond**20090512172513 Fixed ticket #203 - fORMDatabase::creatingWhereClause() was improperly escaping a single NULL value ] hash: 0000000508-978b4f8d3b9ed978394a873251f5e1c6e05fb8ed20b244658ca9596795c7f2cb [573 wbond**20090515202717 Fixed ticket #204 - fSchema::clearCache() now properly clears the list of tables and databases ] hash: 0000000548-2fc311b23cca3b85fc8cfcd85b79ff7d22349f9c52a99a249d4b571c8b1f855a [574 wbond**20090518183053 Fixed ticket #209 - fSchema did not recognize MySQL mediumint columns ] hash: 0000000341-595d4aa3732ea0a6ae3b692f4473c654240b58febd78548afe70d01bf39690c1 [575 wbond**20090518191903 Fixed ticket #208 - Added method chaining support to fRecordSet::tossIfEmpty() ] hash: 0000001525-2daf96b3bfc9768aa45069325af7597f187ef03cdf558362f7cd3e9c2ee686ad [576 wbond**20090520175006 Fixed ticket #206 - fActiveRecord::replicate() now functions properly with recursive relationships, fixed bugs in fActiveRecord::__clone() ] hash: 0000003809-72bd927d140939b398a3eab032ac0913e7ef9aff9b616dab90001fb28ce4dc0c [577 wbond**20090521123352 Updated documentation to indicate when methods will throw the exception in an @throws tag, changed some magic methods (__ methods) to @internal ] hash: 0000015781-1176f5fc6b42b8fe8f2570143499975a3c59c5df9c263c28602388a8b31177ef [578 wbond**20090522120917 Fixed a small documentation glitch ] hash: 0000000119-76586f28d5263314b20fc8900c11af006f062a40a3843492847c20edc9c93490 [579 wbond**20090526124845 Fixed ticket #205 - fSQLTranslation now only translates data types in CREATE TABLE statements ] hash: 0000019415-8a216ab32e9090137151fe19c52d98cceb17173bbc1d85ceb5c677b57d7f0d7e [580 wbond**20090527032533 Fixed ticket #216 - fORMFile now properly re-sets columns with inheritance when the column being inherited from is set via an `existing-` hidden input ] hash: 0000006312-22b700122a1e4995bd1a3fae6749350c60a38802d4d528278d24c0d43801dd69 [581 wbond**20090527041618 Fixed ticket #150 - added the method fImage::crop() ] hash: 0000002895-c8a0d11a5f2a6d6c962879ac71a874a9a107a3244c217619dfd2c804c7ac3636 [582 wbond**20090527042839 Fixed ticket #154 - added the methods fRequest::encode() and fRequest::prepare() ] hash: 0000001863-9f380ed0cf95b96ee3ba9825161a17e32cc00f0a671fee8c8cda734ee28e22fc [583 wbond**20090527180611 Fixed a bug in fImage::saveChanges() so that the method can be called after an fImage object is unserialized ] hash: 0000000441-cfd4090b6df30591efaa8fd9b60c79873af8b605afbd7a84fb6e109065298ccc [584 wbond**20090530035314 Finished ticket #155 - Added the method fEmail::clearRecipients() ] hash: 0000000521-cb2e12feb09ea1d2f4748f499c90cdcff85cd42b744cc2c8c298d420c1ffc53c [585 wbond**20090601042823 Fixed ticket #167 - `fActiveRecord::associate{RelatedClass}()` methods can now accept an array or records or primary keys instead of only an fRecordSet. Added some missing information to the output of fActiveRecord::reflect(). ] hash: 0000007746-0b8b1dd4445040d9e4d0a5f58cc084ea61b14f254509adee35876dfeb96d5148 [586 wbond**20090601195024 Changed fCore::enableErrorHandling() and fCore::enableExceptionHandling() to accept multiple email addresses separated by commas and to accept a wider range of valid email addresses ] hash: 0000002176-4e73f7e9c3e20afb4421f6a8ef00422320d65c94b93d49b54f45b04a61a61935 [587 wbond**20090602040607 Added fTimestamp::registerUnformatCallback() to allow for locale- specific date/time/timestamp parsing. The rest of Flourish was updated to use fDate/fTime/fTimestamp instead of strtotime() so that localization affects all date/time/timestamp actions. ] hash: 0000009559-265923953c70754467de03ec96c7d64a5a759691a403f3227f79e9bdc7004075 [588 wbond**20090602042630 Fixed ticket #175 - fHTML::showChecked() now requires strict equality if one of the parameters is `NULL` ] hash: 0000001096-6c7a0d64a1cdbf31c2a69c3ad3ea3d782c888e289f26d63f2b6036b4939d5cd4 [589 wbond**20090602045310 Fixed fException::splitMessage() so that the original message is returned if no list items are found, added fException::reorderMessage() ] hash: 0000003021-bf2adf7c275ba40da468a93f2f8e1d63a78f5eae2d8aca03385b63dae7bebf81 [590 wbond**20090602052301 Fixed ticket #222 - fRequest::filter() can now be called multiple times for multi-level filtering ] hash: 0000001775-7d37332023afca12c0f4e3d51d18482b537141d9f1c631551b44c8f4baaf9253 [591 wbond**20090602065622 BackwardsCompatibilityBreak - Removed fRecordSet::flagAssociate() and fRecordSet::isFlaggedForAssociation(), the `$associate` parameter is no longer passed to callbacks registered via fORM::registerRecordSetMethod() ] hash: 0000016712-6722cc0c2868ff7081a403a03ce12e3326698fed2e647409bd103d01a7985157 [592 wbond**20090602071100 Updated fORMJSON to remove the `$associate` parameter from the record set method callback ] hash: 0000001095-40f307c6ae3cddbd0010241e04166953b4c88b6ce08dc08b830772335d5d438a [593 wbond**20090602182858 Added `fActiveRecord::list{RelatedRecords}()` methods, added fORMRelated::getPrimaryKeys() and fORMRelated::setPrimaryKeys(), renamed fORMRelated::setRecords() to fORMRelated::setRecordSet() and fORMRelated::tallyRecords() to fORMRelated::setCount() ] hash: 0000018377-7dae3bf42aa1caef6eaf5d13ac1e1cc2fc21c32c59f7bda3b56767bb03af6cc9 [594 wbond**20090602184632 Updated fRecordSet::merge() to accept arrays of fActiveRecords or a single fActiveRecord in addition to an fRecordSet ] hash: 0000002528-e9bf4461fd87afd68641fdb462a303e6a9fd41659485b99d874260c619f55bba [595 wbond**20090603023532 Changed fFilesystem::formatFilesize() to use proper uppercase letters instead of lowercase ] hash: 0000000667-2c31e8a2f7074d7aa6d8f440f59ff7c5f34c707a6390927a2d78213bea06686e [596 wbond**20090603031435 Added support for `'*'` and arrays of names to fMessaging::check() ] hash: 0000001232-f4d6241a4b958324cd1311c299ee7dbf8c12b108cad1204134fbfc5fe819add8 [597 wbond**20090604181731 Fixed ticket #229 - fSchema::setKeysOverride() was throwing notices and not working properly ] hash: 0000000472-5ea2c1a0ae0c358f05417cf534247fffad1e9d92660d41ba4ba18218d9f17c33 [598 wbond**20090605042409 Added fValidationException::setFieldFormat() and fValidationException::formatField() for custom field formatting in validation messages - updated all of Flourish to use the new methods ] hash: 0000015523-a196196dda3c4cff4d64662eabf077fcaeaf544b4e247686adbc34879d4cbfa2 [599 wbond**20090609175728 Fixed fCryptography to gracefully handle CAPICOM.Utilities.1 failures on recent versions of PHP 5.2 for Windows ] hash: 0000001363-3e2bb1f4f06d24e22b5cf833b5dd7869f4fb357ec135ad584702c030dd33076e [600 wbond**20090612051403 Fixed escaping string replacement values for `preg_replace()` calls. Will resolve bugs where a \ or $ followed by 1 or 2 digits would disappear from strings being processed. ] hash: 0000006046-9162a5447ed43cb1b734658661988dbaec48f1fd4b7efbd8c4f934be33aa8793 [601 wbond**20090612052818 Fixed ticket #232 - fEmail now includes the MIME header for all emails ] hash: 0000000453-bc9e976527103ba87bed01208ce627fe891251623d4c76f26f914cb8c5e06cb1 [602 wbond**20090614211822 Updated fORMOrdering to automatically correct ordering values that are too high ] hash: 0000001251-b852459ed70554eb883e0439aadf869b7e846213a8621805f5e39392dbd6ac85 [603 wbond**20090616025543 Performance improvements, especially related to the ORM ] hash: 0000042747-fc51635f2250fae70789000e2ab992ef3a07ff2063a78bce65833fa0e3b8e041 [604 wbond**20090617171640 Implemented ticket #236 - Added one-to-many support to fORMRelated::associateRecords() ] hash: 0000000683-0f2f632e46f722921963c5daee30efe34a0fcdc059691c8228c6b8bb08fcfd18 [605 wbond**20090617171946 Fixed ticket #239 - fORMValidation no longer creates multiple error messages for multi-column UNIQUE keys ] hash: 0000007727-b00c20e5928b56a441a80e0729c16c108e114c8e6e86b1d4e83606cd16edcfa9 [606 wbond**20090617172602 Fixed ticket #237 - fORMOrdering::validate() was not properly removing related, but invalid, validation messages for ordering columns ] hash: 0000000710-3128b40f21ea6820bb6e3e47ddbc3280312646ea359080c80133b133d7ba3110 [607 wbond**20090618171843 Updated fORMDatabase::createWhereClause(), and thus fRecordSet::build(), to properly handle NULLs in arrays of values for = and != comparisons ] hash: 0000003333-e8ae5229ad77e7841754276ab65572f87885cf244d48a9c3b61078afde1a4880 [608 wbond**20090618172758 Fixed bugs with SQL Server text not being converted to UTF-8 if it contained carriage returns ] hash: 0000001208-48259355b6ffd9bc7c3773169f3973c815530540827455100a23d0037e91c3fc [609 wbond**20090618174002 Fixed ticket #240 - fEmail now properly sends emails with both an HTML and a plaintext body ] hash: 0000003089-947893712a1fee77a663855d4229035e6dd00df478a43197941933d122dcbd9a [610 wbond**20090618175747 Fixed ticket #233 - Added UUID data type support to fSchema for PostgreSQL ] hash: 0000000586-c4aa98b242a8a1bdc12877bd3fc4528bd9c81e91ea3eeff3be661f03943c241d [611 wbond**20090618181031 Fixed a bug in fORM related to creating fDate, fTime and fTimestamp objects ] hash: 0000002828-80ccde89009865af45b498f55a74373c0322aa5b3a4d7acb38d7c6de2206b67c [612 wbond**20090619171008 Fixed ticket #241 - added support for column concatenation in fRecordSet::build() $where_conditions ] hash: 0000002985-c4702a936b4f119a66eae3f1ab26c40ca6b963989895678feb3a1dd36bd5c873 [613 wbond**20090619171905 Updated fActiveRecord encode methods to support a `TRUE` parameter for char, text and varchar columns to perform fHTML::convertNewLines() and fHTML::makeLinks() ] hash: 0000001520-314cf1d250b41ac300f3c14c6f31fd010999218cf5ed0c162e24c701f41b1027 [614 wbond**20090623174515 Fixed ticket #243 - fORMRelated::store() was ignoring associations with no related records ] hash: 0000000468-4b8f34262156ecaa59537f23f72488c7264cc4f920b1575c047fcaa94f2a3278 [615 wbond**20090625034457 Fixed ticket #165 - Added fResult::asObjects() and fUnbufferedResult::asObjects() to allow for object representation of rows in addition to arrays ] hash: 0000001774-47314ad31d4549f70309958bf8a253bea2f63ebf914eed9d07d9ac39c09ff58b [616 wbond**20090626105353 Fixed some bugs with validating related records ] hash: 0000009396-ff75fbfb157df5e22601ce7c4cec8a03ff41636ce805fb8b30a9b2c664d0a8f0 [617 wbond**20090626110535 Fixed the exception error message in fFile::output() to be accurate ] hash: 0000000910-9809d12f6568041c46cbf1043163a386b684527283d09e76de9966623ec04078 [618 wbond**20090627022716 Changed fException::__construct() to not require a message, like the Exception class, and to allow for non-integer codes ] hash: 0000001569-f3a45cc6900862654ecfc08cf00ac84d4273453095d8e2ee19059c6ce263a0cd [619 wbond**20090627023528 Fixed ticket #247 - fRecordSet::build() will no longer fall back to ordering by primary keys, when no order bys are specified, if no primary key has been set for the table ] hash: 0000000605-6cb17483951140f53ba437bc965970e34e9bd1392768b7138beb6cc8dad2ae77 [620 wbond**20090629040857 Fixed ticket #224 - Added fCore::disableContext() to remove context dumps from exception/error handling. Also tweaked presentation of exceptions and errors when using fCore as the handler. ] hash: 0000004016-7d281b6d21a45824bea6b4ebb433f2a6e980b545e5baa93959f2fff4a8859abd [621 wbond**20090629041150 Added a missing line of backtrace to fException::formatTrace() ] hash: 0000000371-e2ac8107221747e8dd0858057daa7fe88cb003d0dc9afcf0823318701c4b84c5 [622 wbond**20090629041432 Fixed fCore::expose() to properly display when output includes non- UTF-8 binary data ] hash: 0000002833-ec6872d676521439ea1881b4af28caa6dbe3b8a261eacd5b7253a358abd90ab7 [623 wbond**20090630172602 Updated fActiveRecord::validate() to remove duplicate validation messages ] hash: 0000000398-3094964549e0bd8388eced24f640291d96f555a410efb649696a89b952fce35a [624 wbond**20090630172848 Fixed tickets #171 and #235 - Changed fORMValidation::addConditionalValidationRule() to accept an array of columns as the main column ] hash: 0000004790-aa31ee6f712003b94a82272db4879a08f97b541e5a0839e08d28699e3d85dca0 [625 wbond**20090701031531 fResult::fetchAllRows() no longer throws an exception when no rows are returned ] hash: 0000000350-241d1f28d57ca56fb89f3724c079856ae9c96f6df1a378a299bdbe7b040ca86c [626 wbond**20090701033100 Fixed ticket #245 - fORMValidation::setMessageOrder() now matches strings in a case-insensitive manner ] hash: 0000000657-23cd152d149ce3dbef2224a5ada52857bbabb34f4bf12f8e38bb36ba4fe19fbd [627 wbond**20090701042532 Added fORMValidation::addStringReplacement() and fORMValidation::addRegexReplacement() for simple validation message modification ] hash: 0000006163-7868d4a64024fdd056eb156770ae8aa76163a6d9c13f3e8aa5eaf834911d5481 [628 wbond**20090702051910 Fixed ticket #248 - fRequest::filter() now works with empty prefixes and filtering the `$_FILES` superglobal has been fixed ] hash: 0000001133-5cae1fcf43ccc6d49472a8fd2237b31225e6b5e136c843ee0dc6a4fece581f0c [629 wbond**20090702173217 Fixed ticket #249 - fRequest::filter() now properly creates new `$_FILES` entries ] hash: 0000000385-4361fb2e160fe44803ba0dce36271c5a7ae1344c259afffa9843ae1e90db3c53 [630 wbond**20090707120106 Updated fDatabase::escape() to accept arrays of values for insertion into SQL strings ] hash: 0000002380-0c6064a6a5c421fb175e2e5f8e302c8d2dc5af54cc9460ad5f042ac74722c451 [631 wbond**20090708072823 Fixed fFilesystem::formatFilesize() to work when `$bytes` equals zero ] hash: 0000000425-d64ac9f3af6fd0483311453a09d11a23b5173a7e993ccf53ed1685497fa87a0e [632 wbond**20090709003039 Fixed ticket #169 - Updated fMessaging to not require the `$recipient` parameter for any methods ] hash: 0000002070-81750dba33bbb4d35cb88f198122d5548a73c3154df8c78c4b665c9137166cd3 [633 wbond**20090709003512 Fixed some API documentation in fException ] hash: 0000000261-4f71ae41808c491d60adb3b6f08444b17491955cafbd9ed9a347ef6dd1459018 [634 wbond**20090709005636 Fixed ticket #251 - fSchema now properly detects unique constraints on tables that are created as indexes instead of as table constraints ] hash: 0000001990-ee808af24723106cf5bd207c5de38f53c0e27eb25c9c3d4d144231801c338d63 [635 wbond**20090709010023 Fixed ticket #253 - Changed fDatabase::determineExtension() and fDatabase::determineCharacterSet() to be protected instead of private ] hash: 0000000783-d8c8918bade2b1944e48dfeeebebe09ac922262db691848bc11f4952dcece3dc [636 wbond**20090709023559 Fixed ticket #198 - Moved `fRecordSet::checkConditions()` to fActiveRecord::checkConditions() and made it public/internal ] hash: 0000010109-364d1cf7b340a933bddb831d02c74394533007f385218024c714852b553a00de [637 wbond**20090709040011 Fixed ticket #252 - added support for the `NOT LIKE` operator `!~` to fRecordSet::build() ] hash: 0000001774-3f67cb0b410f25b3ea03fb0d1cbb65b7b99a26f698b79134089e33162791973e [638 wbond**20090709041025 Fixed ticket #178 - added the new operator &~ to do AND LIKE comparisons ] hash: 0000001719-63c9636b962ca9729aebebbe22c59c31faa7ef852a13fa7d1c10ff239eec69b1 [639 wbond**20090709181749 InternalBackwardsCompatibilityBreak - Changed fActiveRecord::hash() from a protected method to a static public/internal method that requires the class name for non-fActiveRecord values ] hash: 0000003942-145d52575c11f260289915db62fdee7b7d62af6acea37da1e1877849a879a848 [640 wbond**20090709181930 Added the methods fRecordSet::contains() and fRecordSet::unique() ] hash: 0000002049-929db83cb0a737351fadfad58fe3a7b964c74c7af40bd907b15a945bc0259df7 [641 wbond**20090709182407 Fixed a bug where records would break the identity map at the end of fActiveRecord::store() ] hash: 0000000431-65fdb032525ca31fe03a2638518b4c29f7acc6fef499a56c265821fc7f8c6e82 [642 wbond**20090713032218 Fixed a translation bug with fTimestamp::getFuzzyDifference() ] hash: 0000000482-76666a0cf643427bca1ae20bd99d50148f588b6850cf10a15e8fafadce8bdf11 [643 wbond**20090713033254 Changed fFilesystem::formatFilesize() to not use decimal places for bytes, add a space before and drop the `B` in suffixes ] hash: 0000000959-1f89dbd56a79ee4311f20b0132086f87eae1802b62f387708fed696974e53e76 [644 wbond**20090713034557 Updated fFile::determineMimeType() to allow passing the file contents for files not on the filesystem ] hash: 0000001382-d227c8504aad59d48be44d1b18042d5f3149e697168497f5dd7cd80e1bc636ea [645 wbond**20090713041430 Added the methods fRecordSet::diff() and fRecordSet::intersect() ] hash: 0000002944-5deffd9e04a0bf25615607ba37cea2245a075b512fda235abec5040bc9fb6e1b [646 wbond**20090713043742 Added the intersection operator `><` to fRecordSet::build() ] hash: 0000004224-728c4a9f46c3bd8518c921fc204b33aaa10cd164c231545fc94604862794f039 [647 wbond**20090713053506 Added fORM::registerInspectCallback() and fORM::callInspectCallbacks() - updated fActiveRecord and ORM plugin classes to use new methods ] hash: 0000020577-ef61b6432e0e84b1f26f55b93170b4e1b9e41788453f6ae5ed2daf9965355b10 [648 wbond**20090713054706 Updated fORM::callReflectCallbacks() to accept a class name instead of an object ] hash: 0000001719-b9716f4dfa72cf6d2263602dd440e265b0e25d9424eb2c281630b664f86a53d8 [649 wbond**20090713172732 Fixed ticket #170 - Added fORMValidation::addValidValuesValidationRule() ] hash: 0000004604-2ecd2d33b6d7276cdf01e3fae9ca18c79682961a4ac65a55e087be908b54afcb [650 wbond**20090714025925 Fixed a bug with testing fResult::fetchAllRows() ] hash: 0000000546-88ea2df21f82cc6eb108b4a3c7e59181d76bdfa11cf60e3d6367530ebaf85628 [651 wbond**20090714030217 BackwardsCompatibilityBreak - 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() ] hash: 0000022661-31dc04f8a26c63dd913c7545e8f4aa9f5d041210d900375c80044e4cc3c02b1f [652 wbond**20090714042155 Fixed ticket #258 - fRecordSet now passes all parameters to dynamic methods registered via fORM::registerRecordSetMethod() ] hash: 0000000700-24b84a48423dc6857e2af86e1459623c0527fe6f11c184c87be664c2d827f704 [653 wbond**20090715180819 Fixed a bug with fORMOrdering using fORM::registerInspectCallback() ] hash: 0000002369-7038bb4626706f48a6815f5599817a36c9a20d70b631ca145968a9b3c0e4939f [654 wbond**20090715181324 Fixed ticket #261 - fORMOrdering would cause an fSQLException to be thrown when deleting multiple in-memory records in the same set ] hash: 0000003540-9c6c4349cbc97a44ee668ffa2aafbefbd97ad7f35740fd04706ec5f42de2ddb7 [655 wbond**20090715181516 Fixed ticket #260 - Added method chaining support to prebuild, precount and precreate methods in fRecordSet ] hash: 0000000701-51feab24880108ba59f1cc1d6550a966430c4fde439a3a02c4fca35ffb3cd29b [656 wbond**20090715181817 Fixed ticket #266 - PostgreSQL `NOT LIKE` operators were being improperly translated in fSQLTranslation ] hash: 0000000591-0849f9a699c2719c7d3dbbb314b1e7dcf6c87d9fae0c8854b04931c8709b6502 [657 wbond**20090715182537 Fixed ticket #262 - auto-incremented values would not be detected in fDatabase when table names were quoted in the `INSERT` SQL statements ] hash: 0000000617-1381d0a788f7604710ab593e93422e3db84685152e6395cc4f1787083f70957f [658 wbond**20090717132204 Fixed ticket #269 - fixed an fORMOrdering bug with deleting records in the middle of a set, added support for reordering multiple records at once ] hash: 0000001358-930f60425051ce6b2a24e63cee7043d8348e3d84a838c2bce8420b836f008b17 [659 wbond**20090721133852 Fixed tickets #225 and #270 - Loading fActiveRecord objects by multi- column primary key now works even if the columns are in a different order, one-to-one relationships now are properly detected the ORM API was improved to handle them ] hash: 0000022040-3d269d315aedb2996517701c018b3a56ce954b748c896a1d8734f47f33ee0445 [660 wbond**20090722030155 Fixed a bug in fFile::determineMimeType() ] hash: 0000000952-f6f5d9ac544095f5c157dd4abab082331fefeedbda33c80d477d95e0668a5081 [661 wbond**20090729180548 Fixed ticket #275 - fRecordSet::diff() and fRecordSet::intersect() no longer have issues with empty records sets ] hash: 0000000854-810b59324bcbc195c30b63517b0ad06c828f2f1af5f38a8ff057074e36e92906 [662 wbond**20090729181152 Fixed ticket #278 - fActiveRecord now removes any auto-incrementing primary key value after the post::delete() hook ] hash: 0000001364-b3122c250412658b0090808637969d109b8cc263625d0875e2219a6fe1d839b2 [663 wbond**20090730005324 Fixed ticket #277 - fORMRelated and fORMValidation were updated to prevent errors from occurring when saving child records in recursive relationships ] hash: 0000004581-74b0f9c34b0ff1dfe72a4575dd2b9902abe6d4980a578054fba87eb39447e471 [664 wbond**20090730032237 Fixed tickets #274 and #280 - fImage now works with files that have no extension or an incorrect extension ] hash: 0000002317-aabf7c42c3094f55153e5466ce72fe014f00e42feb1052e3de2c86af26828beb [665 wbond**20090730033652 fORMFile::addFImageMethodCall() no longer requires column be an image upload column, fORMFile column inheritance to an image column now only happens for fImage objects ] hash: 0000001291-3c9054df6450e1fb64f39559144665102245d2ef21f958e03c1494eecc5d0a65 [666 wbond**20090730034039 Changed fRecordSet to implement Countable, making the [http://php.net/count `count()`] function work ] hash: 0000000477-f4471a6703e349af115c7efdad0ef551e946cd9cb1b7e5307ede7b47538fb123 [667 wbond**20090730035058 Fixed ticket #276 - fURL::redirect() no longer requires a parameter and uses the current URL as the default ] hash: 0000001026-cf4497d47c23aea007c1657f00925ccd18dcf0a2255bcc66642e3e70b2f1ac88 [668 wbond**20090731051522 Fixed some error messaging in fORMSchema to not include {empty_string} in some situations ] hash: 0000001341-dc27fc1f3c2cf49e8dd50a055e3ccbb16ad0b8c3941b92dbcc017f7ace372764 [669 wbond**20090731051554 fORMRelated::setOrderBys() now (properly) only recognizes *-to-many relationships ] hash: 0000000500-4bd7a5cb6e1d8a7158a4a9902fe501d32a5fbf674f8f1ee58e220873a7cf22a2 [670 wbond**20090731051629 Fixed a typo in the fValidation API docs ] hash: 0000000266-0c62d3dabf4aab7d077163cc5fc0f4305b5e2f79f3a9350bc5de630694e93f59 [671 wbond**20090807022426 Fixed fDatabase so that PostgreSQL and Oracle don't try to get auto- incrementing values on inserts when explicit values were given ] hash: 0000001412-95a1cdd1f462f6dc5c7fca4311e5a9f4a49574a0f368e1606e124805beab5e57 [672 wbond**20090807025444 Fixed ticket #286 - changed fFile::__toString() to never throw an exception ] hash: 0000000428-d8397242e401ff43acdf1260570e6dddb9afda4db04dc942df7f9b472686dc71 [673 wbond**20090807035306 Performance tweaks for creating fDirectory, fFile and fImage objects via fFilesystem::createObject() ] hash: 0000008560-d3c13eee80d655a78309e3ba2f045db715af9dc7cb88fabd7cc35d9fe320212e [674 wbond**20090807035811 Added performance tweaks to fRecordSet::prebuild() and fRecordSet::precreate() ] hash: 0000001556-2dd371cec110e8884123e7bd2c89aac8789b293d10dcf5dfd4436694c18c1e18 [675 wbond**20090807054934 Performance enhancements to fActiveRecord::__call() and fActiveRecord::__construct() ] hash: 0000007763-839aaa26e46e87cb406aea87a4919a1ab0a5c0496d5e18e370e4baf2ec1594cf [676 wbond**20090807055527 Fixed ticket #284 - Updated documentation for fORM::registerActiveRecordMethod() to include info about prefix method matches ] hash: 0000000852-1af96d4844696f927a97416d8a5f6d14193c6d104206eb6e8f93ba675ec662ce [677 wbond**20090807061812 Fixed ticket #285 - added the ability to compare fActiveRecord objects in fActiveRecord::checkConditions() ] hash: 0000001519-0532f2228cd05fe8a47bce82ee2596790df282cf4e5df27acf27ebc606edff5a [678 wbond**20090807063718 Added fImage::getDimensions() ] hash: 0000000544-e65f9dd69ef3cdb35d94c1cce99077e870f8ac80007de7d5d925491c66ba8552 [679 wbond**20090810155219 Fixed a bug in fActiveRecord with unescaping data from the database ] hash: 0000001216-48d79be28061c0a83bbb8101c949dc578e219b8a9411d9141a340a63869963ee [680 wbond**20090810162522 Fixed a bug with fActiveRecord::createRecord() when a foreign key constraint is on a column other than the primary key ] hash: 0000000545-0eb0e034a6640df868dc1ddedc264816d0f5a39a5b2088eb572488e979a2ca8d [681 wbond**20090810220010 Fixed a serious bug with setting NULL values in fActiveRecord ] hash: 0000000704-8330a1066ca7c5f5a28423d28d77146e9bd5bd487731e9d2b496505bbf9f3979 [682 wbond**20090812054453 Added the ability to pass an array of all values as a single parameter to fDatabase::escape() instead of one value per parameter ] hash: 0000002472-7791f97c9ac4675b8a94d93341d5eae0a8ec4fc0ee955bac9c9d01ef7401c400 [683 wbond**20090817051729 Added fResult::unescape() and fUnbufferedResult::unescape(), fixed fDatabase::unescape() to not touch NULLs ] hash: 0000020224-c9ac08e5fc91b79e12f8503014874330d8c9607fe6a4436adfbf8be8a297accc [684 wbond**20090817052028 Fixed a bug with fORMRelated::createRecord() where foreign keys with a different column and related column name would not load properly ] hash: 0000000623-952b9bbcd5b154cae2407f40904760a67ff869f3f64d78adee42b3ab9f12b252 [685 wbond**20090817052634 Fixed ticket #288 - updated fActiveRecord::changed() to do a strict comparison when at least one value is NULL ] hash: 0000000661-100d8ed9f66bf2e953cb00bad163b1635a220551cb0e17533aa77cfb79e603b3 [686 wbond**20090820175157 Fixed ticket #290 - Deleting an fFile or fDirectory object no longer prevents performing actions on a new file or directory with the same path, later in the script ] hash: 0000003700-6762f74f73483b84b4d90826129fdc02602a0106552de2391cb456178bda6e23 [687 wbond**20090821163617 Fixed fFile and fDirectory to throw an fValidationException when the file or directory is not found instead of an fEnvironmentException ] hash: 0000000832-a6cc67194124cb54fbcff7c76de9fc84c3fa1e57657487627713463656c4f189 [688 wbond**20090821171431 Fixed ticket #291 - fORMValidation::checkOnlyOneRule() and fORMValidation::checkOneOrMoreRule() now consider blank strings as NULL when checking for values ] hash: 0000000683-793fd65b7f702f84663135273c6bb43cfc1c8c6b5c78e303ec487ae1211829fe [689 wbond**20090825180813 Fixed a bug with fORMRelated::createRecord() not creating non-existent record when the related value is NULL ] hash: 0000000573-f0687d0e8fecbf03a0fb4c07e04d945972498a0dd450fe918d71a18d755c93aa [690 wbond**20090826130657 Fixed ticket #281 - casting to an integer or string in fRequest::get() now properly casts when the `$key` isn't present in the request, added support for date, time, timestamp and `?` casts ] hash: 0000010321-7e5c36a223c6a10c153c450d0590bb690450aa30602594511145d0249ffb6efd [691 wbond**20090827021925 Fixed ticket #292 - changed `fActiveRecord::set{ColumnName}()` methods to return the record for method chaining. Fixed a bug with loading by multi-column unique constraints and a bug with fActiveRecord::load(). ] hash: 0000144539-997fd5d11d18abdf4684ce0534f4015991cf7ccbbc407da24413ea1b82c25f5d [692 wbond**20090827023848 Fixed ticket #294 - added a check to the configuration part of fActiveRecord::__construct() to ensure modelled tables have primary keys ] hash: 0000001251-033df8ca8f9fde7b454c556c2d4aaab499bb1f3c60dc431b9f79e3ccf5f30ccc [693 wbond**20090901063705 Added instance functionality to fXML for reading XML files ] hash: 0000018930-073d5709fbcd7998d32bd932f17ab2ebc2464dfa48dd12ace6476fef02c0668f [694 wbond**20090902023304 Fixed a bug in fActiveRecord that would cause issues with classes containing custom class to table mapping ] hash: 0000001130-9c5834b7b593b6634645c0adff5d892cf6c5e2aa5b1f2457ccdedffbae2e86a7 [695 wbond**20090909063927 Fixed ticket #297 - parsing table aliases in fSQLTranslation while handling MSSQL national columns was producing incorrect results ] hash: 0000000545-43b59dc2d34c89ea511c55fc401ca77c4e1ed42029be8f7009f90e653f1ee1ce [696 wbond**20090909064543 Fixed ticket #300 - corrected the API documentation for fFilesystem::getPathInfo() ] hash: 0000000966-2ac4a8660729b6c1ec201fe50d6413b14f35cb3bb61b4ceef369443dec7d29f3 [697 wbond**20090909064921 Fixed ticket #301 - fORMFile will no longer cause notices due to a missing image type when fImage method calls are added for file upload columns ] hash: 0000000592-8c6224ec23972e4c3db2be82e7e95338ebc33befd7a803f15ca8f7c9d5a8b4c5 [698 wbond**20090909065138 Fixed ticket #305 - corrected a grammar bug in fActiveRecord::hash() ] hash: 0000000517-db6685932484d7e4320ddc92bac0377f78541f748cc09b1e2d534c1139c11828 [699 wbond**20090915041845 Fixed ticket #311 - added an extra optional parameter to fRecordSet::diff(), fRecordSet::filter(), fRecordSet::intersect(), fRecordSet::slice() and fRecordSet::unique() to save the number of records in the current set as the non-limited count for the new set ] hash: 0000009759-0e636b06061b553d8186cd0b40fcf1e87e57a22cdb40b94fb8dea31c4f3875ed [700 wbond**20090918043628 BackwardsCompatibilityBreak - renamed fRecordSet::buildFromRecords() to fRecordSet::buildFromArray(). Added fRecordSet::buildFromCall(), fRecordSet::buildFromMap() and `fRecordSet::build{RelatedRecords}()`. ] hash: 0000029316-d048de7e268366a686142dd51db8d3ccc8a4d607a9cd5a8eb048788feffe43a6 [701 wbond**20090918045058 Fixed tickets #250 and #307 - fValidationException can now take a header message and a list of messages for standard lists of validation errors and fValidation::validate() accepts a boolean parameter to return the messages instead of throwing them as an exception ] hash: 0000004988-ab915e50292e5ca5192c3d130356313fb1b2e18f22d9b7eff8b8c86c28f92f35 [702 wbond**20090918045555 Added the `$http_timeout` parameter to fXML::__construct() that allows for simple control of how long to wait for a response when requesting an XML file from a URL ] hash: 0000001968-28016353d6e7982d6a9e7ba8af0e0374a69feac16772dae03217fb7200a04c9f [703 wbond**20090918045946 Fixed another bug in fSQLTranslation with parsing table aliases for MSSQL national columns ] hash: 0000000657-0e41c372b4bc5fd4ec4eee19d3935f34ffad5e58178a8d836da35583b65da58e [704 wbond**20090918051732 Changed fUTF8::ucwords() to also uppercase words right after various punctuation ] hash: 0000001873-208c7d0e30ce839024a63156a4f260ab0a637ac113ccdca6017ebcf4785d2818 [705 wbond**20090918065303 Fixed fSchema MSSQL support to work with ODBC database connections, fixed fSQLTranslation to work with PHP 5.1 for MSSQL national columns and updated fRecordSet::map() to handle string-style static method callbacks in PHP 5.1 ] hash: 0000003892-884ec8ac227c3e8e1973575c98507d46cc143f6aa308b12ce136ec5f7892f158 [706 wbond**20090918072238 Fixed a bug with decoding MSSQL national columns over an ODBC connection ] hash: 0000001266-3221045b3a40e717b05c5ef20885441b0da8052852b2b1469d6217491088f6d7 [707 wbond**20090922045611 Fixed tickets #317, #318, #320 - Cleaned up `><` intersection operator for fRecordSet::build(), added support for NULL second value and added `!~`, `&~`, `><` operators and OR conditions to fRecordSet::filter() ] hash: 0000024678-c2a97dab77296c20b6236836089d39c2568f9449e52aedc39df3d1d04a431f15 [708 wbond**20090922051241 Fixed ticket #313 - fSchema now properly detects one-to-one relationship where the foreign key is also a primary key ] hash: 0000000838-32f04df7a70eff477472ff12a7949083be07e58eb13106da8cc7170a2ed0a5f8 [709 wbond**20091005175539 Fixed ticket #326 - changed fCryptography::symmetricKeyEncrypt() to throw an fValidationException when the $secret_key is less than 8 characters ] hash: 0000000862-c6a546bf7f83e978cd1b57423af90307983b9eb9c3a2bd1fd3a2deaa1186ee53 [710 wbond**20091005182345 Removed duplicate MIME-Version headers that were being included by fEmail with S/MIME encrypted emails ] hash: 0000000460-fe6a5ea8a2db9add49e38023991fac7348d87e86178b3b9a0a2641f598fc8740 [711 wbond**20091005183230 Fixed ticket #328 - fORMRelated::countRecords() has a bug that prevented counting related record when more than one route to the related table existed ] hash: 0000000526-5539c740ad72b4c994145c0b50fab95345701f161c0f3d75fde1f96b6204d972 [712 wbond**20091005184242 Fixed ticket #327 - fRecordSet::build() now fixes bad $page numbers instead of throwing an fProgrammerException ] hash: 0000000543-5c212165b5bf8df5c0c7c5c97e3d3aacabcf6c912ea8577a25a81982df1253d9 [713 wbond**20091006171450 SECURITY FIX: fixed issue with fCryptography::random() and fCryptography::randomString() not producing random output on OSX, made fCryptography::seedRandom() more robust ] hash: 0000001252-58815ca3b25300c0a0346fe6f870dd5bf52607522b37c13e2d6ff1426e402ccd [714 wbond**20091006175539 Added fCore::detectOpcodeCache() ] hash: 0000001609-1f2d3c6712047771facebfc70c54588eba220b6457647e124d80b984afa0177d [715 wbond**20091006180229 Fixed a bug with fTimestamp::fixISOWeek() not properly parsing some ISO week dates ] hash: 0000000803-6881f5f41409aa4a96c2c3275fbd588c40ca9ff6e25194990f68c7d3daa5bb82 [716 wbond**20091006184517 Fixed ticket #329 - added fUpload::filter() to allow for ignoring array file upload field entries that did not have a file uploaded ] hash: 0000002098-901523a86c706f192f92d6a78ffa758d4d43f1860c3cecbcfab2915bbf0b8bb3 [717 wbond**20091006190456 Fixed ticket #304 - added fCookie::delete() ] hash: 0000001469-4b6cd0a3ba52a97025110cf123827b23ccb7cd8628910f3b57064927b04db21d [718 wbond**20091006191230 Added support for fActiveRecord to fORM::getRecordName() ] hash: 0000000587-732c2ea2dad90dbd5acd21e25324c2f752fe6291032908aabb1fc7760b274a60 [719 wbond**20091011173224 Fixed ticket #334 - fixed setting up the inspect callback in fORMDate::configureTimezoneColumn() ] hash: 0000000490-3ba25e8394544086100338890940738c9519c6533175d3e9d038d1ccd6160876 [720 wbond**20091022182051 BackwardsCompatibilityBreak - removed support for date function translation in fDatabase/fSQLTranslation. InternalBackwardsCompatibilityBreak - Removed fORMDatabase::addTableToKeys(), fORMDatabase::addTableToValues(), fORMDatabase::escapeBySchema() and fORMDatabase::escapeByType(); rewrote fORMDatabase::createHavingClause() to fORMDatabase::addHavingClause(); rewrote fORMDatabase::createOrderByClause() to fORMDatabase::addOrderByClause(); rewrote fORMDatabase::insertFromAndGroupByClauses() to fORMDatabase::injectFromAndGroupByClauses(); added the `$schema` parameter to the beginning of fORMSchema::getRouteName(), fORMSchema::getRouteName(), fORMSchema::getRoutes() and fORMSchema::isOneToOne(); added the `$class` parameter to the beginning of fORMRelated::storeManyToMany(). Fixed tickets #319 and #308. Rewrote the ORM to use quoted identifiers and placeholder escaping. Added support for PostgreSQL, Oracle and SQL Server schemas. Added tests for fActiveRecord, fRecordSet, fORMRelated and fORMOrdering ] hash: 0000352350-a3d0fc9b9f70727e255a271f36b5db02e795e6fbbb9e1c44b05bdfc69b71a4ff [721 wbond**20091026163649 BackwardsCompatibilityBreak - Removed the `$prefix` parameter from the methods fSession::delete(), fSession::get() and fSession::set() Fixed ticket #302 - added the method fSession::add() Fixed ticket #303 - added a second parameter to fSession::setLength() and added fSession::enablePersistence() ] hash: 0000021776-84ad8ac48a319f408a0c90134d3f01c30fc03138c98e51919860419d5f8c850c [722 wbond**20091026164423 Fixed ticket #337 - fEmail now rejects bounce-to email addresses on non-windows OSes when safe mode is on ] hash: 0000001181-0e9e986145ec74b8baa6a885ba58f8277d18a9e568abe811bde465fc363e2b6f [723 wbond**20091026164825 Fixed ticket #323 - fActiveRecord objects now return the object from associate, link and populate methods to allow for method chaining ] hash: 0000001627-a13b60f959b13496da5c319c7c5ff27f71e5a47a54071487dc2524e53951329e [724 wbond**20091026165103 Fixed ticket #333 - changed fFile to allow getting the directory, filename and path on files that have been deleted ] hash: 0000000550-c8f56cd0aeac12d6f1df9d4fc8678d9d5e4eb4f1013c1ded4325820ef6189397 [725 wbond**20091027173032 Fixed ticket #340 - fImage now handles transparency and desaturation properly when using GD. Fixed a unit test issue for fSession on PHP 5.1. ] hash: 0000006961-1e557071c9b27934c4fc889593a0a595ba0fdaaf5aefe5a700c9d6d51e3bb004 [726 wbond**20091103185754 BackwardsCompatibilityBreak - fORM::addCustomClassTableMapping() was renamed to fORM::mapClassToTable() Fixed tickets #148 and #265 - Added the ability to set a database name via fORMDatabase::attach() and fORMSchema::attach() which can then be used to support multiple databases for the ORM via fORM::mapClassToDatabase(). In addition, different databases can be set for read and write operations in fORMDatabase::attach() and fORMSchema::attach(), which allows for master/slave setups. ] hash: 0000046254-102a28a369440aa501de92ce5104543ad7ecc29a87dfc4b91b0cf50f88c16eea [727 wbond**20091103191513 Fixed an issue in fORMDate with calling a non-existent method on fTimestamp instances ] hash: 0000000733-3bedbf2ea117995087ba96c1c25bd403b952432d80ad7ce03f500f86672d615c [728 wbond**20091104050227 Fixed a bug affecting where conditions with columns that are not null but have a default value ] hash: 0000005506-548895923e6f7d3bca3ffddbc1ce4b66df81db052d8e92e642330f4ee2b98b6a [729 wbond**20091104052438 Fixed ticket #339 - some conditional comments were causing the regex in fHTML::prepare() to break ] hash: 0000001323-98c7e3a49e2c532dc597dcbb9831581e0a456558c54be1c73ba76bb651656d7b [730 wbond**20091113140821 Fixed ticket #346 - fORMOrdering was creating incorrect SQL statements for columns in unique constraints with three or more columns. Fixed a bug with detecting unique constraints in fSchema for SQL Server, and fixed a bug in loading fActiveRecord objects with only some of the columns in a multi-column primary key. ] hash: 0000012441-8d8f0d4b415d103f76760d055130293ee52abf13c4f5361496f67cd3b38c7bd9 [731 wbond**20091114144326 Fixed ticket #345 - fActiveRecord::changed() now properly compares NULL and blank strings ] hash: 0000002809-2780d8f2df36c9c675c087484a00c54619b23b8a28a82140dbf5b66232a270d6 [732 wbond**20091114151610 Fixed ticket #336 - Updated fFilesystem::convertToBytes() to properly handle integers without a suffix and sizes with fractions ] hash: 0000002311-6f9feda1cd93cc6cf5e84480bd20cf29d469b64903f8960158d38c0155d651e1 [733 wbond**20091208181913 Fixed ticket #350 - fixed an issues with fSession::destroy() not always working ] hash: 0000000504-31099383e0b45779b12f26cac8aa6727c9f40c11a71b76ac847a08957afdb347 [734 wbond**20091216054045 Fixed ticket #347 - fRecordSet::build() can now compare columns by using the =:, !=:, <:, <=:, >:, >=: operators ] hash: 0000006489-ccd26aec78e9a5964095165b7904d7f69bf5c6d6e1688ad63135cf8f08da5f66 [735 wbond**20091216055211 BackwardsCompatibilityBreak - Added the $force_cascade parameter to fActiveRecord::delete() and fActiveRecord::store(), which will break classes that override those methods. This fixed ticket #306. Fixed ticket #283 - added `has{RelatedRecords}()` methods to fActiveRecord which return a boolean for any related records in one-to-one, one-to- many or many-to-many relationships. ] hash: 0000033281-fbfc1690ba8d570f5fd3bd9e7b2d7f8657a4aac35b4caba8ba7682c76d8f4303 [736 wbond**20091216070354 BackwardsCompatibilityBreak - Renamed fFile::getFilename() to fFile::getName(), fFile::getFilesize() to fFile::getSize(), fFile::getDirectory() to fFile::getParent(), fDirectory::getFilesize() to fDirectory::getSize(). Added fDirectory::getName(), fDirectory::move() and fFile::move(). ] hash: 0000018387-68bc3a74e305524f4ce735507ed421373c313cbd9b1872118cca935257ce2627 [737 wbond**20091216214115 Fixed ticket #358 - updated some old fFile method references in fORMFile ] hash: 0000000923-4a3cfeb6a7c8ef9305a7cd82a71ea166cb36f30d3fb1f585b0f82e5984034140 [738 wbond**20091217044702 Fixed ticket #353 - PostgreSQL UUID columns can now be passed to LOWER(), which makes fRecordSet::build() on tables with UUID primary keys and no $order_bys array to work properly ] hash: 0000000648-9945f26ec676a01c7120a133ddc14d7ed6bea138185de4b59db0c03742351b05 [739 wbond**20091217065430 Fixed ticket #356 - fFile now detects alternate file format for some jpg files from Photoshop ] hash: 0000002127-9b6a9a111ec2707bf0c4f7be71e76589107d316324942b03b96bfdcdd1a4d43a [740 wbond**20091217065709 Fixed ticket #357 - fORMDatabase was improperly generating SQL table aliases when joining to the same table twice, with the first join being through another table ] hash: 0000001217-43cfcabd7b0a4f8d3ac84cfb1233162f940692b0578f7cb857fc63d12505eb85 [741 wbond**20091218135142 Fixed a bug in fORMRelated with associating a non-contiguous array of fActiveRecord objects ] hash: 0000000497-0de609a49327adb9155d70eaf29fa8aa798c0bd3a57417860ef8c5a61f2def95 [742 wbond**20091218142313 Fixed ticket #352 - fORMValidation now more robustly handles empty values in one-or-more and only-one rules ] hash: 0000009992-19e65613a83b636bfd6d84aef482c354a5e5bb03116e546311b5de50f6c36e78 [743 wbond**20091218145332 Fixed ticket #359 - Fixed a bug in fActiveRecord where related records with a primary key that contained a foreign key with an on update cascade clause would be deleted when changing the value of the column referenced by the foreign key ] hash: 0000002331-eaa944bd96b36322f6f3619fb9455baaeaf21ecad01ee6bbb856df2445fd7751 [744 wbond**20091218180826 Fixed ticket #351 - translated queries on MSSQL servers with sub- selects containing joins now work properly ] hash: 0000004087-b82dc8c93036a8d141709a455e5ff627c78898d56af41273f9e33feeea77e14d [745 wbond**20100125192910 Fixed ticket #368 - added support for Oracle number columns. Fixed some bugs related to testing and added SQL Server 2008 test configurations. ] hash: 0000038186-0f73cdb98c1199c22c66243fa08f6d8c6f71b43d8cd86277de2c0af0fb50646c [746 wbond**20100303060948 Fixed #231 - added fStatement, fDatabase::prepare() and fDatabase::translatedPrepare(). Fixed #372 - moved mysqli and pdo_mysql above mysql when determining database extension since they both have native prepared statement support. Added fDatabase::execute() for result-less SQL statement execution. Greatly enhanced tests in many ways, including support for running running remotely and on multiple servers at the same time. ] hash: 0000192612-a3f4e0479751c67761bf59edc57698e0f9897e7ce81e5e4649a719457f9c5569 [747 wbond**20100303141654 Fixed ticket #374 - added missing fGrammar::compose() ] hash: 0000001140-07aef99f8db3d6e15a16cdac6f6ace26398f9846fa34c79cbb3f97856e58ed0c [748 wbond**20100303141842 Fixed ticket #377 - cleaned up from fSession API documentation bugs ] hash: 0000003200-6b49c25502c590dc2697638e859ba5adffff49bba790934d6a3c1add84341eee [749 wbond**20100303142041 Fixed tickets #380, #385 and #386 - fORMMoney bugs with setting NULL values and duplicated validation messages ] hash: 0000001726-a282e2c48b1b0e8545de7abbdd330b6fc968d8b5ed194b071074fb5576d34c09 [750 wbond**20100303142331 Fixed ticket #388 - Resolved a couple of undefined variable errors in fFile::determineMimeTypeByContents() ] hash: 0000000751-80246cecb1b829cbcbc09c5b61c0c64161a07faf0f780f7703f1745f1569e088 [751 wbond**20100303152655 Fixed the remote_tests.sh script to properly handle working with port- forwarded ssh connections, altered the fSQLTranslation tests to handle situations where clocks are not quite in sync, and commented out the datatype sql files from reset_databases.sh ] hash: 0000003243-29fe1d4ebde4c3f6785bc177924c66884652d432b547b89958db5c2d75fb016b [752 wbond**20100303184306 Fixed a bug in fImage::saveChanges() that would incorrectly cause new filenames to be created, added the $overwrite parameter to fImage::saveChanges(), added the $allow_upsizing parameter to fImage::resize() ] hash: 0000004247-0fa96955aa2a497714e4c045de761599449362b023776d0e8f19d63b785d10ce [753 wbond**20100303184521 Added the ability to associate a single record via primary key in fORMRelated ] hash: 0000001285-142a6cf442efcdbc596e57f27e5d380290734a871384ca2ded788ce08be0d304 [754 wbond**20100303185338 Changed fORMDatabase::injectFromAndGroupByClauses() to be able to handle table aliases that contain other aliases inside of them ] hash: 0000000944-96bfe13865875eea502256b743f08f870150c12a719a121abf6e052b02efd938 [755 wbond**20100304040335 Fixes for the remote_tests.sh script to suppress warnings about future date issues with tar and issues with requesting a pseudo-tty for JSON or text output ] hash: 0000000652-0219ccac49302228cd8ea9d77f76ecf005b9b11f3e484e7374238ee116d99b2e [756 wbond**20100304135315 Fixed ticket #394 - fixed issues with the route names for one-to-one relationships when calling fActiveRecord::store() and fActiveRecord::delete() ] hash: 0000009141-ce344714d3500c76c5b668447c4746d5b336c15c503acab543d7fc6c077a8caa [757 wbond**20100304135705 Fixed ticket #392 - fActiveRecord::load() now clears related records, forcing them to be loaded from the database ] hash: 0000000528-023e78e0af2d6a69f06a0376be5151690c2a3352242663a0a8b333d65e01ad9c [758 wbond**20100305205954 Fixed ticket #397 - fFile, fImage and fDirectory all handle re-used filenames better and produce more usable exceptions when trying to perform actions on objects that have been deleted InternalBackwardsCompatibilityBreak - fFilesystem::hookExceptionMap() was changed to fFilesystem::hookDeletedMap() and fFilesystem::updateExceptionMap() was changed to fFilesystem::updateDeletedMap() ] hash: 0000016820-2ce97e4994e20bb2fc99401e2e03a8db829b70b18b35d430b137def0b18f04bf [759 wbond**20100308174623 Fixed ticket #384 - fRequest::get() no longer truncates big ints to the 32bit integer limit ] hash: 0000003501-199febb620505977314b04dfffe78d1eea230f5f70f80fad4b9a0de22afe1cfd [760 wbond**20100308183245 BackwardsCompatibilityBreak - fixed ticket #376 - fDirectory::scan() and fDirectory::scanRecursive() to strip the current directory's path before matching the `$filter`. Also added support for glob style matching. ] hash: 0000010901-25a3ab1c43a7a339854525808c2affb12184e35e79e995fef51c1fb291a43f9e [761 wbond**20100309055113 Fixed ticket #390 - removed code to double . on windows right after a line break since the bug it was trying to fix does not seem to exist ] hash: 0000000915-8c813faf7ea6edd99e3f1a41c0124d4bf882623519a040934153647dddf7c4c5 [762 wbond**20100309063225 Fixed ticket #389 - fORMColumn is now more strict about what links will pass validation ] hash: 0000006049-78e5d3b9584826f9088bf12babd1b5e5abc608e65f8c16751b9424b9e6e85cef [763 wbond**20100309063627 Fixed ticket #399 - changed fCryptography::seedRandom() to pass a directory instead of a filename to disk_free_space() ] hash: 0000000940-553a875fc4e1070245bfa4b9542bfaf8a23f2a18faafafb299e70b32fd95fda0 [764 wbond**20100309064059 Fixed ticket #400 - fActiveRecord::delete() with the `$force_cascade` flag now works when there is a restricted relationship once-removed through a non-restricted relationship ] hash: 0000004236-b5ba78db0f9f77c8303af07ba04b61ff7a8a1c9289d69e7388b04d37dbb9eea3 [765 wbond**20100309064552 Fixed ticket #354 - calling fDatabase::clearCache() now also calls fSQLTranslation::clearCache() for the fSQLTranslation instance attached to an fDatabase instance ] hash: 0000001135-ebef5ac06639106ac58af8448f836fc89ddcf335b54d291e579deb491a02c6f5 [766 wbond**20100309064905 Fixed ticket #363 - added fAuthorization::getLoginPage() ] hash: 0000001185-44e53bd5c3691ef35b68a536c522e13dce19fc85527641e63ef8678737ad8fee [767 wbond**20100314180239 Fixed ticket #321 - Added the `$unindent_expand_constants` parameter to fEmail::setBody(), added the methods fEmail::loadBody() and fEmail::loadHTMLBody(). Fixed sending HTML emails with attachments via fEmail. ] hash: 0000033645-97f193540dbb38068ac53f4091e1d1fb2263ca403df1c167eb61cab9693234f2 [768 wbond**20100314221421 Fixed #382 - fSchema no longer chokes when a MySQL database includes views ] hash: 0000000892-866d9ceb67417220a7e6311ec542ccac5c7e04516c31d58547dc5274318d0f5a [769 wbond**20100315032445 Fixed ticket #398 - fSchema now properly ignores unique constraints with complex expressions (such as function calls) so as not to produce potentially incorrect relationship information ] hash: 0000000720-1894dab8293c73f77e791b319836c30e05576cbcd6d3505e0f956e21da6cd0fb [770 wbond**20100315034320 Fixed ticket #395 - added `post::loadFromIdentityMap()` hook and fixed fActiveRecord::__construct() so that the `post::__construct()` hook always gets called ] hash: 0000001992-65dea0339cef8ab1d3ec2775cc8e93276c045bb6c290d9e151f448ba46f64d28 [771 wbond**20100315041335 Fixed ticket #381 - fORMColumn now trims email column values when they are valid email addresses to help prevent hard-to-find validation issues ] hash: 0000003092-684e6d183b6ad8d7c585faff1f948766b8b9f217dc0597ce0bd4da3ba727c606 [772 wbond**20100315044210 Fixed some of the ORM classes to specify the proper return value from their `reflect` methods, updated some ORM methods to return useful values instead of void ] hash: 0000007617-f9a98646151a192a9799a5e42e31c2ef08d07592cb2461ea811964633093c576 [773 wbond**20100315045021 Fixed ticket #338 - added method fRequest::isAjax() ] hash: 0000001038-083498c9ebf4436c60205dde3220fad4f1d6c319159f1c74ca98fbf166655eea [774 wbond**20100315050548 Fixed ticket #365 - added fJSON::output() ] hash: 0000000875-93ffe34910e77e8859ca0ae624b99295e729310d95bdaaf164430214f3bbbb15 [775 wbond**20100315052436 Fixed ticket #375 - added the `$simple` parameter to fDate::getFuzzyDifference(), fTime::getFuzzyDifference() and fTimestamp::getFuzzyDifference() ] hash: 0000004701-428cc307a56a4dbb3c636c7c5a763a4d3bbe6bec5dffa523ec872b1e9852b0e9 [776 wbond**20100315052648 Fixed a small PHPDoc error in fMessaging ] hash: 0000000889-27939464ed14c7fff93eae643cc15a89a3e455873c53748500f38f31efad568d [777 wbond**20100315053447 Fixed ticket #355 - fORMFile::set() now performs column inheritance, just like fORMFile::upload() does ] hash: 0000000990-7c0b090950b0ef5a1f79f658dedb83243cda92cb2d28a98e80f142a0c310ca9f [778 wbond**20100315060856 Fixed ticket #378 - added fFile::append() ] hash: 0000002887-958cf155fe0b02a9bb76794f6b8a6808c4204b96c03a40e59814c22f4ae19bd8 [779 wbond**20100315060949 Added tests for fFile::append() that I missed in the last commit ] hash: 0000001280-b653ec30335842a5b92aabe3a13ebbe853be8497ea4078f44672a663592e016e [780 wbond**20100315182722 Changed the tests of fEmail to wait up to a full minute for the messages to arrive ] hash: 0000000203-a9b1314905facf0bffcff06361cbd01a8ea779c853da6cabfa42c4a972280f3c [781 wbond**20100316023450 Fixed ticket #402 - resolved another bug with capturing auto- incrementing values in fDatabase for PostgreSQL and Oracle ] hash: 0000001423-d498970144f32a3e65d58627b1b92adf8c3132c5cb41e1a20f14b62cf8ca48bf [782 wbond**20100316172816 Fixed ticket #403 - fixed regression in fDirectory::scan() to properly append /s to directories when matching against the `$filter` ] hash: 0000001087-93a27b4b2a7ed8abd32bc33f39639d8deee32f77bb2860c59fe519e7264eaa66 [783 wbond**20100316173555 Fixed a bug with fORMColumn::prepareLinkColumn() returning `http://` for empty link columns and not adding `http://` to links that contained a `/`, but did not start with it ] hash: 0000001808-8e6543ad883a25044a453d4638952ad623ad473397ac7af890048459848ec516 [784 wbond**20100316173951 Fixed ticket #404 - fFile::rename() no longer fails when the old and new filenames are the same ] hash: 0000000706-ce46b064bcced960ea4e94ebc61d9068d2924a79747b4fdbe98e6331454a6dc7 [785 wbond**20100318031607 Fixed an auto-incrementing transaction bug with Oracle and debugging issues with all databases in fDatabase ] hash: 0000000689-1c523d5032d86431219802647eef148bb4333866a58361ce8077131a527801a1 [786 wbond**20100318032738 Added `min_value` and `max_value` elements to fSchema::getColumnInfo() ] hash: 0000047304-55af66d72e3527bb90f66dbab800202324c16cf5174e3a01101d50a948e7d926 [787 wbond**20100318035937 Fixed ticket #177 - added support for schema-based numeric range checking to fORMValidation ] hash: 0000005015-99d1221d2be9872323aa62eeab0a8e9fb59ea85dd9c5e4d5550d0e7e6162469b [788 wbond**20100329182728 Added `max_length` values for various text and blob data types across all databases in fSchema::getColumnInfo(), fixed fSchema and fSQLTranslation tests to work with recent fSchema changes ] hash: 0000009076-1245ebf3444f21feaa9f99a7de6be54513c1aa47c72bbfaabc19352a92b5e4ea [789 wbond**20100329183231 Fixed ticket #411 - changed extended UTF-8 arrow character into the correct -> in fActiveRecord ] hash: 0000000432-579994a64cc324443c87491cc389a58472ea4c2c9229a7f4618390cbe9e881ed [790 wbond**20100330173143 Fixed ticket #407 - `existing-` and `delete-` inputs for file upload columns configured via fORMFile now properly trigger the upload action when populating ] hash: 0000000820-17304fb3be17992685238c9ed1df0a44b9492cf4cd99908241a5bf896ee86e8e [791 wbond**20100330174437 Fixed ticket #410 - fSchema now properly handles explicit NULL values for PostgreSQL string columns ] hash: 0000000550-938535e60a05f82a84483fa81532923612eb865fdf51725232bbf93ea774ec49 [792 wbond**20100331035225 Fixed ticket #406 - fixed issues determining one-to-one relationships with mapped classes and updated the ORM to force configure classes wherever possible ] hash: 0000041253-09219d3a65534577a54371c9d9ee4203e79e68cca40a6502c12fd6285a4ce9e5 [793 wbond**20100331061323 Fixed issues with handling `populate` actions when working with mapped classes in fActiveRecord ] hash: 0000008056-7cc5b044a5865e0718d577ab4e195c8ead9426c7909b72859baefafa661d1ec7 [794 wbond**20100402124627 Fixed ticket #419 - Removed the possibility of infinite recursion when configuring an fActiveRecord class ] hash: 0000000459-34ec96a29a20c1ec401cd3d63da1386417043a8da208defcce1ca9b46481f8ec [795 wbond**20100406132115 Fixed ticket #420 - changed use of is_subclass_of() in fActiveRecord to work around a crashing issue with PHP 5.2.x ] hash: 0000000699-92c61173423a5a2be00641006a7f9a8b7316470f0277dc39b5ea5e9713d97c16 [796 wbond**20100407002720 Fixed ticket #405 - updated fXML to create a `__` prefix for the default namespace and to implicitly use that for child and attribute access when no prefix is specified ] hash: 0000001498-3a1b11159710c47a9c3efaa5ee68e9e3e813110d381342c3a7454ff4f2cb337d [797 wbond**20100407005823 Fixed ticket #312 - added fORMValidation::addRequiredRule() ] hash: 0000002580-53f60391c750e4e9d2200b59b8d4b589c197d71914393438a54903763e4c0381 [798 wbond**20100409052707 Fixed fSchema to properly return a list of databases for MSSQL servers ] hash: 0000000473-7dabbce6a2e4289b7bf111fadcaf81f53640db5f383984db2e745e9cef03a5ea [799 wbond**20100409052928 Fixed fFilesystem::translateToWebPath() to properly convert Windows \ directory separators to / for URLs ] hash: 0000000405-2638db202c198c8b0b775adbf3e8390c0a65f3953e493dfd4134a4ba33217a55 [800 wbond**20100409053305 Updated fSchema::getDatabases() to work with Oracle ] hash: 0000000352-0752a77790a5467190488cc25ce6ff0be777607d1b67723ca812f91bd555f4d7 [801 wbond**20100409174035 Fixed fImage::resize() to allow numeric string dimensions instead of just integers ] hash: 0000000723-0edd3bc77cb7873aae4b7b2a85d16923032da69c22c5c057cc57aae4c2385584 [802 wbond**20100409175105 Fixed ticket #422 - fixed fRecordSet::count() when running on Windows and using the DBLib driver to connect to an MSSQL server ] hash: 0000000737-f23293f23ca9e74052b520e516450ded8e838d8373c5a43d9a5b092e50cf9a4c [803 wbond**20100414011332 Fixed tickets #414 and #423 - added IBM DB2 support and fixed recursive relationships when calling fRecordSet::build() ] hash: 0000096304-c95d960492093d131a5c6a314a8968a8dabec1af560f290c307d2726ede73f48 [804 wbond**20100414012235 Fixed ticket #425 - changed fSchema to work with PostgreSQL 8.1 ] hash: 0000000413-1ff13df008abf624e12bf3f9937179b1a98483607ec7e04654baac87db16fa3c [805 wbond**20100414012729 Fixed ticket #424 - fFile::rename() was fixed to not delete the file when renaming to the same name ] hash: 0000001305-c210fc9735ee8db4bf407b226abb87e5bbdf511c07caf291049f54dacb024883 [806 wbond**20100414014715 Fixed scientific notation support for decimal numbers in fNumber ] hash: 0000000938-c8cfa89f0d8e232cd42dbafd06beb55b8dfef0eeca2f960bc243e53cb9865c33 [807 wbond**20100420173157 Fixed ticket #416 - added the class fSMTP and support for sending via SMTP by passing an fSMTP object to fEmail::send() ] hash: 0000029857-59c39daeff5052e3a2dbf47789c4145cc8c0100a5934a1bcee06358a5b9e30c5 [808 wbond**20100421021200 Fixed a bug in fSMTP where `STARTTLS` would not be triggered if it was last in the SMTP server's list of supported extensions ] hash: 0000002585-99bd1d1b2c7a0123950b6de744d605a1d7c26b1ed83ac8dc0071cfebb4a74f99 [809 wbond**20100422042549 Fixed ticket #428 - changed fORM to allow wildcard active record methods for all classes ] hash: 0000000510-2843c67e7007f29edec6f7f3f456d7d5709adcfafdbe7e50f8e2ce77793a3c26 [810 wbond**20100423190529 Fixed ticket #426 - fTemplating now properly handles relative paths for place() calls ] hash: 0000000788-59d698f881112bda6fe7bb80523bc121cff2ee6a6c59cb1b1af16d0648dbc241 [811 wbond**20100423190954 Fixed ticket #429 - error messages in fORMDatabase::retrieve() have been fixed to use correct sprintf() placeholders ] hash: 0000000728-31c7c2daf47a0837bc4b42e9c0dbdc96e22346a6952c5beba344fd4abbb0720c [812 wbond**20100423191651 Fixed ticket #430 - fImage::isImageCompatible() now properly detects certain JPG files created with Photoshop ] hash: 0000001097-0c8a04270b7aa394cf9ccce6fb41605451bfdfbe340995f9c0f3a737f3775f07 [813 wbond**20100426165157 Fixed a bug with fSMTP connecting to some SMTP servers ] hash: 0000000565-aeb3ccdad6f0ce922130141b6ce89dcaed0137099d0876c0b3fb9fe7124ee527 [814 wbond**20100426173458 Added the static method fEmail::unindentExpand() ] hash: 0000001917-a2fdb5c34a94e70494c627c42259bd95edd6aa61472d161fdc6550b14a8dc20b [815 wbond**20100428164626 Fixed the name of the new fEmail::unindentExpand() method, was just `unindent()` ] hash: 0000000406-0fa26acf714c537bd5bb49ef165fdd2d66fdfe0ff2fcf16c3444fa68e2e7e6df [816 wbond**20100428165414 Fixed ticket #432 - fORMFile now uses DIRECTORY_SEPARATOR with the temp directory instead of a hard-coded / ] hash: 0000002798-0a6dc24e01752dc398ddb2c0b3b2427b49acbdf46b58eedc099d7fca53303c50 [817 wbond**20100505173939 Added a new class fMailbox, tweaked fEmail to return message id when sending, fixed a small bug in the fEmail regexes ] hash: 0000085445-2b15e365125be4a2a464524f700ae39f53711d848adcfd9aa6ae733933e95c5e [818 wbond**20100505192733 Added the missing fMailbox::enableDebugging() ] hash: 0000000855-7810b0d01587abcefceb203c6bfe0dcb06e38c04c9d7993b54bc1c9ed06ee95f [819 wbond**20100506180039 Fixed ticket #427 - associate methods for *-to-many relationships now accept a single fActiveRecord object ] hash: 0000005441-a1b552bedce51bf7fbf7490f0a3e76412d6bd0f6eef9b827aea141c85fdd7219 [820 wbond**20100506181216 Fixed the table-mapped SQLite database configuration for fORMRelated ] hash: 0000000747-17806aa5c552efbde78146da90111a630fc678f340d754a369f4d2d75b897dc0 [821 wbond**20100511033131 Fixed ticket #434 - changed fORMFile to allow for multiple ordering columns per class ] hash: 0000025411-a643c03690280de0100682bff14cb12400359cada5eb4f6166c1f5a851aae8cc [822 wbond**20100511033501 Fixed ticket #436 - fORMFile::upload() will no longer cause a method called on a non-object error in relation to the upload directory not being defined ] hash: 0000000752-fc19099a5c7e07968933dba6e481f9af903ab3817396f0c5c7a39e817b204e50 [823 wbond**20100511034427 Fixed ticket #435 - added fFile::getExtension() ] hash: 0000000453-dad2d03cdff94faf006b1fb607dd2da6046950c976ea46b90f572fe6a9e5dcb9 [824 wbond**20100511053452 Added some missing static method callback constants to fMailbox ] hash: 0000000438-415e38079f5407eb72a91e9de898954f623e3034e1ad75ecb0f735510ba13c2e [825 wbond**20100511053608 Fixed ticket #370 - added named templates to fTemplating via the static methods fTemplating::create() and fTemplating::retrieve() ] hash: 0000001722-e671756fa2a6cf108c20aec5630a26666f8bfc3fffa1dace38a641219235a0f1 [826 wbond**20100520020940 Fixed ticket #443 - Updated fHTML::encode() and fHTML::prepare() to handle arrays of strings ] hash: 0000002316-231ddd96542e44990787ffb1489b027f1b52216a576830012849143bd08491c1 [827 wbond**20100520022413 Fixed ticket #438 - added the `$gzip` parameter to fBuffer::start() ] hash: 0000001017-eb9d9671a311733bb048af5989f4ce826d9f5879bf7542d5ee2c449da2841a14 [828 wbond**20100520191944 Fixed the fValidationTest suite to use a domain literal for IPs in email addresses ] hash: 0000000256-32e5c02a835d0b6d3af1020f25f62ef5eb32370809924a6309c67405ce25dc38 [829 wbond**20100520192710 Fixed ticket #431 - added fUTF8::trim(), fUTF8::ltrim() and fUTF8::rtrim() ] hash: 0000005005-ad85ad4fd4f992d270564eb4c3c7f4d3b58357922adb415dc4f44a35e6601568 [830 wbond**20100520193941 Fixed ticket #438 - added a check to ensure the zlib extension is installed in gzipped buffering is requested ] hash: 0000000585-bed03fad4b648721691983dd6673745931f36350947c10422b2dfb849c2c0d00 [831 wbond**20100520194328 Added fTemplating::encode() ] hash: 0000000725-f050a48bd997e6db1a767cf798d7967910187a81ab1d058d1cc2a44bc7788910 [832 wbond**20100520210109 Fixed ticket #433 - added fRecordSet::split() and fRecordSet::chunk() ] hash: 0000002762-652cb316eb551080269ca673f37b6b612c447a67e51e9b9d00b5a91201dc994d [833 wbond**20100527054122 BackwardsCompatibilityBreak - fActiveRecord::validate() now uses column names as array keys if messages are returned, the `$validation_messages` parameter for the `pre::validate()` and `post::validate()` hooks now requires array keys be column names, fValidation::validate() now uses field names as array keys if messages are returned, fUpload::validate() no longer returns a `$_FILES` array. fValidation::addRequiredFields() no longer accepts one-or-more rules, instead use fValidation::addOneOrMoreRule(). fValidation::addRequiredFields() no longer accepts conditional rules, instead use fValidation::addConditionalRule(). Fixed ticket #226 with fValidation::overrideFieldName(), fValidation::addStringReplacement() and fValidation::addRegexReplacement(). Fixed ticket #145 with fValidation::addRegexRule(). Fixed ticket #298 with fValidation::addFileUploadRule(). Fixed ticket #373 with `$return_messages` param combined with new `$remove_field_names`/`$remote_column_names` params in fValidation::validate() and fORMValidation::validate(). Added fORMValidation::addRegexRule(), fValidationException::removeFieldNames() and lots of new fValidation functionality. Fixed a bug with checking mimetype of text files with fUpload. ] hash: 0000111597-55a70eee4152e4f99ad25c9bbe871f9821bc5f643b0d2ecfbc0cc9525416dede [834 wbond**20100527060021 Fixed a bug with fRequest::getBestAcceptLanguage() returning the second-best language ] hash: 0000000599-566a5e0717d508ca7b0a93206857c082b7a5285102d4b65ae6bfdecf4b5797a6 [835 wbond**20100527060925 Added an implementation of the Porter Stemming Algorithm in fGrammar::stem() ] hash: 0000405343-13a622d186bde157659559e4d3b9a167c6a2600915f71eded39f7cee6262274f [836 wbond**20100529224715 Updated fSession to make sure fSession::enablePersistence() is called after fSession::ignoreSubdomain(), fSession::setLength() and fSession::setPath() ] hash: 0000001289-a670dac0d966f88fea739bf9907d64ab0dbbf6c4a0b075ba59b137f91b68cd94 [837 wbond**20100529230122 Fixed a bug in the API documentation of fORM ] hash: 0000000368-5b5f6d9626cc631baeff6a2bd2abc76e270376e3f63177e06ed4aeb52a60c344 [838 wbond**20100529232757 Fixed some bugs related to ORM validation ] hash: 0000001000-4622b40494f56f43b9170296eac5d19d1b3e4b70bb2283bf6585742174fe0e1c [839 wbond**20100531004442 BackwardsCompatibilityBreak - fUpload no longer accepts uploaded files that start with a `.` unless ::allowDotFiles() is called. Added fUpload::setOptional(). ] hash: 0000003299-6f628468ee38a84ea1986004cca03abfd0434dffc6e95a08c4ae6ce96ef2279b [840 wbond**20100531012345 BackwardsCompatibilityBreak - renamed fUpload::setMaxFilesize() to fUpload::setMaxSize() to be consistent with fFile::getSize() ] hash: 0000005000-ac7ee1fc25ddd5f4680fad3f74b81840e8808a3f4384f6ebbf3b5c780fc44597 [841 wbond**20100531162034 Added the ability to pass an array of replacements to fValidation::addRegexReplacement() and fValidation::addStringReplacement() instead of individual search and replace parameters ] hash: 0000001397-ee28b4c04d13a87cf1b899ec10edccb0e833c78e50056374808550dce178f868 [842 wbond**20100602124907 Completed ticket #451 - changed fTemplating::set() and fTemplating::add() to return the instance for method chaining, added the ability to pass arrays of elements to fTemplating::set() and fTemplating::get() ] hash: 0000004060-8293f70d59e14f5e14d1a15ffed30ac41be5ca4119f9da4417ac2ead696c6cc6 [843 wbond**20100602130121 Fixed a typo in fValidation ] hash: 0000000756-aac58165249d929bf7612c842dc149f537ccab36a32caf5909ccc259ea8e8e47 [844 wbond**20100604170234 Changed fCore::enableExceptionHandling() to only call fException::printMessage() when the destination is not `html` and no callback has been defined, added fCore::configureSMTP() to allow using fSMTP for error and exception emails ] hash: 0000003228-2a2e069254442c43e11b9da317bf4d60e4287579b63265652e8ed2f0ee7f8f5a [845 wbond**20100604171630 Completed ticket #452 - updated fMailbox to handle emails without a `Content-type` header ] hash: 0000000495-b49522d49cac6d76e289a56d86297cc3e6154181dcdf456243707c525bdc6d5c [846 wbond**20100608130651 Completed ticket #454 - fixed various accuracy issues with fActiveRecord::reflect() ] hash: 0000002345-a6dd711c0e415bcf0e958ced3639429e0d63b34f7140bd623afb138040082bd2 [847 wbond**20100609013413 Completed ticket #453 - fixed fGrammar::camelize() to work with human- friendly strings ] hash: 0000002397-c9aba6c7d6ff596699792a9f4e5b0fb3bcbbe3958957513b2dbe23f2739c8eb7 [848 wbond**20100609014125 Removed all `e` flags for preg_replace() and all calls to create_function() as a first step towards compatibility with Facebook's HipHop for PHP ] hash: 0000007076-f26bda736a208fae4667bad951a4a0490702a7d3d8c1e9754af4602345e3d288 [849 wbond**20100609172856 Added the `$remove_zero_fraction` parameter to fMoney::format() and fORMMoney::prepareMoneyColumn() ] hash: 0000003378-303851ce786d386da37f6ee0128608d17e901534474486f8affe1f2a5f40f268 [850 wbond**20100609193019 Updated fRequest::get() and fRequest::set() to handle array-syntax fields, tweaked fValidation to handling creating field names for array-syntax fields ] hash: 0000006147-d1579cd845bd56e0f4fa9a820c0efbc01718d9b73f77712a2c1170cd73261191 [851 wbond**20100623173544 Increased compatibility of fMailbox with various IMAP and POP3 servers, fixed fEmail to include recipient names on Windows when using fSMTP, hacked around a bug in PHP 5.3 on Windows that would throw warnings in fMailbox and fSMTP ] hash: 0000033826-2e7136dc1b2fe89df4396d4898d0a633a3fbbd519d89b7e26d22566e72574c53 [852 wbond**20100623174903 Completed ticket #457 - fixed a bug when using custom camelCase to underscore_notation rules ] hash: 0000000559-f5211bb39e6b2d1b44b5f76b4aca83430c4910b544fc37c61fb01c8dadd79dbd [853 wbond**20100623180405 Add a missing @changes documentation tag to fGrammar ] hash: 0000000258-5c0571c4e7d78260eaf37bd771228f69d3244c78dc55c2455f15e9246108dcb6 [854 wbond**20100623181958 BackwardsCompatibilityBreak - related table populate action now use the underscore_notation version of the class name instead of the related table name, allowing for related tables in non-standard schemas, completed ticket #458 ] hash: 0000001439-92acc7594997a76febfcac216296eb2cdd0e200afe1e9b46b33c0496e3b70008 [855 wbond**20100625042808 Completed ticket #460 - enhanced all of the add fields methods in fValidation to accept either one field per parameter, or an array of fields ] hash: 0000003939-9b806ca37a581f99ffff52b3e93a703897e1e9bdf156029814a4fbda80e0e52d [856 wbond**20100630172535 Completed ticket #462 - fRequest::set() now works for `PUT` requests ] hash: 0000000387-2f001a7d28138209250498444f0621bf0416335ed785e5f595953a650e3fc6a6 [857 wbond**20100630172713 Fixed a typo/bug in fRecordSet::reduce() ] hash: 0000000874-bb5e5ebbbc4109164c1db5a31e38aa2be3faf03e0a5af4846fbe90b264b0851b [858 wbond**20100630173432 Completed ticket #461 - fixed fORMDatabase::parseSearchTerms() to work with non-ascii words ] hash: 0000000514-65512ad861022950c83fb80a60cb893e37b7f31c12bee5ab53d65035feb30f31 [859 wbond**20100705173156 Completed ticket #463 - fixed a bug in fTimestamp::__construct() with specifying a timezone other than the default for a relative time string such as "now" or "+2 hours" ] hash: 0000003548-ce3067414755cf335de3f4373f7ad450891bc01971aad0dec7de62819424f0e2 [860 wbond**20100705183458 Completed ticket #464 - fixed a bug with fActiveRecord::store() and non-primary key auto-incrementing columns ] hash: 0000001327-cc4d60d616090015bc0a0f2f8176191cab9b7b0cc1118ac6c78f60e7aa9c443e [861 wbond**20100705185106 Fixed color highlighting on test runner ] hash: 0000000963-e43574a51ee153441b21dd3ff509cb1404849b17a3f42a2124ca7dcc39b659ab [862 wbond**20100705195734 Added fCore::startErrorCapture() and fCore::stopErrorCapture() ] hash: 0000006320-c97652c8eb53aca16717c8e431b9d47c80f927f79f6c2ddd13720ea9f3148ab9 [863 wbond**20100708143534 Fixed the related table populate action in fORMRelated to use the plural underscore_notation version of the related class name ] hash: 0000000592-c11e1bb5b88848a908782624f16716e3f1d5251371806d4545e616e4130fe5a4 [864 wbond**20100709212415 Fixed a bug with fTemplating and placing absolute file paths on Windows ] hash: 0000000471-fd9951538b390722e3af7038a74bddea1be3c47b73680ba3592584b0b4567665 [865 wbond**20100715032847 Completed ticket #465 - fixed a typo in the fNoRemainingException documentation ] hash: 0000000641-910cab798957ed8a3487840685a1a16e9c2b1a4f32a07066680325c97f47a553 [866 wbond**20100715033524 Completed ticket #466 - fixed documentation for fORM::tablize() ] hash: 0000000615-20676e893454ae1f8bc300e6fa75a5ff2dec7f0c257c8ad5c2e567778cb04f88 [867 wbond**20100715035712 InternalBackwardsCompatibilityBreak - Changed the structure of the array returned from fSQLTranslation::translate() to include a number plus : before the original SQL in the array keys. Fixed a bug with running multiple identical SQL statements containing literal strings through fDatabase::translatedQuery(). ] hash: 0000003037-8e0643f13e3e46dd97c17cef19e5475e9c70a37fb94f505fe40ef6951c73deb2 [868 wbond**20100715055345 Added the methods fTemplating::delete() and fTemplating::remove() ] hash: 0000003476-efc66446a7364f4e7d7b58b593f2acb5ec79448d7b6ee60159f5d2b1c0ee4348 [869 wbond**20100721174851 Completed ticket #471 - fixed fImage::determineProcessor() to find exec() when spaces are included in the disabled_functions ini setting ] hash: 0000000650-ca52741cd96e8230b2e4a0182114eeb50c4a8f3f1cac10d38f7d69a5015b67b1 [870 wbond**20100721175616 Completed ticket #472 - fixed a typo in fMailbox when handling messages without a content-type header ] hash: 0000000386-0586a4160708777a781b48948208388ab1e4e38018e47b9f05778fef8e317bd0 [871 wbond**20100721181513 Completed ticket #470 - updated fORMOrdering::configureOrderingColumn() to make sure the column supports negative values, fixed a documentation bug in fSchema ] hash: 0000002001-694cadf34ea832ee7a1c85cfca296a3a7deeefb14307352d59f542723461c918 [872 wbond**20100722043024 Completed ticket #473 - fixed fActiveRecord so that has and count actions on recursive one-to-many relationships work properly ] hash: 0000010326-6e2269a3113d97bf94d28f0612d871a838c040f86de1ed568f1f9120cd4c829b [873 wbond**20100726015015 Fixed a bug with SQL Server tests and recursive relationships ] hash: 0000000263-ae6478db05af60ca47d6bccedccee92586a49ab0b1e5c45f7c272b91e2df3972 [874 wbond**20100726044845 Fixed some more issues with consistent operations on recursive relationships across database engines ] hash: 0000001705-208c0685acfb4e49130b8156ad9f09340636bac18116a3b451a93ab870e22660 [875 wbond**20100726060850 Completed ticket #477 and #478 - fixed fORMValidation::hasValue() to properly detect zero-value floats, made fORMValidation::hasValue() internal public ] hash: 0000000891-d9cd974d214854db1e5ae72235aa969930048721983276dc7e35c3cb68c72ee4 [876 wbond**20100726061127 Completed ticket #475 - updated fTemplating::place() to ignore URL query strings when detecting an element type ] hash: 0000002109-2e8fb7e419269a2f7160b1d2648238ed7ba097e1c43461f20bcaf14cf8456cf8 [877 wbond**20100730031257 Completed ticket #480 - added a missing parameter to an fProgrammerException in fCryptography::randomString() ] hash: 0000002669-ed590d613cadabefa9710e974e4c40069eb31ae49872c9abc07ec6362b27efd0 [878 wbond**20100730031747 Missed a join() call when fixing ticket #480 ] hash: 0000000249-5b89e6fc69af211a0a3927ce7693d183ca4009c634633826fc114fb9b5aac600 [879 wbond**20100731061845 BackwardsCompatibilityBreak - removed support for ODBC from fDatabase, fResult, fStatement and fUnbufferedResult. Added support for the `pdo_ibm` extension to fDatabase and related classes. Fixed fStatement to properly handle UTF-8 with the `pdo_dblib` extension. ] hash: 0000032881-493c01dffbf6af08dbf7499ee58ba18cf802dccedf2c2e604fd7e3a5f2ed9ecb [880 wbond**20100801010502 Fixed a bug with the remote test runner and JSON output ] hash: 0000000197-8506ff44d9e400d3b151a47538784576139ed71857cd38cc4f9666f9058534a4 [881 wbond**20100807183015 InternalBackwardsCompatibilityBreak - changed fORM::parseMethod() to not underscorize the subject of the method, which also completes ticket #483. Updated fGrammar::singularize() and fGrammar::pluralize() to be able to handle underscore_CamelCase. ] hash: 0000019642-af73f7dbf402d8299a5d004ba27f982e062c434423d6cf9c2ea96dbd150558b9 [882 wbond**20100809135529 Completed ticket #484 - Added the `$fix_entities_encoding` parameter to fXML::__construct() ] hash: 0000006716-5dec2f92b85d49d4031b7f69790c09ccf6774b9b7491840b82c4e66065201412 [883 wbond**20100810035809 Added the `$types` and `$regex` parameters to fCore::startErrorCapture() and the `$regex` parameter to fCore::stopErrorCapture(). Updated various classes to use fCore::startErrorCapture()/fCore::stopErrorCapture() instead of error_reporting(). ] hash: 0000013182-10c4e9f9a8439a274dfadcedac4fc7a1e89a41193057ee919d9fc72af47b2292 [884 wbond**20100810050644 Completed ticket #488 - fixed fDirectory::scanRecursive() to not add duplicate entries for certain nested directory structures ] hash: 0000005473-da0aa08ed7b083a59c227db1173f0654a55ee58f7df8604883b1f8de5e8d494d [885 wbond**20100810173411 Completed ticket #489 - fixed fGrammar::pluralize() to handle the word video properly ] hash: 0000001191-1973a2edb008b1eebb3d41232c3de932bedb78fcc46fc11926858fd575cec2bd [886 wbond**20100810184335 BackwardsCompatibilityBreak - removed fDatabase::enableSlowQueryWarnings(), added ability to replicate via fDatabase::registerHookCallback() ] hash: 0000006457-592edf8a780111cfe0134ea1b3a5ddcdfcf1495fbca7e2e3211d5c9f1c081eee [887 wbond**20100812192659 Completed ticket #490 - fixed fTemplating to initialize the elements array ] hash: 0000000173-5cb1466ae4131b7d8aadc905f2b36122a6cbdde5b5c8cc9b0589bf6defc0b7fa [888 wbond**20100812192911 The unsaved version of fTemplating with the @changes tag for the last commit ] hash: 0000000303-7ff1d2037925187cf630c44d587c9dd77ada9f1220ab2c6b81da109bec96da30 [889 wbond**20100818020850 Fixed a bug with fCore::backtrace() triggering notices when an argument is not UTF-8 ] hash: 0000000729-95dfbd5de859cbe19b000642faf056f52e26d1361b8a740e4c657940bd80caac [890 wbond**20100818021705 Fixed fDatabase when using the pgsql, mssql and mysql extensions to force a new connection instead of reusing an existing one ] hash: 0000001080-a2218863eae42ae55c32c070ee6a200d554bf15a78feba8cd225994290ec963f [891 wbond**20100818045312 Completed ticket #491 - enhanced fORMFile::configureColumnInheritance() to ensure both columns specified have been set up as file upload columns ] hash: 0000000874-5a597f868b3f8301f3ae1b545c9869fe242705a4421acf3f9ea5fa40e6794432 [892 wbond**20100821201133 Fixed a bug where fSession::enablePersistence() would not work properly if called after another method that regenerated the session ID ] hash: 0000000614-222010dcc9cc39b5a2ee3ca11887a722d2d60d73d8ba248a7fd98edce350177b [893 wbond**20100825034354 Fixed fSchema to be able to handle table names that require identifier quoting ] hash: 0000000690-a86232c447fdd13f9028ebf004ae7559163ab7ffa19bb3ecece2af75e0deecdc [894 wbond**20100825035119 Completed ticket #494 - fixed fSession to work with existing sessions ] hash: 0000000724-af690b854d9db061c31177c3d2451b1baf950c1c14455ae938e8261c83712694 [895 wbond**20100828040716 Changed fStatement to be more aggressive about saving memory with the mysqli extension, fixed fUnbufferedResult to work with mysqli prepared statements ] hash: 0000001728-45b604b9b67eb70f921cc6d1224675d56e7b16927858072cc65855b6c7953707 [896 wbond**20100830135111 Completed ticket #496 - fixed fValidation::addRegexRule() to be able to handle multiple rules per field ] hash: 0000003646-904e5b6999c84ab136a402fe242da487d0413119d308d30baef21d13e9ba0578 [897 wbond**20100831051226 Fixed the fSQLTranslation tests to not error out when encountering clock shifts ] hash: 0000000698-775e5052fa36a1e80894ea25909ef41c0193d65211e3ee99e691b9548697ff14 [898 wbond**20100831052645 Added fTemplating::enableMinification(), fTemplating::enablePHPShortTags(), the ability to be able to place child fTemplating objects via a new magic element `__main__` and the `$main_element` parameter for fTemplating::__construct() ] hash: 0000070624-b70e918dd756b3fbd202b6c197cb9b3c9f92327c99c2e20dc8fbbadc3f785399 [899 wbond**20100902194923 Added a check to fEmail to prevent permissions warnings when getting the FQDN on Windows machines ] hash: 0000000913-823cfd77c75f5785ee7e8ccd438cc5284f173da9e0af92d108f6181571ace596 [900 wbond**20100907050036 Rewrote the code to get the server's FQDN for fEmail and fSMTP ] hash: 0000006032-5bd0838dff1cc5664f321a80b7581e19259e4a7e0f631bc066488d2071ddbd07 [901 wbond**20100907050345 Completed ticket #499 - fixed a typo in fMailbox ] hash: 0000000403-52ffd2938ede21b974310f2e6b180a66d321cc13f98b90d3d3314b2fe7c16fef [902 wbond**20100907051500 Completed ticket #497 - added the `'pre::replicate()'`, `'post::replicate()'` and `'cloned::replicate()'` hooks to fActiveRecord ] hash: 0000001960-fa7a47e7d1f90347c8bae79a42e3dfd79a02b2469c728b603b6c84a03d02bf88 [903 wbond**20100912031716 Fixed bugs with fEmail and fSMTP and lines starting with a `.` ] hash: 0000002323-b491fc59eacde0ae2aaa1ba82265eeff2f439c2d478021f5af796502f9df1460 [904 wbond**20100912053122 BackwardsCompatibilityBreak - fSession::add(), fSession::delete(), fSession::get(), fSession::set(), fTemplating::add(), fTemplating::delete(), fTemplating::get(), fTemplating::set() all now intepret `[` and `]` as array syntax and thus these can not be used in key or element names. fTemplating::remove() was renamed to fTemplating::filter(). Added the `$beginning` parameter to fSession::add() and fTemplating::add(). Added the methods fSession::remove() and fTemplating::remove(). ] hash: 0000027139-6debf11dcb8bd5c069608b63438f40b005fa106ce8157723b8a4f0adaa4c402b [905 wbond**20100912060229 Added documentation about the `[sub-key]` syntax supported in fSession, fRequest and fTemplating - added `[sub-key]` syntax support to fRequest::check() ] hash: 0000007385-55ed53139fdd8935ca4653fc538467f771f25de87d23270ed14852421cf84c70 [906 wbond**20100912060453 Completed ticket #501 - fixed a bug with minifying JS regex literals that occur after a reserved word ] hash: 0000000761-89cd12ffffd25dfe46393d93cb9338c6b62d8abda8165ab322cce404974c7386 [907 wbond**20100912063138 Completed ticket #500 - fixed fImage to not generate multiple files when saving a JPG from an animated GIF or a TIF with a thumbnail ] hash: 0000001267-81efa8233997677e977487f8cef437a2f78b7801ad4eec3658a75ada443e6985 [908 wbond**20100913042239 Fixed another bug with minifying JS regex literals in fTemplating ] hash: 0000001127-5838ab80a617bada9a78aff0d14215ad9bd97d72154318d6cc1e2c27150d406d [909 wbond**20100919025634 Completed ticket #504 - fixed fMailbox to be able to handle messages with non-text/non-html multipart parts that don't have a `Content- disposition` header ] hash: 0000001620-281f05d6dacdf3c59a8422f7b8fa4bd2b3a182d02eb1f86ee890d845be5cb0ed [910 wbond**20100919030237 Completed ticket #506 - fixed fORMFile column inheritance to properly handle non-images and inheriting into image upload columns ] hash: 0000000703-98683da2f8c9d777d776e1c23526d6e09c31ff25fcbb52898a963163ff158b82 [911 wbond**20100919160858 BackwardsCompatibilityBreak - changed fTemplating::delete() to return the value(s) of the element(s) deleted instead of the fTemplating instance. Completed ticket #507 - changed fSession::delete() to return the value of the key that was deleted ] hash: 0000005825-440099314052042969e5282c0a59b2161ba9c911a1e143e91f5828029bd54058 [912 wbond**20100919182916 Completed ticket #505 - added the `$max_length` parameter to fURL::makeFriendly() ] hash: 0000002895-7211dd78d3e6e77e0b9ab8ea650a4a0c87bbd2034b0ec8100eb6a9d0498e045b [913 wbond**20100920002017 Completed ticket #503 - enhanced fORMSchema exception messages ] hash: 0000001208-39fd8dc6f7fae415d79616f01d8fb556bbb787ec93d2ecaff57fab48c97094f3 [914 wbond**20100920122424 Fixed a bug in fMailbox::parseMessage() that could cause HTML alternate content to be included in the `inline` content array instead of the `html` element ] hash: 0000000706-72626b8f91a4bd991143fc92119477c2368e577a7acb2d1b4e049fb9f334163a [915 wbond**20100928173729 BackwardsCompatibilityBreak - Restructured individual record access, the iterator interface and callback parameters for fRecordSet. Removed the method fRecordSet::fetchRecord() - functionality can be replicated via the new method fRecordSet::getRecord(). Manual iteration via fRecordSet::current(), fRecordSet::key(), fRecordSet::next(), fRecordSet::rewind() and fRecordSet::valid() (the Iterator interface) was removed and should be replaced by retrieving an ArrayIterator from the new method fRecordSet::getIterator(). Manual iteration can be performed on the ArrayIterator object. The `$pointer` parameter was replaced with `$method_name` for callbacks registered via fORM::registerRecordSetMethod(). Added the methods fRecordSet::getLimit(), fRecordSet::getPage(), fRecordSet::getPages() for easier pagination. Added the ArrayAccess interface to fRecordSet, allowing for array-style dereferencing such as `$record_set[0]`. The methods fRecordSet::offsetExists(), fRecordSet::offsetGet(), fRecordSet::offsetSet() and fRecordSet::offsetUnset() we added to support this interface. ] hash: 0000014471-0ce5000149ae72c0b590457b27d373dad91da18243c0e1e985cea46774510c32 [916 wbond**20100928183113 Completed ticket #393 - added the method fRecordSet::tally() ] hash: 0000012604-f9bf8b0926f119652427b72fe41d3ed46ffca2eef8d5fc4e66d097fbf1eb65ac [917 wbond**20101004032407 BackwardsCompatibilityBreak - Changed the array structure for child record in validation messages. Instead of all main record and child record messages being in a single array with keys in the form of `child_table[0]::column`, there is now a `child_table[0]` key that points to an array containing a `name` key and an `errors` key. The value for `name` is the name of the child record, e.g. `Child Record #1`. The value for `errors` is an array of validation messages with the keys being the column names and the values being the validation messages. Thus: array( 'first_name' => 'First Name: Please enter a value', 'user_permissions[0]::resource' => 'Resource: Please enter a value' ) would now be represented as: array( 'first_name' => 'First Name: Please enter a value', 'user_permissions[0]' => array( 'name' => 'User Permission #1', 'errors' => array( 'resource' => 'Resource: Please enter a value' ) ) ) Methods registered to the `pre::validate()` and `post::validate()` hooks will need to handle this new array structure. Code that calls `->validate(TRUE)` on an fActiveRecord object will need to handle this new array structure. fORMValidation::addStringReplacement(), fORMValidation::addRegexReplacement() and fORMValidation::setMessageOrder() will now only affect the specified class specified and will not affect messages from child records. Fixed a couple of bugs related to recent changes to the fRecordSet API. Added the method fORMRelated::registerValidationNameMethod() to create custom related record names for child record validation. ] hash: 0000018440-c613e20b536c9a4bc1010eaa7d0a89e4727c4b11b4dbad0448385b20b5f49667 [918 wbond**20101011023113 Completed ticket #513 - fixed a bug with fTemplating improperly minifying `#000000` in CSS ] hash: 0000001219-47e3ab131cc005c2127919423554ef05b85b579360424fa4d5bf8ef011281b76 [919 wbond**20101019170049 Fixed a bug with fImage not properly setting a default colorspace when using ImageMagick ] hash: 0000000477-c9b6f25b945631da84657c36bb448a2432f27e35289da76e7dece963340e54e5 [920 wbond**20101019173807 Completed ticket #514 - fixed a bug with fSchema detecting the default `ON DELETE` clause for MySQL tables ] hash: 0000000503-055025dfd85307becf3b95f19f00cc06e95945c4bf4d2c319493b64809ae23f8 [921 wbond**20101019185012 Completed ticket #509 - fixed fRecordSet to gracefully handle fuzzy searches with no values ] hash: 0000001030-a5310d9d7a045323889e0b2d2bfe26f8d762168506104e944ff688d8776edeaa [922 wbond**20101020134542 Completed ticket #517 - fORMRelated::getPrimaryKeys() no longer throws SQL exceptions ] hash: 0000001212-d5f6e4f013ca7394687b342ef86d3b52146a35ab2e6e0a035a41e4c74fa419bc [923 wbond**20101101142522 Fixed fUTF8::upper() to handle the letter i in certain cases ] hash: 0000022886-b0dd7665704480146e469736f290d32012bb82bb51ab47be5c0f43d413dc6561 [924 wbond**20101104173354 Fixed some errors in class documentation ] hash: 0000000832-20d3399dd7c49296d3c32888095526c12d33505b07af9e3c0a08e3abcd561793 [925 wbond**20101104182036 Fixed an issue with fDatabase not properly detecting INSERT statements in MySQL that omit the INTO keyword ] hash: 0000000638-3a026b95da1544470d4f2190e67af4c3dd2427155f960ab05986177ae26436ea [926 wbond**20101104183813 Completed ticket #518 - changed fUTF8 to use an iconv constant instead of scanning phpinfo for the information ] hash: 0000000674-24c35ce4a71976352fbee0d59fa55abc20151dc4bbb9d191be945d73bc759110 [927 wbond**20101106124652 Updated fCryptography inline documentation about symmetric-key encryption to explicitly state block and key sizes, added base64 type to fCryptography::randomString() ] hash: 0000001733-fc80323c4cd0fa97000eb30ca718f1230160fd8959075ef93753f85249048902 [928 wbond**20101112033029 Completed ticket #524 - changed the ORM to support namespaced fActiveRecord classes when using related record methods in fActiveRecord and fRecordSet, and when creating default mappings between classes and table and classes and record names ] hash: 0000002721-de57c52500ca4844c9423f3c9b53d905b612531f78e0e18760bc3b2aa1d7910c [929 wbond**20101125030225 Completed ticket #524 - added fORM::getRelatedClass() to handle automatically prefixing a related class name with the namespace of the primary class, update fActiveRecord, fRecordSet, fORMRelated and fORMValidation to use it ] hash: 0000004131-9cd6f353f726c5f4a61f9a32a1b3d6fbe289fb22a75f065486f897d77ec4931f [930 wbond**20101125031029 Completed ticket #522 - Fixed a bug with fORMRelated::validate() not properly removing validation messages about a related primary key value not being present yet, if the column and related column names were different ] hash: 0000000841-a28227e753dd70fe399ed75ba64cb71b7456c55e79043441812f94b731c02e50 [931 wbond**20101125031535 Completed ticket #532 - Fixed a bug in fORMDatabase with the fProgrammerException that is thrown when an improperly formatted OR condition is provided ] hash: 0000000730-31708a638c9dff644437263f07973f9eade2e27ed9edd6c4b103ed19000adb47 [932 wbond**20101125065712 Completed ticket #526 - Fixed fMailbox::parseMessage() to properly handle a header format edge case and properly set the `text` and `html` keys even when the email has an explicit `Content-disposition: inline` header ] hash: 0000003202-a03be2a1ce614a429084153e59b34754e8d183aa5e698585043aaa3dee18e0dc [933 wbond**20101127211324 Completed tickets #525 and #534 - added fUpload::setImageDimensions() and fUpload::setImageRatio(), fixed the fUpload::filter callback constant ] hash: 0000006568-309fb2e026eb593b90acd3e97d838301173494deb3610bf817681dfa30b93b6d [934 wbond**20101127213944 BackwardsCompatibilityBreak - changed the parameter order in ::crop() from `$crop_from_x`, `$crop_from_y`, `$new_width`, `$new_height` to `$new_width`, `$new_height`, `$crop_from_x`, `$crop_from_y`. Completed ticket #528 - added `$horizontal_position` and `$vertical_position` parameters to ::cropToRatio(). ] hash: 0000005492-318ff81e670905bf5b0818f99d03d75775d2cde1df144366a27b412fc51c2c0f [935 wbond**20101128015456 Fixed the fImage tests to use the new fImage::crop() parameter order ] hash: 0000000226-845bee44f21e3891dc759c53c94944c5bc4c1f4e097bda4c39ad53780f320ec9 [936 wbond**20101128015713 Completed ticket #535 - added calls to clearstatcache() to fFile::append(), fFile::write() and fFilesystem::rollback() to prevent cached file info being returned by fFile::getMTime() and fFile::getSize() ] hash: 0000001133-f2986ef9d706ce0d9bf9318614795fee349de6d7eeb4bac1a7c4d5d4f72094c1 [937 wbond**20101128022546 Completed ticket #527 - added links to the detailed documentation for the various parameters passed to ORM hook callbacks ] hash: 0000001697-69f16b36ea236a49937c0898ae7d8b9cd58345565c0cef6fdf7456b9e960e5bc [938 wbond**20101128062438 Completed ticket #474 - added column comments to the information returned by fSchema::getColumnInfo() ] hash: 0000031539-cd14a8cbfa2aa904ac6b8cdb6d9af552e07f166f0675b35f296b441891699cba [939 wbond**20101128065516 Fixed the list of valid elements for fSchema::getColumnInfo() ] hash: 0000000734-4b746e94961018f693f48c18248c91d4aba7fd0a5bce3eae686ba841d009d0f1 [940 wbond**20101129065433 Completed ticket #415 - added fImage::rotate(), added code to try and prevent fatal errors from occurring due to hitting the memory limit when using GD with fImage ] hash: 0000007619-dffcc164617e2dd48e5e27de24c67bac81f4b8f60447c346d202d03de1924634 [941 wbond**20101130025644 Fixed the fSQLTranslation tests to include the new comment element from fSchema ] hash: 0000001345-aa0b189a329736292d1a89c12aea4dd03b9f494b22ad9508279e67e77984f41a [942 wbond**20101130030114 BackwardsCompatibilityBreak - changed fActiveRecord column set methods to treat strings of all whitespace the same as empty string and convert them to `NULL` - completed ticket #413 ] hash: 0000000760-72376e29fc5dc32bdf2d780b6448577891caa8bd1ad103ad7ba1e939a5caa705 [943 wbond**20101201034004 BackwardsCompatibilityBreak - fRequest::get() now strips out low bytes characters if no `$cast_to`, or if a `string` or `array` `$cast_to` is specified. Using the new `binary` `$cast_to` will leave all bytes intact. Completed ticket #486 - added the `binary` type to fRequest::get(). Completed ticket #533 - fRequest::get() will cast all strings of digits in the range of PHP integer type to such an integer when the `integer` or `int` `$cast_to` is specified. If the integer is beyond the range, a string of the digits will be returned. fRequest::get() can be forced to always return a true integer by passing `integer!`. ] hash: 0000003899-2d16a6a3d14f09027a7c06ed205e1f681da2871f0992c33f0abe19d8fb051d1c [944 wbond**20101201034944 BackwardsCompatibilityBreak - fORMFile::configureImageUploadColumn() no longer accepts the optional `$image_type` as the fourth parameter, instead fORMFile::addFImageMethodCall() must be called with `saveChanges` as the `$method` and the image type as the first parameter - completed ticket #315 ] hash: 0000002420-7372f0c704290607bc15d4d77cc537128b2b546088c6f374f92e2124f755c518 [945 wbond**20101202053224 BackwardsCompatibilityBreak - the `$contents` parameter of fEmail::addAttachment() is now first instead of third. Completed ticket #331 - fEmail::addAttachment() will now accept fFile objects for the `$contents` parameter. Completed ticket #417 - Added the method fEmail::addRelatedFile() to allow for embedded images inside of the HTML body. ] hash: 0000011880-f419cf517678d1cb040d945411e5c2065c8d7e70630c425f69b3f3ab2cf4319b [946 wbond**20101205025252 Completed ticket #541 - fixed fSchema and fDatabase to handle `INSERT OR UPDATE` triggers for auto incrementing values in Oracle. Fixed the detection of dynamic default values for date/time/timestamp column in DB2 and Oracle. ] hash: 0000004278-9ececa2e9021d0ee33ac27bef9beacd86bb1a016417c5e42f72a5a46a60da7ed [947 wbond**20101206185927 Completed ticket #542 - enhanced fDatabase to use extension-specific functions to set the connection encoding since some PHP installs to not fully respect `SET NAMES` ] hash: 0000001066-4c0e6ec9b9a7e8a89ebf2daa644eeef5fac1ed8dd05bc6217c7953652719e511 [948 wbond**20101206190751 Added a fallback to fORMDatabase for parsing search terms when the PCRE engine does not support unicode character properties ] hash: 0000001903-c3bc3deab96037ee1849166683589be81c3c2510f45f93732dcb1f2cf6cae869 [949 wbond**20101206192244 Completed ticket #543 - fixed a bug in fActiveRecord that would cause child records to fail to be saved when the parent was first saved, if the parent record had a non-auto-incrementing primary key ] hash: 0000000322-538288d20a600aec4c7ce2fb1664286d30d2debb386408a67ec2c2ac712bff39 [950 wbond**20110110014907 Completed ticket #553 - fix fRequest to work with 3+ dimensional arrays. Fixed PHP bug #53632 when using fRequest::get() and casting to a float value. Added support for type-cast arrays to fRequest::get(). ] hash: 0000011559-e843f4d3f3d0034002233e32e09ace0c39ae6d12ca35ce8107750d47fc9ca066 [951 wbond**20110110041247 Fixed a bug with creating translated prepared statements ] hash: 0000002176-9fbeac59227168dcd9f85c1bf50640f7d1d5466d3dbc83836f9aa78f0bb85e60 [952 wbond**20110110041651 Fixed a bug with fTemplating not translating PHP short tags inside of HTML attributes ] hash: 0000002093-7768a7e43fc880ec2c25f6e6418d6b17a501907f88b1b8f117dab94c7acbc262 [953 wbond**20110110132303 Completed ticket #554 - fixed fSMTP and fMailbox to work around PHP bug #42682 (http://bugs.php.net/bug.php?id=42682), where stream_select() does not work properly on 64bit machines from PHP 5.2.0 to 5.2.5 ] hash: 0000009543-68779b91033335f35a3a9a5f1792128d493957c45164db54546b0b19b4457c36 [954 wbond**20110111032137 Completed ticket #552 - added `$remove_extension` parameter to fFile::getName() ] hash: 0000001202-411397fb3f178400e0d952747d23a9a53505bb3dedca5305140462f74cd94a0e [955 wbond**20110111032429 Completed ticket #550 - added fDirectory::clear() ] hash: 0000000836-e78b2b11b133f86be50dec9a413e0fd0dea7a8ca103586312b99e953aa77d1a0 [956 wbond**20110111032825 Completed ticket #544 - enhanced fCore::expose() to be able to accept multiple values ] hash: 0000001265-6df6e1412fc83131622b794c2cd71c95754f979ff8e9df7a94563978e799bef0 [957 wbond**20110111051100 Completed ticket #536 - Updated fRecordSet::buildFromSQL() and fRecordSet::buildFromArray() to allow passing the `$limit` and `$page` for the purposes of pagination. Updated fRecordSet::slice() to remember the limit and page when `$remember_original_count`. Enhanced fRecordSet::buildFromSQL() to accept either a SQL string or an array of SQL plus values for the `$sql` and `$non_limited_count_sql` parameters. ] hash: 0000007013-80974fc951e378ccd3e98f7598d55269a2d0e105549948a264aeabc0f1563659 [958 wbond**20110111200035 Updated fDatabase to interpolate `LIMIT` and `OFFSET` values into SQL before translating so that `LIMIT` statements can be translated properly ] hash: 0000000970-e90ef3f23e3a230f442c700cef4ef3aa16fa7b5434ba3d5ea76b11e6ee25127f [959 wbond**20110115030849 Fixed a bug in the fRequestTest class affecting 64 bit machines, updated the email tests to be more robust in handling stray emails ] hash: 0000001900-0bfb31e68617ce5b8cbce88cd231ff771cbdf92717313d9588b3fee68cf8f9d2 [960 wbond**20110119064639 Upgraded fCore::checkOS(), fImage and fEmail to support AIX ] hash: 0000002403-beb3a611b31224f2be2db7185f5029cd9a109ba766ff90c46e2d1d8ccc16930f [961 wbond**20110201194557 Completed ticket #559 - fixed fDatabase::escape() to handle float values that don't have a digit either before or after the decimal point ] hash: 0000001303-bfec90be55e4f4387822a5060fc64ad39ba5a5c7a44bfb887d490f2541c49da1 [962 wbond**20110201194956 Completed ticket #563 - fixed the parameter position of the TTL parameter for the memcache backend with fCache ] hash: 0000001129-cb6c6217ee451fae97d0fe1da09aedbaeef88176c3bf17482bf9df079af94a30 [963 wbond**20110201195509 Completed ticket #561 - fixed fSession::ignoreSubdomain() to use `$_SERVER['HTTP_HOST']` if `$_SERVER['SERVER_NAME']` is not set ] hash: 0000001351-3b07a6997602256bb2e88084af3e55a43db516aa63213b0617b57e21db272a31 [964 wbond**20110202060206 Completed ticket #562 - added fEmail::addCustomHeader() ] hash: 0000004575-815cbd946164f84011be791bcfc29553e7a400d9c4ceeda7af6747002b3f4ed1 [965 wbond**20110202063320 Completed ticket #560 - added the $remove_zero_fraction parameter to fNumber::format() ] hash: 0000002993-1c4cd4d5a2950e08f222594d4a124230ac063145a4820623836fb38acaebe31a [966 wbond**20110202064604 Completed ticket #558 - updated fORM and fORMRelated to use fText (when loaded) for getting column and record names ] hash: 0000001864-ed186d344eb4ded96e47e002629c440d7230e0aa307dcfd078cb0dac0c52a07c [967 wbond**20110204034035 Completed ticket #557 - fixed fRecordSet (fORMDatabase) to automatically add an aggregate function around columns in related tables when a GROUP BY is created in the SQL statement ] hash: 0000003150-7f8a4fe48488e8ac454f12a17bf7e53943ec4093aa8a9f41700c2d34b09c5567 [968 wbond**20110207004214 Completed ticket #565 - fixed fSchema to be more robust in handling SQLite databases, including comments in `CREATE TABLE` statements and `UNIQUE` indexes created after table creation ] hash: 0000006522-eba068612f019908aeb8994273bc02e2eef0ffde98c7b2513f6a2469f63e555a [969 wbond**20110207010132 BackwardsCompatibilityBreak - fRequest::getBestAcceptType() and fRequest::getBestAcceptLanguage() now return either `NULL`, `FALSE` or a string instead of `NULL` or a string, both methods are more robust in handling edge cases. Completed tickets #555 and #556. ] hash: 0000011457-04bc3295f60912844a23b4a6e4d6d1d5e6b75d7e6eae667c988483279f15fd83 [970 wbond**20110225023608 Completed part of ticket #566 - fixed a bug with fEmail not generating properly FQDNs on some Windows machines ] hash: 0000000423-cf4b46c5b5ba14ac74e00bee9bfbf9cb3c225283347734aad531d43bd0c7c051 [971 wbond**20110225032523 Completed ticket #569 - fixed fGrammar to properly handle singularization for words containing the substring `mice` or `lice` ] hash: 0000001807-18f8137a3fb9d402c7dc9561538fd884c5717fb2dcd6be9a36055462878afe7a [972 wbond**20110225035757 Fixed a mistake in the docblock comment from the last commit to fGrammar ] hash: 0000000412-d381ddba8122c0ac5e2b17a560751243e94588687731eb47add4b9407fe18eef [973 wbond**20110225040100 BackwardsCompatibilityBreak - Updated fCore::expose() to not wrap the value in an HTML tag when PHP is being run via the CLI, completed ticket #567 ] hash: 0000004442-de9b706ad1ed461489f32458d73ce82ca7c8f4b2e5f98921fb65ce912464a7f2 [974 wbond**20110302201233 Completed ticket #575 - fixed fURL::redirect() to properly handle relative and unqualified redirects ] hash: 0000002396-98f0df836553f9122570adc65e7f493c28664566b5964a877e5e3bd25fe05f53 [975 wbond**20110304191404 Completed ticket #582 - added a check to fDatabase so mysqli_set_charset() won't be called if it does not exist ] hash: 0000000582-9cc7b272785c53d01c48808124c93afb86ccbf123df4acba9b3c4d9648f2f437 [976 wbond**20110307182108 Completed ticket #583 - fixed fFile detection of BMP images ] hash: 0000000495-a32a3c2eddf70e78dc41e32fd020cc2d3783945e4301509abd83393b32ee32bc [977 wbond**20110307182530 Fixed a bug with fORMValidation generating error messages for many-to- many relationships ] hash: 0000000422-95ee99c2831111e18cdd3aed5f1205d6d50969aa4e293f6eee113e91434c52f6 [978 wbond**20110307182943 Completed ticket #580 - fixed fORMValidation::setMessageOrder() to accept a variable number of parameters properly ] hash: 0000000893-f28661f03f9113afac05bd2e5a728dd03c9619c11d56d806ca265a78dd396e25 [979 wbond**20110320033809 Updated the tests to work with PHPUnit 3.5, added test error message output to the JSON formatted results ] hash: 0000083074-000764d1372b36be8fbc2b502bf9628f1229eb31d66579400e801ee75726ce0c [980 wbond**20110320193025 Removed fSchema tests for functionality that has not been released yet ] hash: 0000000957-7fab7bb3285e5fd13a2a689371666b8b6298cef062d11558a0ca592bb673e6c2 [981 wbond**20110321004905 Completed ticket #591 - updated fImage to throw an exception if the ImageMagick convert program fails, added a check for systems using the GD extension with no memory limit ] hash: 0000004461-1428318f9cdf9670e6365c27ae3a2ffb4e7266e79e1a815a3f92c7329769f4e0 [982 wbond**20110321032134 Completed ticket #591 - fixed a bug in fImage where ImageMagick would not properly modify images that contained a colon in the filename ] hash: 0000020628-da69cf99ca2f953dd565b96acd2bd9d2b54d44e743e5b0e58fa2113a08e1a0c8 [983 wbond**20110321032920 Completed ticket #589 - changed the fDate, fTime and fTimestamp attributes to be protected instead of private ] hash: 0000003658-2c56cf19a871cf471b46bb16ec5b7c082365b096bd2e2d3a39cf1f9409fa12d9 [984 wbond**20110510033529 BackwardsCompatibilityBreak - fSchema::getTables(), fSchema::getColumnInfo(), fSchema::getDatabases(), fSchema::getKeys() and fSchema::getRelationships() now return database, schema, table and column names in lowercase. This may change the behavior of, or break ORM classes for SQLite, MySQL, PostgreSQL or MSSQL databases containing mixed-case identifiers, although such mixed-cased identifiers have never been officially supported. Callbacks registered to the `extracted` hook via fDatabase::registerHookCallback() no longer receive the `$strings` parameter, instead all strings are added into the `$values` parameter. Completed tickets #599 (notice in fUTF8), #597 (UTF-8 character in fUnexpectedException), #596 (detection of implicit commits and other transactional queries), #594 (spelling of occurred), #588 (fStatement NULL handling), #587 (fStatement array of values handling), #529 (fDatabase timeout support). Added fAuthorizationException and fSQLSchemaTranslation. Enhanced tests.php and remote_tests.sh to include more information and enable easier debugging and profiling. ] hash: 0000479731-75472fe3d6e1f529ff94e79b58210fe66f71afce259955fcc7a7a18d51807314 [985 wbond**20110510042921 Completed ticket #586 - fixed fActiveRecord inspect methods to not throw an fProgrammerException if a valid element has a NULL value ] hash: 0000000533-73fc1df9b4721815c9b15ed20cfe91a914d3b1b106be0e150bf9e02bff8d886c [986 wbond**20110510043503 Completed ticket #595 - fixed fORMFile to properly handle the situation when the "existing-" file for a column no longer exists on the filesystem ] hash: 0000000910-2cb59b50b9ba74fa0784dc4f3f870d5f4ee8f6c311f2931826970ae73457db78 [987 wbond**20110510043751 Completed ticket #604 - fixed fAuthorization::checkIP() to not trigger a notice when `$_SERVER['REMOTE_ADDR']` is not set ] hash: 0000000764-9bc09b584a1245641e4f64349da436e0dadc3b4afed985e6941181213353e585 [988 wbond**20110510044112 Completed ticket #605 - fixed fORMDatabase::addWhereClause() to no longer generate invalid SQL ] hash: 0000000362-b460952e194e5dac95f0fd8084fe74918cc9dab9511536dca3cdcc95710462ba [989 wbond**20110510045631 Added `0` to the memcache delete method call in fCache since otherwise the method triggers notices on some installs ] hash: 0000000480-6557a49bd73a636f5965dfef05f7309599a0b7e97d3ca836b3735afc1c6e8b82 [990 wbond**20110510055036 BackwardsCompatibilityBreak - fActiveRecord::reflect() now returns an associative array instead of a string ] hash: 0000000919-1b5c0ba4ab58bba52e7b7318b7ebc24ebd3bafe44ff36d0f4b9b315c4d0ed4bc [991 wbond**20110518025733 Completed ticket #609 - fixed fEmail::addAttachment() and fEmail::addRelatedFile() to properly handle duplicate filenames ] hash: 0000000616-eb403251f969a545a0e50af314ad9c12a29140a54757f256db1d818c836f515e [992 wbond**20110518030103 Completed ticket #610 - fixed fORMMoney to properly generate validation messages ] hash: 0000001190-52a9ae4226974bf62daa4fed91031bc740e4f704a917c481876c948daf71016b [993 wbond**20110518030358 Removed a stray method from fSQLTranslation ] hash: 0000001067-1afd1afc1bed718cd60cedd6674d9685621b2d07801a1bfd8d94561b2099d9f4 [994 wbond**20110523190451 Completed ticket #613 - fixed `associate` method on fActiveRecord to work properly when primary key values are provided ] hash: 0000002063-74871acec509f2d80b36101a3fbd631a9f382e7ed7292181df0bbce9917c7022 [995 wbond**20110523191215 Completed ticket #614 - added a clearstatcache() call to fImage::saveChanges() to prevent incorrect content length issues with fFile::output() ] hash: 0000000475-748683d08aefe4aa5bc4b5723cd080c1b7310379007460243885e7abc189e888 [996 wbond**20110524041701 Fixed fDatabase::getVersion() to handle more server version variations, fixed fSchema::getTables() to properly work on MySQL 4 again, fixed fSchema::getKeys() to consistently return reset arrays ] hash: 0000001357-cb4179db162758bee2b5cad4a9fffd520e6fb290d1163a5d3e636510ef57a173 [997 wbond**20110526201119 Completed ticket #574 - added support for spatial/geometric data types to fSchema, and consequently fActiveRecord ] hash: 0000000916-821c4b32f0b00d72700aaf48d411f2b2037600200979a005f15d7d7952abfa0d [998 wbond**20110526220440 Completed ticket #524 - fixed some bugs with determining related class names that are in PHP 5.3 namespaces ] hash: 0000001906-055d13d8cd1c5fbbfcd25c25def24c5d4c3cd8fb2d5887fe35aeade5239cebe0 [999 wbond**20110527000559 Fixed a bug with fCore::dump() not properly handling arrays containing integers ] hash: 0000000640-d05bf8b9f85bda3d21f876924623cb35f35953fe6df50b9256702b2b6d21a26c [1000 wbond**20110602124842 Completed ticket #617 - fixed fValidation to handle multiple callback rules per field ] hash: 0000002355-f8eabc9ebffe406eddcae158bcb081f37561310fdc0d0d83e9f0ae04bfd00eaf [1001 wbond**20110602125216 Completed ticket #618 - fixed the fDate, fTime and fTimestamp constructors to accept negative unix timestamps ] hash: 0000003515-5a6a59fc9f1defdc46c88a627b9e22bd754bd9de3f9e7f4a67253782533a8674 [1002 wbond**20110603185936 Enhanced the error checking in fSMTP::write() and fMailbox::write() ] hash: 0000000655-b34b60855f23dbaa4a356a3e581b573442cac710b1c1208c35d17fd4ea95e531 [1003 wbond**20110603191248 Completed ticket #607 - added fFile::count() and changed fFile to implement the Countable interface ] hash: 0000001606-1e376e446f33fb43e41ef3e49444fbc84c6cf46018dba44b22321633ca36612c [1004 wbond**20110603194339 Completed ticket #612 - added the `$delimiter` parameter to fURL::makeFriendly() ] hash: 0000004479-c5ade3a575daa7e12a0f47743962f1fbabc719b70830cc6600179fd5e40aa164 [1005 wbond**20110604024748 Added the missing empty.txt for the fFile::count() tests ] hash: 0000000128-649b85b02a00d1c6aa42bc104535e63d70bfc624dddb2524741233514e7d99f1 [1006 wbond**20110604025319 Completed ticket #593 - added the `$use_default_for_blank` parameter to fRequest::get() ] hash: 0000002074-fa474095d222c41e44d649c963f4ba3dec5010d0f76cae0c0a33a12fc6267784 [1007 wbond**20110610114617 Fixed fUTF8::clean() to not trigger notices when cleaning bad data ] hash: 0000001367-6b41061e4ce370d407b63d11c3a3f1ed8790d6f41398e12500e6ad81e158cd54 [1008 wbond**20110613183931 Completed ticket #626 - fixed fURL::redirect() to handle the case when no parameters are passed ] hash: 0000001723-e86ba95f0d1b83c4d368f28705bcfb25320aece7dd06437cf79c484d1c258a4b [1009 wbond**20110614142801 Fixed fORMValidation::addConditionalRule() to require columns that default to an empty string and are currently set to an empty string ] hash: 0000007006-98cf979ef9b75697498fd75a4ecda1153b9984c61cec7c5476b0ce5742cce63e [1010 wbond**20110620171258 BackwardsCompatibilityBreak - fRecordSet::sort() and fRecordSet::sortByCallback() now return a new record set instead of sorting the record set in place - this helps prevent side effects ] hash: 0000001553-c98731227fbe4b49fc8ebdb2a51d7a8da322976ed73add83eae41c5e21c20ca8 [1011 wbond**20110620171603 BackwardsCompatibilityBreak - changed the email subject of error/exception emails in fCore to include relevant file info, instead of the timestamp, for better email message threading ] hash: 0000002909-c6a93a8417e80bc5ac4fc17cb3b91488dd7411b77c9eca702bf8060e5eea550a [1012 wbond**20110620171914 Updated fGrammar to add checks for blank string to various methods ] hash: 0000001295-f47ee4322f08df2ebbfd7ad19c6ca08b6efc10660129ea1566b18c9d013a5d4e [1013 wbond**20110621005450 Fixed a bug in fDatabase with notices being triggered when failing to connect to a SQLite database ] hash: 0000000968-ceef1add3886708fa1e115c6721affc95f0a02c87f355bb7d4b1ef0a2aac8c9c [1014 wbond**20110621025828 Completed ticket #519 - added support for the ^~ and $~ matching operators to fRecordSet::build() and fRecordSet::filter() ] hash: 0000008200-b44609470bd9f8375418791789398fd438ee81a7a6167347f925a4bf975aa33c [1015 wbond**20110621183609 Updated fCache to support database, directory and redis backends. Also added support for the Memcached extension and custom serialization callbacks. ] hash: 0000032973-017e5a3b3e85f4c4845b564e1a67683fa928e05105f574597f67c0126041155a [1016 wbond**20110621184213 Completed ticket #272 - added support for storing session data in memcache, redis and databases via fCache objects and fSession::setBackend() ] hash: 0000008458-21bb6935c64abce68159eae718b55e15e2c6697a782dffa25f8f453bc3a6f9eb [1017 wbond**20110727023825 Completed tickets #640 and #645 - fixed fMailbox to properly parse email headers that contain encoded words inside of quoted strings ] hash: 0000013581-9d1807b519acc528c292c14a555e5d5b1644f0fbbaef65dd8b621ad1d19164f6 [1018 wbond**20110727031648 Completed ticket #646 - changed the way Flourish uses iconv() to work around a bug in MAMP 1.9.4+ ] hash: 0000006086-f89e0d0d00e40daa43fa8e4583678990dd967b3a037b44e2c99444dab2aeb0d4 [1019 wbond**20110727032659 Fixed a bug with the test runner not displaying properly on white terminals ] hash: 0000000794-21f12147dbc182a963268fa1dafc967c1fbcd57c3dab1954207160807fad1a92 [1020 wbond**20110729175755 Fixed a bug with fSession throwing warnings on PHP 5.1.6 when running the unit tests ] hash: 0000000430-f6b042f74886c68622318c0dd76456f9a7a10d4eb2dc3e60511c1abafdeabd1b [1021 wbond**20110729180523 Fixed a bug with fORMColumn::configureEmailColumn() allowing blank values through ] hash: 0000000888-76e0d9c40257eb2b34ba5ec2a9ea9420f3c6dd6fc228f7086f985c7d66de1f49 [1022 wbond**20110729181758 Fixed a bug with fUTF8::clean() on IBM AIX ] hash: 0000000451-a03572e9e4f3e94d33d7328a6b5d665c6654bf26c083b3ba933b02582a0d7f79 [1023 wbond**20110824013846 Fixed a bug with fSession::reset() that is causing some unit tests to fail ] hash: 0000000491-ac614889272c4aebdd4f44489e3c297257799cb0ba318e543c835f32ff897f50 [1024 wbond**20110824023718 Completed ticket #655 - fixed fSchema to properly detect explicitly named SQLite foreign key constraints ] hash: 0000008144-71729bc1622d754dcb39c38dc9549224d3770b2e7ef43f4d930806378452c727 [1025 wbond**20110824030150 Completed ticket #657 - added a permissions check to fDirectory::delete(), fixed a bug in fDirectory::delete() were it was calling an non-existent fFilesystem method ] hash: 0000000817-2ffbea6d68dc19c3213a94aa564747baab3c94c231f5e06634d9fbe5512987f1 [1026 wbond**20110824035858 BackwardsCompatibilityBreak - fFile::output() now automatically ends any open output buffering and discards the contents - Completed ticket #661 ] hash: 0000001180-23e46bae788e4338b5e1835de7df1bbae7e79842e50ee472650add2e0d6e9ab0 [1027 wbond**20110825041840 Added the `base36`, `base56` and custom types to the fCryptography::randomString() method ] hash: 0000001790-e515ade3596b719f0b9612af01696ad41fd82c418e728ce347a54d056537105f [1028 wbond**20110825043821 Updated fUpload to throw fValidationException instead of fProgrammerException objects when a form is improperly configured since security testing tends to send invalid data, especially for file upload fields ] hash: 0000004010-dff1771bdfca0362590fef20429ded7567e8104ec87f118bb876cc9786da892e [1029 wbond**20110825050106 Fixed method signatures for some methods that have multiple signatures ] hash: 0000005999-1c8f9ea0ead000f4ff2fe57428af1c2a8faada92334fdc7b2841bdbba4080920 [1030 wbond**20110825175502 Updated fCache to include documentation about using the redis backend ] hash: 0000001100-c1899cb38a590913931225d4a13458c8feb8e54d8db72e2efb40126c4980e00c [1031 wbond**20110826042414 BackwardsCompatibilityBreak - fCore::detectOpcodeCache() was renamed to fLoader::hasOpcodeCache(). Added fLoader. Added flourish.rev file to track release version across version control systems. ] hash: 0000010039-6a4267e87080d20b9c1470c8995ed4f10fc767e171a5acf9e142d97896646d5a [1032 wbond**20110831182252 Completed ticket #637 - enhanced minification of JS to handle + ++ and similar edge cases. Fixed a bug with CSS minification of hex color codes. ] hash: 0000004294-087f36ec65ed94434dacddbec85d0128f5528227736e629deb38e54104cf5545 [1033 wbond**20110831182858 Fixed commit.sh to explicitly include flourish.rev file when more than the message is specified ] hash: 0000000368-310735fc3b26d1d2c90f1ec82b25c84f35b29f02a43dd8ed413876fa98a5d9d2 [1034 wbond**20110831183331 Completed ticket #638 - fixed a bug in fTemplating::enableMinification() where the minification cache directory was sometimes not properly converted to a web path ] hash: 0000000821-6bb1c9ee08a200e0dee0e74480158f1fdac6098df4d029c17b15c38fe448b3cf [1035 wbond**20110831184129 BackwardsCompatibilityBreak - removed the static method fTemplating::create(), added the static method fTemplating::attach() to fill its place - completed ticket #632 ] hash: 0000001787-4791129cb605286ef00422f97fee2b6133e31b41242f2566bff05f70ef2c0ada [1036 wbond**20110831184529 Added a default value for the `$name` parameter of fTemplating::retrieve() to mirror fTemplating::attach() ] hash: 0000000557-c67a48f1c974866dcbfe59d417ff04c862d479367639e4d882cbf09fa2123ab9 [1037 wbond**20110906045936 Added a fix to fSQLTranslation for PostgreSQL to handle statements that don't specify any columns or values ] hash: 0000001135-09383bea7cd255f6d8ede69db1f2cb91587e592953e4ec4c6a7f741a1279c14d [1038 wbond**20110906051709 Fixed a bug with fActiveRecord and updating a record that contains only an auto-incrementing primary key ] hash: 0000000731-057d19a7203c4cb1f8a451a9d02ffb163a6aecc6b3243d17f737786b894c1e6e [1039 wbond**20110906052449 Added fPagination ] hash: 0000022082-6d48a96e6ba758ece428ab03eeee244b3c75b9e00f3fcf569846061f81e4469d [1040 wbond**20110907170530 Added missing method information for list and has methods to fORMRelated::reflect() ] hash: 0000002831-492c709fa658f00b5ec3f57fe786ddc72cd3b5697ada73b834767e67b7ac82b0 [1041 wbond**20110913030940 Updated fEmail to have a fluent interface ] hash: 0000005490-ed616352f65982c5fd21e4efebd7b8126fa533f5d7fd605dbbe01052ed682d2c [1042 wbond**20120112183437 Refactored database unit tests to make them faster - fixed some small bugs in fCache, fSchema and fSQLSchemaTranslation along the way ] hash: 0000440633-f1f8b0ef387877126f003d8e2daa269a2208752639f2527c7662b529a3ee1d20