Leaderboard
Popular Content
Showing content with the highest reputation since 06/04/2022 in all areas
-
2 points
-
You were absolutely correct @Al Brookbanks Yesterday - I tried to fix this by reinstalling 1.9.6 and got the same errors but 1.9.7 from today has solved it! Many thanks. Really helpful1 point
-
Ok in that case try 1.9.7 (just released): https://www.cubecart.com/extensions/plugins/paypal-commerce1 point
-
1 point
-
I have read that CC650+ works with PHP 8.3. (Currently, I cannot experiment with PHP 8.3 because my server's operating system is too old.)1 point
-
Yes please use SagePay-1.0.13.zip. It should be fine with PHP 7.2 but 7.4 would be safer.1 point
-
Please try: https://cubecart.zendesk.com/hc/en-gb/articles/360003831497-How-can-I-create-a-plugin-using-the-code-hooks-system1 point
-
I tried uploading a sscreenshot but server rejects it, error code 200. Instead: Product with webp image: https://cavalier-gift-shop.org/magic-puppy-valentine-s-card.html (fails) Product with a jpeg (any other product): https://cavalier-gift-shop.org/best-cavalier-mum-mug.html (all ok)1 point
-
Brilliant, I changed a few lines and now it all looks pukka! Thanks again for all the help!1 point
-
Did this transaction pass 3D secure? If so I believe it should be protected and you shouldn't be liable to chargeback fees. Our PayPal integration has much more granular settings. If you want to you can choose to only accept payments that pass 3D secure. With that setting enabled you are never liable to chargeback fees. The square extension could have this feature added.1 point
-
Why, why, why you have to be so smart @bsmither? That's exactly what the issue was, since initially they both had the same route /powerball the system added a re-direct when leaving blank, creating the redirection. Is there a module, under product page, tab #product spec, to have custom stuff? I could jam everything into the actual product page but it would be cool to add some custom stuff, in our case we don't need to specify the code or if it's new or used. Thanks again kid, Happy Thanksgiving of whatever you celebrate today!1 point
-
1 point
-
Since upgrading to version 6.5.2 we have the following issue: For reference our shop is located at https://www.airbornesappers.org.uk/shop/index.php We do have products with a Sale price entered, which are less than retail and greater than zero In Store Settings - Features we have Sales Mode set to Per Product, with Number of sale items to display set to 20 I don't know if the upgrade to 6.5.2 has caused this, all I can say is that prior to the upgrade Sale Items were displayed in the Sale Items category I've searched other topics and checked as much as I know what to check but can't fix this error Any help appreciated Thank you1 point
-
A 'throbber' (spinning circle) that does not go away indicates that the javascript that is supposed to cancel the throbber and make the browser proceed to the next step, has crashed, failed to start, or failed to load. Failing to load could be caused by a browser extension that prohibits fetching javascript from non-whitelisted sources. While stuck on the CloudFlare page, examine the browser settings menu for a "Developer" section, then view the browser 'console'. It will indicate the cause of being stuck on the CloudFlare page.1 point
-
That makes sense. I think I'll keep making the change instead of changing the rate rule. Thanks!1 point
-
Yes, you can. Having different content implies having a distinct and separate database - or, at least a distinct table prefix (can be on the same database server).1 point
-
Image compression? CubeCart takes a source image, typically PNG or JPG, 750x750 pixels for example, then creates sized variants specific to the intended layout area and page. The source is uploaded to /images/source/, and CubeCart's variants are saved in /images/cache/. The specific variants are coded in the skin's config.xml file. Take a look a Foundation's config.xml file in a programmer's text editor. Here, you will find image nodes with the reference attribute indicating where the image is used. The product page uses 'medium' and 'gallery'. The maximum attribute specifies the length of the longest side, maintaining proportionality, but never longer than the original. (That is, if the source is 450x450 pixels, variants could be smaller, but will never be larger than that.) And, of course, the browser can scale the image to fit the layout's placement if the HTML coding allows it. Note also the quality attribute. For many image formats, there is the 'compression ratio', expressed as a 'quality' -- 100 being very lightly compressed, if at all, and 10 looking like crap. I have visited web pages that initially show a super-blurry image (high compression), then eventually, under javascript control, fetches a high-quality (large filesize) image to replace the blurry one. Currently, CubeCart does not do this.1 point
-
Even though CC651 says it will run under PHP7.1+ (that statement is a bug), we very much recommend running PHP7.4, and highly recommend PHP8.1. That "unexpected =" error is from the new (as of PHP7.4) 'null coalescing assignment' operator. https://www.php.net/manual/en/migration74.new-features.php#migration74.new-features.core.null-coalescing-assignment-operator1 point
-
In admin, Email Templates, click the language of the email you wish to edit. On the next screen, on the HTML Content tab, note that in the list of Available Macros, there is {$DATA.customer_comments}. Add this to the HTML of the email wherever you wish. For example: Find: <p><a href="{$DATA.link}">{$DATA.link}</a></p> Add after: <p>Your comments about this order: "{$DATA.customer_comments}"</p>1 point
-
Please post a PM with your email address and I will send a ZIP file having the "Previous Purchase" plugin.1 point
-
You are getting the address items from the admin, Order Summary page? If so, try the following: In the admin /sources/orders.index.inc.php: Near line 419, find: $overview_summary['country'] = is_numeric($overview_summary['country']) ? getCountryFormat($overview_summary['country'], 'numcode', 'name') : $overview_summary['country']; After that, add: $overview_summary['state_abbrev_d'] = is_numeric($overview_summary['state_d']) ? getStateFormat($overview_summary['state_d'], 'id', 'abbrev') : $overview_summary['state_d']; $overview_summary['state_abbrev'] = is_numeric($overview_summary['state']) ? getStateFormat($overview_summary['state'], 'id', 'abbrev') : $overview_summary['state']; In the admin template orders.index.php: Near lines 163-164, from: {$OVERVIEW_SUMMARY.town_d|upper}<br> {if !empty($OVERVIEW_SUMMARY.state_d)}{$OVERVIEW_SUMMARY.state_d|upper}, {/if}{$OVERVIEW_SUMMARY.postcode_d}<br> To: {$OVERVIEW_SUMMARY.town_d|upper} {if !empty($OVERVIEW_SUMMARY.state_abbrev_d)}{$OVERVIEW_SUMMARY.state_abbrev_d|upper}, {/if}{$OVERVIEW_SUMMARY.postcode_d}<br> Near lines 174-175, from: {$OVERVIEW_SUMMARY.town|upper}<br> {if !empty($OVERVIEW_SUMMARY.state)}{$OVERVIEW_SUMMARY.state|upper}, {/if}{$OVERVIEW_SUMMARY.postcode}<br> To: {$OVERVIEW_SUMMARY.town|upper} {if !empty($OVERVIEW_SUMMARY.state_abbrev)}{$OVERVIEW_SUMMARY.state_abbrev|upper}, {/if}{$OVERVIEW_SUMMARY.postcode}<br>1 point
-
You can check your "includes/global.inc.php" file it will have the link to the admin page in it, $glob['adminFile'] = 'admin_xxxxx.php';1 point
-
Please create the error log: https://forums.cubecart.com/topic/51550-how-to-create-the-error-log/ There may be clues to what is happening.1 point
-
Yes. That data item is found in {$PRODUCT.use_stock_level}. The code sequence: {if $PRODUCT.use_stock_level}Extra language{/if} will need to be in template code (as opposed to the "Description" content of the product's data).1 point
-
According to this issue in the Github: https://github.com/cubecart/v6/issues/2754 a zone cannot be created against countries and counties/states that are not enabled. However, the question remains, what if a country is later disabled, after a zone has been created for it? Will CubeCart still offer any shipping to a customer whose delivery address contains a disabled country/county/state? Regardless, a means to enable/disable each already created zone is a nice idea. Be back soon.1 point
-
Regarding the template syntax error, an issue has been posted in the Github. https://github.com/cubecart/v6/issues/3126 3. Check the code in the admin skin file filemanager.index.php, near lines 122-129: {if $FILE.type == 1} <div> <label for="alt">{$LANG.filemanager.alt}</label> <span> <input type="text" id="alt" name="details[alt]" class="textbox" value="{$FILE.alt}"> </span> </div> {/if} Also in this file, make this change: Lines 117-119, from: <select name="details[move]" id="move" class="textbox"> <option value="">{$LANG.form.please_select}</option> </select> To; <select name="details[move]" id="move" class="textbox"> <option value="">{$LANG.form.please_select}</option> {if isset($DIRS)}{foreach from=$DIRS item=dir} <option value="{$dir.path}"{$dir.selected}>{$dir.path}</option>{/foreach}{/if} {* #3121 *} </select> 1. Is this what CubeCart reports in admin, Dashboard, Store Overview tab? Or is this aspect of the server environment being shown somewhere else?1 point
-
On my development system, I am trying Amzin 1.05 on CC647 running under PHP8.1. (Found a bug in a template.) But the links appear correct. I have not yet installed CC649. But analyzing code differences between CC647 and CC649 shows no likely source of this situation.1 point
-
For version 1.05, there is a bug in the template box.template.php, near line 17: From: {if count($POPULAR > 1)} To: {if count($POPULAR) gt 1}1 point
-
Did you follow the steps in method 1? https://support.cubecart.com/hc/en-gb/articles/360003794198-How-do-I-upgrade-from-CubeCart-v6-to-latest-v6-1 point
-
My solution was to remove the registration page link from my skin and form fields within the registration page. I only have the the option to create an account on the checkout, therefore users and spammers will need to place an order to create an account, genuine users will do so but the spammers wont proceed. Has worked well for me for 2 years, no fake accounts created. I believe they create fake accounts so your shop sends registration emails or password resets to their targets & used to spam people and will give your store/email a bad reputation, some users may report these emails as spam and accounts like google mail will auto junk any future mail you send or your report your site to your hosting provider for sending spam.1 point
-
As per Al's comments on the github issue you raised, this is almost certainly down to a faulty or partially completed upgrade1 point
-
Currently, no. But, CubeCart has the ability to respect a custom API call that a "cron job" would execute on schedule, as well as hooks that could be used every time that a web page is requested to update if a specified amount of time has elapsed since the last update.1 point
-
Configuring Mod Security is a server administrator's responsibility. As best I know, Mod Security is configurable on a per site basis. Therefore, it may be the case that your other website may (or may not) have Mod Security installed, and/or configured differently. We would encourage you to contact your hosting provider for assistance.1 point
-
Thank you. By way of a bit of background for you. In the early stages of our online shop journey we checked out many different platforms including some of the well known names such as ZenCart. We found the setup of these other platforms to be quite difficult and certainly not as well organised and intuitive as CubeCart. The ease of setup and the organised admin area were the main reasons for us deciding to go with CubeCart, a good decision and we look forward to using it for a long time to come. These forum pages have been a big help, we really appreciate you being there and the assistance you provide, keep up the good work because no doubt I'll be back1 point
-
Only new transactions will get a phone number.1 point
-
For step D, be sure that the updated plugins (that needs the ionCube that works with PHP 7.4) are not enabled. Otherwise, there is still the situation of an ionCube-encoded plugin wanting a later version of ionCube that is not running under PHP 5.6. Otherwise, the above is the sequence of steps I would suggest.1 point
-
If there is a blank page, then there could be error messages in admin, System Error Log.1 point
-
In Catalogue Mode, customers are not even able to add items to a shopping basket. So, there is no way for CubeCart to log what the customer wanted. The admin can try to not enable any Payment Gateways. A shopping basket should be created and an Order Summary created, which the store owner can review and amend in CubeCart's administrative backend. But there will be no means for the customer to actually pay for the items via CubeCart.1 point
-
1 point
-
I think nearly all of the log entries matching the examples shown in the document provided, relate to the parts of the skin template system you have stripped out (Language chooser, Featured box, Sale Items box, Newsletter box, Live Help, Debug, and Skin chooser). Looking at the source HTML delivered to my browser, I see that there is a removed text entry field for the person's phone number. This will cause the form to not even be submitted if the form validation fails. In the file /skins/ho/js/3.cubecart.validate.js, at lines 66-97, there are the rules for the contact form. Remove 92-94: }, 'contact[phone]': { phone: $('#validate_phone').text() Remove 83-85: }, 'contact[phone]': { phone: true What I do not know is this: How smart is the Validator? If the Validator does not find a text entry input field having the name contact['phone'], even with a rule referencing it, will the validator still submit the form? According to this, the Validator does not check non-existing fields (from five years ago): https://forum.jquery.com/topic/jquery-validate-check-that-a-field-exists-before-validating In other words, I do not know if this edit will fix things. FYI: The core code in cubecart.class.php, says only that 'email', 'name', 'subject', 'enquiry' are the only required fields. So maybe an issue will get posted in the Github that compares the Validator rule for the phone being required, but the core code does not.1 point
-
1 point
-
CubeCart version 6.4.6 is now available. This is a maintenance release with full PHP 8 and 8.1 support. This release is backward compatible to earlier PHP versions so your hosting environment doesn't need PHP 8 or above to run it. What's New? - PHP 8 Support - Miscellaneous bug fixes Download: CubeCart-6.4.6.zip Download: CubeCart-6.4.7.zip1 point
-
Chaps.. This situation is embarrasing, I'm getting female members of my team telling me that they are receiving explicit messages from one of our contact forms. Can anyone suggest how I get invisible working, failing that I'll have to employ the services of a dev to write something which works.1 point
-
Recently had to change the password on a friend's Outlook 2013 (which does not do OAuth like Thunderbird). Now, I have not actually done this for my development installations of CubeCart yet, but I have every expectation that this will work. What you need to do is to acquire an "app password" for your "less-than-secure" app (as Google puts it). See: https://support.google.com/accounts/answer/185833 To do this, you will need a cell-phone. In your GMail account settings page, find the Security section. Enable "Two-step Verification". (This is not as bad as it sounds.) This is only to verify that the person doing this process is, in fact, you. Google will text a code when you begin the process of generating an app password. There should now be a new option in the "Signing in to Google" section for App Passwords. Select this option. On the App Password page, choose Select App, and for the name of the app, choose something like FettleBox Store (something in one or two words to describe what you are to use this app password for). Then choose Generate. The 16-digit number in a yellow banner is what you will enter in CubeCart's SMTP Password field (the banner shows spaces between each set of four digits that are not part of the password - do not include the spaces). This is all how it worked for Outlook 2013. I expect it to also work when wanting to use GMail as the SMTP server for CubeCart.1 point
-
Attached is a follow-on report for more edits needed to make CC645 run under PHP 8.1 - attempting to eliminate (at least minimize) the numerous error messages that PHP logs. Some of these edits assume that the edits and file replacements found in the prior report have already been made. PHP8.1_Changes2.txt.zip1 point
-
Hi, I just tried this again with with PayPal Commerce 1.6.2 and still no joy, therefore I downloaded the 1.6.2 code to get a better look .. And this is what I found - /** * CubeCart v6 * ======================================== * CubeCart is a registered trade mark of CubeCart Limited * Copyright CubeCart Limited 2019. All rights reserved. * UK Private Limited Company No. 5323904 * ======================================== * Web: http://www.cubecart.com * Email: [email protected] * License: GPL-3.0 http://opensource.org/licenses/GPL-3.0 */ function ppcp_body_js($tpl_output, Smarty_Internal_Template $template) { $skins = $GLOBALS['gui']->getSkinData()['info']; // $skin = $GLOBALS['gui']->getSkinData(); if (($pp_config = $GLOBALS['cache']->read('pp_config.'.$skins['name'])) === false) { if(file_exists('modules/plugins/paypal_commerce/config.custom.json')) { $pp_config = file_get_contents('modules/plugins/paypal_commerce/config.custom.json'); } else if(file_exists('modules/plugins/paypal_commerce/config.'.$skins['name'].'.json')) { $pp_config = file_get_contents('modules/plugins/paypal_commerce/config.'.$skins['name'].'.json'); } else { $pp_config = file_get_contents('modules/plugins/paypal_commerce/config.foundation.json'); } $GLOBALS['cache']->write($pp_config, 'pp_config.'.$skins['name']); } if(isset($GLOBALS['cart']->basket['total']) && $GLOBALS['cart']->basket['total'] > 0) { $pp_amount = $GLOBALS['cart']->basket['total']; } else { $pp_amount = "null"; } return preg_replace('/\<\/body\>/i','<script id="pp_config" type="application/json">'.$pp_config.'</script><script> var pp_config = JSON.parse(document.getElementById(\'pp_config\').textContent) var pp_amount = '.$pp_amount.';</script></body>', $tpl_output); return $tpl_output; } $GLOBALS['smarty']->registerFilter("output","ppcp_body_js"); On about the third line of code you can see I have replaced a line. Now the thing is that this was never going to work the variable '$skin' is never referenced in the code so its clearly in error. The question is why did nobody else experience the same ? Its probably because, and this is just a guess, many other skins are strongly based upon the foundation skin, but as I say that's only a guess .. Anyway it seems to be working now but no production test yet.. Chris.1 point
-
I found it! was in navigation.ss and .top-bar-section! I am so rusty on this kind of work! Thanks for the help1 point
-
Hi, Wish to make the sales report with the product details, which sql should I edit on? "product_code" is a new attributes that I add in, since it is not inside the table "CubeCart_order_summary". Actually, it is from table "CubeCart_order_inventory". And, How to sum the product_code? As the product code is in integer, digit form. The below code is from admin_LsSCSi/sources/reports.index.inc.php $fields = array( 'title', 'cart_order_id', 'product_code', 'order_date', 'status', 'subtotal', 'discount', 'shipping', 'total_tax', 'total', 'customer_id', 'first_name', 'last_name', 'company_name', 'line1', 'line2', 'town', 'state', 'country', 'postcode', 'title_d', 'first_name_d', 'last_name_d', 'company_name_d', 'line1_d', 'line2_d', 'town_d', 'state_d', 'country_d', 'postcode_d', 'phone', 'email', 'gateway' ); foreach ($GLOBALS['hooks']->load('admin.reports.order.pre') as $hook) include $hook; $orders = $GLOBALS['db']->select('CubeCart_order_summary', $fields, $where); foreach ($GLOBALS['hooks']->load('admin.reports.order.post') as $hook) include $hook; if ($orders) { ## If we are wanting an external report start new External class if (isset($_POST['external_report']) && is_array($_POST['external_report'])) { $module_name = array_keys($_POST['external_report']); $external_class_path = 'modules/external/'.$module_name[0].'/external.class.php'; if (file_exists($external_class_path)) { include $external_class_path; $external_report = new External($GLOBALS['config']->get($module_name[0])); } } ## Tally up totals $tally = array(); $i = 0; foreach ($orders as $order_summary) { $order_summary['status'] = $lang['order_state']['name_'.(int)$order_summary['status']]; foreach ($order_summary as $field => $value) { if (in_array($field, array('subtotal', 'discount', 'shipping', 'total_tax', 'total'))) { if (!isset($tally[$field])) $tally[$field] = 0; $tally[$field] += $value; } } $order_summary['country'] = (is_numeric($order_summary['country'])) ? getCountryFormat($order_summary['country']) : $order_summary['country']; $order_summary['state'] = (is_numeric($order_summary['state'])) ? getStateFormat($order_summary['state']) : $order_summary['state']; $order_summary['country_d'] = (is_numeric($order_summary['country_d'])) ? getCountryFormat($order_summary['country_d']) : $order_summary['country_d']; $order_summary['state_d'] = (is_numeric($order_summary['state_d'])) ? getStateFormat($order_summary['state_d']) : $order_summary['state_d']; $order_summary['date'] = formatTime($order_summary['order_date'],false,true); ## Run line of external report data if (isset($external_report) && is_object($external_report)) $external_report->report_order_data($order_summary); unset($order_summary['order_date'], $values); foreach ($order_summary as $field => $value) { if ($i == 0) $headers[] = $field; $values[] = (is_numeric($value) || !strpos($value, ',')) ? $value : sprintf('"%s"', addslashes($value)); } if ($i == 0 && $add_headers) $data[] = implode(',', $headers); $data[] = implode(',', $values); $smarty_data['report_date'][] = $order_summary; $i++; } $GLOBALS['smarty']->assign('REPORT_DATE', $smarty_data['report_date']); if (isset($_POST['download']) || (isset($_POST['external_report']) && is_array($_POST['external_report']))) { $GLOBALS['debug']->supress(true); if (isset($_POST['download'])) { $file_content = implode("\r\n", $data); $file_name = $lang['reports']['sales_data'].' '.$download_range; } else { $file_content = $external_report->_report_data; $file_name = ucfirst($module_name[0]).' '.$lang['reports']['data'].' '.$download_range; } deliverFile(false, false, $file_content, $file_name.'.csv'); exit; } ## Show table footer $tally['orders'] = count($orders); foreach ($tally as $key => $value) { $tallyformatted[$key] = ($key=='orders') ? $value : sprintf('%.2F', $value); } $smarty_data['tally'] = $tallyformatted; $GLOBALS['smarty']->assign('DOWNLOAD', true); ## Get external module export code $where = array('module' => 'external', 'status' => '1'); ## Start classes for external reports if (($module = $GLOBALS['db']->select('CubeCart_modules', 'folder', $where)) !== false) { foreach ($module as $module_data) { if(file_exists(CC_ROOT_DIR.'/modules/external/'.$module_data['folder'])) { $module_data['description'] = ucfirst(str_replace('_',' ',$module_data['folder'])); $smarty_data['export'][] = $module_data; } } $GLOBALS['smarty']->assign('EXPORT', $smarty_data['export']); } } else { if (isset($_POST['download'])) httpredir(currentPage()); $smarty_data['tally'] = array('orders' => 0); } $GLOBALS['smarty']->assign('TALLY', $smarty_data['tally']); $GLOBALS['smarty']->assign('POST', $report_filter); foreach ($GLOBALS['hooks']->load('admin.reports.order.filter') as $hook) include $hook; Thanks~1 point
-
Hi For the UK, it is a legal requirement (and one that Trading Standards take seriously and can and do prosecute for breaches) to show prices including VAT if selling to consumers. Most businesses if selling to other businesses would want to show ex VAT. As most websites are likely to sell to both businesses and consumers, the ability to choose which price (inc or ex VAT) is shown as default and with the ability to switch between the two is very important. There is a simple mod available for V4 stores from a third party developer but they have said they have no plans to develop a V5 plugin and anyway, I feel strongly that this should be part of core as it is a legal requirement. Ian1 point