Skip to content
Choose a tag to compare

Version 1.1.0

@Traumflug Traumflug released this
· 420 commits to 1.1.x since this release
Choose a tag to compare
  • Core Updater is now the tool to update thirty bees core. A lot faster, a substantially more reliable update strategy. It can update all versions beginning with thirty bees 1.0.1. And it can downgrade / roll back just as easily in case a new release doesn't work for your shop.
  • Module tbupdater should be kept installed, it's needed for updating modules for the time being.
  • Big refactoring of error reporting and exception handling by @getdatakick. A new exception page and more important for merchants: reports no longer go into the rendered shop page, but get reported in the JavaScript console. PHP errors messing up shop pages are a thing of the past.
  • Another big audit of price rounding. Prices in the cart get now rounded properly according to the configured rounding strategy (by item / by line / by total). And invoices, credit slips, all now do as well.
  • This audit also brought a lot of detail improvements in displayed prices. For details, see
  • In multishop environments, one no longer sees duplicate entries for currencies.
  • Editing translations no longer requires to raise the max_vars PHP setting. Thanks to @ziyaindia.
  • When checking for module updates, not only the module name, but also the module author has to match. This should solve a class of issues with thirty party modules named like official modules. It also means that one can exclude a (edited) module from updates by simply changing the module author, e.g. from $this->author = 'thirty bees' to $this->author = 'thirty bees tweaked'.
  • Coupons/vouchers with taxes get now taken into account as well, thanks to @Zengraph.
  • With multishop, lists of customer groups now list only groups available in the currently selected shop context, thanks to @chitmann.
  • Also thank you to Emanuel Schiendorfer, David Gasperoni, Mark, Yaniv Mirel and Geo for their contributions. Much appreciated!
  • There is a new section in the statistics module: Stats by Groups. Written and contributed by @Zengraph.
  • Considerable chunks of theme installation were re-written. It should work now simpler and no longer mess with back office modules.
  • This added support for different image sizes in distinct themes. Developers would call this a per-theme namespace for image types.
  • Theme configuration XMLs in config/xml/themes/ disappeared. As they never got edited, they were always identical to config.xml in the theme folder.
  • This also removed config/xml/themes/default.xml, which was used for community-theme-default, so no more surprises when installing a shop and re-installing the default theme.
  • Initial theme settings in the installer were aligned with those of the actual default theme. Before, (re-)installing the default theme later had quite distinct results from what one had right after installation.
  • Theme metas (where one turns left and right columns on and off on particular pages) now allow to configure not only pages known by the theme, but all pages available.
  • CSV import now supports custom date formats in CSV data. This should allow e.g. U.S. merchants to import CSV data from a European manufacturer. Thanks to @ksimunovic!
  • A new, awesome looking default theme, Niara.
  • Previous theme is still there.
  • Now one can switch back and forth between both themes coming with thirty bees. Support for the "back" step with third party themes is forthcoming, one can still install them, of course.
  • Module beesblog is now a default module.
  • Two new modules, thememanager and tbhtmlblock. Already in use by theme Niara, they get disabled when installing theme community-theme-default.
  • Modules & Themes Catalog can now actually list modules and themes.

Notes to developers:

  • Price rounding audit contained the following steps:
    • Get the cart into rounding properly.
    • When creating an order, take these rounded prices from the cart unchanged. This ensures all downstream calculations use these rounded values rather than the current product price. This also allowed to remove duplicated rounding in classes like HTMLTemplateInvoice or HTMLTemplateOrderSlip. As a metaphor, consider rounding to be like a discount: price in the order is what the shop customer saw, not what the merchant started with.
    • Reviewed all classes dealing with prices to always round to database precision. As if PHP couldn't do better. For strategies, see Dealing with Prices at Traumflug's.
    • Replaced a whole lot of (hopefully all) hardcoded rounding precision values with constant _TB_PRICE_DATABASE_PRECISION_ or Configuration::get('PS_PRICE_DISPLAY_PRECISION') as appropriate.
    • Controllers rendering option fields ($this->fields_options[]) containing prices should use field type 'price', validation 'isPrice' and, new, a cast 'priceval'. The latter converts to a float, then rounds to database precision.
  • AdminController was changed to apply the cast for option fields ($this->fields_options[]) before validation, not after. This allows to implement a cast which shapes the value (like priceval() does).
  • There is a new field type for a class' storage field, type TYPE_PRICE. It's a float like TYPE_FLOAT, but also rounds the value to database precision, to get precisely predictable price and tax calculations.
  • Started to remove outdated code. Retrocompatibility code for PS 1.4 and before or PHP 5.5 and before.
  • Removed AdminRangePriceController and AdminRangeWeightController. Introduced in 2011, they were never available in back office. Classes RangePrice and RangeWeight are kept, of course.
  • Themes now support only one variation. Not sure whether multiple variations every worked before, code had quite a number of discrepancies. Attempting to install a theme with multiple variations now reports an error.
  • To get the path of the config file of a theme before and after 1.1.0, use Theme::getConfigFilePath().
  • Image type names are now enforced to contain the theme name. Recommended standard is to let the system do this, it prefixes the theme name. For getting links to product images, use Link->getImageLink(), for getting product image sizes, use Smarty getWidthSize and getHeightSize, see e.g. in product_list-item.tpl in both thirty bees themes. For getting just the appropriate type, use ImageType::getFormatedName(). Other variations are allowed as well, see ImageType::getFormatedName().
  • And yes, fallbacks for hardcoded image types were implemented. They come with a small performance penalty, though. To see how to fix a theme with hardcoded image types, see commits like thirtybees/niara@1047053 or thirtybees/niara@7f682df.
  • There are a whole lot of new hooks, see New Hooks in 1.1.x in our forum.