Jump to content
Zappo

[Contribution] Option Types v2

Recommended Posts

@@LeeFoster

 

Mmmmm... yes and no.

It's been a while since I looked at it but as far I remember there is a drop down where you select an option and right side or below that drop down you'll see the a thumbnail of that image.

Long, long time ago I tried to create some sort of tile layout with all the thumbnails and you could click on the image to select it.

The code can be changed to do more or less anything.

 

Then there is Kymations Option Images for the Modular Product Page which gives you a drop down with name and thumbnail image in it. Looks very nice, unfortunately I was not able to make it work with the Option Types addon.

 

If you can I would recommend to install this Option Types addon in a clean test shop and play around with it before deciding to install this in a live shop.

Edited by Tsimi

Share this post


Link to post
Share on other sites

@@LeeFoster

 

I see... then you won't have many options besides this Option Types addon for non-BS and maybe one or two older addons, just a guess though.

Never considered to go a step further up to Responsive? Many cool features already build in from the start...

Share this post


Link to post
Share on other sites

I am doing a new install of the responsive version. This is the first addon that is installed. I am using the database for our old website which is v2.3.2 after making the changes to the database for the responsive version. The only error I have found so far is in Shopping_cart.php.  I am using 2 text area attributes. One or both of them can be empty. If both are left blank there are errors in the shopping cart

 

Warning: Illegal string offset 'txt_3' in ...\shopping_cart.php on line 68

Warning: Illegal string offset 'txt_3' in ...\shopping_cart.php on line 69

Warning: Illegal string offset 'txt_5' in ...\shopping_cart.php on line 68
Warning: Illegal string offset 'txt_5' in ...\shopping_cart.php on line 69

 

If I ignore the error and continue on to checkout everything works until the Confirm Order button is clicked. Then I get

 

Warning: Illegal string offset 'txt_3' in ...\includes\classes\order.php on line 304
Warning: Illegal string offset 'txt_5' in ...\includes\classes\order.php on line 304
Fatal error: Call to undefined function tep_decode_specialchars() in ...\checkout_process.php on line 254
 
How do I allow for empty fields or insert a default value in them?

Share this post


Link to post
Share on other sites

Hi there,

 

Just installed this contri and have a problem . If i work with chrome i can put text in the productoptions and everything goes well. but in Edge i cant write in the text area just nothing happens

Any idea someone

 

thx Danny

 

Just tried it in Edge and works fine

Share this post


Link to post
Share on other sites

Having a small issue with the cart when updating qty or removing

 

it appears that the remove function is trying to remove or update

 

the url it is trying to process is shopping_cart.php?products_id=29{txt_6}testing&action=remove_product

 

this only happens where (i have only used text part) their is a attribute attached to the item

 

If I add an item to the cart that does not have any attribute the remove button works and I think it is related to the  ... {txt_6}testing ... it adds in the url (and session)

 

any suggestions?

Share this post


Link to post
Share on other sites

Same here since 1 week ??????

 

Cannot update shopping cart??

 

Try for yourself:  http://www.fotogaaf.eu/schoolfotograaf-nederland-aanbieding-betaalbaar-prijs-actie-goedkoop/catalog/index.php/cPath/23

 

Everything the customers buys he/she HAS to fill in a photonumber.......

 

Even if you delete the shopping cart it stays when you clich shopping cart again ?!!!

Please advice

Edited by fotogaaf

Share this post


Link to post
Share on other sites

@@fotogaaf

 

Did everything work before?

I can remove the product from your cart when I click on the X button next to the update button.

 

What I cannot do in your shopping cart is update the product quantity and remove all items by clicking on the large red button.

 

I will install this into a clean Edge store and see what the issue is.

 

My current guess would be something in the application_top.php

Edited by Tsimi

Share this post


Link to post
Share on other sites

@@fotogaaf

 

Did everything work before?

I can remove the product from your cart when I click on the X button next to the update button.

 

What I cannot do in your shopping cart is update the product quantity and remove all items by clicking on the large red button.

 

I will install this into a clean Edge store and see what the issue is.

 

My current guess would be something in the application_top.php

 

Keep in mind the new edge no longer supports filenames.php and the shopping_cart.php is now stripped out and you need to install the module for shopping cart http://addons.oscommerce.com/info/9466

 

My installl is the newest edge release.

Share this post


Link to post
Share on other sites

At this very moment I can't tell you what it is but if it worked before and now it doesn't then something happened or you never really mention it till today/yesterday.

 

