ChangeLog for TBS 1.x

Version Date Fixes / new features

1.97.12 2004-07-16
Bug fixes
1.97 2004-06-24
+ Improvement: MergeBlock() faster
The MergeBlock() process has been improved. Its is now about 3 times faster that before.
Take care that MergeBlock() is now case sensitive with column names.
(See le text file into the zip if you have an update problem)
New feature: [var.*] tags accept objects
You can call an objet variable and its properties or some methods with [var] tags.
New feature: new operators for conditional display
Now you can use +-, +=- (meaning > and >=), -+, -=+ (meaning < and <=) for conditional display expressions.
New feature: MergeBlock() by reference for Arrays
If you have a big array to display, you can use the keyword 'array' to display it by reference which is a bit faster.
(See documentation for more details)
New feature: constant TBS_CACHEONSHOW for the CacheAction-) method.
It enables you to force the result of the merge to be cached on the Show() method.
New feature: 'min' page for navigation bar
By default the first page is 1, but you can now set it to another value using the 'min' option.
Fixed bug: inlcude_once('tbs_class.php') couldn't be used inside a function
Fixed bug: Warning: strpos(): Offset not contained in string. in ... on line 239
This message could appear when merging some specific blocks. Now the bug is fixed.
Fixed bug: error messages used to display tags with [] delimitors even if {} were choosen
Fixed bug: DebugLocator() method could forget some nested TBS tags
Compatibility: TinyButStrong now works with PHP >= 4.0.6
It used to be PHP >= 4.0.4 since TBS 1.90.

1.96 2004-05-05
New feature: Supports SQLite database in native
SQLite is a smart Database System supported in native with PHP5.
Now SQLite is also supported in native with TBS.
New feature: MergeField() methode can merge Fields with a function
Now the MergeField() method enables you to merge a serial of TBS Fields with a function. This is specially useful for multi-laguage support.
Fixed bug: Parameter selected supports XHTML tags
Parameter selected used to make only <input> and <option> Html tags, now it makes <option/> and <input /> tags when appropriate.
Fixed bug: Custom functions bad recognized
Some user functions could be bad recognized if their name has the character "_".
+ Some error messages are aranged to be more explicit.

1.95.1 2004-03-23
Minor compatibility problem: Date format used with a timestamp string value
Using parameter frm, timestamps stored in a string value were displayed as 0 with TBS 1.95.
With this fixe, it displays the correct date, as it did with TBS before 1.95.
1.95 2004-03-23
Fixed bug: Bug using parameter htmlconv=look
In some circumstances, using the parameter htmlconv=look could make the following notice message:
Notice : Undefined variable: pos1 in tbs_class.php on line 1986
Improvement: Parameter max support Html chars
Now if you use parameter max to display data that is supposed to be already a Html string, then Html characters won't be cut.
New feature: Parameter frm support keyword xx
The keyword xx can be used in a date format string to display st, nd, rd or th depending to the number of the day.
New feature: Parameter locale
Parameter locale can be used with parameter frm to display locale day and month's names.
+ Improvement: Faster date-time and numeric formats
The format process has be improved for large use of date-time and numeric formats.
+ Improvement: Global variable $tbs_CacheMask
This variable can be changed in order to customize the file names for the TBS Cache System.
This feature is undocumented.

1.94 2004-02-24
New feature: Centred Navigation Bar
It is now possible to have the navigation bar centered on the current page.
Fixed bug: bad Navigation Bar bounds
In some cases, specially with few or no records, the bounds of the navigation bars could display not correctly.

1.93 2004-02-13
Fixed bug: [var.*] fields can't merge with Array items not lower case.
Remark: TBS tags are case insensitive with variable names, but they are case sensitive with item names.

1.92 2004-01-26
Fixed bug: Change of behaviour when using parameters 'onsection' and 'p1' together.
With 1.91, when a block is merged, TBS search for the next section starting from the *end* of the previous merged block's section. The fix make the search from the *beginning* like it used to be with version 1.8x. You can notice the difference only if your are using parameters 'onsection' and 'p1' together on a block.

1.91 2004-01-22
Fixed bug: Parameter 'selected' add a blank item, or display a Php warning.
This behaviour could happen with specific merging value (especially empty string) or when the TBS tag had a special place in the item list.

