Version History

Top  Previous  Next

This change log is a reference as to when a new feature was added or a bug was fixed. If you want to release a new version on your productive server, you must do a backup of your productive mySQL database and download the 3P changes via SVN. However, you should test the new version in a intranet environment first and make sure, that all extensions you added yourself still work in the new version. You may also have to transfer your custom code to the new version. For details, please read the topic on Update & Maintenance.

Version 1.3 - July 2017

Fixed: If "json_cronjob.php" crashes, it can leave a job in "running" state. All subsequent cron instances will terminate and job requests will pile up.
Fixed: <cover_pages> and <content_pages> zero values in job.xml. Implemented a better pagecount source from table "3p_upload_file". Field "3p_upload.chunk_page_count" is unreliable.
Fixed: status in job.xml and database can become async, PDFs can get deleted due to this, and order status is set to "failed".
Fixed: reorder does not work correctly.
Fixed: cart not cleared on return from payment.
Fixed: password not transferred to PayDirect.
Improved: PayDirect now passes on success notification from PayPal to OC store.
Improved: order id now displayed in PayPal payment and receipt mails.


Version 1.2 - March 2016

Changed order status meanings: Queued (2), Processing (15), Shipping (3)
read <Currency>EUR</Currency> from products.xml
check if all cron jobs report errors to oc_order_history; also add all upload errors to customer/order history
download page now has relative image paths: update installer
allow "More" parent in categories (when top menu is too short)
fixed discount bug
fixed "new font" in domPDF to support greek
fixed "order expired" email notification bug
fixed category/product relationship duplicates issue
cron deletion as workaround for OC bug: payment error creates orders with order_status_id=0; remove junk orders in oc_order and oc_order_product
order status mails are now in utf-8 (stored inside the database)
always delete ALL order junk records for a given user, even in the success case
the cart item must be created as soon as the upload is finished, even if the user does not enter the cart
add OrderStatusMessage to job.xml; also create ".new" trigger file for automatic printer processing
when the user changes the password in his account, also update the cleartext password needed for the payment
only send admin mail if there is an error message in OrderStatusMessage (default value = empty)
OC text editor converts hmtl code to readable code
admin status emails: order items are missing line breaks
tag cloud links leads to empty product group
bug: paying for a cart with 2 items, even though the upload session for one item was deleted through PurgeIncompleteUploadDays:
lock cron, so upload cannot be removed when the customer is in the process of paying (json_clean_upload.enabled, json_clean_orderbydays.enabled; json_clean_folder.enabled)
sql script to remove obsolete products
import dummy (no name tag) feature & option images as product images, so they are displayed below the product for additional info
disable cookie storage for currency. currency must be shop currency, as price is also shop price
increase image in product page to 300 px
added "Subshop-ID" column in the dashboard
gift voucher: email with voucher code was sent from wrong email address
product filter, example: Hardcoverbuch 30.0cm x 29.4 is now inside "square" filter: if Abs(height-width) <= 1.5
delete obsolete options on product import
added customer information in result.xml returned by login form inside DP, like projects_root_unc
leather option wrong, fixed, reason : sometimes OPTION doesn't have selected attribute, so PHP missed that
3p_design/login.php for OE should return new/added session ID when repeatedly called
bug: same coupon is applied in two orders, but it's allowed only once. Reason:

- coupon saved in session, and session is shared with all

- session data (coupon, voucher) only cleared in success/page

- session will be valid, if it's not used yet

- session will be used, only if the coupon(extension)/confirm called

- in paypal method, it will called only when paypal success/complete/return(async)

- in COD method, it will called immediately (model_checkout_order->confirm)

- the order 40300 created by paypal, and order 40303 created by COD

- there could be two reasons:
 paypal returned, but didn't call confirm successfully, because order_id is saved in session too
 if COD is confirmed before paypal, the order_id  will be cleared, so it won't call confirm successfully


 ORDER 40300 => pay/coupon => confirm (order added) => redirect  => paypal portal => suspend

 ORDER 40303 => pay/coupon => COD => confirm => apply the coupon and success


Solution: changed the logic, when the order is created, the coupon will be confirmed and in use, so there is no way to re-use it, and not able to withdraw even it didn't go for success page. The payment method controller will be called in checkout/confirm.


bug: when the product type is Leather, there is no cover page, but the generated by DP still regards the first page as cover page, so it will insert blank page of first page, and the blank page of last page. Using the newest publisher v3.8 will solve this problem.
code for the authentication of OD will support previous DP too



Version 1.1 - May 2014 - March 2015