The current osC EDGE has no modular shopping cart yet. So I won't be going there yet. I will install the latest Option Types BS into a clean, fresh downloaded osC Edge and see what is going on.

 

The addon will need an update since the filenames.php is depricated in the latest Edge version. I also need to create modules for the modular product page by kymation and if possible modules for the modular shopping cart by raiwa & co.

Edited by Tsimi

Share this post


Link to post
Share on other sites

@Tsimi

 

I know 2 things for sure:

 

1) nothing changed in the last months

2) everything worked fine, for sure till 17 july2016  and I changed nothing ?!

Share this post


Link to post
Share on other sites

@@jlous

 

Hi Jennifer

 

Do you have the following code inside the catalog/includes/functions/general.php file?

  function tep_decode_specialchars($string){
    $string=str_replace('>', '>', $string);
    $string=str_replace('<', '<', $string);
    $string=str_replace(''', "'", $string);
    $string=str_replace('"', "\"", $string);
    $string=str_replace('&', '&', $string);

    return $string;
  }

Did you use some special characters inside the text fields?

the fields have a default INPUT and ID. When you go to your admin area -> Products Attributes -> under Option Values you should have/see ID 0 / CUSTOMER-INPUT that is the default and should be not deleted from the database. If that is deleted it won't work.

Share this post


Link to post
Share on other sites

@@fotogaaf @@ShaGGy

 

So I installed this into a local, brand new, today downloaded Edge osC shop and I created various options and added them to a product. I then added that product to the cart and I can update/remove or even add multiple products and remove them all with that Remove All button. So no issue at all here.

I have no clue what is not working in your guys shops.

I must admit that this is only tested in a local (XAMPP) environment and not on a real server but I think that shouldn't really matter.

 

The only thing I can tell you guys right now is to double check your codes inside the application_top.php and if possible go quickly over the install manual and re-check if the code pieces are still there inside all the other files.

Share this post


Link to post
Share on other sites
1) I have:

 

function tep_decode_specialchars($string){

    $string=str_replace('>', '>', $string);

    $string=str_replace('<', '<', $string);

    $string=str_replace(''', "'", $string);

    $string=str_replace('"', "\"", $string);

    $string=str_replace('&', '&', $string);

 

    return $string;

  }

 

2) i only use numbers in the text field

3) ID 0 / CUSTOMER-INPUT is the default

 

My catalog/includes/application_top.php is iin the next post

I don't see anything special??!

Edited by fotogaaf

Share this post


Link to post
Share on other sites
<?php

/*

  $Id$

 

  osCommerce, Open Source E-Commerce Solutions


 

  Copyright © 2014 osCommerce

 

  Released under the GNU General Public License

*/

 

// start the timer for the page parse time log

  define('PAGE_PARSE_START_TIME', microtime());

 

// set the level of error reporting

  error_reporting(E_ALL & ~E_NOTICE);

 

// check support for register_globals

  if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) {

    exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.');

  }

 

// load server configuration parameters

  if (file_exists('includes/local/configure.php')) { // for developers

    include('includes/local/configure.php');

  } else {

    include('includes/configure.php');

  }

 

  if (DB_SERVER == '') {

    if (is_dir('install')) {

      header('Location: install/index.php');

      exit;

    }

  }

 

// define the project version --- obsolete, now retrieved with tep_get_version()

  define('PROJECT_VERSION', 'osCommerce Online Merchant v2.3');

 

// some code to solve compatibility issues

  require(DIR_WS_FUNCTIONS . 'compatibility.php');

 

// set the type of request (secure or not)

  $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';

 

// set php_self in the local scope

  $req = parse_url($HTTP_SERVER_VARS['SCRIPT_NAME']);

  $PHP_SELF = substr($req['path'], ($request_type == 'NONSSL') ? strlen(DIR_WS_HTTP_CATALOG) : strlen(DIR_WS_HTTPS_CATALOG));

 

  if ($request_type == 'NONSSL') {

    define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);

  } else {

    define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);

  }

 

// include the list of project filenames

  require(DIR_WS_INCLUDES . 'filenames.php');

 

// include the list of project database tables

  require(DIR_WS_INCLUDES . 'database_tables.php');

 

// include the database functions

  require(DIR_WS_FUNCTIONS . 'database.php');

 

// make a connection to the database... now

  tep_db_connect() or die('Unable to connect to database server!');

 

// set the application parameters

  $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);

  while ($configuration = tep_db_fetch_array($configuration_query)) {

    define($configuration['cfgKey'], $configuration['cfgValue']);

  }

 

