CHANGELOG v1.9.1 Stable
A = Added new file
M = Modified existing file
************************************************************************
* Important Notes (6)
************************************************************************
1. To download this release you will need a current support and upgrade package. Contact us if you need to renew.
2. If ionCube is installed at the server level please check that you are running the latest loaders.
3. Please read this entire change log.
4. Failure to complete note 3 above will result in a broken upgrade.
5. You must delete these files:
admin/modules/common/lib/classes/class.pop3.php
admin/modules/common/lib/classes/class.smtp.php
6. We've added an improvement, fixed a bug and added one new feature to the SPBAS licensing class.
- Improvement: changed the clear_cache_local_key() method to remove constraints.
- Bug Fix: server_name & server_ip will now always have a value, even if it's "Unknown".
- New Feature: added grace periods for the local key licensing
Question: Do I have to upgrade the integration code in my application?
Answer: Nope, only if you want to. While there is a bug fix it only applies to per server licensing under specific rare conditions.
Question: How do I enable the grace period feature?
Answer: Replace your current SPBAS.class.php with the new one from the integration tab at he licensing method view in admin.
You also need to add this just after $spbas->license_key=''; when you instantiate the class for the license check:
// Define the local key grace period in days.
$spbas->local_key_grace_period='1,2,3,4,5,6,7'; // enter as many days as you would like :)
************************************************************************
* New Features (8)
************************************************************************
1. Added grace period support for local license keys in the SPBAS licensing method.
------------------------------------------------------------------------
M admin/modules/license_methods/SPBAS/integration_code/SPBAS.class.php
2. Added a login share module for WordPress.
------------------------------------------------------------------------
A admin/modules/3rd_party/modules/WordPress
A admin/modules/3rd_party/modules/WordPress/class-phpass.php
A admin/modules/3rd_party/modules/WordPress/run.php
A admin/modules/3rd_party/modules/WordPress/settings.php
3. Added a login share module for Simple Machines Forum.
------------------------------------------------------------------------
A admin/modules/3rd_party/modules/SMF
A admin/modules/3rd_party/modules/SMF/run.php
A admin/modules/3rd_party/modules/SMF/settings.php
4. Added a new code hook *_at_api_request that runs with with each REST API call.
------------------------------------------------------------------------
M api/index.php
5. Added a new code hook *_after_package_creation that runs just after the package is created.
------------------------------------------------------------------------
M admin/modules/packages/lib/classes/packages.php
6. Added the ability to require addon purchases per product price tier.
------------------------------------------------------------------------
M admin/modules/order_forms/lib/classes/order_forms.php
M admin/modules/products/lib/classes/products.php
M admin/modules/products/product_edit.php
M admin/templates/modules/products/product_edit.php
M api/modules/order_forms/add_to_cart.php
M order/compiler/view_cart.php
M order/templates/default/view_cart.php
7. Added the ability to bypass the remote API and work directly with the local API instead to improve performance.
------------------------------------------------------------------------
M admin/modules/common/lib/classes/modules.php
M admin/modules/common/lib/functions.php
M admin/modules/kb/lib/classes/articles.php
M api/modules/kb/article.php
M api/modules/kb/bookmarks.php
M api/modules/kb/down_for_maintenance.php
M api/modules/kb/glossary.php
M api/modules/kb/index.php
M api/modules/kb/listings.php
M api/modules/kb/print_page.php
M api/modules/kb/private.php
M api/modules/kb/search.php
M customers/compiler/announcements.php
M customers/compiler/helpdesk.php
M customers/compiler/my_account.php
M customers/compiler/my_invoices.php
M customers/compiler/my_package_details.php
M customers/compiler/my_packages.php
M customers/compiler/public_announcements.php
M customers/compiler/view_ticket.php
M customers/includes/classes/pagination.php
M kb/compiler/glossary.php
M kb/compiler/listings.php
M kb/compiler/search.php
M kb/includes/classes/api.php
M kb/includes/classes/pagination.php
M kb/includes/globals.php
M kb/index.php
M order/includes/classes/pagination.php
M admin/index.php
M admin/modules/common/lib/functions.php
M admin/modules/license/lib/classes/licensing.php
M api/modules/customer_areas/add_address.php
M api/modules/customer_areas/add_contact.php
M api/modules/customer_areas/announcements.php
M api/modules/customer_areas/change_password.php
M api/modules/customer_areas/change_security_question.php
M api/modules/customer_areas/contact.php
M api/modules/customer_areas/contact_form_send.php
M api/modules/customer_areas/dashboard.php
M api/modules/customer_areas/delete_address.php
M api/modules/customer_areas/delete_contact.php
M api/modules/customer_areas/department_options.php
M api/modules/customer_areas/download.php
M api/modules/customer_areas/download_secure.php
M api/modules/customer_areas/download_ticket_attachment.php
M api/modules/customer_areas/downloads.php
M api/modules/customer_areas/get_contact.php
M api/modules/customer_areas/helpdesk.php
M api/modules/customer_areas/index.php
M api/modules/customer_areas/invoice.php
M api/modules/customer_areas/login.php
M api/modules/customer_areas/loginshare.php
M api/modules/customer_areas/messages.php
M api/modules/customer_areas/my_account.php
M api/modules/customer_areas/my_invoices.php
M api/modules/customer_areas/my_package_details.php
M api/modules/customer_areas/my_packages.php
M api/modules/customer_areas/opt_out.php
M api/modules/customer_areas/process_session.php
M api/modules/customer_areas/public_announcements.php
M api/modules/customer_areas/register.php
M api/modules/customer_areas/reissue_license.php
M api/modules/customer_areas/resend_password.php
M api/modules/customer_areas/suspend_license.php
M api/modules/customer_areas/update_address.php
M api/modules/customer_areas/update_contact.php
M api/modules/customer_areas/view_email.php
M api/modules/customer_areas/view_ticket.php
M api/modules/customer_areas/whois_username.php
M api/modules/order_forms/checkout.php
M customers/includes/classes/api.php
M customers/includes/globals.php
M customers/index.php
M order/compiler/cart.php
M order/includes/classes/api.php
M order/index.php
M admin/index.php
M admin/modules/common/lib/classes/api.php
M admin/modules/common/lib/classes/modules.php
M admin/modules/common/lib/extend.php
M admin/modules/common/lib/functions.php
M admin/modules/dashboard/lib/extend.php
M admin/modules/upgrade/dashboard.php
M admin/templates/custom/default/css/utilities.css
M admin/templates/custom/default/header.php
M admin/templates/modules/upgrade/dashboard.php
M admin/templates/modules/upgrade/sql/v1.8.0/UPGRADES.sql
M api/index.php
M api/modules/customer_areas/change_password.php
M api/modules/order_forms/add_to_cart.php
M api/modules/order_forms/addon.php
M api/modules/order_forms/checkout.php
M api/modules/order_forms/create_customer_account.php
M api/modules/order_forms/customer_data_complete.php
M api/modules/order_forms/down_for_maintenance.php
M api/modules/order_forms/login.php
M api/modules/order_forms/order_complete.php
M api/modules/order_forms/order_process.php
M api/modules/order_forms/payment.php
M api/modules/order_forms/payments.php
M api/modules/order_forms/private.php
M api/modules/order_forms/product.php
M api/modules/order_forms/resend_password.php
M api/modules/order_forms/start_session.php
M api/modules/order_forms/update_cart.php
M api/modules/order_forms/update_customer_account.php
M api/modules/order_forms/validate_vat.php
M api/modules/order_forms/view_cart.php
M api/modules/order_forms/whois_email.php
M api/modules/order_forms/whois_username.php
M order/compiler/cart.php
M order/compiler/view_cart.php
M order/includes/classes/api.php
M order/includes/functions.php
M order/includes/globals.php
M order/index.php
M install/m3_configuration.example.php
M admin/templates/conf_source_template.php
8. Added V.A.T. consumption tax support for international customers.
------------------------------------------------------------------------
M admin/modules/common/lib/functions.php
M admin/modules/customers/customer_edit.php
M admin/modules/customers/lib/classes/customers.php
M admin/modules/order_forms/lib/classes/order_forms.php
M admin/modules/order_forms/order_form_edit.php
M admin/modules/taxes/lib/classes/taxes.php
M admin/modules/users/lib/classes/users.php
M admin/templates/modules/customers/customer_edit.php
M admin/templates/modules/order_forms/javascript/module.js
M admin/templates/modules/order_forms/order_form_edit.php
M api/modules/customer_areas/invoice.php
M api/modules/customer_areas/my_account.php
M api/modules/order_forms/create_customer_account.php
M api/modules/order_forms/customer_data_complete.php
M api/modules/order_forms/payment.php
M api/modules/order_forms/update_customer_account.php
A api/modules/order_forms/validate_vat.php
M customers/compiler/invoice.php
M customers/compiler/my_account.php
M customers/includes/classes/api_wrappers.php
M customers/templates/default/invoice.php
M customers/templates/default/my_account.php
M order/compiler/checkout.php
M order/includes/classes/api_wrappers.php
M order/templates/default/checkout.php
M order/templates/default/css/layout.css
M order/templates/default/javascript/application.js
9. Suspending the license now suspends the package assets too.
------------------------------------------------------------------------
M admin/modules/license/lib/classes/licensing.php
************************************************************************
* Improvements (17)
************************************************************************
1. When flood protection is enabled it is now applied to all tickets from the user, was per ticket only before.
------------------------------------------------------------------------
M admin/modules/cron_jobs/helpdesk_ticket_import.php
M admin/modules/helpdesk/lib/classes/helpdesk.php
2. Changed the way tax is shown on the invoice. Where it used to read (Tax) TAX NAME, it now reads TAX NAME (xx.xx%).
------------------------------------------------------------------------
M admin/modules/invoices/lib/classes/invoices.php
3. Added the invoice ID into the body of the invoice, shows V.A.T. when configured and added the billing statement to the customer area invoice view.
------------------------------------------------------------------------
M admin/templates/modules/invoices/printable_invoice.php
M customers/templates/default/invoice.php
M admin/modules/invoices/printable_invoice.php
M admin/templates/modules/invoices/printable_invoice.php
M api/modules/customer_areas/invoice.php
M customers/templates/default/invoice.php
4. Added the ability to edit the IMAP connection string from the advanced tab of the helpdesk department setup.
------------------------------------------------------------------------
M admin/modules/cron_jobs/helpdesk_ticket_import.php
M admin/modules/helpdesk/department_edit.php
M admin/modules/helpdesk/lib/classes/helpdesk.php
M admin/templates/modules/helpdesk/department_edit.php
5. Added .htaccess to disable directory viewing of the upgrade directory in case it was uploaded by accident.
------------------------------------------------------------------------
A Upgrade/.htaccess
6. Added .htaccess to turn magic_quotes off automatically.
------------------------------------------------------------------------
A admin/.htaccess
7. Removed naming constraint on the SPBAS licensing class method clear_cache_local_key().
------------------------------------------------------------------------
M admin/modules/license_methods/SPBAS/integration_code/SPBAS.class.php
8. Removed the ability to change the username from the customer area.
------------------------------------------------------------------------
M customers/templates/default/my_account.php
9. Changed the password resend trigger to accept $_GET or $_POST.
------------------------------------------------------------------------
M customers/templates/default/login.php
10. Extended the login share API to optionally include the customer addresses.
------------------------------------------------------------------------:
M api/modules/customer_areas/loginshare.php
11. Added the time to created date at the customer area ticket view.
------------------------------------------------------------------------
M customers/compiler/helpdesk.php
12. Optimized the code in the payment API to use PHP array_unshift() when determining the default pay gateway to show.
------------------------------------------------------------------------
M api/modules/order_forms/payment.php
13. The get license info API now returns support & download expirations and addon details.
------------------------------------------------------------------------
M api/modules/license/get_license_info.php
14. Now shows the full package name for support renewals.
------------------------------------------------------------------------
M api/modules/customer_areas/department_options.php
15. Added the time since the ticket was opened in days and hours.
------------------------------------------------------------------------
M admin/modules/helpdesk/dashboard.php
M admin/templates/custom/default/css/layout.css
16. Modified the new support package creation process to see if we are in a current active period or not. If so, then extend the active period starting at the date of the current expiration.
------------------------------------------------------------------------
M admin/modules/support_package/lib/classes/support_packages.php
17. Modified the new download control creation process to see if we are in a current active period or not. If so, then extend the active period starting at the date of the current expiration.
------------------------------------------------------------------------
M admin/modules/download_control/lib/classes/download_control.php
************************************************************************
* Bug Fixes (24)
************************************************************************
1. Added the ability to force assets to be issued regardless of the normal processing requirements when changing an order status from Processing/Incomplete to Complete in admin.
------------------------------------------------------------------------
M admin/modules/orders/lib/classes/orders.php
M admin/modules/orders/order_edit.php
2. Fixed bug with the SPBAS licensing method that caused valid accesses to fail authenication after the first instance did not match.
------------------------------------------------------------------------
M admin/modules/license_methods/SPBAS/functions.php
3. Removed dated CMS entries from the getting started guide.
------------------------------------------------------------------------
M admin/templates/modules/getting_started/with_spbas.php
4. Fixed bug with the downloads page from the customer area that hid some download categories.
------------------------------------------------------------------------
M api/modules/customer_areas/my_package_details.php
5. Added a check to ensure two different customer accounts were chosen during a merge.
------------------------------------------------------------------------
M admin/modules/customers/customer_editor.php
6. The download link for the KB m3_configuration.php file in the advanced tab was broken.
------------------------------------------------------------------------
M admin/templates/modules/kb/profile_edit.php
7. Fixed the KB site update_advanced() method, was missing the first argument.
------------------------------------------------------------------------
M admin/modules/kb/lib/classes/profile.php
8. Removed stray tag that was breaking the layout.
------------------------------------------------------------------------
M admin/templates/modules/customers/customer_edit.php
9. Adding a package asset from the admin area now starts as todays + x period.
------------------------------------------------------------------------
M admin/modules/customers/customer_edit.php
M admin/modules/packages/lib/classes/packages.php
10. Fixed bug that caused daily totals to round up in the invoice chart on the main admin dashboard.
------------------------------------------------------------------------
M admin/modules/dashboard/lib/classes/dashboard.php
11. Added sx() to the down for maintenance message at the order form.
------------------------------------------------------------------------
M order/templates/default/down_for_maintenance.php
12. Now urlencoding values passed into commands_to_string().
------------------------------------------------------------------------
M cms/includes/classes/api.php
M customers/includes/classes/api.php
M install/includes/classes/api.php
M kb/includes/classes/api.php
M order/includes/classes/api.php
13. Removed inconsistent password hashing when adding a new user.
------------------------------------------------------------------------
M admin/modules/users/lib/classes/users.php
14. Added a check to make sure the SPBAS licensing method populates server_hostname and server_ip if the first attempt at obtaining them fail.
------------------------------------------------------------------------
M admin/modules/license_methods/SPBAS/integration_code/SPBAS.class.php
15. Fixed bug that ignored the create_user flag & did not check for empty usernames in the loginshare API.
------------------------------------------------------------------------
M api/modules/customer_areas/loginshare.php
16. Now strips slashes on quoted replies from the admin UI.
------------------------------------------------------------------------
M admin/modules/helpdesk/view_ticket.php
17. Verifies that the transaction ID being used is not null in order::process().
------------------------------------------------------------------------
M admin/modules/orders/lib/classes/orders.php
18. Changed the way mysql handles invalid logins for the mysql_connect() and mysql_select_db() calls.
------------------------------------------------------------------------
M admin/modules/common/lib/classes/modules.php
19. Added the ability to pass in the user ID to use as the auto-increment ID column. This is for imports where the user ID from the old system must remain intact.
------------------------------------------------------------------------
M admin/modules/users/lib/classes/users.php
M admin/modules/customers/lib/classes/customers.php
20. Now verifies that we have a valid ticket ID when creating a ticket and determining if the ticket is new or not.
------------------------------------------------------------------------
M admin/modules/helpdesk/lib/classes/helpdesk.php
21. Changed the helpdesk class method is_valid_package_id() to be more efficient.
------------------------------------------------------------------------
M admin/modules/helpdesk/lib/classes/helpdesk.php
22. Added check to cover tickets sent from outside the helpdesk where the package ID is not set in the header.
------------------------------------------------------------------------
M admin/modules/cron_jobs/helpdesk_ticket_import.php
23. Added a deleted condition to the dashboard paid invoice graph. Now deleted invoices are not taken into consideration.
------------------------------------------------------------------------
M admin/modules/dashboard/lib/classes/dashboard.php
23. Modified the order_form/cart API to now populate non-focused, collapsed, categories to populate the correct product offerings.
------------------------------------------------------------------------
M api/modules/order_forms/cart.php
24. Fixed bug that caused php error when no task was passed in.
------------------------------------------------------------------------
M admin/index.php
************************************************************************
* CSS, Template and Configuration File Changes (9)
************************************************************************
1. in order/templates/default/css/layout.css change this:
#spbas td.text {
float: left;
to this:
#spbas td.text {
float: left;
font-weight: normal;
1a. add this to the very bottom of the file:
#spbas .vat_label {
font-size: 11px;
}
------------------------------------------------------------------------
2. in api/configuration.php change this:
'order_process',
'order_complete',
'addon', // <-- v1.9
to this:
'order_process',
'order_complete',
'addon', // <-- v1.9
'validate_vat', // <-- v1.9.1
------------------------------------------------------------------------
3. in order/templates/default/checkout.php change this:
= forms::action(); ?>
= forms::hidden('task', 0, 'checkout'); ?>
= forms::hidden('new', 0, 'y'); ?>
= forms::hidden('sop', 0, ''); ?>
to this:
= forms::action(false, 'POST', '', '', true, 'checkout_form'); ?>
= forms::hidden('task', 0, 'checkout'); ?>
= forms::hidden('new', 0, 'y'); ?>
= forms::hidden('sop', 0, ''); ?>
3a. change this:
=w('postal_code:');?> |
=forms::text('postal_code', 0, forms::value('postal_code', $customer['postal_code']), 0, 'checkout');?> |
to this:
=w('postal_code:');?> |
=forms::text('postal_code', 0, forms::value('postal_code', $customer['postal_code']), 0, 'checkout');?> |
=w('enter_vat_number:');?> |
=forms::text('vat_number', 0, forms::value('vat_number', $customer['vat_number']), 0, 'checkout');?>{$vat_label}":''; ?> |
3b. add the following line to the very bottom of the file:
------------------------------------------------------------------------
4. in customers/templates/default/my_account.php change this:
=w('company:');?> |
=$company['name'];?> |
to this:
=w('company:');?> |
=$company['name'];?> |
=w('vat_number:');?> |
=forms::text('vat_number', 0, forms::value('vat_number', $company['vat_number']), ' maxlength="15"', 'medium')?> |
------------------------------------------------------------------------
5. in customers/templates/default/invoice.php change this:
- =w('invoice_to')?>
- =w('pay_to')?>
=sx($customer['display_address']);?>
=sx($company_name)?>
=sx($company_address);?>
to this:
- =w('invoice_to')?>
- =w('pay_to')?>
-
=sx($customer['display_address']);?>
-
=sx($company_name)?>
=sx($company_address);?>
------------------------------------------------------------------------
6. in customers/templates/default/login.php change this:
to this:
------------------------------------------------------------------------
7. in customers/templates/default/my_account.php change this:
=w('company:');?> |
=$company['name'];?> |
=w('vat_number:');?> |
=forms::text('vat_number', 0, forms::value('vat_number', $company['vat_number']), ' maxlength="15"', 'medium')?> |
=w('email:');?> |
=$session['email'];?> |
=w('first_name:');?> |
=forms::text('first_name', 0, forms::value('first_name', $session['first_name']));?> |
=w('last_name:');?> |
=forms::text('last_name', 0, forms::value('last_name', $session['last_name']));?> |
=w('username:');?> |
=forms::text('username', 0, forms::value('username', $session['username']), ' maxlength="15"', 'medium')?> |
|
=forms::submit('', 0, w('save_changes', 0));?> |
to this:
=w('company:');?> |
=$company['name'];?> |
=w('vat_number:');?> |
=forms::text('vat_number', 0, forms::value('vat_number', $company['vat_number']), ' maxlength="15"', 'medium')?> |
=w('email:');?> |
=$session['email'];?> |
=w('username:');?> |
|
=w('first_name:');?> |
=forms::text('first_name', 0, forms::value('first_name', $session['first_name']));?> |
=w('last_name:');?> |
=forms::text('last_name', 0, forms::value('last_name', $session['last_name']));?> |
|
=forms::submit('', 0, w('save_changes', 0));?> |
------------------------------------------------------------------------
8. in order/templates/default/checkout.php change this:
=forms::textarea('checkout_notes', "agreement_{$agreement['id']}", sx($agreement['copy']), '', '');?>
to this:
=forms::textarea("checkout_notes' readonly='readonly", "agreement_{$agreement['id']}", sx($agreement['copy']), '', '');?>
------------------------------------------------------------------------
9. in order/templates/default/view_cart.php change this:
=$data_child['qty'];?> =$data_child['remove'];?> |
to this:
=$data_child['qty'];?> |