BO: cascading delete of orders & customers; delete all associated files in cron job.
flipbook page sequence: added empty pastedown pages to beginning, end of book -> integrate in flipbook
invoice store logo missing (broken)
new options: DeleteFilesOnFailDetect=true/false: DeleteFilesOnFailManual=true/false
log all deletions and file purges to oc_order_history
clean files if customer or order is deleted in OA
move all print auxiliary files (invoice, shipping label, delivery note) to "infos" queues
oc_stock_status values "1 Active, 2 Inactive, 3 VisibleDateExpired (VisibleToDate), 4 OrderdateExpired" (OrderByDate, added by 3P setup). 3 & 4 must be automatically set by cron after dates expire.
put DateExpired values into oc_product_attribute, and use 3 & 4 names = option name, so cron can check use the date values
only allow re-ordering if PDF files are still there: lock upload session
3P Demo: the shopping cart popup (top right) closes, if I move the mouse over the carousel banner position icons
install PayPal extension (see merchant data at bottom)
manage all communication with the printer over a job file (p53306db8574a2_job.xml) containing all database fields from oc_customer, oc_order, oc_order_product. inside this file, the printer can also change the status to 15="processed" and 3="shipped" -> cron can parse this file and update oc_order.order_status accordingly -> log into oc_order_history
stock_status inactive, expiring, unavailable: no link to download page! also if VisibleFromDate is in the future
manual status change in OA -> call cron jobs
only allow reorder if status=shipped
product options in products.xml are incl. tax, so in the OC table we have to remove tax
page increments must be included in total price
define size & price ranges in products.xml


Version 1.0 - April 2014

manual delete of order incl. files, automatic cleanup of interrupted or broken orders (ie: all folders older than 2 weeks)
default invoice from API: theres no shop logo, where is tax field?
when one of the order items has pdf error, the order is changed to "failed" and a reason (with product_id) is inserted into order_history.
mail bug. the <br> is not converted to line breaks in the mail, which seems to be text not html mail
I cannot have an order in store 1 from a customer in shop 0 - customer 0 is not known in store 1 - login form must check credentials AND subshopid
Create tax classes for every tax from products.xml - examples: <VAT>1900</VAT> = 19%, <VAT>0700</VAT> = 7%
how can we handle <REBATES> if higher amounts are ordered (see products.xml). is there a OC feature or extension for this?
test: if a subshopid is invalid, we must return an error in result.xml (an installation can have an invalid subshop, if the shop was closed meanwhile)
remove language selector in OC
email verification - after registration, show form which includes "thank you for registering: please confirm your verification email" and link with "resend verification mail"
enhance api to allow for upload
selected options of upload.xml not shown in cart
show JPG flipbook preview. should only be shown in the cart & order, if was uploaded by the publisher (to ensure downward compatibility with older publisher versions)
there are 122 products in total and 244 product descriptions. products are ONLY edited in the products.xml, so no 2 languages here!
flipbook url needs protection (bypass login as in the other urls: json_login.php)


Development - Feb 2014

show previous email adr in login form (is passed on by publisher)
new user: click on privacy policy, directed to an empty page, click back, all data is lost
if a folder is missing (admin deleted it manually), then OC must also delete the cart item and the file records - Failsafe
after payment, merge the uploaded files into a single pdf
Admin: product catalog does not show images
if a subshopid is invalid, we must return an error in result.xml (an installation can have an invalid subshop, if the shop was closed meanwhile)


Development - Jan. 2014

productid must be derived from model, so a product.xml reimport does not break old orders (override autoinc field)
"register" new user
wrong login -> show error message below form, allow to resend password, etc.
nicer & customer-adaptable login-form
order basket: forgot to add the feature prices to the total
when something goes wrong, we should get an explanatory support help page, and not "no session pathno upload.xml"
after upload go past login page directly to order basket
if user cancels order (does not continue with upload, but starts new upload), then the incomplete folder and records must be deleted (after x days)
user deletes an item in shopping basket -> complete cleanup of upload incl. folder and files


Development - 2013

in products.xml import, if a product is no longer inside products.xml, or if active=0, then set its product status to "Inactive"
we have oc_stock_status values "Active, Inactive, VisibleDateExpired, OrderdateExpired". These values must be added via SQL script to oc_stock_status table
allow product tag feature cloud, and product filtering for price & size
oc_option, oc_option_value_description, etc: relation violation: redundant values. Options are always the same, so don't re-add them for every product
filter boxes should be on mainform too
PDF page upload module, which redirects user to shopping cart
replace the "Add to cart" with a "Design now" button, leading to a download page where the Publisher software can be downloaded
display category & product images
prices are wrong (decimal!)
test "dxtest" product. show the additional options in the feature dropdown
nested addition of feature + option upprice
New products & product changes must appear after import (allow updates of products from products.xml)
hide cc1 group. these are custom products for local printing
update modification dates during import
BasePageCount, MaxpageCount, BasePrice, UpPriceInc need to be reflected somewhere in product description
display feature images (they are in the same folder as product images!)


2015 © 3P Photobook Publisher