// if gzip_compression is enabled, start to buffer the output

  if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && !headers_sent() ) {

    if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {

      if (PHP_VERSION < '5.4' || PHP_VERSION > '5.4.5') { // see PHP bug 55544

        if (PHP_VERSION >= '4.0.4') {

          ob_start('ob_gzhandler');

        } elseif (PHP_VERSION >= '4.0.1') {

          include(DIR_WS_FUNCTIONS . 'gzip_compression.php');

          ob_start();

          ob_implicit_flush();

        }

      }

    } elseif (function_exists('ini_set')) {

      ini_set('zlib.output_compression_level', GZIP_LEVEL);

    }

  }

 

// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled

  if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') {

    if (strlen(getenv('PATH_INFO')) > 1) {

      $GET_array = array();

      $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);

      $vars = explode('/', substr(getenv('PATH_INFO'), 1));

      do_magic_quotes_gpc($vars);

      $n=sizeof($vars);

      for ($i=0; $i<$n; $i++) {

        if (strpos($vars[$i], '[]')) {

          $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];

        } else {

          $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];

        }

        $i++;

      }

 

      if ($GET_array !== null) {

        foreach($GET_array as $key => $value) {

          $HTTP_GET_VARS[$key] = $value;

        }

      }

    }

  }

 

// define general functions used application-wide

  require(DIR_WS_FUNCTIONS . 'general.php');

  require(DIR_WS_FUNCTIONS . 'html_output.php');

 

// set the cookie domain

  $cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);

  $cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);

 

// include cache functions if enabled

  if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php');

 

// include shopping cart class

  require(DIR_WS_CLASSES . 'shopping_cart.php');

 

// include navigation history class

  require(DIR_WS_CLASSES . 'navigation_history.php');

 

// define how the session functions will be used

  require(DIR_WS_FUNCTIONS . 'sessions.php');

 

// set the session name and save path

  tep_session_name('osCsid');

  tep_session_save_path(SESSION_WRITE_DIRECTORY);

 

// set the session cookie parameters

   if (function_exists('session_set_cookie_params')) {

    session_set_cookie_params(0, $cookie_path, $cookie_domain);

  } elseif (function_exists('ini_set')) {

    ini_set('session.cookie_lifetime', '0');

    ini_set('session.cookie_path', $cookie_path);

    ini_set('session.cookie_domain', $cookie_domain);

  }

 

  @ini_set('session.use_only_cookies', (SESSION_FORCE_COOKIE_USE == 'True') ? 1 : 0);

 

// set the session ID if it exists

  if ( SESSION_FORCE_COOKIE_USE == 'False' ) {

    if ( isset($HTTP_GET_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_GET_VARS[tep_session_name()])) ) {

      tep_session_id($HTTP_GET_VARS[tep_session_name()]);

    } elseif ( isset($HTTP_POST_VARS[tep_session_name()]) && (!isset($HTTP_COOKIE_VARS[tep_session_name()]) || ($HTTP_COOKIE_VARS[tep_session_name()] != $HTTP_POST_VARS[tep_session_name()])) ) {

      tep_session_id($HTTP_POST_VARS[tep_session_name()]);

    }

  }

 

// start the session

  $session_started = false;

  if (SESSION_FORCE_COOKIE_USE == 'True') {

    tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);

 

    if (isset($HTTP_COOKIE_VARS['cookie_test'])) {

      tep_session_start();

      $session_started = true;

    }

  } elseif (SESSION_BLOCK_SPIDERS == 'True') {

    $user_agent = strtolower(getenv('HTTP_USER_AGENT'));

    $spider_flag = false;

 

    if (tep_not_null($user_agent)) {

      $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');

 

      $n=sizeof($spiders);

      for ($i=0; $i<$n; $i++) {

        if (tep_not_null($spiders[$i])) {

          if (is_integer(strpos($user_agent, trim($spiders[$i])))) {

            $spider_flag = true;

            break;

          }

        }

      }

    }

 

    if ($spider_flag == false) {

      tep_session_start();

      $session_started = true;

    }

  } else {

    tep_session_start();

    $session_started = true;

  }

 

  if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) {

    extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);

  }

 

// initialize a session token

  if (!tep_session_is_registered('sessiontoken')) {

    $sessiontoken = md5(tep_rand() . tep_rand() . tep_rand() . tep_rand());

    tep_session_register('sessiontoken');

  }

 

// set SID once, even if empty

  $SID = (defined('SID') ? SID : '');

 

