Kryptronic eCommerce Software Update: 9.3.0
An update was released today, June 23, 2023, for Kryptronic eCommerce software version 9. Installation of this update will increase your software version to 9.3.0. This update is intended for all clients running Kryptronic eCommerce software versions 9.0.0 through 9.2.0.
Custom Shop Notice: This is a complicated software update which contains approximately many, many changes and enhancements. Installation may require configuration file changes, downloading and running a new installer package, database updates and manual file changes. If applying this update is beyond your technical capabilities, please contact the Kryptronic Custom Shop. We can install this update for you for a small charge.
Upgrade Info for All Clients
All Kryptronic software updates are availble for all Version 9 Kryptronic Managed Hosting Clients, and all Version 9 Self-Hosted Plan Clients. Access to software updates requires an active plan. All plans include software updates.
All Kryptronic Managed Hosting Clients with older software are scheduled to be upgraded to version 9.3.0.
Self-Hosted clients with older software without an active Kryptronic Self-Hosted Plan should contact the Kryptronic Custom Shop to discuss upgrade options.
Step 1: Prepare Your Database for the Update
Access your management interface and login, then browse to the System / Database / Raw Database Admin function. Next, access the Submit Raw SQL Statement function and execute the following SQL statements, individually:
Pre-Update Database Changes
If updating from version 9.0.0 through 9.0.1: Start here, and continue to the end:
ALTER TABLE core_sessions CHANGE COLUMN id id VARCHAR(128) DEFAULT '' NOT NULL
DELETE FROM core_messages WHERE id='core.sendpass_confirm' OR id='core.sendpass_fail' OR id='core.login_fail' OR id='core.changepass_confirm' OR id='core.changepass_fail' OR id='core.createaccount_confirm'
DELETE FROM core_forms WHERE id='core.sendpass' OR id='core.besendpass'
DELETE FROM core_mail WHERE id='core.sendpass' OR id='core.besendpass' OR id='ecom.cardencrypt'
DELETE FROM core_formfields WHERE id='core.sendpass.user' OR id='core.besendpass.user'
DELETE FROM core_namespaces WHERE id='core.sendpass' OR id='core.sendpass_proc' OR id='core.besendpass' OR id='core.besendpass_proc'
UPDATE core_mail SET textincid=REPLACE(textincid,'URL below','link below'), xhtmlincid=REPLACE(xhtmlincid,'URL below','link below')
If updating from version 9.0.2: Start here, and continue to the end:
DELETE FROM core_mail WHERE id='core.belogindevauth' OR id='core.logindevauth'
DELETE FROM ecom_gateway WHERE id='purchonacct'
If updating from version 9.0.3: Start here, and continue to the end:
DELETE FROM cms_html WHERE id='companyinfo'
DELETE FROM ecom_gateway WHERE id='protxform'
If updating from version 9.1.0: Start here, and continue to the end:
DELETE FROM ecom_gateway WHERE id='paypalprod' OR id='paypalproe' OR id='stripe'
DELETE FROM ecom_gateway WHERE active=0 AND (id='authnetaimcc' OR id='authnetaimck' OR id='authnetcimcc' OR id='authnetan' OR id='authnetss' OR id='epdqform' OR id='bluepayss' OR id='coinbasebitcoin' OR id='cybercs' OR id='cybersourcesecureaccept' OR id='cardsvss' OR id='cardsvcs' OR id='firstdatae4' OR id='firstpayss' OR id='realexform' OR id='netbillingnb' OR id='netbillingss' OR id='nochexform' OR id='paymentsense' OR id='paypalpfphosted' OR id='paypalpayflowpro' OR id='itransit' OR id='itransss' OR id='netbanxform' OR id='planpayss' OR id='planpaypp' OR id='plugnpay' OR id='plugnpayremote' OR id='psigatess' OR id='psigatehtmlmessenger' OR id='psigateps' OR id='protxform' OR id='protxdirect' OR id='stripe' OR id='twochktc' OR id='worldpwp')
DELETE FROM ecom_shiprealtimep WHERE shipper='USPS'
If updating from version 9.2.0:
DELETE FROM ecom_gateway WHERE id='realexform'
Step 2: Pre-Update Manual Changes
Prior to installing and runnng the installer, there are several manual changes that need to be made to bring your software up to date. Manual changes are as follows:
Pre-Update Manual Changes
If updating from version 9.0.0 through 9.0.1: Start here, and continue to the end:
This update changes the software so that it uses a single URL (SSL Preferred) for all requests. This requires a fundamental change to the private configuration file, which must be done manually. To make this change, edit your private configuration file, which is named config.php and is located in your private installation directory. You will not be able to use the new software installer to install this update until you make these changes:
This is what the part configuration file to be changed will look like before it's modified (example only):
$config['core.url_nonssl'] = 'http://yourdomain.com';
$config['core.url_ssl'] = 'https://yourdomain.com';
$config['core.port_ssl'] = '443';
$config['core.cookie_domain_nonssl'] = '.yourdomain.com';
$config['core.cookie_path_nonssl'] = '/';
$config['core.cookie_domain_ssl'] = '.yourdomain.com';
$config['core.cookie_path_ssl'] = '/';
Remove the 'core.url_nonssl', 'core.port_ssl', 'core.cookie_domain_nonssl' and 'core.cookie_path_nonssl' lines completely. Remove '_ssl' from the remaining lines. Save and upload the file, replacing the one in your private installation directory. This is what the configuration file will look like after it's modified (example only):
$config['core.url'] = 'https://yourdomain.com';
$config['core.cookie_domain'] = '.yourdomain.com';
$config['core.cookie_path'] = '/';
If updating from version 9.0.2 through 9.2.0:
Clients using modified private system and component files should create a {private}/custom directory to store file modifications. Copy modified files (example: {private}/apps/ecom/ECOM/includes/cartdisplay.php) into that directory while maintaining it's full path (example: {private}/custom/apps/ecom/ECOM/includes/cartdisplay.php). When loading that file, the software will load your custom file. Replace the modified files with their original copies.
Clients using new/added private system and component files should create a {private}/custom directory to store additional files. Add files while using an appropriate full path (example: {private}/custom/apps/ecom/ECOM/includes/custom.php). Remove those files from the core software.
Clients using modified public files should create a {public}/custom directory to store file modifications. Copy modified files (example: {public}/media/scripts/frontend.min.js) into that directory while maintaining full paths (example: {public}/custom/media/scripts/frontend.min.js). Replace the modified files with their original copies.
This update provides a way to customize the software code by utilizing Custom Code. Custom order processing scripts were removed from the software in this update, and are now to be run using the new custom directory functionality. If you are using any of the following scripts for custom order processing:
{private}/apps/ecom/ECOM_OrderMan/init/0900_initcustom.php
{private}/apps/ecom/ECOM_OrderMan/proc/0900_proccustom.php
{private}/apps/ecom/ECOM_OrderMan/comp/0900_compcustom.php
Copy those scripts to the following locations. You will need to create the custom directory, and all it's contents:
{private}/custom/apps/ecom/ECOM_OrderMan/init/0900_initcustom.php
{private}/custom/apps/ecom/ECOM_OrderMan/proc/0900_proccustom.php
{private}/custom/apps/ecom/ECOM_OrderMan/comp/0900_compcustom.php
Step 3: Get the New Installer
This update requires a new installer package to be downloaded and utilized. You can download an installer package using the following link. Once downloaded, extract the download package, and upload all of it's files (index.php, installer.php, readme.pdf and license.pdf) to your public installation directory, replacing the files of the same name with the new ones. You will not be able to download the update files without the new installer package installed.
Download the New Installer
Step 4: Run Your Software Installer
Access your installer.php script and login. Submit through steps 1-5 without making changes to your installation configuration information, unless you need to.
On Step 6 (PEAR Installation), choose 'Yes, reinstall/update PEAR modules'. Leave the 'Overwrite all files' checkbox EMPTY. It is your option whether you choose to auto-submit the steps or confirm each one. Any PEAR modules that have been updated since your last installer run will be updated.
On Step 7 (System Component Installation), choose 'Yes, reinstall/update the system component'. Leave the 'Overwrite all files' checkbox EMPTY. It is your option whether you choose to auto-submit the steps or confirm each one. Any system component modules that have been updated since your last installer run will be updated.
Submit through steps 8-11 without making changes to your installation configuration information.
On Step 12 (Component and Module Installation), choose 'Yes, reinstall/update components and modules'. Leave the 'Overwrite all files' checkbox EMPTY. Leave the 'Only install new components and modules' checkbox EMPTY. It is your option whether you choose to auto-submit the steps or confirm each one. Any component modules that have been updated since your last installer run will be updated.
On Step 13 (Database Reload), choose 'Reload with recently changed definition files only'. It is your option whether you choose to auto-submit the steps or confirm each one. If any database definition files have been updated, only those files that have changed will be updated. Do not worry about losing data or the installer overwriting your data during a database reload. The installer is smart enough not to do that to you.
Step 5: Post-Update Database Changes
After running your installer.php script you will be prompted to access your management interface. Access your management interface and login, then browse to the System / Database / Raw Database Admin function. Next, access the Submit Raw SQL Statement function and execute the following SQL statements, individually. Note that depending on the version you're updating from, you may run all or some of these statements.
Post-Update Database Changes
If updating from version 9.0.0: Start here, and continue to the end:
UPDATE ecom_prodoptions SET optsel=CONCAT(optsel,'|') WHERE optsel<>''
DELETE FROM core_reportsadv WHERE id='cms.htmlpagestop20' OR id='cms.namespacestop20' OR id='core.componentusage' OR id='core.namespacestop20' OR id='ecom.namespacestop20' OR id='ecom.productstop20'
DELETE FROM core_namespaces WHERE id='core.reportspages'
DELETE FROM core_statsfe WHERE type='PAGEVIEW'
DROP TABLE core_statsns
DROP TABLE core_incphp
DELETE FROM core_tabledefs WHERE tid='core_statsns' OR tid='core_incphp'
DELETE FROM core_columndefs WHERE cid LIKE 'core_statsns.%' OR cid LIKE 'core_incphp.%' OR cid='core_users.procinfo'
UPDATE ecom_inventory SET xprodoptionsdisp='DEFAULT, ADDON'
This last statement may generate an error, depending on the age of your current software installation:
ALTER TABLE core_users DROP COLUMN procinfo
If updating from version 9.0.1: Start here, and continue to the end:
ALTER TABLE ecom_acctsysqueue CHANGE COLUMN xid xid VARCHAR(150) DEFAULT '' NOT NULL
UPDATE cms_banneradverts SET linktype='ecom.manuscat' WHERE linktype='ecom.manus'
UPDATE cms_bannermain SET linktype='ecom.manuscat' WHERE linktype='ecom.manus'
UPDATE core_formfields SET fieldorder='700' WHERE id='ecom.guestcoship.emaillist'
UPDATE core_groups SET secstrongpass=0, secrepeatpass=0, secexpirepass=0, seclockout=0, changepassalert=0, devauthalert=0, lockalert=0
UPDATE core_groups SET secstrongpass=1, secrepeatpass=4, secexpirepass=90, seclockout=3, changepassalert=1, devauthalert=1, lockalert=1 WHERE interface='BackEnd'
UPDATE core_multisite SET matchhost=matchhostssl, url=url_ssl, cookie_domain=cookie_domain_ssl, cookie_path=cookie_path_ssl
UPDATE core_multisite SET matchhost='DEFAULT', url='DEFAULT', cookie_domain='DEFAULT', cookie_path='DEFAULT' WHERE id='DEFAULT'
UPDATE core_namespaces SET groupdeny='*' WHERE id='core.beaccountconf' OR id='core.accountconf'
UPDATE core_namespaces SET name='QBWC File Creator' WHERE id='ecom.xmodqbwcfile'
UPDATE core_users SET ktokenauth='', kcodeauth='', loginfails=0, loginfaillast=0, loginlocked=0, passchangehist='', passchangelast=lastaccess, custorderemails='', intorderemails='' WHERE ktokenuser LIKE 'K%'
UPDATE core_users SET ktokenauth='', kcodeauth='', ktokendevauth='', loginfails=0, loginfaillast=0, loginlocked=0, passchangehist='', passchangelast=lastaccess, custorderemails='', intorderemails='', sessdata='', ktokenuser='' WHERE ktokenuser NOT LIKE 'K%'
UPDATE ecom_acctsysmap SET acctnamealt='Surcharge Income' WHERE acctnamealt='Surchage Income'
UPDATE ecom_acctsysmap SET acctnamepri='Surcharge Income' WHERE acctnamepri='Surchage Income'
UPDATE ecom_acctsysterms SET disporders=1, disppurchords=1, convertdays=0
UPDATE ecom_acctsysterms SET convertdays=REPLACE(id,'Net ','') WHERE id LIKE 'Net %'
UPDATE ecom_cat SET addldisp='DEFAULT', addlheader='', addlcat='', addlsortorder=0, descshort='', multisitedescshortone='', multisitedescshorttwo='', specdescshort='', footdisplay=''
UPDATE ecom_gateway SET incdisp=REPLACE(incdisp, '$this->globals(\'core_session.sid\')', '$order[\'order\'][\'id\']')
UPDATE ecom_gateway SET incdisp=REPLACE(incdisp, 'core.url_ssl', 'core.url')
UPDATE ecom_manus SET descshort='', multisitedescshortone='', multisitedescshorttwo=''
UPDATE ecom_orders SET custorderemails='', intorderemails='', shippingmemo=''
UPDATE ecom_prod SET offergiftpromo='0.00'
UPDATE ecom_prod SET seourl='Overpayment-Item' WHERE id='OVERPAYMENT'
DELETE FROM core_columndefs WHERE cid='core_multisite.matchhostnonssl' OR cid='core_multisite.matchhostssl' OR cid='core_multisite.url_nonssl' OR cid='core_multisite.url_ssl' OR cid='core_multisite.cookie_domain_nonssl' OR cid='core_multisite.cookie_path_nonssl' OR cid='core_multisite.cookie_domain_ssl' OR cid='core_multisite.cookie_path_ssl' OR cid='core_namespaces.hreftype' OR cid='core_users.show_currency' OR cid='ecom_orders.sessionid' OR cid='core_sessions.userid' OR cid='core_users.lastsid'
DELETE FROM core_dbguided WHERE id='core.managemultisite.matchhostnonssl.TBLISUNIQUE' OR id='core.managemultisite.matchhostnonssl.TBLSUPRESSCLONE' OR id='core.managemultisite.matchhostssl.TBLISUNIQUE' OR id='core.managemultisite.matchhostssl.TBLSUPRESSCLONE' OR id='core.manageusers.lastsid.TBLSUPRESSCLONE'
DELETE FROM core_messages WHERE id='core.form_failrobot'
DELETE FROM core_modules WHERE id='ecom.XMOD_GoogleTrustedStores'
DELETE FROM core_namespaces WHERE id='core.beaccountover' OR id='core.accountover' OR id='ecom.xmodgoogletrustedstores_js'
DELETE FROM core_selectcustom WHERE id LIKE 'ecom.xmodgoogletrustedstores_%' OR id='cms.bannerslink.ecom.manus' OR selectid='core.namespaces.hreftype'
DELETE FROM core_sessions
DELETE FROM core_settings WHERE id LIKE 'ecom.xmodgoogletrustedstores_%' OR id='core.session_cookexpdays' OR id='core.session_cookrefdays' OR id='core.seo_suppresssid' OR id='core.time_store_sessions' OR id='core.banned_sids' OR id='core.sslalwayson'
DELETE FROM ecom_acctsysship WHERE id='USPS First-Class Mail Parcel'
DELETE FROM ecom_cart
DELETE FROM ecom_shiprealtimep WHERE id='USPS-US-First-Class Mail Parcel'
ALTER TABLE core_multisite DROP COLUMN cookie_domain_nonssl
ALTER TABLE core_multisite DROP COLUMN cookie_domain_ssl
ALTER TABLE core_multisite DROP COLUMN cookie_path_nonssl
ALTER TABLE core_multisite DROP COLUMN cookie_path_ssl
ALTER TABLE core_multisite DROP COLUMN matchhostnonssl
ALTER TABLE core_multisite DROP COLUMN matchhostssl
ALTER TABLE core_multisite DROP COLUMN url_nonssl
ALTER TABLE core_multisite DROP COLUMN url_ssl
ALTER TABLE core_namespaces DROP COLUMN hreftype
ALTER TABLE core_sessions DROP COLUMN userid
ALTER TABLE core_users DROP COLUMN lastsid
ALTER TABLE core_users DROP COLUMN show_currency
ALTER TABLE ecom_orders DROP COLUMN sessionid
If updating from version 9.0.2: Start here, and continue to the end:
UPDATE core_formfields SET fieldorder=fieldorder+1 WHERE id='ecom.orderman_markpaid.reference' OR id='ecom.orderman_markpaid.acctsyslogged' OR id='ecom.orderman_markpaid.sendemail'
UPDATE core_users SET customdata='', acctsystermsavail='', autocommentsint='', invoicemail=0, invoicedisp=0, ordemaillogosup=0
DELETE FROM core_namespaces WHERE id='ecom.procgwresplink' OR id='ecom.printinvoice'
DELETE FROM core_modules WHERE id='skin.COREMI9'
UPDATE ecom_cofields SET name='Order Comments', description='<p>If there are any comments, enter them below. These comments will be shown on order summaries and mail messages.</p>' WHERE id='commentsext'
UPDATE ecom_credits SET statusinternal=0
UPDATE ecom_gateway SET refurlstr='authorize' WHERE id='authnetan' OR id='authnetss'
UPDATE ecom_gateway SET refurlstr='worldpay' WHERE id='worldpwp'
UPDATE ecom_gateway SET incdisp=REPLACE(incdisp, 'ecomrelay.php','ecomrelaymeta.php') WHERE id='epdqform'
UPDATE ecom_orders SET currshow='', currconvrate='', invoicemail=0, invoicedisp=0, ordemaillogosup=0
UPDATE ecom_orderitems SET shiptotalbasis='0.00'
UPDATE ecom_shiprealtime SET rateurl='https://onlinetools.ups.com/ups.app/xml/Rate', trackurl='https://onlinetools.ups.com/ups.app/xml/Track' WHERE id='UPSTOOLS'
UPDATE ecom_prod SET googlebase_color=REPLACE(googlebase_color, ', ', ' / '), googlebase_size=REPLACE(googlebase_size, ', ', ' / '), xcatparent=''
UPDATE ecom_vendors SET purchterms='Net 30', purchshipmethod='STANDARD'
If you have the Articles extension module installed, run these two statements:
UPDATE cms_xmodarticles SET sortorder=10, articlesortorder=0
UPDATE cms_xmodarticlescat SET splashdisp=1, articlesortorder=0, catparent='', xcat='', xsortorder=0
If you have the Batch Shipping Manager (BSM) extension module installed, run this statement:
UPDATE ecom_batchshipmanout SET billacct=''
If updating from version 9.0.3: Start here, and continue to the end:
DELETE FROM core_dbguided WHERE id='core.manageskinwidgets.DISABLEDEL.core.skinwidget_cookieinfo'
DELETE FROM core_modules WHERE id='skin.COREMI903'
DELETE FROM core_namespaces WHERE id='ecom.cardsave3dsecure'
DELETE FROM core_selectcustom WHERE id='core.kiconlist.kicon_widget-cookieinfo'
DELETE FROM core_settings WHERE id='core.curractive' OR id='core.taxeusummarydisp' OR id='ecom.xmodbatchshipman_billacctuspsfreight' OR id='ecom.xmodgooglebase_defaultmpn' OR id='ecom.qbincsurc' OR id='ecom.qbincsurcd'
DELETE FROM core_skinwidgets WHERE id='core.skinwidget_cookieinfo'
DELETE FROM core_stateprov WHERE id='Newfoundland'
DELETE FROM ecom_gateway WHERE id='cardsave' OR id='echoccss' OR id='efsnet' OR id='goemerchant' OR id='gorealgr' OR id='gorealss' OR id='internetsecure' OR id='revecre' OR id='rtwarert' OR id='rtwaress' OR id='secpaydirect' OR id='secpayform' OR id='skipjack' OR id='skipjackapi' OR id='verisignvs' OR id='verisingss' OR id='viakss' OR id='viakvk' OR id='wellsaimcc' OR id='wellsaimck' OR id='wellsfss' OR id='wellsfwf' OR id='hsbcform'
UPDATE cms_banneradverts SET mainbannersupgroup=''
UPDATE core_country SET region='OTHER'
UPDATE core_country SET region='EU' WHERE (iseu=1 OR id='UK - Northern Ireland') AND id<>'UK - Channel Islands' AND id<>'UK - Isle of Man'
UPDATE core_country SET region='UK' WHERE (id LIKE 'UK - %' OR id='United Kingdom') AND id<>'UK - Channel Islands' AND id<>'UK - Isle of Man' AND id<>'UK - Northern Ireland'
UPDATE core_formfields SET fieldorder='800' WHERE id LIKE '%.emaillist'
UPDATE core_formfields SET fieldorder='900' WHERE id LIKE '%.verify'
UPDATE core_formfields SET fieldorder=fieldorder+10 WHERE (form='ecom.orderman_shipaddchange' OR form='ecom.orderman_piichange' OR form='core.addbookins' OR form='core.addbookupd') AND id<>'ecom.orderman_shipaddchange.phone' AND id<>'ecom.orderman_piichange.phone' AND id<>'core.addbookins.phone' AND id<>'core.addbookupd.phone'
UPDATE core_forms SET description='Use the form below to upload a CSV file containing inventory information for inventory items. The CSV file must contain the column names \'invid\', \'invlevel\', \'invcost\', \'invdropcost\' and \'onorder\' on the first line. The values for the \'invcost\', \'invdropcost\' and \'onorder\' columns are optional. Your upload will be processed and any matched inventory items will be updated. A report will be presented to you when the job is complete.' WHERE id='ecom.xmodinventoryupload'
UPDATE core_mail SET defaultsubject='Purchase Order Backorder Update Request' WHERE id='ecom.purchordreqvendor'
UPDATE core_namespaces SET groupdeny='*' WHERE id='core.acctolpdata' OR id='core.acctolpdatadelp' OR id='core.acctolpdatadelp'
UPDATE core_namespaces SET name='Address Verification' WHERE namespace='coaddressverify' OR namespace LIKE 'coaddressverify%'
UPDATE core_stateprov SET region='OTHER'
UPDATE core_stateprov SET region='EU' WHERE (iseu=1 OR country='UK - Northern Ireland') AND country<>'UK - Channel Islands' AND country<>'UK - Isle of Man'
UPDATE core_stateprov SET region='UK' WHERE (country LIKE 'UK - %' OR country='United Kingdom') AND country<>'UK - Channel Islands' AND country<>'UK - Isle of Man' AND country<>'UK - Northern Ireland'
UPDATE core_settings SET value='VAT' WHERE id='core.taxcountryeuname'
UPDATE core_users SET autocommentsext=''
UPDATE ecom_cat SET featgridaccorddo=0, featgridaccordname='Accessories'
UPDATE ecom_cofields SET description='<p>If you have a EU/UK VAT or Canadian Provincial Sales Tax Vendor Permit number, please enter it below.</p>' WHERE id='taxexemptnum'
UPDATE ecom_gateway SET refurlstr='NotApplicable' WHERE incdisp LIKE '%ecomrelaymeta%'
UPDATE ecom_inventory SET easypick='', invautonegwhl=0, invautonegchannel=0, mappricewhl=mapprice, purchcostdropeach=purchcosteach
UPDATE ecom_inventory SET notifystock=CONCAT('DEFAULT:', REPLACE(notifystock, ', ', ', DEFAULT:')) WHERE notifystock<>'' AND notifystock NOT LIKE 'DEFAULT%'
UPDATE ecom_orderitems SET phone='0000000000', taxcesttotal='0.00', taxcestreftotal='0.00', taxcestrate='0.00'
UPDATE ecom_orders SET statusarchived=0, tags='', taxcesttotal='0.00', taxcestreftotal='0.00', taxcestshiptotal='0.00', taxcestrefshiptotal='0.00', taxcestshiprate='0.00'
UPDATE ecom_prod SET whlsaleuserover='', xaddonsdisp='CHECKBOX'
UPDATE ecom_purchords SET phone='0000000000'
UPDATE ecom_shiprealtime SET rateurl='https://production.shippingapis.com/ShippingApi.dll', trackurl='https://production.shippingapis.com/ShippingApi.dll' WHERE id='USPS'
ALTER TABLE core_country DROP COLUMN iseu
ALTER TABLE core_stateprov DROP COLUMN iseu
DELETE FROM core_columndefs WHERE cid='core_country.iseu' OR cid='core_stateprov.iseu'
If the Currency Skin Widget should not be shown, run this statement:
UPDATE core_skinwidgets SET status=0 WHERE id='core.skinwidget_currency'
If you have the Amazon extension module installed, run these three statements:
UPDATE ecom_amazonprod SET invoverride='NOOVERRIDE'
UPDATE core_formfields SET name='Developer Client Secret', description='Enter the Developer Client Secret that Amazon provided you.' WHERE id='ecom.connamazon.connectdata4' OR id='ecom.connamazonalt.connectdata4'
UPDATE core_forms SET name='Amazon Channel Connection Form (Developer Key)' WHERE id='ecom.connamazon' OR id='ecom.connamazonalt'
If you have the eBay extension module installed, run this statement:
UPDATE ecom_ebayprod SET invoverride='NOOVERRIDE', itemspecifics=''
If you have the Batch Shipping Manager (BSM) extension module installed, run this statement:
UPDATE ecom_batchshipmanout SET originemail=''
If updating from version 9.1.0: Start here, and continue to the end:
UPDATE core_users SET apikey=''
UPDATE core_settings SET value='Payment Method' WHERE id='ecom.lang.GATEWAYSECT'
UPDATE core_country SET abb='GB' WHERE id='UK - Scotland Mainland'
UPDATE core_messages SET stringdisp=REPLACE(stringdisp, 'payment processing gateway', 'payment processor') WHERE id='ecom.refundcreditconf'
UPDATE core_forms SET description=REPLACE(description, 'payment processing gateway', 'payment processor') WHERE id='ecom.creditman_refundcredit'
UPDATE ecom_orders SET customdata='', paydetail=''
UPDATE ecom_ordersarchive SET customdata='', tags='', paydetail=''
DELETE FROM core_forms WHERE id='ecom.paypalsfprocstd' OR id='ecom.paypalsfprocpro' OR id='ecom.paypalsfprocexp'
DELETE FROM core_formfields WHERE form='ecom.paypalsfprocstd' OR form='ecom.paypalsfprocpro' OR form='ecom.paypalsfprocexp'
DELETE FROM core_messages WHERE id='ecom.paypalsfconf' OR id='ecom.paypalproexpcancel' OR id='ecom.paypalproexpconfirm' OR id='ecom.paypalproexperr'
DELETE FROM core_namespaces WHERE id='ecom.paypalsfproc' OR id='ecom.paypalsfintro' OR id='ecom.paypalsfcc' OR id='ecom.paypalsfpp' OR id='ecom.paypalsfconfig' OR id='ecom.paypalsfconfirm' OR id='ecom.paypalproexplink' OR id='ecom.paypalproexpret'
DELETE FROM core_settings WHERE id='ecom.paypalproexpemail' OR id='ecom.paypalproexplink' OR id='ecom.paypalprouser' OR id='ecom.paypalpropass' OR id='ecom.paypalprosig' OR id='ecom.paypalprocurr' OR id='ecom.paypalproapiurl' OR id='ecom.paypalprokey'
DELETE FROM core_selectcustom WHERE selectid='core.skins_maincolorscheme'
DELETE FROM core_modules WHERE id='skin.COREMI910'
UPDATE core_namespaces SET name='Payment Methods' WHERE id='ecom.managegate'
UPDATE ecom_cat SET featgridaccordname='Accessories' WHERE featgridaccordname=''
UPDATE ecom_prod SET shippingnotice=''
UPDATE ecom_inventory SET invtypewhl=invtype, shipfreeoverride='0.00', multisiteoverrides='', invlevelremote='0'
UPDATE ecom_discounts SET excludeuseglobal=0, excludeoffers=1
UPDATE ecom_gateway SET incdisp=REPLACE(incdisp, 'internal processing gateways', 'internal payment methods')
UPDATE ecom_gateway SET incdisp=REPLACE(incdisp, 'external processing gateways', 'external payment methods')
If you have the Amazon extension module installed, run this statement:
UPDATE ecom_amazonprod SET cacheinvfba='0', restockinvfba='0'
If you have the Customer Viewer extension module installed, run these statements:
DELETE FROM core_namespaces WHERE id='ecom.xmodcustomerviewer_pricelist'
DELETE FROM core_messages WHERE id='ecom.xmodcustomerviewerpricelisterr' OR id='ecom.xmodcustomerviewerpricelistnooffers'
If you have the Order Follow Up extension module installed, run this statement:
UPDATE ecom_xmodorderfollowup SET excludeuseglobal=0, excludeoffers=1
If the Payment Sense payment method is NOT used/installed, run this statement:
DELETE FROM core_namespaces WHERE id='ecom.paymentsense3dsecure'
If the SagePay Direct payment method is NOT used/installed, run this statement:
DELETE FROM core_namespaces WHERE id='ecom.sagepay3dsecure'
If the FirstData API payment method is NOT used/installed, run this statement:
DELETE FROM core_settings WHERE id='ecom.linkpointkey'
If updating from version 9.2.0:
UPDATE core_settings SET value='Store' WHERE id='ecom.lang.STOREHOME'
UPDATE ecom_cat SET prodfilter='TYPE, MANU, PROD, PRICE' WHERE nofilter=0
UPDATE ecom_manus SET prodfilter='TYPE, PRICE' WHERE nofilter=0
UPDATE ecom_prod SET prodfiltertype='Unspecified', prodfilter=''
UPDATE ecom_prod SET prodfiltertype='Gift Certificate' WHERE id='GIFTCERTIFICATE'
UPDATE ecom_prod SET prodfiltertype='Service' WHERE id='OVERPAYMENT' OR id='CUSTOMSERV' OR id='WARRANTYREPLACE' OR id='WARRANTYRETURN' OR id='DAMAGECLAIMREPLACE' OR id='DAMAGECLAIMRETURN'
UPDATE ecom_prod SET prodfiltertype='Inventory' WHERE id='MISCINVITEM'
UPDATE ecom_inventory SET invfeatgrid='', xprodname='Related Items', xprod=''
UPDATE core_skinwidgets SET status=0 WHERE id='core.skinwidget_navigationbar'
UPDATE core_skinwidgets SET widgetclass='kwidget_expandedh' WHERE widgetclass='kwidget_collapsedh'
UPDATE core_skinwidgets SET widgetclass='kwidget_expandedi' WHERE widgetclass='kwidget_collapsedi'
UPDATE ecom_orders SET procdebug=''
UPDATE ecom_ordersarchive SET procdebug=''
UPDATE ecom_payments SET procauthinfo=''
UPDATE ecom_paymentsarchive SET procauthinfo=''
UPDATE ecom_discounts SET xmanu=''
UPDATE core_stateprov SET taxrate='6.875' WHERE id='Minnesota'
DELETE FROM core_namespaces WHERE id='ecom.skushow'
DELETE FROM core_selectcustom WHERE id='core.skinwidgetclasses.kwidget_collapsedh' OR id='core.skinwidgetclasses.kwidget_collapsedi'
DELETE FROM core_dbguided WHERE id='ecom.managegiftcert.orderid.TBLSUPRESSCLONE'
DELETE FROM core_modules WHERE id='skin.COREMI920'
If you have the Google Shopping extension module installed, run these two statements:
UPDATE ecom_prod SET googlebase_pattern='', googlebase_material=''
UPDATE ecom_prod SET prodfiltertype=googlebase_product_type WHERE prodfiltertype='Unspecified' AND googlebase_product_type<>''
If you have the Amazon extension module installed, run these three statements:
UPDATE ecom_amazonprod SET cacheinvfba='TBD', restockinvfba='TBD', transitinvfba='TBD'
DELETE FROM core_forms WHERE id='ecom.connamazon' OR id='ecom.connamazontoken'
DELETE FROM core_formfields WHERE form='ecom.connamazon' OR form='ecom.connamazontoken'
Product filters were completely changed in version 9.3.0. If you are using product filters, you'll want to convert your existing product filters before running any more statements. To convert your filters, download the 9.3.0 Product Filter Conversion Script and unzip it. Upload the PHP conversion script to your {public}/utilities directory, and access it using your web browser to run it. When finished, removed the PHP script you uploaded.
The following statements remove old product filter data. If you're using product filters, be sure you've converted them before running these fourteen statements:
DROP TABLE ecom_prodfilter
ALTER table ecom_cat DROP COLUMN nofilter
ALTER table ecom_manus DROP COLUMN nofilter
ALTER TABLE ecom_prod DROP COLUMN xprodfilterone
ALTER TABLE ecom_prod DROP COLUMN xprodfiltertwo
ALTER TABLE ecom_prod DROP COLUMN xprodfilterthree
ALTER TABLE ecom_prod DROP COLUMN xprodfilterfour
ALTER TABLE ecom_prod DROP COLUMN xprodfilterfive
DELETE FROM core_columndefs WHERE cid LIKE 'ecom_prodfilter.%' OR cid='ecom_cat.nofilter' OR cid='ecom_manus.nofilter' OR cid='ecom_prod.xprodfilterone' OR cid='ecom_prod.xprodfiltertwo' OR cid='ecom_prod.xprodfilterthree' OR cid='ecom_prod.xprodfilterfour' OR cid='ecom_prod.xprodfilterfive'
DELETE FROM core_tabledefs WHERE tid='ecom_prodfilter'
DELETE FROM core_settings WHERE id='ecom.prodfilterpriceactive' OR id='ecom.prodfilterpricename' OR id='ecom.prodfilterpricesort' OR id='ecom.prodfilteroneactive' OR id='ecom.prodfilteronename' OR id='ecom.prodfilteronesort' OR id='ecom.prodfiltertwoactive' OR id='ecom.prodfiltertwoname' OR id='ecom.prodfiltertwosort' OR id='ecom.prodfilterthreeactive' OR id='ecom.prodfilterthreename' OR id='ecom.prodfilterthreesort' OR id='ecom.prodfilterfouractive' OR id='ecom.prodfilterfourname' OR id='ecom.prodfilterfoursort' OR id='ecom.prodfilterfiveactive' OR id='ecom.prodfilterfivename' OR id='ecom.prodfilterfivesort' OR id='ecom.searchprodnofilter' OR id='ecom.enableprodfilter' OR id='ecom.enableprodfilterajax'
DELETE FROM core_dbguided WHERE id='ecom.manageprodfilter.id.COLNOSPCHARS'
DELETE FROM core_namespaces WHERE id='ecom.manageprodfilter' OR id='ecom.manageprodfilterone' OR id='ecom.manageprodfiltertwo' OR id='ecom.manageprodfilterthree' OR id='ecom.manageprodfilterfour' OR id='ecom.manageprodfilterfive'
DELETE FROM core_selectcustom WHERE id='ecom.prodfilterslots.1' OR id='ecom.prodfilterslots.2' OR id='ecom.prodfilterslots.3' OR id='ecom.prodfilterslots.4' OR id='ecom.prodfilterslots.5'
Step 6: Post-Update Manual Changes
After updating your database, there are several manual changes that need to be made to bring your software up to date. Note that depending on the version you're updating from, you may need to make all or some of these changes.
Post-Update Manual Changes
If updating from version 9.0.0 through 9.0.1: Start here, and continue to the end:
Edit the skin.php file in your Mail Message skin ({public}/skins/MailMessage/skin.php). In that file, you will see:
$logourl = $this->globals('core.url_nonssl');
Change to the following, save the file, and replace it online:
$logourl = $this->globals('core.url');
Access the System / Component / Settings / Site Information management interface function and enter a properly formatted telephone number in the 'Site Owner Telephone Number (Link)' field.
Access the System / Mail / Mail Messages management interface function and ensure email addresses are correct on all newly added mail messages.
If you use the Cookie Information page, change information in the Session Cookies session to accurately reflect how this software uses session cookies. You can update this page using the Website / Content / Webpages management interface function. Proper language is:
These cookies are used to maintain your identity, or session, on this website. These cookies typically expire at the end of your browser session, with the exception of a special session token cookie, which will be available for 30 days.
If you have configured either Wordpress or Vanilla Forums to work with the software's Remote Skin Exporter, you will need to download and install a new theme and plugin(s). When installing the new theme in either WordPress or Vanilla Forums, simply overwrite all the theme files, but you can keep your CSS styles. Overwrite all files for plugin installations.
Get Wordpress and Vanilla Forums Themes and Plugins
If the Google Shopping extension module is installed, access the Store / Catalog / Product Offers management interface function and ensure that all product offers are either not using Google Shopping Price Overrides, or ensure any Google Shopping Price Overrides are accurate.
If you had the Google Trusted Stores extension module installed, it has been replaced with the Google Customer Reviews module, so you need to remove the Google Trusted Stores module. To do so, delete the entire {private}/apps/ecom/XMOD_GoogleTrustedStores directory, and the file {private}/apps/ecom/ECOM/includes/xmodgoogletrustedstores_js.php.
If you have installed the new Articles extension module, you may want to add the following to your main skin's all.css file at the bottom ({public}/skins/{YOUR-SKIN}/css/all.css):
.kxmodarticlescatshow, .kxmodarticleslist {border: 1px solid #F4F4F4;}
.kxmodarticlescatshowdescwrap, .kxmodarticleslistdescwrap {background-color: #F4F4F4;}
.kxmodarticlescatlistitem {background-color: #F4F4F4; border: 1px solid #F4F4F4;}
.kxmodarticlescatlistitemwrap {padding: .5em;}
If updating from version 9.0.2: Start here, and continue to the end:
If you were using the Purchase On Account payment gateway, reactivate the gateway using Store / Commerce / Payment Methods. This gateway integration was completely rebuilt.
If you are using the FirstData Payeezy payment gateway, using Store / Commerce / Payment Methods edit the gateway and in the Form Display Code section, set the timestamp variable to use the server time() function:
$x_fp_timestamp = @time();
And remove the x_relay_response and x_relay_url parameters entirely from the form defintion. These changes are due to FirstData now automatically sending relay responses and using UTC.
Remove the directory {public}/skins/COREMI9, and all it's contents. A new management interface skin was installed with this update, and this older skin is no longer needed.
If updating from version 9.0.3: Start here, and continue to the end:
If you were using the SagePay (Protx) - Payment Form payment gateway, reactivate the gateway and enter your access info using Store / Commerce / Payment Methods. This gateway integration was completely rebuilt.
Update the skin.php files used by all active skins (Flex, MailMessage). Replace '<html>' with '<html lang="en">'.
Enter a Local Warehouse Telephone number using Store / Component / Settings / Shipping Settings.
Remove the directory {public}/skins/COREMI903, and all it's contents. A new management interface skin was installed with this update, and this older skin is no longer needed.
Configue new tax settings the new Tax settings functions found under System / Component / Settings. There are new sections for generate Tax Settings, Displays, Exports and Registration Numbers.
If the Batch Shipping Manager extension module is installed, access Component / Settings / Extension Module: Batch Shipping Manager to enter values for the new Blind Shipment Origin fields to ensure that origins for blind shipments are stored corrected.
If using PayPal Standard for payments, use Store / Component / Settings / PayPal Standard Settings to set Instant Payment Notification (IPN) Activated Status to true (1), and follow the instructions displayed to ensure IPN is properly configured in your PayPal account.
Edit new settings under System / Component / Settings / Privacy Settings to display or hide the Cookie Info Banner (off by default) and the Terms and Conditions Field shown on forms that collect Personally Identifiable Inforation (PII) (on by default).
If updating from version 9.1.0: Start here, and continue to the end:
This update introduced a brand new integration with PayPal Commerce Platform, which supports regular and express checkouts using PayPal, PayPal Credit, Pay Later, Venmo and Credit Card payments. If you use PayPal Website Payments Pro to process payments, you will need to switch to PayPal Commerce Platform after your update. If you use PayPal Payments Standard to process PayPal payments, it is highly recommended that you switch to PayPal Commerce Platform after your update. Just follow the instructions under Store / Commerce / Payment Methods, and you'll be all set.
Skins were changed to load only fonts required using their CSS files, instead of using a call in the skin's head tag. This optimizes font loading in skins. In skin.php files for active FrontEnd skins, optionally remove the link tags in the head which load fonts. In all.css files for active FrontEnd skins, add @font-face declarations for the link tags you removed.
Check the {private}/apps/ecom/ECOM_OLP/ext directory for removed payment method validation extensions. Store / Commerce / Payment Methods will list all available payment methods. Removed all the validation extension files from the extension directory except: cash.php, check.php, nopay.php, purchonacct.php, quote.php, refundbal.php, zerobal.php, and any other extensions files associated with an available payment method.
Remove subscription code from PayPal Payments Standard gateway (order.recurtotal greater than zero condition).
Remove the old management interface skin stored in {public}/skins/COREMI910. Remove the entire directory and all its contents.
If the Stripe payment method was in use, reconfigure and reactivate the Stripe extension module payment method usign Store / Commerce / Payment Methods.
USPS shipping services were reloaded, and now reference service codes instead of service names. Use Store / Shipping / Realtime Services to ensure all the USPS services are activated that you wish to use.
If updating from version 9.2.0:
Clients using .htaccess files to manage Search Engine Optimized URLs should modify the last Kryptronic eCommerce RewriteRule in their .htaccess file, changing '[L,PT]' to '[L,PT,QSA]' at the end. Product offer variant URLs now use query string parameters in addition to SEO URLs, making this change necessary. Example:
RewriteRule ^(.*) index.php?COREseourl=/$1 [L,PT,QSA]
Remove the old management interface skin stored in {public}/skins/COREMI920. Remove the entire directory and all its contents.
Clients using custom Company Information or Location/Breadcrumbs skin widgets which contain microdata should remove the microdata information as the SEO MicroData module is now handling printing that microdata using more efficient means.
Clients with the Microdata extension module installed should access System / Component / Settings / Extension Module: SEO MicroData to update new settings including hours of operation, microdata logo, geolocation coordinates, and more.
Clients with the Google Shopping extension module installed can use Store / Catalog / Product Offers to configure the new pattern and material parameters added to Product Offers.
If you were using the Realex payment gateway, reactivate the gateway and enter your access info using Store / Commerce / Payment Methods. This gateway integration was completely rebuilt.
Due to the removal of jQuery UI, clients using custom code which requires jQuery UI should load it by setting global 'core.load_jqueryui' to true in their skin/theme ahead of loading the core.jslib namespace. Notably, using effects on show() and hide() will require changes or jQuery UI loading. To compensate in the core software, show('fade',time) has been changed to fadeIn(time), and hide('fade',time) has been changed to fadeOut(time).
Due to the removal of jQuery JSON plugin, clients using custom code which uses JSON should ensure native JavaScript JSON functions are used instead of jQuery functions. To compensate in the core software, jQuery.toJSON(x) has been changed to JSON.stringify(x), and jQuery.evalJSON(x) has been changed to JSON.parse(x).
Small product and inventory item images previously displayed as round (using CSS class .kimground) are now styled using CSS class .kimgrounded, which is not defined. Set '.kimgrounded {border-radius: 50%;}' in your skin/theme's all.css file to make those images round.
Items Added/Changed In This Update
Complete Search Engine Optimization (SEO) Overhaul
Search Engine Optimization across the entire platform was reimagined and rebuilt. This is by far the largest SEO update to Kryptronic software since SEO became a thing in the early 2000s. SEO was modernized, MicroData was updated, content has been adjusted, and displays have been altered. This software has demonstrated it can achieve perfect Google Lighthouse scores using a proper modern server and optimized content. We left absolutely nothing on the table, and changed everything in the process.
Full support for Google Analytics 4 (GA4) using the Google Tag was added. Google Analytics 3 (GA3) support will continue as Google Universal Analytics until Googe shuts it down. The Google Tag fully supports order conversions as purchase events with full order information, including line items, being transmitted.
For General SEO, all text/javascript references in script tags generated by the software were removed. That designation is no longer necessary as per W3C.
For General SEO, removed older noodp (no open directory project) and noydir (no yahoo! directory) robots meta designations.
Core request URI formatting was centralized in the Application class, so functions using the requesturi global can be assured all tags have been stripped and URLs converted for inclusion in JavaScript, etc.
A new Core text manipulation function was added which strips all tags and special characters from text, and optionally truncates it. Named xhtml_totext(), this new function can be used to generate descriptions for feeds, meta information and microdata, or anywhere fully cleaned HTML may be needed.
For Web Pages, HTML Content is now globalized with all other content. Additionally, rendered HTML output (now obtained and printed using a buffer) is globalized.
Added a content control setting to turn videos on/off for a site entirely (page content and microdata). The default is on. This setting is useful for MultiSite setups where videos shouldn't appear on all of the sites configured.
The main Display URL generator function was updated to use SEOURLs with CGI variables appended to them in the event the variables 'variant', 'count' and/or 'offset' are present, and no other variables are present. This has made the URLs used for product variants and paginated navigation more SEO-friendly, and in line with Google recommendations.
jQuery UI was removed as it became unecessary with new jQuery updates becoming available. This has saved a significant amount of data transferred on initial page loads, and a script load, and results in speed and rendering performance increases. Clients using custom code which requires jQuery UI should load it by setting global 'core.load_jqueryui' to true in their skin/theme ahead of loading the core.jslib namespace. That will load a bundled version of jQuery UI when jQuery is loaded, which is otherwise not loaded.
The JQuery JSON plugin was removed as jQuery now recommends native JavaScript JSON functionality for creating and parsing JSON. This has saved data transferred on initial page loads, and a script load, and results in speed and rendering performance increases.
Fully Rebuilt and Modernized SEO MicroData
Removed all old microdata from skin/theme widgets such as the Company Information and Breadcrumbs/Location widgets and removed all old MicroData display includes. These widgets and includes printed MicroData to the HTML page body using schema.org MicroData syntax in HTML tags.
MicroData is now generated by the SEO MicroData extension module itself, in JSON+LD. New settings were added to System / Component / Settings / Extension Module: SEO MicroData, including a logo image to use for MicroData.
All MicroData is now fully linked/related exposing correct and proper ownership/authoriship/relationship information for all requests. MicroData is exposed in JSON+LD in a single array which links all MicroData elements to one another. For example, a page for a Product Offer exposes a Store element for the company, a Product with one or more Offers that are sold by the Store, a Item Page authored by the Store which contains the Product and BreadCrumbs. A Video Object, authored by the Store, may be part of the Item Page. The Item Page is part of a Web Site, that is also exposed, and authored by the Store.
Open Graph meta tags were added to the MicroData module. These tags, developed by Facebook, were available in early version 8 software, and have made a return here as they appear to be useful for SEO as alternative tags. Open Graph tags added include: title, type, image, url, site_name, description and video. Open Graph tag content is derived from MicroData, so it matches exposed MicroData in all cases. To help link the site to Facebook (if desired), use System / Component / Settings / Extension Module: SEO MicroData to enter your Facebook page's App Id.
Every page now exposes Store (or Organization) MicroData element which is referenced by all other MicroData elements which designate ownership or authorship. This element was previously rendered in MicroData using the Company Information Skin/Theme Widget, and was detatched from other MicroData.
Store (or Organization) MicroData was enhanced to include social media page references, hours of operation, payment methods accepted (if the Google Shopping module is installed), price range, map coordinates, map URL, and logo.
Video Objects elements are now available in MicroData, which allows exposing videos as part of pages, articles and products. Previously videos were not exposed.
Every page now exposes a Web Site MicroData element which relates any Page elements (Web Page, Collection Page, Item Page) to the site in general. The Web Site is authored by and linked to the Store (or Organization), and has a logo. Sitelinks Search parameters are new, and can be configured using System / Component / Settings / Extension Module: SEO MicroData. Using Sitelinks Search provides search engines like Google information on how to embed a search form in results for the website.
The MicroData module now has the ability to create Pages as Collection Pages, which prints an Item List (aka Carousel) containing links to other pages. Carousel types supported, in order of precedence, are Categories (Store or Article), Articles, Products and Web Pages. Each Collection Page can reference a single Carousel, which must contain links to pages all of the same type. Collection Pages are a new MicroData element type.
All system generated pages which do not explicitly set MicroData information have MicroData exposed as Web Page, and shows the page was authored by the Store (new), has Breadcrumbs (new), and to show that page is part of the Web Site (new). Previously these pages were not exposed in MicroData. These are pages like the contact page, shopping cart, account section, checkout, etc.
All pages without MicroData Breadcrumbs generated now automatically have Breadcrumbs generated pointing back to the homepage. This includes CMS Web Pages as well as system generated pages which do not explicitly set MicroData information or Breadcrumbs.
In all instances were MicroData is being exposed for a Page, Product, Article, etc, now the actual names and descriptions are used (instead of meta tag names and descriptions). This is done to ensure MicroData information matches page actual page content, rather than meta tag information. In all instances where a video is available, a MicroData Video Object element is exposed. In all instances where images can be exposed, all available larger-size images are used.
The MicroData extension module was updated to accept a list of full image URLs as an input parameter. Web Pages leverage this new functionality. Use by appending image URLs to the global array named 'cms.content_imageurls' in Web Page content.
Awesome Store Catalog SEO and Microdata
For SEO consistency, store breadcrumbs now include a link to the site's homepage in all cases. Previously, if the store splash page was not bypassed, it was the first link presented in breadcrumbs. This adds a level to show that all pages stem from the homepage.
The Store Splash page now exposes itself as a MicroData Collection Page containing Store Category links in a Carousel. If no categories are available, Featured Product Offer links are used, if available. Previously this page was not exposed in MicroData. This page is authored by the Store (new), has Breadcrumbs (new), and is part of the Web Site (new). MicroData fields include name, description, image (logo), author and URL.
For Store Category SEO, altered displays to print the category name as an H1 tag with the id 'ktitle'. This prints a true title tag for the category page using the category name. Previously the H1 tag was printed and hidden, and the category name was printed in a div. This visibly exposes the H1 tag, aligning with new SEO stragegies.
For Store Category SEO, category meta descritions now default to the full description (stripped and formatted) if a meta description is not entered for the category. Previously the short description, if entered, was the default.
The Store Category pages are now exposed as MicroData Collection Pages containing Store Category links in a Carousel. If no categories are available, Related Product links are used, if available. Previously exposed as a generic Web Page. This page is authored by the Store (new), has Breadcrumbs (new), and is part of the Web Site (new). MicroData fields include name, description, image (logo or category image), a video object (new), author and URL.
All Category SEO and MicroData changes were extended to Special Offer and Manufacturer (Brand) Category displays.
For Store Product SEO, detail pages were modified to print the product offer name without the number prepended as the H1/title tag for the page. Previously the name was styled differently, could have had the product number prepended, and was not an H1 tag (the H1 was hidden, and did not contain a prepended product number). This has made the printed title an H1, and maintains matching between the H1 and meta title tag.
For Store Product SEO, the layout for Product Offer detail pages was altered to print the page title and description/content in the first div printed in the source, and any images and extras to the second div printed in the source. The divs are flipped using klfex CSS controls. This gets the main content printed for all product offer detail pages (and SKU pages) at the very top of the body tag in the source.
Store Product Offer Microdata was enhanced substantially. Product Offers are now exposed as Product MicroData elements which are the main content of an Item Page, which is also exposed. Previously they were exposed as Products not linked to a page. Product now show as sold by the Store (now attached), can expose multiple large images (new), and a video object (new). Reviews and Aggregate Rating information is attached to Products for Product Offers with reviews. Breadcrumbs are attached to the Item Page with the Product.
Store Product Offer Microdata now includes a manufacturer reference, a proper Brand reference with type, exposes offers for every Inventory Item being sold (for multiple Inventory Item offers). If the Google Shopping extension module is installed, color, size, material and pattern are exposed, if entered for Product Offers.
Store paginated navigation links (search and categories) were optimized to speed up creation, and now use SEO URLs with 'count' and 'offset' parameters. Now paginated navigation URLs closely match the canonical URL for the page(s).
Product sort controls changed from links to drop down selection list, and now reloads page with ajax with a Reset Sort option available when sorting is active. Previously sort links were printed using full CGI URLs and nofollow links. Now they're fired using Ajax, avoiding that.
Beginning with version 9.1, Inventory Item type product offers selling multiple inventory items were exposed using SKU-based URLs. Those URLs have changed to use the product offer URL with a 'variant' CGI parameter appended. Any necessary rewrites are handled internally. All references were changed, including those in MicroData and the Google Shopping feed.
The MicroData extension module was updated to use Inventory Item vendor item identifiers as the MPN for Inventory Item offer types.
Store category header displays were altered for SEO purposes to move the textual content for categories (name, description) above the image from a source-code perspective. Top category header displays were flipped to use an image to the right view. Category feature grid headers continue to use an image to the left view, even though the source-code is opposite.
Amazing Content SEO and Microdata
For Web Page SEO, if a meta description is not entered for a Web Page, the rendered HTML output for the page will be used (stripped and formatted). Previously no default was set, so the default site meta description was used.
MicroData for Web Pages was augmented to include attached/related Breadcrumbs (new), and to show the page was authored by the Store (new), has Breadcrumbs (new), and to show that page is part of the Web Site (new). New MicroData fields for Web Pages include image (logo) and URL.
For Article Category SEO, article category meta descriptions now default to the full category description (stripped and formatted) if a meta description is not entered for the category. Previously the short descritpion, if entered, was the default.
For Article SEO, article meta descritions now default to the full article content (stripped and formatted) if a meta description is not entered for the article. Previously the summary, if entered, was the default.
The Articles splash page exposes itself as a MicroData Collection Page containing Article Category links in a Carousel. If no categories are available, Featured Article links are used, if available. Previously this page was not exposed in MicroData. This page is authored by the Store (new), has Breadcrumbs (new), and is part of the Web Site (new). MicroData fields include name, description, image (logo), author and URL.
The Article Category pages are now exposed as MicroData Collection Pages containing Article Category links in a Carousel. If no categories are available, Related Article links are used, if available. Previously exposed as a generic Web Page. This page is authored by the Store (new), has Breadcrumbs (new), and is part of the Web Site (new). MicroData fields include name, description, image (logo or category image), author and URL.
Articles are now exposed as BlogPosting (or Article) MicroData elements which are the main content of a Web Page, which is also exposed. Previously they were exposed as generic Web Pages. Articles now show as authored by the Store (now attached), multiple images (new), a video object (new), and date/time information (new). Breadcrumbs are attached to the Web Page with the Article.
CMS Articles extension module paginated navigation links (search and categories) were optimized to speed up creation, and now use SEO URLs with 'count' and 'offset' parameters. Now paginated navigation URLs closely match the canonical URL for the page(s).
Theme/Skin SEO and Modernization
Images for categories, products, articles, etc. now use base dimension settings and special inline CSS to combat content layout shift (CLS). This reduces layout shift by creating a placeholder for these images in the layout as it's being rendered by browsers.
Images for categories, products, articles, etc. now load in a lazy fashion, waiting until the image is close to the viewport. This increases page rendering times substantially and reduces content layout shift (CLS). These base dimensional settings can be controlled using Store / Component / Settings / Images and Website / Component / Settings / Images. Base dimensions provide placeholders for images, implementing a base/initial aspect ratio. Actual image aspect ratio is shown once the image is loaded, which may produce minimal shift if images do not align their dimensions with the base settings.
The Flex theme/skin was updated to perform better from an SEO perspective. It was also modernized - going to a single-column layout with streamlined widget displays. The original Flex theme is still available under the name FlexOG. Themes are not updated during software updates, so this change does not affect current installations using the Flex theme/skin.
Fixed menu controls were added to the common JavaScript library. Use class 'kfixednav' on the navigation container, and class 'kfixedcontent' on the content container in your skin's HTML template to fix the navigation menu in wide/desktop views when it scrolls out of view.
Click controls for menus in the common JavaScript library were expanded to include wide/desktop views. Previously they only functioned in thin/mobile and mid/tablet views.
Added the ability to override skin widget settings when loading widgets individually using the skinwidgetsid namespace. Now you can pass an array of values (including the widget id) to use to override settings for each widget as they are loaded.
Removed open/close widget controls from all widgets to decrease the number of (hidden, unused) DOM elements printed to the display. Decreases render time and increases performance.
Removed the collapsed-header and collapsed-icon widget classes/styles (unused). Decreases render time and increases performance.
Expanded widget displays no longer collapse in mid/tablet and thin/mobile views. Decreases render time, content layout shift (CLS) and increases performance.
The base icon and image sets were updated to utilized modern icons and images. These new icons and image sets generally use hollow icons, and the graphics are thinner than the previous version. Any clients using custom icon sets in their themes can copy these over and modify or change colors as desired.
Merged the standard color and inverted color sprites into one combined sprite, and added banner, slider and modal controls to the combined sprite. Now one sprite is loaded for all icon requests.
The collapsed header skin widget display (kwidget_collapsedh) was removed (unused/unnecessary). This update converts all skin widgets using this display were changed to expanded header skin widget displays (kwidget_expandedh).
The collapsed icon skin widget display (kwidget_collapsedi) was removed (unused/unnecessary). This update converts all skin widgets using this display were changed to expanded icon skin widget displays (kwidget_expandedi).
Added new Navigation Bar skin widget. This new widget provides options to include various menus and links in a unified navigation menu. This makes for an easier alternative to grouping widgets, or making a custom menu in your skin.
Changed a few initial default values for product and category displays to compliment the new wider design of the Flex skin. These changes have no impact during updates.
Padding changed on shopping cart and checkout link with icon displays to better align text with icons.
Fonts are now loaded using preload and link tags in the skin's head, before any other CSS file links. Font imports are no longer done in the CSS file. This is as per recent Google recommendations/changes - preloading fonts avoids render blocking during retrieval. Google Roboto loading is handled this way now by default.
To optimize JavaScript loading, document.write() was removed and is no longer used. It was found in the Listrak module and replaced with modern code.
Non-critical JavaScripts are now requested in deffered format, which reduces render blocking, and gains perfomance points in Lighthouse evaluations.
To comply with Google Lighthouse accessibility recommendations, both the red (FF0000) and green (339933) colors used in the base styles for the software have had brightness reduced by 10% to red (E50000) and green (2A802A). Increases readability for items like stock messages and pricing.
All instances of style tags using a type parameter (text/css) have been updated to remove the type parameter (no longer needed).
Easy Custom Code Support Added
Prior to this update, in order to modify or add to software functionality, clients had to modify the core software. This methodology has resulted in cumbersome updates for modified sites which require code merges and file change tracking to ensure customizations persist. With the introduction of Custom Code support, clients can (and should) keep modified and added files separate from the core software. This feature makes way for Easy Auto Update functionality which supports Custom Code (to be introduced in the near future).
Custom Code support added for modified private system and component files. To utilize, create a {private}/custom directory, and copy the file you want to modify (example: {private}/apps/ecom/ECOM/includes/cartdisplay.php) into that directory while maintaining it's full path (example: {private}/custom/apps/ecom/ECOM/includes/cartdisplay.php). When loading that file, the software will load your custom file.
Custom Code support was added for new private system and component files. To utilize, create a {private}/custom directory, and add a file while using an appropriate full path (example: {private}/custom/apps/ecom/ECOM/includes/custom.php). This includes support for loading additional task files for task functions which run one or more files from within a directory (examples: core and application startup, shutdown, cron, order processing).
Custom Code support was added for modified public files. To utilize, create a {public}/custom directory, and copy the file you want to modify (example: {public}/media/scripts/frontend.min.js) into that directory while maintaining full paths (example: {public}/custom/media/scripts/frontend.min.js). When loading that file, the software will load your custom file.
Custom Code support was added to the Installer. You can deploy entire custom modules in {private}/custom during installation and updates, just as if they had been added directly to the core software.
Product Offer and Inventory Item Changes
Read More functionality added to long product offer descriptions. Add a paragraph with the CSS class 'kreadmore' to display a link (showing the paragraph text as the link text) which expands all content in the long product offer description that follows.
Inventory Item type product offers selling multiple inventory items were updated to utilize the Inventory Item image as a large product image, and to display and change the to the appropriate image with Inventory Item selections.
Inventory Item type product offers selling multiple inventory items were updated to display pricing and product info (points, product number, rebate info, etc), and to change that info based with Inventory Item selections.
Inventory Item type product offers selling multiple inventory items were updated to display the inventory items choices with the header 'Options' instead of using the offer name.
If product tabs are used on the product offer detail page, the first populated tab is now shown as open by default. Previously it was closed. Updated for SEO purposes, and to alert customers to content being available in the tabs.
Inventory Item type product offers selling multiple inventory items can now display feature grids on the product offer detail page containing information for the Inventory Item options. Turn on using an offer-level control (Product Offers: Display Inventory Item Feature Grid), and enter feature grid information on the inventory item level (Inventory Items: Inventory Item Feature Grid).
Inventory Item type product offers selling multiple inventory items can now display directly related product offers on the product offer detail page using a custom header. This is useful for cross-selling items like replacement parts which are directly compatible/related to a specific Inventory Item.
Product Offer and Inventory Item product number (SKU) displays were altered. The product numbers were removed from the item name and are now displayed under the name in a way that doesn't detract from the item name.
Product Filters Reimagined
Product filters as implemented in previous versions were completely removed and rebuilt. The new filter system features filter parameters entered directly with Product Offers, and is completely variable in nature - allowing an unlimited number of filters and filter choices.
Product filters for product type, price and brand can be activated for searches and brand displays, if enabled. Those filters, plus any offer specific filters, can be activated for category displays.
Product filters can now be shown using selection lists that allow a single choice to be selected per filter, of using checkboxes that allow multiple choices per filter.
Product filters can now be shown using an over/under display (filters at the top of the page), or a split display (filters to the left, products to the right) in desktop/wide views. The split display is most effective on sites without a sidebar in the theme.
Product filters have been optimized from a resource perspective to run much, much faster than ever before. They can be used on large sites now without degradation in performance.
Other Store Updates
Category feature grid information can now be displayed on product listings using a More Info display (three-dot icon which expands to show feature grid info when clicked). Controlled using the new 'Product Listing: Display Feature Grid Info' setting.
Category and product pages image check functions were optimized to reduce the possibility for multiple checks.
Category feature grids received styling changes which added Item Numbers to the grids (removing them from the front of product offer names). More width was given to the item portion of category feature grids to provide a better/shorter display.
Product offers pricing displays now show loyalty points plus (+) when pricing is variable for the offer depending on Inventory Item choices (priced from).
Language strings were added for displaying custom text for the MPN and Item Number. The defaults are 'Item Number', 'Item' (short), and 'MPN'.
Product offer lists with add to cart buttons activated now display an Options button for package deals, custom packages and multiple inventory item offers which can be added to the cart from the offer detail page.
The Loyalty Points multiplier skin widget is now displayed on the splash/home page. Previously it was specifically disabled on that page. The widget was also updated to allow for HTML to be used for the Points Multiplier Heading.
The regular expression ' (MPN.*)$' is now automatically used to strip MPN information from the end of inventory item names when they are displayed on store catalog pages and in wholesale price lists. This has been done to clean up those displays, but allows retention of MPNs in inventory item names in microdata offers, the shopping cart, checkout and beyond.
For wholesale customers, the following price-based functions are disabled: product price filters, minimum and maximum price advanced search fields and price-based product list sorting options. These price-based functions rely on product offer sort price, which is based on regular pricing, making these functions inaccurate for wholesale customers.
Product offer sort prices are no longer updated with special offer pricing. Sort prices remain at regular price, and if special offers are active, special offer pricing is calculated. This change provides support for the new product filter system, and makes searches using price ranges more accurate with special offers active.
Checkout Enhancements
Added Captcha support to Checkout Form Fields, which allows a Captcha field to be used in Checkout. Captchas in Checkout are becoming common due to Carding attacks, and this can help combat those, as well as unwanted bot checkouts. To use, add a new Checkout Form Field using Store / Commerce / Checkout Form Fields and choose the Captcha field type, and make it required.
Payment methods can now easily save processor debug information for orders using ECOM_OLP::olpprocdebug(). An order object is used as input, and updated order debug information is returned. Payment methods will be updated over time to use this new functionality.
Added processor response code display support, and activated storing response codes for display in the Authorize.net CIM and PayPal Commerce Platform (PPCP) payment methods. Additional payment methods will be updated over time to use this new functionality.
Discount codes now have a related manufacturer code-level field, as well as the ability to leverage a new global setting (under Store / Componenet / Settings / Discount Exclusions) for excluding products from a list manufacturers.
Discount codes can now be excluded from usage on product offers for which special offer pricing is active. A new code-level setting was added, as well as a global setting that can be leveraged by discount codes.
Checkout was altered to withold required fields (Captchas mainly) during automated order creation like PayPal Commerce Platform using Express Checkout. Those fields are presented in checkout when accessed by customers to complete orders.
Moved Checkout RON (Regenerate Order Number) logic inclusion from DocReady to WindowLoad to provide necessary delays for some browsers. Currently used only by the SagePay (Protx) Payment Form payment method.
Orders and Order Processing Updates
Modified order center searches - added customer purchase order number as a searchable field. Will aid in looking up wholesale orders for which the customer has provided their PO number.
Purchase order creator changes: Layout changes were made to reorganize the order of the columns used in the items table. Controls were added to limit purchasing predictions to local inventory, remote inventory, or both. Amazon FBA restock recommendations are now shown with predictions.
Order Manager custom processing functions were removed, as they became unnecessary with the new Custom Code updates. Instructions for this update include information on how to move custom processing functions to a custom location, if used.
All order summary, credit, purchase order displays have been modified to list the Item Number as 'Item' instead of 'Number', and where 'Item' was used for the description, 'Description' is now used.
Order returns can now be processed using function calls that emulate staff processing a return. This enables automated jobs and other scripts to do returns on orders easily. Examples: Bulk writing off old unpaid orders, processing Amazon FBA returns.
Order item splits can now be processed using function calls that emulate staff processing a split. This enables automated jobs and other scripts to do splits on order line items easily. Example: Processing Amazon FBA partial line item returns.
Order returns now can intake local or remote inventory for orders which were originally remote inventory. This results in remote inventory orders, like Amazon FBA orders, returning standard item returns back into Amazon FBA stock or local inventory when desired.
Standard inventory intake returns for zero totals now produce zero total credits with inventory item line items. This adjusts inventory using a credit for these types of returns. Previous behavior was to automatically produce an inventory adjustment.
The purchase order mail messages sent to vendors have been changed so that the purchase order type (standard or dropship) and dropship order numbers are no longer sent. This suppresses information from those mail messages that vendors should not have.
PayPal Commerce Platform
Added a setting to allow for creating PayPal Commerce Platform orders using a single order summary line item, instead of a line item for each item being ordered. This setting is automatically activated for sites using the Regional VAT tax system with catalog prices entered Incuding VAT (as rounding issues with item unit prices can occur when removing taxes from prices automatically), and off by default for all other cases.
Address verification is automatically disabled in checkout during automated order creation like PayPal Commerce Platform using Express Checkout.
Added a setting to allow for item information string replacement (and/or removal) to avoid PayPal Commerce Platform compliance issues with item names and options.
Added maximum length controls to item information to ensure longer item names and option strings are truncated properly for PayPal Commerce Platform.
Modified the tax calculation for PayPal Commerce Platform Express Checkouts to provide checkout style precision for Regional VAT when prices are displayed including VAT.
Modified logic for Ireland (XI) to match localities in the United Kingdom (UK). Ireland now uses GB as the country abbreviation as XI is not supported by PayPal Commerce Platform.
Added an order mimimum check to PayPal Commerce Platform Express Checkout to prevent loading the express checkout buttons if the order minimum is not met.
PayPal Onboarding was modified to make it easier for users to locate and click the button which launches the PayPal modal. The button was made interactive to echo progress on the page.
Amazon Channel Extension Module
Full SP-API support is now available (in addition to MWS support) for the Amazon extension module. All MWS clients have been scheduled by Amazon to convert to SP-API in the near future. Extensions for SP-API and MWS were created and the module was rebuilt to use those extensions for connectivity. This allows easy switches between the two by temporarily removing the Amazon Connection using Store / Channels / Amazon Connection. Removing the MWS connection and setting up a new SP-API connection is the preferred method to switch from MWS to SP-API. Removing the connection does not reset offer, order, configuration or any other data used by the Amazon module.
Added an Amazon FBA Inventory Reconcile function to the Amazon extension module. This new function allows for easy reconciliation between Amazon FBA inventory levels and Remote Inventory Levels for Inventory Items.
Added functionality to the Amazon extension module which handles processing of all Amazon FBA replacement orders, reimbursements, reimbursement reversals and returns. This runs on a schedule, and creates Orders, Credits and Remote Inventory Level adjustments for Inventory Items automatically.
Added an Amazon FBA Returns Manager function to the Amazon extension module. This new function allows for easy viewing and correlation of Amazon FBA replacement orders, reimbursements, reimbursement reversals and returns.
Modified the Amazon extension module to sort FBA shipments by inventory id during creation and by warehouse location on packing lists.
Changed order review conditions to not flag Amazon FBA orders needing Customer Information Updates. These orders are shipped directly from Amazon, so customer information is not necessary for shipment purposes, therefore there is no need to flag these order for review.
An Amazon FBA vendor account was added, and it has a customer account tied to it (defaults to site owner email, change if necessary). This customer account is used to place orders for Amazon FBA Reimbursements.
Amazon FBA reimbursements should now be placed as orders placed by the Amazon FBA vendor's customer account using a new product offer named 'Amazon Reimbursement'. Reimbursements can be tracked using this new item.
The Amazon module was updated updated to exclude saving orders which were created and/or paid more than 30 days prior to the run date when getting new orders. This will exclude older orders which may be experiencing maintenance on the channel sites.
Google Shopping Extension Module
Added material and pattern fields for the Google Shopping Extension Module to Product Offers for use in Google Shopping feeds. These fields are recommended by Google for certain product types. Similar to color and size.
The Google Shopping extension module was updated to use Inventory Item vendor item identifiers as the MPN for Inventory Item offer types.
Added better GTIN exposure for Package Deals in the Google Shopping feed. Now the bardcode for the first inventory item in the package is used for the offer GTIN.
Added group id logic to the Google Shopping feed to group Inventory Item offers selling multiple inventory items.
Other Extension Modules
Added an option to the Point of Sale extension module to allow switching on Points Multiplication. The new function respects multisite settings (active status and points multiplier).
The Point of Sale extension module was updated to search product offer keywords during product searches, in addition to the fields already searched. This allows things like MPNs to be added to product offer keywords for searching - as well as SEO benefit.
The Point of Sale extension module was modified to show discount code exclusion information under product offer descriptions. This will aid staff in determining discount code applicability earlier in the ordering process.
The Batch Shipping Manager extension module was updated to include residential/commercial information for addresses on batch packing lists.
The eBay extension module was updated to exclude saving orders which were created and/or paid more than 30 days prior to the run date when getting new orders. This will exclude older orders which may be experiencing maintenance on the channel sites.
The Authorize.net extension module was updated significantly to support processing debug information storage, processor response code storage. Error handling was updated to ensure automatic and/or better manual recovery.
Misc Software Changes
Core software changes were made to ensure full support for PHP 8.1.
Added a Banned Sender Addresses setting to System / Component / Settings / Mail Settings to combat spam. Enter a single mail address, or a comma-delimited list of email addresses, which cannot be used to send any mail messages.
A customizable header was added for the Contact Us page. The header, which can be updated using the System / Component / Settings / Site Information (update the Contact Page: Header setting), replaces the contact form instructions when present.
Currency conversions are now auto updated if the new Auto Update Currency Conversion Rates setting is set to true. The default is false. Update using System / Component / Settings / Currency, Weight and Dimensional Settings.
Links launched using the Video Frame URL now produce a noindex tag when rendered. Video Frame URLs are used by modals to play videos without needing to load them on-page.
Connections to the Kryptronic Central Server are now made regularly via cron tasks to ensure license information is up to date. Previously this connection was made only when logging into the management interface.
Modified dynamic forms to include an internal namespace and a way to pass a formid as a reference. This allows dynamic forms to more easily be loaded from HTML pages and themes/skins with a single function call.
Modified audition logic in the management interface for products, articles, pages, categories, etc. When MultiSite is active, a modal is now printed which contains links to all sites on which the particular item is available (and a list of the sites on which it is not available). This helps previewing items on the desired site as previously links were printed for the default site only. This only affects sites with MultiSite active.
Added logic to recognize and set forwarded customer ip addresses when MultiSite is active and the request is being forwarded from an auxilliary domain.
Modified database definition files to provide default values for columns missing default values (specifically formfield definitions where maxlength was blank, and not zero).
Modified display formfields to provide up to 250 characters of text for displayed values. Was previously limited to 75. This will help with reading longer strings for items like order review notes.
Future Update Roadmap
The following updates are on the schedule and currently in development: Auto Updates; Selective Caching; Architecture and Distribution Enhancements
Filesystem Changes in This Update
Filesystem changes are available below for clients with modified installations. If your installation is modified, review the file listings below to aid in backing up and manually applying your modifications after running this software update.
{private}/apps/cms/XMOD_Articles/install/data_core_settings_1.xml
{private}/apps/ecom/ECOM/includes/invfeatgrid.php
{private}/apps/ecom/ECOM/includes/prodfilterclose.php
{private}/apps/ecom/ECOM/includes/prodfilteropen.php
{private}/apps/ecom/ECOM/includes/xmodamazonconnheadmws.php
{private}/apps/ecom/ECOM/includes/xmodamazonconnheadprivspapi.php
{private}/apps/ecom/ECOM/includes/xmodamazonfbainvreconcile.php
{private}/apps/ecom/ECOM/includes/xmodamazonfbareturnsmanager.php
{private}/apps/ecom/ECOM/install/data_core_selectcustom_1.xml
{private}/apps/ecom/ECOM/install/data_core_settings_6.xml
{private}/apps/ecom/XMOD_Amazon/ext/mws.php
{private}/apps/ecom/XMOD_Amazon/ext/privspapi.php
{private}/apps/ecom/XMOD_Amazon/install/data_ecom_pricemap_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_ecom_prod_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_ecom_prodoptions_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_ecom_vendors_0.xml
{private}/apps/ecom/XMOD_Amazon/install/table_ecom_amazonfbareturns.xml
{private}/core/CORE/includes/dbaudition.php
{private}/core/CORE/includes/skinwidget_navigationbar.php
{private}/core/CORE/tasks_daily/0990_centralservconn.php
{private}/core/XMOD_SEOMicroData/install/data_core_selectcustom_0.xml
{public}/media/skins/images/full-sprite.nomin.png
{public}/media/skins/images/full-sprite.png
{public}/skins/COREMI930/css/all.min.css
{public}/skins/COREMI930/install/data_core_modules_0.xml
{public}/skins/COREMI930/media/kmiheaderlogo.png
{public}/skins/COREMI930/media/plheaderlogo.png
{public}/skins/COREMI930/skin.php
{private}/apps/cms/CMS/includes/webpagemicrodata.php
{private}/apps/cms/CMS/includes/xmodarticlescatmicrodata.php
{private}/apps/cms/CMS/includes/xmodarticlesmicrodata.php
{private}/apps/ecom/ECOM/includes/catmicrodata.php
{private}/apps/ecom/ECOM/includes/manumicrodata.php
{private}/apps/ecom/ECOM/includes/prodfilter.php
{private}/apps/ecom/ECOM/includes/prodmicrodata.php
{private}/apps/ecom/ECOM/includes/xmodamazonhead.php
{private}/apps/ecom/ECOM/includes/xmodamazonheadtoken.php
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_prodfilter_0.xml
{private}/apps/ecom/ECOM_OrderMan/comp/0900_compcustom.php
{private}/apps/ecom/ECOM_OrderMan/init/0900_initcustom.php
{private}/apps/ecom/ECOM_OrderMan/proc/0900_proccustom.php
{private}/apps/ecom/ECOM_Prod/install/table_ecom_prodfilter.xml
{private}/core/CORE/includes/xmodseomicrodata.php
{public}/media/jquery-plugins/json/jquery.json.min.js
{public}/media/skins/images/icon-sprite.nomin.png
{public}/media/skins/images/icon-sprite.png
{public}/media/skins/images/icon-sprite-invert.nomin.png
{public}/media/skins/images/icon-sprite-invert.png
{public}/media/skins/images/kryptronic-cornerlogo.png
{public}/media/skins/images/menu-dot.nomin.png
{public}/media/skins/images/menu-dot.png
{public}/media/skins/images/menu-dot-invert.nomin.png
{public}/media/skins/images/menu-dot-invert.png
{public}/media/skins/images/modal-close.nomin.png
{public}/media/skins/images/modal-close.png
{public}/media/skins/images/slide-left.nomin.png
{public}/media/skins/images/slide-left.png
{public}/media/skins/images/slide-left-invert.nomin.png
{public}/media/skins/images/slide-left-invert.png
{public}/media/skins/images/slide-right.nomin.png
{public}/media/skins/images/slide-right.png
{public}/media/skins/images/slide-right-invert.nomin.png
{public}/media/skins/images/slide-right-invert.png
{public}/skins/COREMI920/css/all.min.css
{public}/skins/COREMI920/install/data_core_modules_0.xml
{public}/skins/COREMI920/media/kmiheaderlogo.png
{public}/skins/COREMI920/media/plheaderlogo.png
{public}/skins/COREMI920/skin.php
{private}/apps/cms/CMS/includes/skinwidget_banneradverts.php
{private}/apps/cms/CMS/includes/skinwidget_bannermain.php
{private}/apps/cms/CMS/includes/xmodarticlescatlistitem.php
{private}/apps/cms/CMS/includes/xmodarticlescatshow.php
{private}/apps/cms/CMS/includes/xmodarticleslistitem.php
{private}/apps/cms/CMS/includes/xmodarticlesnav.php
{private}/apps/cms/CMS/includes/xmodarticlesshow.php
{private}/apps/cms/CMS/includes/xmodarticleswidgetbreads.php
{private}/apps/cms/CMS/install/data_core_apps_0.xml
{private}/apps/cms/CMS/install/data_core_modules_0.xml
{private}/apps/cms/CMS/install/data_core_skinwidgets_0.xml
{private}/apps/cms/CMS/install/table_cms_banneradverts.xml
{private}/apps/cms/CMS_Content/CMS_Content.php
{private}/apps/cms/CMS_Content/install/data_core_modules_0.xml
{private}/apps/cms/CMS_DemoSite/install/data_cms_banneradverts_0.xml
{private}/apps/cms/CMS_DynForm/CMS_DynForm.php
{private}/apps/cms/CMS_DynForm/install/data_core_modules_0.xml
{private}/apps/cms/CMS_DynForm/install/data_core_namespaces_0.xml
{private}/apps/cms/XMOD_Articles/install/data_core_modules_0.xml
{private}/apps/cms/XMOD_Articles/install/data_core_skinwidgets_0.xml
{private}/apps/cms/XMOD_Articles/XMOD_Articles.php
{private}/apps/ecom/ECOM/ECOM.php
{private}/apps/ecom/ECOM/ext/whlpricelist.php
{private}/apps/ecom/ECOM/includes/3dsecure.php
{private}/apps/ecom/ECOM/includes/cartdisplay.php
{private}/apps/ecom/ECOM/includes/catfeatgrid.php
{private}/apps/ecom/ECOM/includes/catfeatgriddetail.php
{private}/apps/ecom/ECOM/includes/catlistitem.php
{private}/apps/ecom/ECOM/includes/catshow.php
{private}/apps/ecom/ECOM/includes/cobillinfo.php
{private}/apps/ecom/ECOM/includes/coformfoot.php
{private}/apps/ecom/ECOM/includes/coitemdisp.php
{private}/apps/ecom/ECOM/includes/coshipinfo.php
{private}/apps/ecom/ECOM/includes/cototals.php
{private}/apps/ecom/ECOM/includes/creditmandisplay.php
{private}/apps/ecom/ECOM/includes/formfield_offertypeprint.php
{private}/apps/ecom/ECOM/includes/formfield_ordadjustneg.php
{private}/apps/ecom/ECOM/includes/formfield_ordadjustpos.php
{private}/apps/ecom/ECOM/includes/noitems.php
{private}/apps/ecom/ECOM/includes/olpform.php
{private}/apps/ecom/ECOM/includes/ordermanreturn.php
{private}/apps/ecom/ECOM/includes/ordermanshipmethodchange.php
{private}/apps/ecom/ECOM/includes/ordersummary.php
{private}/apps/ecom/ECOM/includes/ordersummaryprint.php
{private}/apps/ecom/ECOM/includes/ordersummaryxhtml.php
{private}/apps/ecom/ECOM/includes/paypalcpobsetupconfirm.php
{private}/apps/ecom/ECOM/includes/paypalcpobsetuprelay.php
{private}/apps/ecom/ECOM/includes/pricedisp.php
{private}/apps/ecom/ECOM/includes/prodaddcart_checkbox.php
{private}/apps/ecom/ECOM/includes/prodaddcart_easypick.php
{private}/apps/ecom/ECOM/includes/prodaddcart_invitems.php
{private}/apps/ecom/ECOM/includes/prodaddcart_notifystock.php
{private}/apps/ecom/ECOM/includes/prodaddcart_packagedeal.php
{private}/apps/ecom/ECOM/includes/prodaddcart_quanmult.php
{private}/apps/ecom/ECOM/includes/prodaddcart_radio.php
{private}/apps/ecom/ECOM/includes/prodaddcart_select.php
{private}/apps/ecom/ECOM/includes/prodaddcart_xaddons.php
{private}/apps/ecom/ECOM/includes/prodlist.php
{private}/apps/ecom/ECOM/includes/prodlistitem.php
{private}/apps/ecom/ECOM/includes/prodnav.php
{private}/apps/ecom/ECOM/includes/prodsearchajax.php
{private}/apps/ecom/ECOM/includes/prodshow.php
{private}/apps/ecom/ECOM/includes/prodshowextras.php
{private}/apps/ecom/ECOM/includes/prodshowimg.php
{private}/apps/ecom/ECOM/includes/prodshowtabs.php
{private}/apps/ecom/ECOM/includes/purchordcenter.php
{private}/apps/ecom/ECOM/includes/purchordmancreate.php
{private}/apps/ecom/ECOM/includes/purchordmanmodify.php
{private}/apps/ecom/ECOM/includes/purchordmanreceive.php
{private}/apps/ecom/ECOM/includes/purchordtxt.php
{private}/apps/ecom/ECOM/includes/purchordxhtml.php
{private}/apps/ecom/ECOM/includes/reviews.php
{private}/apps/ecom/ECOM/includes/shipestimator.php
{private}/apps/ecom/ECOM/includes/shipestimatorl.php
{private}/apps/ecom/ECOM/includes/skinwidget_breadcrumbs.php
{private}/apps/ecom/ECOM/includes/skinwidget_loyaltypointsmult.php
{private}/apps/ecom/ECOM/includes/skinwidget_minicart.php
{private}/apps/ecom/ECOM/includes/xmodamazonasin.php
{private}/apps/ecom/ECOM/includes/xmodamazonchannelexec.php
{private}/apps/ecom/ECOM/includes/xmodamazonconnintro.php
{private}/apps/ecom/ECOM/includes/xmodamazonfbainvshippack.php
{private}/apps/ecom/ECOM/includes/xmodamazonfbainvshipshipment.php
{private}/apps/ecom/ECOM/includes/xmodbatchshipman.php
{private}/apps/ecom/ECOM/includes/xmodbatchshipmanmethodchange.php
{private}/apps/ecom/ECOM/includes/xmodbatchshipmanpack.php
{private}/apps/ecom/ECOM/includes/xmodbatchshipmanpull.php
{private}/apps/ecom/ECOM/includes/xmodbulkpricingeditor.php
{private}/apps/ecom/ECOM/includes/xmodcustomerviewer.php
{private}/apps/ecom/ECOM/includes/xmodebayprodcatlist.php
{private}/apps/ecom/ECOM/includes/xmodebayprodname.php
{private}/apps/ecom/ECOM/includes/xmodinvinsdisp.php
{private}/apps/ecom/ECOM/includes/xmodposdisplay.php
{private}/apps/ecom/ECOM/includes/xmodposshowprodlist.php
{private}/apps/ecom/ECOM/includes/xmodspecialofferseditor.php
{private}/apps/ecom/ECOM/includes/xmodstripeolpfield.php
{private}/apps/ecom/ECOM/install/data_core_apps_0.xml
{private}/apps/ecom/ECOM/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM/install/data_core_settings_0.xml
{private}/apps/ecom/ECOM/install/data_core_settings_1.xml
{private}/apps/ecom/ECOM/install/data_core_settings_2.xml
{private}/apps/ecom/ECOM/install/data_core_settings_3.xml
{private}/apps/ecom/ECOM/install/data_core_settings_5.xml
{private}/apps/ecom/ECOM/install/data_core_skinwidgets_0.xml
{private}/apps/ecom/ECOM/tasks_hourly/0200_ordermanfutordproc.php
{private}/apps/ecom/ECOM/tasks_hourly/0300_inventorycheck.php
{private}/apps/ecom/ECOM_Accounting/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Accounting/install/table_ecom_payments.xml
{private}/apps/ecom/ECOM_Accounting/install/table_ecom_paymentsarchive.xml
{private}/apps/ecom/ECOM_Cart/ECOM_Cart.php
{private}/apps/ecom/ECOM_Cart/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Cat/ECOM_Cat.php
{private}/apps/ecom/ECOM_Cat/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Cat/install/table_ecom_cat.xml
{private}/apps/ecom/ECOM_Channels/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Channels/install/data_ecom_inventory_0.xml
{private}/apps/ecom/ECOM_Checkout/ECOM_Checkout.php
{private}/apps/ecom/ECOM_Checkout/install/data_core_dbguided_0.xml
{private}/apps/ecom/ECOM_Checkout/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Checkout/install/data_core_selectcustom_0.xml
{private}/apps/ecom/ECOM_Checkout/install/table_ecom_discounts.xml
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_cat_0.xml
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_inventory_0.xml
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_manus_0.xml
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_pricemap_0.xml
{private}/apps/ecom/ECOM_DemoStore/install/data_ecom_prod_0.xml
{private}/apps/ecom/ECOM_OLP/ECOM_OLP.php
{private}/apps/ecom/ECOM_OLP/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_OLP/install/data_core_namespaces_0.xml
{private}/apps/ecom/ECOM_Order/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Order/install/table_ecom_orders.xml
{private}/apps/ecom/ECOM_Order/install/table_ecom_ordersarchive.xml
{private}/apps/ecom/ECOM_OrderMan/ECOM_OrderMan.php
{private}/apps/ecom/ECOM_OrderMan/install/data_core_formfields_0.xml
{private}/apps/ecom/ECOM_OrderMan/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_OrderMan/install/data_core_namespaces_0.xml
{private}/apps/ecom/ECOM_OrderMan/proc/0100_procinventory.php
{private}/apps/ecom/ECOM_PayPal/ext/olppaypalcp.php
{private}/apps/ecom/ECOM_PayPal/ext/paypalcp.php
{private}/apps/ecom/ECOM_PayPal/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_PayPal/install/data_core_settings_1.xml
{private}/apps/ecom/ECOM_Prod/ECOM_Prod.php
{private}/apps/ecom/ECOM_Prod/install/data_core_dbguided_0.xml
{private}/apps/ecom/ECOM_Prod/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Prod/install/data_core_namespaces_0.xml
{private}/apps/ecom/ECOM_Prod/install/data_core_selectcustom_1.xml
{private}/apps/ecom/ECOM_Prod/install/data_ecom_manus_0.xml
{private}/apps/ecom/ECOM_Prod/install/data_ecom_prod_0.xml
{private}/apps/ecom/ECOM_Prod/install/table_ecom_inventory.xml
{private}/apps/ecom/ECOM_Prod/install/table_ecom_manus.xml
{private}/apps/ecom/ECOM_Prod/install/table_ecom_prod.xml
{private}/apps/ecom/ECOM_PurchOrdMan/ECOM_PurchOrdMan.php
{private}/apps/ecom/ECOM_PurchOrdMan/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Reviews/ECOM_Reviews.php
{private}/apps/ecom/ECOM_Reviews/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Ship/install/data_core_dbguided_0.xml
{private}/apps/ecom/ECOM_Ship/install/data_core_modules_0.xml
{private}/apps/ecom/ECOM_Ship/install/data_core_namespaces_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_formfields_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_forms_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_messages_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_namespaces_1.xml
{private}/apps/ecom/XMOD_Amazon/install/data_core_settings_0.xml
{private}/apps/ecom/XMOD_Amazon/install/table_ecom_amazonfbainvship.xml
{private}/apps/ecom/XMOD_Amazon/install/table_ecom_amazonprod.xml
{private}/apps/ecom/XMOD_Amazon/XMOD_Amazon.php
{private}/apps/ecom/XMOD_AuthorizeNet/ext/olpauthnetcimcc.php
{private}/apps/ecom/XMOD_AuthorizeNet/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_BatchShipMan/install/data_core_formfields_0.xml
{private}/apps/ecom/XMOD_BatchShipMan/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_BulkPricingEditor/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_CustomerViewer/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_eBay/install/data_core_formfields_0.xml
{private}/apps/ecom/XMOD_eBay/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_eBay/XMOD_eBay.php
{private}/apps/ecom/XMOD_GlobalPayments/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_GlobalPayments/install/data_ecom_gateway_0.xml
{private}/apps/ecom/XMOD_GoogleBase/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_GoogleBase/install/table_ecom_prod.xml
{private}/apps/ecom/XMOD_GoogleBase/XMOD_GoogleBase.php
{private}/apps/ecom/XMOD_InventoryInspector/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_OrderFollowUp/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_OrderFollowUp/install/data_ecom_xmodorderfollowup_0.xml
{private}/apps/ecom/XMOD_OrderFollowUp/install/table_ecom_xmodorderfollowup.xml
{private}/apps/ecom/XMOD_OrderFollowUp/XMOD_OrderFollowUp.php
{private}/apps/ecom/XMOD_PointOfSale/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_PointOfSale/install/data_ecom_inventory_0.xml
{private}/apps/ecom/XMOD_PointOfSale/install/data_ecom_prod_0.xml
{private}/apps/ecom/XMOD_PointOfSale/XMOD_PointOfSale.php
{private}/apps/ecom/XMOD_ProdQuest/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_ProdQuest/XMOD_ProdQuest.php
{private}/apps/ecom/XMOD_QBWC/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_QBWC/XMOD_QBWC.php
{private}/apps/ecom/XMOD_ReadyCloud/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_ReadyCloud/XMOD_ReadyCloud.php
{private}/apps/ecom/XMOD_SpecialOffersEditor/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_Stripe/install/data_core_modules_0.xml
{private}/apps/ecom/XMOD_Walmart/install/data_core_formfields_0.xml
{private}/apps/ecom/XMOD_Walmart/install/data_core_modules_0.xml
{private}/core/CORE/CORE.php
{private}/core/CORE/includes/about.php
{private}/core/CORE/includes/closure.php
{private}/core/CORE/includes/dboverview.php
{private}/core/CORE/includes/form_dbguided.php
{private}/core/CORE/includes/formfield_captcha.php
{private}/core/CORE/includes/formfield_display.php
{private}/core/CORE/includes/formfield_open.php
{private}/core/CORE/includes/formfield_password.php
{private}/core/CORE/includes/formfield_textarea.php
{private}/core/CORE/includes/formfield_textareaschema.php
{private}/core/CORE/includes/formfield_textbox.php
{private}/core/CORE/includes/helperdemodata.php
{private}/core/CORE/includes/helperhtaccess.php
{private}/core/CORE/includes/jslib.php
{private}/core/CORE/includes/license.php
{private}/core/CORE/includes/menubreadcrumbs.php
{private}/core/CORE/includes/runcron.php
{private}/core/CORE/includes/skinerror.php
{private}/core/CORE/includes/skinprintfoot.php
{private}/core/CORE/includes/skinprinthead.php
{private}/core/CORE/includes/skinwidget_companyinfo.php
{private}/core/CORE/includes/skinwidgetdisp.php
{private}/core/CORE/includes/videoframe.php
{private}/core/CORE/includes/xmodlistrak_js.php
{private}/core/CORE/install/data_core_apps_0.xml
{private}/core/CORE/install/data_core_modules_0.xml
{private}/core/CORE/install/data_core_settings_0.xml
{private}/core/CORE/install/data_core_settings_1.xml
{private}/core/CORE/tasks_daily/0400_currconv.php
{private}/core/CORE/tasks_shutdown/0100_apps.php
{private}/core/CORE/tasks_startup/0210_multisite.php
{private}/core/CORE_App/CORE_App.php
{private}/core/CORE_App/install/data_core_modules_0.xml
{private}/core/CORE_BackEnd/ext/db.php
{private}/core/CORE_BackEnd/ext/home.php
{private}/core/CORE_BackEnd/ext/settings.php
{private}/core/CORE_BackEnd/install/data_core_modules_0.xml
{private}/core/CORE_BackEnd/install/data_core_namespaces_2.xml
{private}/core/CORE_Cron/CORE_Cron.php
{private}/core/CORE_Cron/install/data_core_modules_0.xml
{private}/core/CORE_Display/CORE_Display.php
{private}/core/CORE_Display/install/data_core_modules_0.xml
{private}/core/CORE_File/CORE_File.php
{private}/core/CORE_File/install/data_core_modules_0.xml
{private}/core/CORE_Form/CORE_Form.php
{private}/core/CORE_Form/install/data_core_modules_0.xml
{private}/core/CORE_FrontEnd/ext/contact.php
{private}/core/CORE_FrontEnd/ext/cookieinfo.php
{private}/core/CORE_FrontEnd/ext/skinwidgets.php
{private}/core/CORE_FrontEnd/ext/vanillaforum.php
{private}/core/CORE_FrontEnd/install/data_core_dbguided_0.xml
{private}/core/CORE_FrontEnd/install/data_core_modules_0.xml
{private}/core/CORE_FrontEnd/install/data_core_selectcustom_0.xml
{private}/core/CORE_FrontEnd/install/data_core_selectcustom_1.xml
{private}/core/CORE_FrontEnd/install/data_core_settings_0.xml
{private}/core/CORE_FrontEnd/install/data_core_settings_1.xml
{private}/core/CORE_FrontEnd/install/data_core_settings_2.xml
{private}/core/CORE_FrontEnd/install/data_core_skinwidgets_0.xml
{private}/core/CORE_FrontEnd/install/data_core_stateprov_0.xml
{private}/core/CORE_FrontEnd/install/table_core_skinwidgets.xml
{private}/core/CORE_Installer/CORE_Installer.php
{private}/core/CORE_Installer/install/data_core_modules_0.xml
{private}/core/CORE_JSLib/install/data_core_modules_0.xml
{private}/core/CORE_Mail/CORE_Mail.php
{private}/core/CORE_Mail/install/data_core_modules_0.xml
{private}/core/CORE_Remote/CORE_Remote.php
{private}/core/CORE_Remote/install/data_core_modules_0.xml
{private}/core/CORE_SiteMap/CORE_SiteMap.php
{private}/core/CORE_SiteMap/install/data_core_modules_0.xml
{private}/core/XMOD_Listrak/install/data_core_modules_0.xml
{private}/core/XMOD_Listrak/XMOD_Listrak.php
{private}/core/XMOD_SEOMicroData/install/data_core_modules_0.xml
{private}/core/XMOD_SEOMicroData/install/data_core_namespaces_0.xml
{private}/core/XMOD_SEOMicroData/install/data_core_settings_0.xml
{private}/core/XMOD_SEOMicroData/XMOD_SEOMicroData.php
{public}/media/jquery/jquery.min.js
{public}/media/jquery-plugins/ui/jquery-ui.min.js
{public}/media/scripts/backend.min.js
{public}/media/scripts/common.min.js
{public}/media/scripts/frontend.min.js
{public}/media/scripts/kmigui.min.js
{public}/media/skins/css/all.min.css
{public}/media/skins/css/minimal.min.css
{public}/skins/Flex/css/all.min.css
{public}/skins/Flex/skin.php
{public}/skins/MailMessage/skin.php