Jump to content

zombiesbyte

Member
  • Posts

    50
  • Joined

  • Last visited

Posts posted by zombiesbyte

  1. Fair enough keat, if you were looking for a quick workaround to the problem then that may have been practical but from the numbers you're getting through I suppose it's not.

    Regardless, it appears the issue has been resolved: (https://github.com/cubecart/v6/issues/764) You need to enable the setting:  "Force Order Completed Emails" in admin. It's unclear if the bug with regards to SMTP password clearing after updating settings has been addressed yet so just watch out for that in case it hasn't.

     

     

  2. Not sure if this is an acceptable work-around but setting the order state to cancelled and saving then going back in and setting back to complete triggers the email sending.

    The customer will get two emails though, one that says cancelled and the other that states completed again.

    You could change the message in something like the "fraud" email template to say something like "your gift certificate is being validated" then use this setting as a step for using this work-around until the issue is resolved. I think it comes from the fact that gift certs are automagically set to completed and miss the catch for email sending queue (as a guess).

     

    Hope this helps

    James

  3. Thanks to the final comment contributions,

    Al. Regarding your check on the DB encoding my official PHPMyAdmin shows the correct encoding as utf8_general_ci so I'm not sure if this was a problem with the phpmyadmin I setup temporary. Regardless I know to use utf8_general_ci :) It's a shame that this looks to be insensitive to data only and not table names.

    bsmither. Yeah, everything worked as all I saw locally and live was the table names in lowercase. I had no idea that there was any reference to "###_CubeCart_..." and as specified by MySQL naming standards these should always be labelled lower-case for cross platform support/compatibility.

    havenswift-hosting. By extremely small number of people I presume you still understand that that would equate to many hundreds of thousands if not millions in the whole scheme of things. WAMP and XAMPP (the two most popular virtual server suites) are not maintained for small numbers of users otherwise it would be pointless.

    I know little about 1&1's hidden setup but I imagine everything is controlled in a VM style fashion. Regardless of the underlying OS platform the environment they serve from is still Linux otherwise I would not have had these problems. DB shows that it is sitting on Server version: 5.5.50-0+deb7u2-log - (Debian).

    Maybe there's something I've got wrong with this but regardless the issue is resolved.

    I would like nothing more than to say that everything should be geared to a single platform type using one browser brand and have one email client but unfortunately we live in a multi-level world full of various brands, devices and platforms.

    I can't see any issues with what I've done other than any future updates (or plugins/extensions) needing to be re-calibrated back to lowercase db table naming. This is something I accept I need to do but for the general user it may not be appropriate but people who just want to build using CC's admin panel offering only would probably have installed it on their environment using the installer. My version is obviously FTP'ed across and the database exported which is where it had caused the issue.

    It's all cool, I'm up and running and I think there's a good deal of information to be utilised in the future for anyone following this thread in hopes of a resolution. I know Al had mentioned this happens every once in a while but I had not come across any information to point me in the direction of database table casing.

    Thanks for everyone's time on this, I appreciate the help.

    I'm still extremely impressed with CC's coding standards, style and community spirit.

    Kind regards

    James

     

  4. I was just about to post this when I noticed your reply:

    I can confirm that the renaming of "CubeCart_" to "cubecart_" on anything that addresses the database seems to (so far) resolve all issues.

    I'm interested in finding out if there was anything particular that you'd be concerned with other than upgrades (my copy of CC isn't so straight forward anyway due to small changes made at core to help produce features I wanted/needed).

    I wonder if it would be worth noting a change request for future editions of CC to lowercase the table names.

    Regardless, looks like I'm up and running fingers crossed :happydance:

     

  5. Hi Al

    The problem is when I tried going down this route it wasn't working. I originally thought perhaps my config wasn't using the my.ini but after further investigation this workaround won't work on InnoDB table types apparently.

    Quote

    Exception: If you are using InnoDB tables and you are trying to avoid these data transfer problems, you should set lower_case_table_names to 1 on all platforms to force names to be converted to lowercase.

     

    Update: FYI: I won't be able to modify the hosting environment settings for MySQL engine

  6. Thanks Al

    I've been trying to get the XAMPP environment which I use to develop on in line with the Linux environment. The thing is these two need to be interchangeable as any future changes I roll out need to be synchronised directly without having to then force manual changes. The DB calls use a prefix but I can't see the option for changing "_CubeCart_" prefix anywhere as it looks hardcoded.

    I've identified 996 matches across 64 files which I intend to change the code directly for calling the "CubeCart_" to "cubecart_" thus solving the issue with casing although I imagine this causes an issue with potentially any automatic updates which I'll need to perhaps avoid doing on the live version of my site. Updates on my local dev copy would then just need to have the "CubeCart_" to "cubecart_" casing changed again.

    Can you see any potential issues with this workaround?

  7. Files are all uploaded.

    Same error as before

    I've noted straight away that the debug is not on which tells me that communication with the database for this setting is not being read or used.

    Ran the script on the live staging: (same as off-line dev)

    We have a non-false result from making the query.Array
    (
        [name] => name
        [array] => array
    )
  8. Hi bsmither.

    Not sure what I'm to expect with this one.

    I'm still uploading so this is the result of that script locally (the version of my website that works)

    We have a non-false result from making the query.Array
    (
        [name] => name
        [array] => array
    )

    I'll run it on the staging once I've completed my upload

  9. I've managed to setup an error log to see what else is caught since this seems strange for it to just die like this

    I can that my error log is looking a lot like this post by matchattaxoutlet

    matchattaxoutlet talks with the hosting provider which reports that it is down to server load. I'm with 1&1 and they are quite good at handling bulky tasks so I'm surprised if it is down to resources but everything is starting to look that way.

    I'm not sure what I should be doing next :34:

    ...update: I'm re-uploading everything again.

  10. Thanks bsmither

    I understand.

    Just as a final angle, I've been working with the where function on line 768 of database.class.php in an effort to understand what is going on.

    I include this small section of code:

    <?php
    
    /**
     * Builds a WHERE string
     *
     * @param string $table
     * @param array $whereArray
     * @return string
     */
    public function where($table, $whereArray = null) {
        
        echo "call to function where:\n";
        echo "\$table: {$table}\n";
        echo "\$whereArray::\n";
        print_r($whereArray);
        echo "\n\n";
      
    	...

    Locally this produces approximately 218 calls

    While online it stops after only 62 calls.

    Interestingly the error occurs 2nd call in (or so it seems but this maybe an output buffer delay or something)

    The last group of results are different, they seem to get stuck in a loop of:

    
    call to function where:
    $table: CubeCart_inventory
    $whereArray::
    Array
    (
        [status] => 1
        [featured] => 1
    )

    I've left this on for you to see. Does this help identify the problem?

    (view page source, it's easier to read if you're not already)

    http://preview.zombiesbyte.com/

     

  11. I've jumped ahead a step and got data too:

    <?php
    
    //... variables as before
      
    $dbport = ini_get('mysqli.default_port');
    $dbsocket = ini_get('mysqli.default_socket');
    
    echo "<br>\ndbport from ini_get('mysqli.default_port'): " . $dbport .  "<br>\n";
    echo "dbsocket from ini_get('mysqli.default_socket'):" . $dbsocket .  "<br>\n";
    
    $mysqli = new mysqli($dbhost, $dbusername, $dbpassword, $dbdatabase, $dbport, $dbsocket);
    
    try {
    	echo "Total tables found using mySQLi: " . count(mysqli_fetch_all($mysqli->query('SHOW TABLES'))) . "<br>\n";
    } catch(Exception $e) {
    	echo "problem connecting to db using mysqli";
    }
    
    echo "Lets get the column names from ###_cubecart_config table<br>\n";
    print_r(mysqli_fetch_all($mysqli->query('SHOW COLUMNS FROM `###_cubecart_config`')));
    
    
    echo "Lets get the first 3 rows of data from ###_cubecart_config table<br>\n";
    print_r(mysqli_fetch_all($mysqli->query('SELECT * FROM `###_cubecart_config` LIMIT 3')));

     

     

    //output
    
    dbport from ini_get('mysqli.default_port'): 3306
    dbsocket from ini_get('mysqli.default_socket'):MySQL
    Total tables found using mySQLi: 64
    Lets get the column names from ###_cubecart_config table
    Array
    (
        [0] => Array
            (
                [0] => name
                [1] => varchar(100)
                [2] => NO
                [3] => PRI
                [4] => 
                [5] => 
            )
    
        [1] => Array
            (
                [0] => array
                [1] => text
                [2] => NO
                [3] => 
                [4] => 
                [5] => 
            )
    
    )
    Lets get the first 3 rows of data from ###_cubecart_config table
    Array
    (
        [0] => Array
            (
                [0] => All_In_One_Shipping
                [1] => eyJzdGF0dX...{shortened this for display purpsoses}
            )
    
        [1] => Array
            (
                [0] => config
                [1] => eyJzdG9yZV...{shortened this for display purpsoses}
            )
    
        [2] => Array
            (
                [0] => Contact_Form
                [1] => eyJzdGF0dXM...{shortened this for display purpsoses}
            )
    
    )

     

     

    I can confirm that this is exactly the same live as it is locally.

    http://preview.zombiesbyte.com/conchecker.php

     

     

  12. Hi bsmither

    I've updated the script to use the port and socket:

     

    <?php
    
    $dbdatabase = '{removed-for-security}';
    $dbhost = '{removed-for-security}';
    $dbpassword = '{removed-for-security}';
    $dbprefix = '{removed-for-security}';
    $dbusername = '{removed-for-security}';
    
    $dbport = ini_get('mysqli.default_port');
    $dbsocket = ini_get('mysqli.default_socket');
    
    echo "<br>\ndbport from ini_get('mysqli.default_port'): " . $dbport .  "<br>\n";
    echo "dbsocket from ini_get('mysqli.default_socket'):" . $dbsocket .  "<br>\n";
    
    $mysqli = new mysqli($dbhost, $dbusername, $dbpassword, $dbdatabase, $dbport, $dbsocket);
    
    try {
    	echo "Total tables found using mySQLi: " . count(mysqli_fetch_all($mysqli->query('SHOW TABLES'))) . "<br>\n";
    } catch(Exception $e) {
    	echo "problem connecting to db using mysqli";
    }

    Which results in the table connecting as before and both values actually being supplied when parsing

    //Output
    
    dbport from ini_get('mysqli.default_port'): 3306
    dbsocket from ini_get('mysqli.default_socket'):/tmp/mysqld.sock
    Total tables found using mySQLi: 64
    
    

    As far as I can see my script is connecting at every turn, even the CC mysqli class is connecting.

     

    Many thanks

    James

  13. Hi bsmither

    phpini added

    I realise PDO wasn't used but left it in on my tests anyway.

    I've updated the script to die() with error if it tries to use the old mysql connection type. It never loads it so the mysqli has passed and is always used.

    I can't find anything in PHP info that stands out but I've left it on for you to look at if you need it.

    Many thanks

    James

     

  14. As additional investigation

    the error seems quite strange to say that name is not allowed as a key since this is a table automatically setup by CC with the DB fields "name" and "array"

    Screen shot of LOCAL DEV table ###_cubecart_config above

    (note: ### is a mask for what I have as my prefix and not actually my table name)

    {see local-db.jpg}

    My Live DB shows the same info:

    {see live-db.jpg}

    PDO and mySQLi confirm that connections are established to the database from my script and I can also confirm that CC uses mySQLi class to successfully connect. Whatever is going on in database.class.php seems to be the problem but I'm not 100% sure what checks are happening to change the script. Obviously this is something probably small that is miss-aligning information/communication but I can't put my finger on it

     

    I just thought I'd post this in an effort to pin point the problem

    Thanks

    James

     

     

     

    live-db.jpg

    local-db.jpg

  15. I've been running a few checks with regards to my conchecker.php file. (http://preview.zombiesbyte.com/conchecker.php)

    Both PDO and mySQLi work

    <?php
    
    $dbdatabase = '{removed-for-security}';
    $dbhost = '{removed-for-security}';
    $dbpassword = '{removed-for-security}';
    $dbprefix = '{removed-for-security}';
    $dbusername = '{removed-for-security}';
    
    
    $db = new PDO("mysql:host={$dbhost};dbname={$dbdatabase};charset=utf8mb4", $dbusername, $dbpassword);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    
    try	{
    	echo "Total tables found using PDO: " . count($db->query('show tables')->fetchAll(PDO::FETCH_NUM)) . "<br>\n";
    } catch(PDOException $ex) {
    	echo "problem connecting to db using PDO";
    }
    
    
    $mysqli = new mysqli($dbhost, $dbusername, $dbpassword, $dbdatabase);
    try {
    	echo "Total tables found using mySQLi: " . count(mysqli_fetch_all($mysqli->query('SHOW TABLES'))) . "<br>\n";
    } catch(Exception $e) {
    	echo "problem connecting to db using mysqli";
    }

     

  16. Thanks bsmither

    I don't have the setup folder as this would have been removed after install (in case I forgot about deleting it) ^_^

    The conchecker.php file is simply a file that uses PDO to contact the same database as set in my global.in.php. It is impossible for me to contact any database other than the one at my hosts address as they don't support foreign connections to the outside network.

    As you can see the data gets extracted so there's no problem with the communication between script and DB server as far as native PHP -> MySQL (just can't work out why CC -> MySql doesn't work)

    Thanks

    James

  17. Thanks Dirty Butter

    I think that had to be the quickest reply I've even seen on a forum. I'm sure if you compared the time stamps your reply went out before my post did :w00t::lol:

    As I'd mentioned , my test script used the same details and I'm connecting to my online DB only.

    Cheers

    James

  18. Hi

    I've got the dreaded 'name' is not allowed as key. Seems it's quite a common issue with the web plastered with people asking about this issue.

    I'm getting it too. This is my first upload to a live staging server so I was never under the impression it was going to be smooth (programmers joke). None-the-less I'm faced with the error and have tried a dozen resets on the DB setup, global.inc.php file and even gone down randomly deleting cache files in hopes I'd solve the problem.

    I've created a PDO:MySQL test connection using the same details I have in my global.in.php and I can retrieve data with no problems so I assume it's another issue which I've not read about.

    For the record, I can't seem to get logged into the Admin area either. (username or password incorrect msg). When I log back in locally to check my login details that I have saved I manage to login no problem. There's a message about cache being disabled which I must have turned off a while ago while setting the site up so that may be worth noting.

    I've re-uploaded all of my files (FTP) to make sure that that wasn't any issues with filezilla communication. I've also taken a fresh dump of the SQL in local PHPMyAdmin and dropped and redumped that into my hosts PHPMyAdmin.

    preview.zombiesbyte.com

    preview.zombiesbyte.com/conchecker.php (I just print_r the results of the cubecart_geo_country table as there's nothing sensitive here... I hope lol)

     

    My thoughts:

    # Does CC need to know what domain name it runs from. Locally this is just zombiesbyte.dev but my staging server is preview.zombiesbyte.com while my live will eventually be on SSL under the zombiesbyte.com

    # I've got cache disabled so I'm not sure if this is a cache issue at all but when it comes to my experience with cache it has always caught me out!

    # I find it strange that I can't login to admin, that would imply that the database can't be accessed at all using CC's methods (pun intended) but a classic straight forward connection works so I can't figure out the missing piece.

    # This is where you tell me I've just forgot to change a value somewhere (fingers crossed it's this simple)

     

    Many thanks

    James

     

     

  19. Interestingly the category shipping kind of works. It's a shame you couldn't add multiples of these to a zone since I would have liked to offer First Class, Second Class and Next Day options for the basket but as it stands I think it is a good enough compromise to get around the various item weights. I don't think automation of these things is ever going to be perfect but the courier services don't help by complicating their prices based on mixture of weight and dimensions.

    DPD have formulas based on dimensions (W x L x D) divided by 4,000 (5,000 for international) so long as the actual weight is within a certain Kg, they then complicate this by adding about a dozen options of posting an item out before certain times across certain days. Never mind, guess this is the way the world spins :)

  20. Thanks for the link bsmither.

    I'm not sure about what I'm reading. Seems this stuff is still in beta and although I wouldn't normally be bothered I think it makes it uncomfortable using unstable scripts on a live business website especially when money is involved. :)

    I think I may need to have a think about perhaps just using either free shipping on selected items or restructure the shipping matrix or something. It's a shame I can't pin down the flat-rate shipping prices from a delivery company at this stage. Chicken and egg issue :(

    I know there's other modules out there so perhaps one of them fits better or maybe I can change the code to compensate but I want to try and avoid more fiddling as all these changes need to be maintained in future updates.

     

    EDIT: I wonder if this may provide the necessary adjustments https://www.cubecart.com/extensions/shipping-methods/per-category I'll try it and report back

  21. Hi

    I'm open to suggestions on this issue including possible alternatives to plugins from the marketplace.

    I've installed https://www.cubecart.com/extensions/shipping-methods/-all-in-one-shipping and setup the matrix to a point. Everything is great until I think about the difference between padded letter and parcel. It would be a lot easier if things were based on weight alone but Royal Mail (for example) have a large jump when you talk about letters vs parcels.

    The shipping matrix works fine when I know the products will all ship pretty cheaply in a padded envelope which is within the letter specification. Unfortunately there are items that would be regarded as parcels or if many items of the envelope category were selected. The shipping matrix has no way of knowing as this is not a weight issue but a size issue.

    Could anyone suggest a way to get around this? Perhaps it's a case of offering flat rate shipping for a price that covers every eventuality up to a certain weight class. Thinking about even that example causes some of the same issues as you may well order 2 items that bring you to the threshold which fit within the criteria but what if you ordered many smaller items that took you over the dimensions of the restrictions but you were still within the weight criteria (i.e. 15 items weighing a total of 2kg but the parcel size would be 150cm x 150cm x 150cm) Sending these as two/three parcels would incur double/tipple the shipping cost.

    After talking with a few shipping/courier companies it seems they want me to get back to them after I'm shipping so many parcels a day/week before they will even talk to me. I'm due to launch in October and I just thought this would naturally resolve itself as I got closer to completing but so far there hasn't been a clear solution.

    Any thoughts?

     

  22. I'm :frusty2:

    The way they refer to their own scripts is silly. The wizard that builds your script collection doesn't mention anything about tabs.js.

    I've copied their example and placed it inside a document without editing anything. It still doesn't work and it's from the latest Foundation ver 6.

    <ul class="tabs" data-tabs="" id="example-tabs">
    	<li class="tabs-title is-active"><a aria-selected="true" href="#panel1">Tab 1</a></li>
    	<li class="tabs-title"><a href="#panel2">Tab 2</a></li>
    </ul>
    
    <div class="tabs-content" data-tabs-content="example-tabs">
      <div class="tabs-panel is-active" id="panel1">
          <p>Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. 		Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus.</p>
      </div>
    
      <div class="tabs-panel" id="panel2">
          <p>Suspendisse dictum feugiat nisl ut dapibus. Vivamus hendrerit arcu sed erat molestie vehicula. Ut in nulla enim. Phasellus molestie 		magna non est bibendum non venenatis nisl tempor. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor.</p>
      </div>
    </div>

     

    The output of which is: (screen grab)

    EDIT: Looks like the screen grab didn't save, it was just an unordered list and both divs show content (neither hidden)

    I see that version 5 uses Class "tab-title" and version 6 uses "tabs-title" which is great, can you imagine if PHP was like this (this is a hideous version modification)

    Anyway when I try to check their script for the version they don't use any reference: here's the header information... they seriously need to start pulling their socks up, none of this seems right to me.

     

    /* Foundation Responsive Library
     * http://foundation.zurb.com
     * Copyright 2014, ZURB
     * Free to use under the MIT license.
     * http://www.opensource.org/licenses/mit-license.php
     ...
     */

    Also, I'm not sure what happened but CC ships with 1.foundation.min.js which isn't a min-ified version either.

    So my question is what version of Foundation does CC have pre-installed/pre-packaged (this is the skin I used https://demo.cubecart.com/cc6/index.php)?

    Cheers

    James

     

     

     

     

  23. Hi ngmp

    Do you want them to display across all pages or just the shopping cart?

    If it is for all pages then where do you want to display the logos (i.e. the footer area above where the subscription box would sit for instance)?

    I think it would help to know this before you can get any help as it is a little vague.

    Could we also have the names of the logo files and the path to them i.e. /images/general/

    It may help to know the sizes of each logo too so that we can help style them properly.

    Lastly, I'm not sure about the different themes for CC but I'm assuming they all have a similar structure but just in case can we have the name of the theme you're using as your base of design?

     

    Kind regards

    James

×
×
  • Create New...