// verify the ssl_session_id if the feature is enabled

  if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) {

    $ssl_session_id = getenv('SSL_SESSION_ID');

    if (!tep_session_is_registered('SSL_SESSION_ID')) {

      $SESSION_SSL_ID = $ssl_session_id;

      tep_session_register('SESSION_SSL_ID');

    }

 

    if ($SESSION_SSL_ID != $ssl_session_id) {

      tep_session_destroy();

      tep_redirect(tep_href_link(FILENAME_SSL_CHECK));

    }

  }

 

// verify the browser user agent if the feature is enabled

  if (SESSION_CHECK_USER_AGENT == 'True') {

    $http_user_agent = getenv('HTTP_USER_AGENT');

    if (!tep_session_is_registered('SESSION_USER_AGENT')) {

      $SESSION_USER_AGENT = $http_user_agent;

      tep_session_register('SESSION_USER_AGENT');

    }

 

    if ($SESSION_USER_AGENT != $http_user_agent) {

      tep_session_destroy();

      tep_redirect(tep_href_link(FILENAME_LOGIN));

    }

  }

 

// verify the IP address if the feature is enabled

  if (SESSION_CHECK_IP_ADDRESS == 'True') {

    $ip_address = tep_get_ip_address();

    if (!tep_session_is_registered('SESSION_IP_ADDRESS')) {

      $SESSION_IP_ADDRESS = $ip_address;

      tep_session_register('SESSION_IP_ADDRESS');

    }

 

    if ($SESSION_IP_ADDRESS != $ip_address) {

      tep_session_destroy();

      tep_redirect(tep_href_link(FILENAME_LOGIN));

    }

  }

 

// create the shopping cart

  if (!tep_session_is_registered('cart') || !is_object($cart)) {

    tep_session_register('cart');

    $cart = new shoppingCart;

  }

 

// include currencies class and create an instance

  require(DIR_WS_CLASSES . 'currencies.php');

  $currencies = new currencies();

 

// include the mail classes

  require(DIR_WS_CLASSES . 'mime.php');

  require(DIR_WS_CLASSES . 'email.php');

 

// set the language

  if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) {

    if (!tep_session_is_registered('language')) {

      tep_session_register('language');

      tep_session_register('languages_id');

    }

 

    include(DIR_WS_CLASSES . 'language.php');

    $lng = new language();

 

    if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) {

      $lng->set_language($HTTP_GET_VARS['language']);

    } else {

      $lng->get_browser_language();

    }

 

    $language = $lng->language['directory'];

    $languages_id = $lng->language['id'];

  }

 

// include the language translations

  $_system_locale_numeric = setlocale(LC_NUMERIC, 0);

  require(DIR_WS_LANGUAGES . $language . '.php');

  setlocale(LC_NUMERIC, $_system_locale_numeric); // Prevent LC_ALL from setting LC_NUMERIC to a locale with 1,0 float/decimal values instead of 1.0 (see bug #634)

 

// currency

  if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) {

    if (!tep_session_is_registered('currency')) tep_session_register('currency');

 

    if (isset($HTTP_GET_VARS['currency']) && $currencies->is_set($HTTP_GET_VARS['currency'])) {

      $currency = $HTTP_GET_VARS['currency'];

    } else {

      $currency = ((USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && $currencies->is_set(LANGUAGE_CURRENCY)) ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;

    }

  }

 

// navigation history

  if (!tep_session_is_registered('navigation') || !is_object($navigation)) {

    tep_session_register('navigation');

    $navigation = new navigationHistory;

  }

  $navigation->add_current_page();

 

// action recorder

  include('includes/classes/action_recorder.php');

  

//BOF - Zappo - Option Types v2 - Moved infobox and messageStack here from below

// infobox

  require(DIR_WS_CLASSES . 'boxes.php');

  

// initialize the message stack for output messages

  require(DIR_WS_CLASSES . 'alertbox.php');

  require(DIR_WS_CLASSES . 'message_stack.php');

  $messageStack = new messageStack;

 

// Shopping cart actions

  if (isset($HTTP_GET_VARS['action'])) {

// redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled

    if ($session_started == false) {

      tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE));

    }

 

    if (DISPLAY_CART == 'true') {

      $goto =  FILENAME_SHOPPING_CART;

      $parameters = array('action', 'cPath', 'products_id', 'pid');

    } else {

      $goto = $PHP_SELF;

      if ($HTTP_GET_VARS['action'] == 'buy_now') {

        $parameters = array('action', 'pid', 'products_id');

      } else {

        $parameters = array('action', 'pid');

      }

    }

    switch ($HTTP_GET_VARS['action']) {

////BOF - Zappo - Option Types v2 JOLI BUG FIX FOR CLEAR CART TEXT FIELDS

 case 'clear_cart': $cart->remove_all();

     tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));

