Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by ecartz

  1. I do not know the answer. But if I were trying to do this, I would look at sitemap Apps. Why? Because they generate listings of URLs and should use the same generation mechanism as osCommerce uses for regular links. Perhaps not all of them would be compatible with this App, but at least one should.
  2. Linux or Windows? In Linux, it uses some variant of sendmail. Windows uses SMTP, but in both cases, what I would call SMTP settings would be defined outside of osCommerce. E.g. in the sendmail configuration or the web server on Windows. There might be something in the PHP configuration. I haven't tried to look recently. What configuration osCommerce has is in admin > Configuration > E-Mail Options You may want to check out Harald's email testing script as a troubleshooting measure. If neither email sends, then the problem is at the host level.
  3. Replace all the occurrences of TABLE_WHATEVER with whatever. E.g. " . TABLE_CONFIGURATION . " would become configuration Note that the quotation marks and periods have disappeared in that section. This needs done for anything that says TABLE_ in any of the three files (includes/modules/shipping/uspsds.php, includes/classes/packing.php, and includes/classes/xml.php). It's currently not needed in the admin files, although it would be harmless to do it there as well. That's part of why I'm not trying to separate the uspsds.php file into things that are called by admin (e.g. the install function) and things that are called in catalog (e.g. the quote function). Go ahead and change all of them. As a general rule, TABLE_WHATEVER gets replaced with whatever (lower case, no TABLE_ at the beginning). There may be an exception to that, so watch out for lines that say something like define('TABLE_WHATEVER', 'not_quite_whatever'); and replace occurrences of " . TABLE_WHATEVER . " with not_quite_whatever instead. The standard osCommerce ones are at https://github.com/gburton/CE-Phoenix/blob/41601da342152b010247083c1a70101aa2468d84/includes/database_tables.php Also check if any of the DIR_WS entries that have been removed appear in this code. See https://github.com/gburton/CE-Phoenix/commit/65a7fdc942d043dc442f800c54885b9fb8c54d91#diff-cbf96a696abf49d99741d4219fed49a7 for the list of removed values (those with a red background). Have you tried uninstalling and reinstalling the module? You'd have to reenter the configuration but that might fix certain kinds of issues. Inside the module, there are some commented out print_r statements. Try uncommenting them and running a test order. This will probably break things more, but it may give useful output. You may want to change them to something like print_r([ $request, $xmlResponse ]); to add the request into the debugging output. Note the added square brackets. Try to figure out what is giving the no shipping methods message and trace back to why it is giving that message.
  4. In includes/application_top.php look for code like // define the project version --- obsolete, now retrieved with tep_get_version() define('PROJECT_VERSION', 'OSCOM CE Phoenix'); If it tells you to use tep_get_version, try looking in includes/version.php To get the PHP version, try looking in Tools > Server Info If your version of osCommerce doesn't have that, try looking for a file named phpinfo.php Unfortunately, I don't remember where that appeared. If you can't find that, you could try making one. The phpinfo function is available in all versions of PHP that I've used. Save <?php phpinfo(); as a file on your webserver. If your admin is protected by htpasswd, then put it there. If not, delete it after viewing it.
  5. If you need it, INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) VALUES ('Postal Code', 'SHIPPING_ORIGIN_ZIP', 'NONE', 'Enter the Postal Code (ZIP) of the Store to be used in shipping quotes.', '7', '2', now()); But you might want to verify that the contribution uses SHIPPING_ORIGIN_ZIP first.
  6. Zip code first digits: https://smartystreets.com/docs/zip-codes-101 Zip code ranges: https://www.zipcodestogo.com/ZIP-Codes-by-State.htm But be careful. Some zip codes cross state lines (e.g. 42223 is in both Tennessee and Kentucky). So you can't necessarily say that every zip code maps uniquely to a state.
  7. That may look similar, but it's telling you something different. Try require_once('includes/classes/xml.php'); Or maybe require_once(DIR_FS_CATALOG . 'includes/classes/xml.php'); Also verify that there is indeed an xml.php file in includes/classes/
  8. Please include more details. It's not working in that 1. It is giving the same error? 2. A different error? 3. No error, but not doing something it should be doing? If so, what is it not doing but should be? The change I suggested should at least get rid of that exact error. It may reveal a new problem, but we'll have trouble helping you without more details of what that problem is.
  9. Go through the App file or files and everywhere you see DIR_WS_CLASSES, replace it with DIR_WS_CATALOG . 'includes/classes/'
  10. ecartz

    HoneyPot Captcha

    1. Make sure that you are using the code version with $_SESSION['security_check'] = "$numero"; 2. Make sure that your logging is set back to the original level so that you aren't getting spammed with meaningless notices. 3. Make sure that you have the Maths captcha turned on. 4. Try to create an account. 4. Assuming it fails, go look in the logs and see if it is the same error (the captcah error) or a different error. If it is a different error, then you've at least made some progress. You can move on to troubleshooting that instead. If it is still giving the same error, try changing the logging line in includes/functions/honeypot.php to WriteToLog(TEXT_CREATE_ACCOUNT_CAPTCHA . ' /' . $_POST['security_check'] . '/' . $_SESSION['security_check'] . '/'); Maybe that will get you more information.
  11. ecartz

    HoneyPot Captcha

    Not and get the error that you're getting in your log (the captcah error message). Now, what could have happened is that when you tried it with the session variable bug fixed, you actually got a different error in your log. You might try creating another account with the session variable fixed and check your logs then, possibly with logging turned back to the original settings so you'll see the error logged without it being buried in other things. I probably should have suggested that then.
  12. ecartz

    HoneyPot Captcha

    Not exactly a typo, but in captcha.php try changing // set session variable to total $_SESSION['check'] = $numero; to // set session variable to total $_SESSION['security_check'] = $numero; to match the usage in includes/functions/honeypot.php
  13. ecartz

    Thoughts on OSCommerce?

    This is going to depend heavily on how you are working on it. Are they hiring you on a piecework basis? Or as an employee? As a general rule of thumb, if you are working as a contractor, you should charge in dollars per hour the amount that you want to make in thousands per year. So if you as a programmer would work for a salary of $100,000 a year, you should charge $100 per hour and figure on billing a thousand hours or so a year. As a full time employee, you would charge half that. $50 an hour would get you $100,000 a year. Because if you work forty hours a week for fifty weeks, that's two thousand hours a year. This is because as a contractor, you have to pay for things like the employer's share of FICA, health care, retirement, and other benefits yourself (because contractors are their own employers). As an employee, your employer pays for that stuff. Also, as a contractor, you have to spend part of your time as a salesperson, finding work. That's unpaid work for a contractor. As an employee, if your employer has you do that, the employer still has to pay you for your time. I don't think it is appropriate to get into more specific details here. You'd be better off looking on a site like Glassdoor to find out what salaries are competitive for a PHP developer with your experience. But hopefully this gives you a framework for thinking about how to bill. The important thing to remember is to charge at least twice as much per hour as a contractor as you would as an employee.
  14. I'm not following why you need another hook call here. You already explained how to do it with the template_bottom.php hook. So why do you still need the new hook at the end of admin/categories.php? Almost certainly this is just something that @burt hasn't done yet. He might just tell you to send him a pull request. I think that there is discussion about this in the Phoenix club. You might try PMing and asking for access. The criterion is that you must be able to show that you're using Phoenix, preferably on a production site. Inserting a hook call isn't quite the same thing. The ideal would be to go ahead and do that in your store and then ask for it to be added to core via the pull request process. The hook might get renamed, which would cause you extra work, but it's a lot less work than having to reintegrate your changes into a new version of the file. And of course most of the actual code would stay the same even after a hook rename.
  15. ecartz

    Adding Product Attributes on Synology NAS

    The Synology Disk Station NAS is a Linux box. It's quite capable of running a web server. That said: This would also require dynamic DNS if the internet uses a DHCP IP address (most residential connections do, e.g. a cable modem or FIOS). Emails tend not to work well from residential IPs. It's easy for the IP to get blacklisted and hard for it to get off the blacklist (since you don't own the IP and can't set up things like a PTR). You'd probably need to set up something like SMTP authentication, which is not stock in osCommerce. Running a web server on a residential internet account may break the terms of service. The firewall on the modem (cable, FIOS, whatever) may prevent outsiders from reaching ports 80 (http), 443 (https), and 25 (SMTP/email) on the Disk Station. I would not want to publish my home IP as associated with a public web server. There are a set of exploits that will work on a NAS or a PC that won't work on a web server. But if they know that the IP covers all those services, they can choose any one of those areas for entry and then compromise the others from that. Because it's easier to compromise when inside the firewall. This would be much more practical to use as a test server with a production server managed on regular shared hosting. It's going to be finicky and give a set of problems that the host would handle if you paid. But if it's your own server, you have to manage all that and fix it when it breaks. It's not a simple solution. It's not an impossible one, but I would not recommend it for anyone but an expert system administrator.
  16. No. Characters does not represent words. The 16/32 issue may be a bug or just database weirdness.
  17. ecartz

    osCommerce Online Merchant v2.3.4.1 Admin

    define('DIR_FS_DOCUMENT_ROOT', '/catalog/'); This looks wrong. It should generally have a value that looks more like /home/rsthornton or /usr/local/apache2/html or /var/www/html or something like that. It definitely should not be '/catalog/' -- perhaps '' if you have a really weird server setup. It should not end in a / Similarly DIR_FS_CATALOG should generally be DIR_FS_DOCUMENT_ROOT . DIR_WS_CATALOG and DIR_FS_ADMIN should have a different value than DIR_FS_CATALOG
  18. ecartz

    osCommerce Online Merchant v2.3.4.1 Admin

    That makes it more likely that your includes/configure.php and admin/includes/configure.php files are different. As those are files that can cause a problem like this, and they get changed as part of the SSL install. Do you have older copies of those files? Perhaps you need to contact your host to determine the right value for DIR_FS_DOCUMENT_ROOT. I keep harping on that because /catalog/includes/classes/action_recorder.php is missing that. So unless you edited out the value from there, that seems to be set incorrectly. Another thing that you can check is if /catalog/includes/classes/action_recorder.php exists. If it does, it's more likely to be a configuration problem. If not, then why is the code trying to load it?
  19. It should, but I'm kind of suspicious that they did something funky to handle multibyte characters. I note that your strings are still limited. It looks like to 32 characters. So they may have set it to handle 32 bytes on the theory that on average that will be enough to hold 16 characters. Or they converted to UTF-16 in the storage, which can hold any value that can be represented as UTF-8 as two bytes. Or something even funkier. Stack Overflow suggests that you may find names that are longer than those limits.
  20. ecartz

    osCommerce Online Merchant v2.3.4.1 Admin

    This is the kind of thing that happens when you install a contribution that is written for a different version of the software than the one that you are using. E.g. a contribution for Phoenix in If that's the problem, you might be able to get around this by going to line 13 of /catalog/admin/includes/classes/action_recorder.php and adding a // to it so it looks like //require(DIR_FS_CATALOG . 'includes/classes/action_recorder.php'); But that also might just get you to a new error. Another possibility is that your /admin/includes/configure.php is incorrect. Perhaps $DOCUMENT_ROOT isn't getting set and you need to change it to something else. define('DIR_FS_DOCUMENT_ROOT', $DOCUMENT_ROOT); // where your pages are located on the server. if $DOCUMENT_ROOT doesnt suit you, replace with your local path. (eg, /usr/local/apache/htdocs) This is something that you'd have to discuss with whomever manages your server, because each server is different. If you are on Linux and can do an ls command in the root of your web directory, use the pwd command to get the correct value. It should not end in a / (but should start with one). Another possibility is that the /catalog/ part is incorrect. Make sure that your includes/configure.php and admin/includes/configure.php match in where they expect the shop to be.
  21. The easy way would be to just remove all the attributes from the product. Then it will save with a simple product ID. If you don't want to remove the attributes, then you don't want to remove those characters, as they specify which attributes were chosen. If you save to customers_basket without those characters, you will remove all the attribute choices from that product. If you want to convert from and to the long form, you can use tep_get_prid and tep_get_uprid.
  22. So I just downloaded the package from the same releases page. It is called CE-Phoenix- and the includes/application_top.php file has a closing curly brace on line 50, not a require. Meanwhile, admin/includes/application_top.php does have that require at line 50. Please replace your includes/application_top.php with the right file.
  23. I think that it's two things: Integrate new features that are already supported in the MaxMind API. Update for Phoenix. By hardcoding database tables. By hardcoding filenames. By hardcoding values that previous were fetched from DIR_WS. Move the language defines into their own files (not in english.php). Probably includes/languages/english/modules/maxmind.php or conceivably in something called from a hook file. Utilizing hooks. Ideally the module should just be a drop-in install. Failing that, code should be inserted by adding hook calls. E.g. an existing one (of four) from includes/template_top.php <?php echo $OSCOM_Hooks->call('siteWide', 'injectBodyContentStart'); ?> If the existing hook calls are sufficient, great. If not, create a new one. It might also be helpful to move the license key configuration out of code and into the module.
  24. ecartz

    Change from viariable to fixed pathnames

    I believe that it's if (!file_exists(DIR_FS_CATALOG . 'includes/modules/payment/'. $payment . '.php')) and require_once(DIR_FS_CATALOG . 'includes/modules/payment/'. $payment . '.php'); Here's the commit. It says that the following were removed define('DIR_WS_IMAGES', 'images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/'); define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/'); define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/'); define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/'); define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'); So anything with DIR_WS_MODULES should be replaced with 'includes/modules/' and then you can concatenate neighboring strings. DIR_FS_CATALOG and $payment should stay the same. If you continue to have trouble, try replacing $payment with $GLOBALS['payment'] and output both (either to log or screen; preferably log if a live site).
  25. No it wouldn't require core changes. Just add a hook file to add global $cl_box_groups; foreach ( $cl_box_groups as &$group ) { if (BOX_HEADING_TOOLS == $group['heading']) { $group['apps'][] = array( 'code' => 'banner_manager.php', 'title' => BOX_TOOLS_BANNER_MANAGER, 'link' => tep_href_link('banner_manager.php') ) } } in a listen function. You can put the necessary defines and requires in the file but outside the class. This can be hooked into the admin siteStart, as that runs after the variable is built but before it is used. Any catalog changes from the original banner manager code could likely be implemented as an injectAppTop siteWide hook. Then you just upload the files into the right places and run SQL to make any necessary database changes. Note that for someone upgrading to, they could just skip deleting the files and running the database changes relevant to the banner manager. The only part that they really need to do is updating the files that reference the banner manager, and the hook files will fix that.