Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 06/04/2022 in all areas

  1. 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 helpful
    1 point
  2. Ok in that case try 1.9.7 (just released): https://www.cubecart.com/extensions/plugins/paypal-commerce
    1 point
  3. you are a hero! - Thanks works perfectly under SMTP!
    1 point
  4. 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
  5. Yes please use SagePay-1.0.13.zip. It should be fine with PHP 7.2 but 7.4 would be safer.
    1 point
  6. Please try: https://cubecart.zendesk.com/hc/en-gb/articles/360003831497-How-can-I-create-a-plugin-using-the-code-hooks-system
    1 point
  7. 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
  8. Brilliant, I changed a few lines and now it all looks pukka! Thanks again for all the help!
    1 point
  9. 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
  10. 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
  11. 1 point
  12. 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 you
    1 point
  13. 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
  14. That makes sense. I think I'll keep making the change instead of changing the rate rule. Thanks!
    1 point
  15. 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
  16. 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
  17. 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-operator
    1 point
  18. 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: &quot;{$DATA.customer_comments}&quot;</p>
    1 point
  19. Please post a PM with your email address and I will send a ZIP file having the "Previous Purchase" plugin.
    1 point
  20. 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}&nbsp; {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}&nbsp; {if !empty($OVERVIEW_SUMMARY.state_abbrev)}{$OVERVIEW_SUMMARY.state_abbrev|upper}, {/if}{$OVERVIEW_SUMMARY.postcode}<br>
    1 point
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. As per Al's comments on the github issue you raised, this is almost certainly down to a faulty or partially completed upgrade
    1 point
  31. 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
  32. 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
  33. 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 back
    1 point
  34. 1 point
  35. 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
  36. If there is a blank page, then there could be error messages in admin, System Error Log.
    1 point
  37. In admin, Currencies, uncheck all currencies Status except INR. Save. In admin, Store Settings, General tab, Default Currency, choose INR. Save. Have CubeCart clear its internal cache.
    1 point
  38. 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
  39. Hi, I upgraded to 6.4.6 and everything seems ok except the extra images aren't showing in admin/products Oh, and the word location is mispelled in the dropdown Nevermind it has something to do with my custom admin skin. I'll figure it out Thanks anyway
    1 point
  40. 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
  41. Experiments have shown that making these two edits will resolve this issue.
    1 point
  42. 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.zip
    1 point
  43. 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
  44. 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
  45. 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.zip
    1 point
  46. 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
  47. I found it! was in navigation.ss and .top-bar-section! I am so rusty on this kind of work! Thanks for the help
    1 point
  48. 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
  49. 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. Ian
    1 point
×
×
  • Create New...