break; 

////EOF - Zappo - Option Types v2 JOLI BUG FIX FOR CLEAR CART TEXT FIELDS

      // customer wants to update the product quantity in their shopping cart

      case 'update_product' : $n=sizeof($HTTP_POST_VARS['products_id']);

                              for ($i=0; $i<$n; $i++) {

                                if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) {

                                  $cart->remove($HTTP_POST_VARS['products_id'][$i]);

                                  $messageStack->add_session('product_action', sprintf(PRODUCT_REMOVED, tep_get_products_name($HTTP_POST_VARS['products_id'][$i])), 'warning');

                                } else {

                                  $attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : '';

                                  $cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false);

                                }

                              }

                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                              break;

      // customer adds a product from the products page

 //BOF - Zappo - Option Types v2 - File uploading: Purge the Temporary Upload Dir

 case 'add_product' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {

  $purgeDir = opendir(TMP_DIR) or die ('Could not open '.TMP_DIR);

                                while ($file = readdir($purgeDir)) {

                                  if ($file != ('.htaccess') && $file != ('.') && $file != ('..') && filemtime(TMP_DIR . $file) < strtotime(OPTIONS_TYPE_PURGETIME)) {

                                    unlink(TMP_DIR . $file);  // Delete file from server...

                                    tep_db_query("delete from files_uploaded where files_uploaded_name = '" . $file . "'"); // Remove File's database entry....

                                  }

                                }

                                closedir($purgeDir);

                                //EOF - Zappo - Option Types v2 - File uploading: Purge the Temporary Upload Dir

 

                                //BOF - Zappo - Option Types v2 - ONE LINE - Set real_ids for processing

                                $real_ids = $HTTP_POST_VARS['id'];

                                //BOF - Zappo - Option Types v2 - File uploading: save uploaded files with unique file names, in the proper folder

                                if ($HTTP_POST_VARS['number_of_uploads'] > 0) {

                                  require(DIR_WS_CLASSES . 'upload.php');

                                  for ($i = 1; $i <= $HTTP_POST_VARS['number_of_uploads']; $i++) {

                                    $TEMP_FILE = $_FILES['id']['tmp_name'][TEXT_PREFIX . $HTTP_POST_VARS[uPLOAD_PREFIX . $i]];

                                    if (tep_not_null($TEMP_FILE) && $TEMP_FILE != 'none') {

                                      $products_options_file = new upload('id');

                                      //BOF - Zappo - Option Types v2 - Set Upload directory (Registered customers in Uploads, other in Temporary folder)

                                      if (tep_session_is_registered('customer_id')) {  // IF the customer is registered, use Upload Dir

                                        $products_options_file->set_destination(UPL_DIR);

                                      } else { // If the customer is not registered, use Temporary Dir

                                        $products_options_file->set_destination(TMP_DIR);

                                      }

                                      //EOF - Zappo - Option Types v2 - Set Upload directory (Registered customers in Uploads, other in Temporary folder) incl. RAIWA FIX!

                                      if ($products_options_file->parse(TEXT_PREFIX . $HTTP_POST_VARS[uPLOAD_PREFIX . $i])) {

                                        if (tep_session_is_registered('customer_id')) {

                                          tep_db_query("insert into files_uploaded (sesskey, customers_id, files_uploaded_name, date) values('" . tep_session_id() . "', '" . $customer_id . "', '" . tep_db_input($products_options_file->filename) . "', '" . date("d-m-y") . "')");

                                        } else {

                                          tep_db_query("insert into files_uploaded (sesskey, files_uploaded_name, date) values('" . tep_session_id() . "', '" . tep_db_input($products_options_file->filename) . "', '" . date("d-m-y") . "')");

                                          // @@raiwa added 2 lines for guest file upload compatibility with OsC 2.3.

                                          $guestSessionID = tep_session_id();

                                          if (!tep_session_is_registered('guestSessionID')) tep_session_register('guestSessionID');

                                        }

                                        //BOF - Zappo - Option Types v2 - Set File Prefix

                                        if (OPTIONS_TYPE_FILEPREFIX == 'Database') {  //  Database ID as File prefix

                                          $insert_id = tep_db_insert_id() . '_';

                                        } else {  //  Date, time or both as File prefix (Change date formatting here)

                                          if (OPTIONS_TYPE_FILEPREFIX == 'Date' || OPTIONS_TYPE_FILEPREFIX == 'DateTime') {

                                            $insert_id = 'D'.date("d-m-y_");

                                          }

                                          $insert_id .= (OPTIONS_TYPE_FILEPREFIX == 'DateTime' || OPTIONS_TYPE_FILEPREFIX == 'Time') ? 'T'.date("H-i_") : '';

                                        }

                                        //EOF - Zappo - Option Types v2 - Set File Prefix

                                        // Update filename in Database with correct prefix (For comparing database names with real files)

                                        tep_db_query("update files_uploaded set files_uploaded_name = '" . tep_db_input($insert_id . $products_options_file->filename) . "' where sesskey = '" . tep_session_id() . "' and files_uploaded_name = '" . tep_db_input($products_options_file->filename) . "' and date = '" . date("d-m-y") . "'");

                                        $real_ids[TEXT_PREFIX . $HTTP_POST_VARS[uPLOAD_PREFIX . $i]] = $insert_id . $products_options_file->filename;

                                        $products_options_file->set_filename($insert_id . $products_options_file->filename);

                                        if (!($products_options_file->save())) {

                                          break 2;

                                        }

                                      } else {

                                        break 2;

                                      }

                                    } else { // No file uploaded -- use previously uploaded file (From Dropdown)

                                      $real_ids[TEXT_PREFIX . $HTTP_POST_VARS[uPLOAD_PREFIX . $i]] = $HTTP_POST_VARS[TEXT_PREFIX . UPLOAD_PREFIX . $i];

                                    }

                                  }

                                }

                                //EOF - Zappo - Option Types v2 - File uploading: save uploaded files with unique file names, in the proper folder

                                //BOF - Zappo - Option Types v2 - ONE LINE - Replace the posted array with the processed one.

   //BOF JOHN ADDED QUANTITY BOX TO PRODUCT INFO

  $cart->add_cart($_POST['products_id'], $cart->get_quantity(tep_get_uprid($_POST['products_id'], $real_ids))+ $_POST['cart_quantity'], $real_ids);

           // $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $real_ids))+1, $real_ids);

                               //EOF JOHN ADDED QUANTITY BOX TO PRODUCT INFO

 

}

                              $messageStack->add_session('product_action', sprintf(PRODUCT_ADDED, tep_get_products_name((int)$HTTP_POST_VARS['products_id'])), 'success');

                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                              break;

      // customer removes a product from their shopping cart

      case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) {

                                $cart->remove($HTTP_GET_VARS['products_id']);

                                $messageStack->add_session('product_action', sprintf(PRODUCT_REMOVED, tep_get_products_name($HTTP_GET_VARS['products_id'])), 'warning');

                              }

                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                              break;

      // performed by the 'buy now' button in product listings and review page

      case 'buy_now' :        if (isset($HTTP_GET_VARS['products_id'])) {

                                if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) {

                                  tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id']));

                                } else {

                                  $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1);

                                  $messageStack->add_session('product_action', sprintf(PRODUCT_ADDED, tep_get_products_name((int)$HTTP_GET_VARS['products_id'])), 'success');

                                }

                              }

                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                              break;

      case 'notify' :         if (tep_session_is_registered('customer_id')) {

                                if (isset($HTTP_GET_VARS['products_id'])) {

                                  $notify = $HTTP_GET_VARS['products_id'];

                                } elseif (isset($HTTP_GET_VARS['notify'])) {

                                  $notify = $HTTP_GET_VARS['notify'];

                                } elseif (isset($HTTP_POST_VARS['notify'])) {

                                  $notify = $HTTP_POST_VARS['notify'];

                                } else {

                                  tep_redirect(tep_href_link($PHP_SELF, tep_get_all_get_params(array('action', 'notify'))));

                                }

                                if (!is_array($notify)) $notify = array($notify);

                                $n=sizeof($notify);

                                for ($i=0; $i<$n; $i++) {

                                  $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . (int)$notify[$i] . "' and customers_id = '" . (int)$customer_id . "'");

                                  $check = tep_db_fetch_array($check_query);

                                  if ($check['count'] < 1) {

                                    tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . (int)$notify[$i] . "', '" . (int)$customer_id . "', now())");

                                  }

                                }

                                $messageStack->add_session('product_action', sprintf(PRODUCT_SUBSCRIBED, tep_get_products_name((int)$HTTP_GET_VARS['products_id'])), 'success');

                                tep_redirect(tep_href_link($PHP_SELF, tep_get_all_get_params(array('action', 'notify'))));

                              } else {

                                $navigation->set_snapshot();

                                tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

                              }

                              break;

      case 'notify_remove' :  if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) {

                                $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'");

                                $check = tep_db_fetch_array($check_query);

                                if ($check['count'] > 0) {

                                  tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and customers_id = '" . (int)$customer_id . "'");

                                }

                                $messageStack->add_session('product_action', sprintf(PRODUCT_UNSUBSCRIBED, tep_get_products_name((int)$HTTP_GET_VARS['products_id'])), 'warning');

                                tep_redirect(tep_href_link($PHP_SELF, tep_get_all_get_params(array('action'))));

                              } else {

                                $navigation->set_snapshot();

                                tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

                              }

                              break;

      case 'cust_order' :     if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) {

                                if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) {

                                  tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid']));

                                } else {

                                  $cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1);

                                }

                              }

                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                              break;

    }

  }

 