1.90 2004-01-18
Improvement: PHP >= 4.0.4 compatibility
TBS used to work only with PHP 4.2.x, but lot of people needs it for PHP 4.1.x.
Now it is possible.
Improvement: Faster
That's true. Even if this version is rich of new features, it's faster than the previous one.
The main reason is that for the PHP 4.0.4 compatibility, basic PHP functions were used and appears to be faster. A big work has also been done about variable managing.
New feature: Navigation Bar
The MergeNavigationBar() method enables you to easily build a bar to navigate through records.
New feature: Foreign Html Charsets
Now TBS is able to produce Japanese, Chinese and some other foreign Html characters stored in your database. See the LoadTemplate() method in the manual for more details.
New feature: Improved array syntax
The array syntax used to be available only for the first level of Php's variable Fields ([var.*]).
It is now available for any level and for Block Fields.
New feature: PostgreSQL
PosgreSQL database is now supported in native.
New feature: Improved 'num' data type
You can now specify a min, a max and a step for a numeric series.
New feature: Last Page
The 'By Page' mode is now able to go to the last page when you ask for page number -1.
New feature: Select several Html items
The parameter 'selected' can now be used with an array to select several items.
It also supports Radio buttons and Checkboxes.
New feature: Parameter 'noerr'
Some TBS error messages can now be cancelled using the parameter 'err' in fields.
When a message can be cancelled, it is noticed.
+ New Manual:
English en French manuals have been rewritten in order to make TBS easier to be learn.
(Thanks a lot to Pirjo)
Fixed bug: paramater 'onformat' doesn't works for blocks.
There used to be an ambiguity with the parameter 'onformat' which is the same for blocks and for fields. Now you have to use the parameter 'onsection' for block.
Fixed bug: Html conversion with parameter 'selected'
By default, field values are converted to Html. But this could be a problem to select a value in a Html list. There is now no Html conversion by default when using the 'selected' parameter.
Fixed bug: condition (if 'expr1'=expr1) returns false
This bug has been fixed. Now (if 'expr1'=expr1) returns true, just like (if 'expr1'='expr1').
Fixed bugs: other minor bugs.

1.81 2003-07-01
Fixed bug: no html conversion
The html conversion for data was often omitted.
Fixed bug: Notice: Uninitialized string offset: ... on line 2236
This notice alert could appear when you used TBS numeric format and when your PHP configuration was set to display PHP notice messages.
New feature: preserve whitespaces at Html conversion
The parameter htmlconv now supports a new keyword 'wsp' which enables you to preserve whitespaces in you data when converted to htm.

1.80 2003-06-01
New feature: custom functions for any database type
TinyButStrong can now support any database type.
If your database is not supported in native, you can define custom functions that enable TinyButStrong to plug to your database.
New feature: clone blocks
This enables you to merge several similar blocks in one shot.
You can define special parameters in order to change the Sql query for each block.
New feature: conditional formats
The frm parameter can now contains up to 4 formats, one for each case : positive value, negative value, zero value, null value.
New feature: empty sub-block for multi-columns mode (serial)
There is now the possibility define a special sub-block that will be shown at the place of no data.
New feature: parameter extend
Enables you to extend a block on several rows (for example).
New feature: parameter friend2
Enables you to delete a couple of Html tags when a value is empty.
New feature: parameter getob
Enables you to capture and display strings passed to the Echo command.
Works with the parameter script.

1.65 2003-04-29
Fixed bug: parameter look didn't work
New feature: parameter onformat for fields
This new parameter for fields enables you to define a custom event function which is called just before the merge of the field.
Deleted feature: eval
You can use onformat instead. The parameter eval is not available anymore because it is too much powerfull and may weaken the security of your application.

1.64 2003-04-10
Fixed bug: html headers with file inclusion
Html header are no longer kept with a file inclusion when it's supposed to be an html file.
If the file insterted is Html content, only the part between the <body> and </body> tags is merged. This enables you to design file to include as it was a normal Html page. This is useful if you work with CSS for example.
New feature: $tbs_CurrVal and $tbs_CurrRec
TinyButStrong provides those two global variables which represent the current value and the current record during a merge.
New feature: htmlconv=nobr
'nobr' is a new value for theparameter htmlconv. It enables you to convert a value into Html but the new lines. New lines won't be converted into <br />. This enables to use the <pre> tag for exemple.
New feature: parameter onformat
This new parameter for block enables you to define a custom event function which is called for each detail section before its merge.
New feature: [var.*] fields with array variables
PHP variable fields now support array variables. You have to specify the item using a dot.
For example : [var.myarray.item]
New feature: data protection
By default, all data that comes from out of the template is protected by default against unwanted TBS tags. That means all TBS opening characters ('[' by default) are replaced by its Html code '&#91;'. You can force or disabled the protection using the parameter protect.
+ New example: Forum
The TinyButStrong set contains an example of a full aplication. That is the tbsForum which is used at the web site of TinyButStrong.