// include the who's online functions

  require(DIR_WS_FUNCTIONS . 'whos_online.php');

  tep_update_whos_online();

 

// include the password crypto functions

  require(DIR_WS_FUNCTIONS . 'password_funcs.php');

 

// include validation functions (right now only email address)

  require(DIR_WS_FUNCTIONS . 'validations.php');

 

// split-page-results

  require(DIR_WS_CLASSES . 'split_page_results.php');

 

//BOF - Zappo - Option Types v2 - ONE LINE - infobox moved up from here...

// infobox

//require(DIR_WS_CLASSES . 'boxes.php');

 

// auto activate and expire banners

  require(DIR_WS_FUNCTIONS . 'banner.php');

  tep_activate_banners();

  tep_expire_banners();

 

// auto expire special products

  require(DIR_WS_FUNCTIONS . 'specials.php');

  tep_expire_specials();

 

  require(DIR_WS_CLASSES . 'osc_template.php');

  $oscTemplate = new oscTemplate();

 

// calculate category path

  if (isset($HTTP_GET_VARS['cPath'])) {

    $cPath = $HTTP_GET_VARS['cPath'];

  } elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) {

    $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']);

  } else {

    $cPath = '';

  }

 

  if (tep_not_null($cPath)) {

    $cPath_array = tep_parse_category_path($cPath);

    $cPath = implode('_', $cPath_array);

    $current_category_id = end($cPath_array);

  } else {

    $current_category_id = 0;

  }

 

// include category tree class

  require(DIR_WS_CLASSES . 'category_tree.php');

 

// include the breadcrumb class and start the breadcrumb trail

  require(DIR_WS_CLASSES . 'breadcrumb.php');

  $breadcrumb = new breadcrumb;

 

  $breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER);

  $breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT));

 

// add category names or the manufacturer name to the breadcrumb trail

  if (isset($cPath_array)) {

    $n=sizeof($cPath_array);

    for ($i=0; $i<$n; $i++) {

      $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");

      if (tep_db_num_rows($categories_query) > 0) {

        $categories = tep_db_fetch_array($categories_query);

        $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1)))));

      } else {

        break;

      }

    }

  } elseif (isset($HTTP_GET_VARS['manufacturers_id'])) {

    $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");

    if (tep_db_num_rows($manufacturers_query)) {

      $manufacturers = tep_db_fetch_array($manufacturers_query);

      $breadcrumb->add($manufacturers['manufacturers_name'], tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id']));

    }

  }

 

// add the products model to the breadcrumb trail

  if (isset($HTTP_GET_VARS['products_id'])) {

    $model_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");

    if (tep_db_num_rows($model_query)) {

      $model = tep_db_fetch_array($model_query);

      $breadcrumb->add($model['products_model'], tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $HTTP_GET_VARS['products_id']));

    }

  }

 

 

 

 

 

 

 

 

 

 

 

 

 

// Discount Code 3.2 - start

  if (MODULE_ORDER_TOTAL_DISCOUNT_STATUS == 'true') {

    if (!tep_session_is_registered('sess_discount_code')) tep_session_register('sess_discount_code');

    if (!empty($HTTP_GET_VARS['discount_code'])) $sess_discount_code = tep_db_prepare_input($HTTP_GET_VARS['discount_code']);

    if (!empty($HTTP_POST_VARS['discount_code'])) $sess_discount_code = tep_db_prepare_input($HTTP_POST_VARS['discount_code']);

  }

  // Discount Code 3.2 - end

Share this post


Link to post
Share on other sites

@@fotogaaf

 

The special character stuff was not meant for you. ;)

 

Your application_top.php file looks good. Compared it to mine and they are same.