1.63 2003-03-05
Fixed bug: 'Undefined property: NoDataTxt'
The following message could appear when the MergeBlock() method was called with some PHP directive settings:
- Notice: Undefined property: NoDataTxt in ...\tbs_class.php on line 995
Fixed bug: absolute syntax for conditional blocks.
[tbs_check] blocks were not recognized when defined with an absolute syntax (using begin and end keywords).
Fixed bug: parameter comm ignored.
Fixed bug: eval doesn't support the [val] keyword.
Now the parameter eval supports the [val] keyword. This enables you, for example, to replace a value with the result of a PHP function that uses this value as a parameter.
This is rather an improvement than a bug.
New feature: parameter friend
The parameter friend enables you to delete a Html tag before, after or around a merge-field when its value is a null string. This enables you, for example, to delete line breaks which go with the lines a postal address.
See the manual for more details.

1.61 2003-02-20
Fixed bug: ignored parameters in fields and blocks definition.
This bug existed since the version 1.50. This is not a new bug in version 1.60.
In some specific but not rare definitions, some parameters of a field or a block could be ignored.
A parameter with an assigned value (like 'frm') could be ignored if it was placed after a parameter without assigned value (like 'comm').

1.60 2003-02-19
New feature: Cache System.
Some were waiting for it! Now TinyButStrong provides a cache system. Its power is its simplicity.
You can control the cache with only one method, that is the new CacheAction() method.
New feature: Merge page by page.
The method MergeBlock() now has new parameters which enable you to display only one page of data.
New feature: Repeat a block.
The method MergeBlock() now recognizes a new type of data. That is the type "num" and it enables you to simply repeat a block as many times as you want.
New feature: Render property
This is a new property. I will enables programmers to change the default behaviour of the Show() method.
You want to not display the result or not exit the script at the end of the merge ? The Render property is done for that.
New feature: Multi-column display.
You need to present the data on several columns, or other complex presentation ? Now it is possible thanks to the new block parameter "serial".
New feature: Eval a php expression.
You can change the value of a field with of Php expression. This is the new parameter eval.
Improvement: Faster.
Rui's work has a lot to do with this new version. He powered TinyButStrong in order to make it faster.
Fixed bug: the system field [sys.script_name] used to return the full path of the current script.
Now it returns only the file name. This makes no difference in your HTML links.

1.50 2003-02-05
Improvement: The syntax for fields and blocks is 'space friendly'. That means you can add as spaces characters as you want between parameters and separators in fields and block definition. That's also true for HTML tags.
Syntax modification: because of the improvement below, the syntax for the particular case of a field with conditional display that refers to its own value has change. Now you have to use the [val] keyword for that. Conditional blocks are not concerned with this change.
New feature: It is now possible to call the Show() method without display the result. There is a new parameter for that.
New feature: MergePhpVar() becomes MergeSpecial() and offers more capabilities. MergePhpVar() still exist for compatibility.
Improvement: You can specify a 'non equal' expression for conditional display.
Improvement: The PHP version is checked when TinyButStrong starts.

1.46 2003-02-02
Fixed bug: if you have a very recent PHP version, the following message could appear :
- Fatal error: Call to undefined function: key_exists() in ...\tbs_class.php on line 560
If you don't have this message at the first use of TinyButStrong, then this bug won't affect you.

1.45 2003-01-30
Fixed bug: if PHP configuration has the directive register_globals set to Off, the following message could appear :
- Notice: Undefined offset: 1 in ...\tbs_class.php on line 1561
- using Form example, Loop example and Conditional display example nothing change
If you don't have this message at the first use of TinyButStrong, then this bug won't affect you.

1.44 2003-01-29
New feature: merge data with ADODB data source.
Fixed bug: if PHP configuration has the directive register_globals or allow_call_time_pass_reference set to Off, the following message could appear :
- Notice: Undefined variable: script in ...\tbs_us_examples_0view.php on line 2
- Notice: Undefined variable: PosEnd in ...\tbs_class on line 1510
- Undefined index: SCRIPT_NAME in ...\tbs_class.php on line 1166
If you don't have this message at the first use of TinyButStrong, then this bug won't affect you.

1.43 2003-01-23

Fixed bug: if PHP configuration has the directive allow_call_time_pass_reference set to Off, the following message could appear :
- Call-time pass-by-reference has been deprecated [...]
If you don't have this message at the first use of TinyButStrong, then this bug won't affect you.

1.42 2003-01-13
New feature: Headers blocks.

1.41 2002-12-16
New feature: parameters script and once for file inclusion.
New feature: GetBlockSource() method.