Can you show me your shopping_cart.php file?

 

Please use the code input feature ( < > icon ) to paste code or use pastebin.com

Edited by Tsimi

Share this post


Link to post
Share on other sites

@@fotogaaf

 

Roy

 

Forget about the shopping_cart.php file.

What ever is going on in your shop has probably nothing to do with the Option Types BS addon.

Did you change anything on your session or cache settings in your admin?

I tried to add various products from your shop to the cart and I enter a number and click the cart button but it won't add anything to the shopping cart "unless" i click another product link or go away from the product_info.php page. Same goes for the shopping_cart.php page, I click on the remove all button and nothing happens then I click on any link to go to some other page and if I go back to the shopping_cart.php page the products are all gone.

 

That is weird behaviour which sure requires some attention otherwise you won't be able to sell anything like that.

Can you once create a test product without any options and let's see if that one behaves weird too. 

Share this post


Link to post
Share on other sites

Thanks for trying !!

 

I have 1 article: http://www.fotogaaf.eu/schoolfotograaf-nederland-aanbieding-betaalbaar-prijs-actie-goedkoop/catalog/product_info.php/products_id/147

 

That one behaves the same..........

 

So yes, i think also has probably nothing to do with the Option Types BS addon :( :(

 

 

Cache :

 

Use Cache true

Cache Directory/public/sites/www.fotogaaf.eu/schoolfotograaf-nederland-aanbieding-betaalbaar-prijs-actie-goedkoop/catalog/includes/work/icon_info.gif

Sessions:

 

 

Titel Waarde Actie  Session Directory /public/sites/www.fotogaaf.eu/schoolfotograaf-nederland-aanbieding-betaalbaar-prijs-actie-goedkoop/catalog/includes/work/ icon_info.gif Force Cookie Use True icon_arrow_right.gif Check SSL Session ID False icon_info.gif Check User Agent False icon_info.gif Check IP Address False icon_info.gif Prevent Spider Sessions True icon_info.gif Recreate Session True

Share this post


Link to post
Share on other sites

@@fotogaaf @@ShaGGy

 

So I installed this into a local, brand new, today downloaded Edge osC shop and I created various options and added them to a product. I then added that product to the cart and I can update/remove or even add multiple products and remove them all with that Remove All button. So no issue at all here.

I have no clue what is not working in your guys shops.

I must admit that this is only tested in a local (XAMPP) environment and not on a real server but I think that shouldn't really matter.

 

The only thing I can tell you guys right now is to double check your codes inside the application_top.php and if possible go quickly over the install manual and re-check if the code pieces are still there inside all the other files.

Remove all works fine on mine.

I only have issue with any item that has an attribute attached to it (does not need to have attribute added to it in cart just the item has a attribute assigned in admin)

 

If it had No attributes it will update qty and remove as it should.

If it has a attribute it will update qty but will not remove.

 

I noticed that the remover url contains contains products_id=xx{xx} and does not work but items that have no attributes use url products_id=xx  (it appears it has something to do with the {xx} part?

 

Also tried removing {xx} from basket in database but it still inserted it so it appears to be getting the url from the session?

Edited by ShaGGy

Share this post


Link to post
Share on other sites

@@fotogaaf

 

Roy

 

Forget about the shopping_cart.php file.

What ever is going on in your shop has probably nothing to do with the Option Types BS addon.

Did you change anything on your session or cache settings in your admin?

I tried to add various products from your shop to the cart and I enter a number and click the cart button but it won't add anything to the shopping cart "unless" i click another product link or go away from the product_info.php page. Same goes for the shopping_cart.php page, I click on the remove all button and nothing happens then I click on any link to go to some other page and if I go back to the shopping_cart.php page the products are all gone.

 

That is weird behaviour which sure requires some attention otherwise you won't be able to sell anything like that.

Can you once create a test product without any options and let's see if that one behaves weird too. 

 

I tried his also with same results on @@fotogaaf site

if you add two items then remove one the one disapears but then when you remove the remaining one the first reappears :)

this appears to be installed incorrectly somewhere.

Edited by ShaGGy

Share this post


Link to post
Share on other sites

@@Tsimi

in addition to my post above I have just noticed if I adjust qty up or down it updates and if i set qty to zero it removes it which is working using the product_id only.

 

If I use the remove item on the line it then includes the {XX} after the products_id example =  shopping_cart.php?products_id=29{txt_6}&action=remove_product 

 

I think the remove function in application top needs modifying to allow for the {XX} for item that have attributes?

 

Apart from this the addon appears to be working fine.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×