Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Master Products - MS2


Guest

Recommended Posts

hi!

i just installed Master Products - MS2 on oscommerce-2.2ms2.

i've created couple of testing masters and slaves, but when i hit add to cart it says:

Your Shopping Cart is empty!

 

Could anyone give me a clue how to fix it please!

Link to comment
Share on other sites

I tried fiddling with the $master_sql .= " order by pd.products_name"; (a tip from Matti on page 53) but to no avail. Has something changed since way back on page 53?

 

I tried p.products_model and p.products_price... neither seem to have any effect.

 

And here is a shot of my quantity select problem:

 

quantity.jpg

 

FYI, the Master price and quantity are set to zero. In which file is the tep_draw for the quantity select dropdown? There must be something wrong in there...

Link to comment
Share on other sites

Hi, I've tried searching for an answer to this but apparently no one else has has this problem...oops!  :unsure:

 

Here's what's happening...Even if I select the slave products to be hidden, they still show in the product listing so it's kind of defeating the purpose of the whole thing.

 

Can anyone help? Or at least point me in the right direction as to which file and which code I messed up?

 

Also, when I try to duplicate a product it gives an error: 1136 - Column count doesn't match value count at row 1

This doesn't bother me so much as I can get around it but it's slightly annoying.

 

Thanks!

Yes... you have to change the SQL query to check for master_status. That fix is displayed back in the first twenty pages or so.4

Thank you, I found the answer to my first problem and everything works great on the catalog side...

 

In admin I'm still having the problem where I get an error when I try to duplicate a product and it started just after installing this contrib. I've gone back and checked my file modifications and can't find the reason for this error. Can anyone help? What did I mess up?? :P

 

Here's the error I get when I try to duplicate a product:

 

1136 - Column count doesn't match value count at row 1

Link to comment
Share on other sites

I have researched throughout this forum a little. WHat are the fixes i need to implement so everything works fine?

 

Thanks,

danny

Link to comment
Share on other sites

I read through all 92 pages a few times over the past couple of days and am suffereing some serious PTSD. ;) I am wondering if anyone has figured out how to hack MP to be able to give the Master a "price" that would be equal to the cheapest slave. Something like "From $XXXX". Obviously the problem with this includes keeping the Master "Select Quantity" drop down from appearing, and not allowing the Master to be purchased. Has anyone ever done this?

 

Also, and I think I may have seen this somewhere or I could be imagining things, how do attributes on the master work? I am not talking about each of the slaves having attributes, I mean a general attrib that applies to all the slaves. To use the t-shirt example, say you have 5 slaves in different sizes/colors, and you offer "pre-washing" for an extra 5 bucks. So would you be able to put a "Pre Wash" checkbox on the master, and have it apply to any slaves bought if it is checked?

 

Cheerio,

 

R

Link to comment
Share on other sites

I read through all 92 pages a few times over the past couple of days and am suffereing some serious PTSD. ;) I am wondering if anyone has figured out how to hack MP to be able to give the Master a "price" that would be equal to the cheapest slave. Something like "From $XXXX". Obviously the problem with this includes keeping the Master "Select Quantity" drop down from appearing, and not allowing the Master to be purchased. Has anyone ever done this?

 

Also, and I think I may have seen this somewhere or I could be imagining things, how do attributes on the master work? I am not talking about each of the slaves having attributes, I mean a general attrib that applies to all the slaves. To use the t-shirt example, say you have 5 slaves in different sizes/colors, and you offer "pre-washing" for an extra 5 bucks. So would you be able to put a "Pre Wash" checkbox on the master, and have it apply to any slaves bought if it is checked?

 

Cheerio,

 

R

I was also looking for something similar, that said from lowest-highest.

 

ie.) From $4.99-$10.99

Link to comment
Share on other sites

Hello Matti and other wizards of the MP2 contribution.

 

Is it possible to combine your wisdom with Galen's wisdom - (Galen's Master Products)? :D

 

This way you can create the 1 slave to N masters relationship and make people happy with the Master Products 2.0 :lol:

 

Have a good day.

Anything is possible - have fun! :D

 

Matti

Link to comment
Share on other sites

Hello Matti and other wizards of the MP2 contribution.

 

Is it possible to combine your wisdom with Galen's wisdom - (Galen's Master Products)?  :D

 

This way you can create the 1 slave to N masters relationship and make people happy with the Master Products 2.0  :lol:

 

Have a good day.

I was just looking at this actually. I think it will be a very useful addition.

 

As far as I can see, the following would be needed:

 

- move the master products fields from the products table into separate 1:N lookup table.

- rewrite the code in the admin and front end to use this new table instead

- as products will be able to have multiple masters a new section will be needed to assign products to a master products, rather than it being done in the child screen.

 

any comments or takers?? :)

Edited by langers
Link to comment
Share on other sites

Right. It looks like the best way is going to be to use the admin part of Galen's Master Products and with a slighly adapted version of Johnson's front end (sounds rude, hehe).

 

Typical, I just spend about 3 hours installing the Johnson admin stuff too!! (*pats self on the back for keeping backups*)

Link to comment
Share on other sites

A littlebit offtopic but this topic was always very helpful to me:

 

My products sort order wont work by product_name (from A-Z) in admin/catalog/categories&products.

 

My admin area sort products like this:

 

Office Pro 2003 Win32 Hungarian AE CD

VC#.NET Std 2003 Win32 English AE CD

Outlook 2003 Win32 English CD

VStudio Tools for Off 2003 Win32 English AE CD

Project Pro 2003 Win32 English VUP CD 1 Clt

FrontPage 2003 Win32 Hungarian CD

Excel 2003 Win32 English VUP CD

 

Is there any chance that I caused this by an installation one of the following contributions?

 

Master_products-v1.1.5

EasyPopulate2.74 with masterprod extension (distributed with EP 2.73)

Admin Access With Levels 1.6.0

CategoryBoxEnhancement_v1.1

CustomerUpdateCartReminder_v20a

 

 

Andrew :unsure:

Link to comment
Share on other sites

I have been trying to get Master Products 1.1.5 working on a brand new install of osCommerce 2.2-MS2. The slaves show up but cannot be added to the cart. You end up at shopping_cart.php with the message: Your Shopping Cart is empty! when a quantity is selected and the add to cart button is clicked. I have reinstalled both osCommerce 2.2-MS2 and Master Products 1.1.5 a couple of times. It is possible but unlikely I am missing the same thing each time. Can anyone please help? Thanks!

Link to comment
Share on other sites

Matti, early this year you posted:

Comment this line in catalog/product_reviews_info.php

 

CODE

<?php

}

echo '<p><a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now') . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a></p>';

?>

 

Quick fix only - I'll attend to this properly in the next release.

 

This is regarding the buy_now action button appearing in product_reviews_info.php

Has this been worked out yet to send the customer to the master page if available? This functionality would be very beneficial. (Stating the obvious I know)

 

 

Thanks for your great work!

Link to comment
Share on other sites

This is regarding the buy_now action button appearing in product_reviews_info.php

Has this been worked out yet to send the customer to the master page if available? This functionality would be very beneficial. (Stating the obvious I know)

Ditto that, and a note that I tried to implement a fix from page 56 that was meant to let you click on a slave in your shopping cart and be taken to the master product page, but with no success... the codebase has changed a bit too much I think.

Link to comment
Share on other sites

is it possible to set the sizes in a master product then use the slaves as colors. the buyer picks there size in the master product then puts a quanity # next to each color they want then they click buy now then in the cart it has the size next to each color

Link to comment
Share on other sites

I'm one of those who can gets an empty cart using Master Products "out of the box" and had to use the fix in application_top.pp to get items in my cart.

//Master Products  ENDLICH ?BERHOLT!! Ren? Reineke 06.12.03                     

    // customer adds multiple products from the master_listing page

    case 'add_slave' :   

                            foreach ($HTTP_POST_VARS as $keyA => $valueA) {

                              if (substr($keyA,0,11) == "Qty_ProdId_") {

                              $prodId = substr($keyA,11);

                              if ($valueA <= 0 ) continue;

                              $cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($prodId, $HTTP_POST_VARS['id']))+($valueA), $HTTP_POST_VARS['id']);

                              }

                            }

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

                            break;

    //Master Products EOF   

 

I've been trying to get Master Products with attributes working but I get an empty cart when using the code provided for application _top.php

//Master Products

    // customer adds multiple products from the master_listing page

    case 'add_slave' :

                            while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {

                              if (substr($key,0,11) == "Qty_ProdId_") {

                                $prodId = substr($key,11);

                                $qty = $val;

                                if(isset($HTTP_POST_VARS["id_$prodId"]) && is_array($HTTP_POST_VARS["id_$prodId"])) {

                                  // We have attributes

                                  $cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($prodId,$HTTP_POST_VARS["id_$prodId"]))+$qty, $HTTP_POST_VARS["id_$prodId"]);

                                } else {

                                  // No attributes

                                  $cart->add_cart($prodId, $cart->get_quantity($prodId)+$qty);

                                }

                              }

                            }

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

                            break;

    //Master Products EOF

 

Has anyone merged the fix with the attributes successfully who would post the code that corrects this issue?

 

Millie

Link to comment
Share on other sites

While installing Master Products 1.1.5 with and without attributes I ran into a few things that more people have had trouble with. The "Your Cart is Empty" bug is solved easily by adding "reset($HTTP_POST_VARS); " to the code in: catalog/includes/application_top.php around line 370

 

      //Master Products                         
     // customer adds multiple products from the master_listing page

     case 'add_slave' :    

                             while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {

 

replace with:

 

      //Master Products                         
     // customer adds multiple products from the master_listing page

     case 'add_slave' :    
                             reset($HTTP_POST_VARS);
                             while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {

 

As an aside: in subcontribution "Master Product Slave Attributes", MP_Attributes_Install.txt:

 

you should replace:

 

$lc_align = 'align="center"';

 

with:

 

$lc_align = 'center';

Link to comment
Share on other sites

I am sorry if this has been answered but I have read a lot of this thread and I cant find it.

 

I have the masters and slaves working 100% but I dont want the masters to be listed in the shop, is this possible, I just want people to be able to get slaves.

 

I hope I explained it right

 

regards

Link to comment
Share on other sites

I am sorry if this has been answered but I have read a lot of this thread and I cant find it.

 

I have the masters and slaves working 100% but I dont want the masters to be listed in the shop, is this possible, I just want people to be able to get slaves.

 

I hope I explained it right

 

regards

change in product listing sql master 0

Edited by RobinsonDixon
Link to comment
Share on other sites

Can affect Master Product contibution the way how products are sorted in admin/catalog/categories&products?

 

If I remember correctly after a base install of OsC the sort order feature will order by product_name?

 

I'd like to have back the order by product_name way without loosing the advantages of Master Products.

 

Here's my admin/categories.php code:

 

<?php

/*

  $Id: categories.php,v 1.146 2003/07/11 14:40:27 hpdl Exp $

 

  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com

 

  Copyright © 2003 osCommerce

 

  Released under the GNU General Public License

*/

 

  require('includes/application_top.php');

 

  require(DIR_WS_CLASSES . 'currencies.php');

  $currencies = new currencies();

 

  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

 

  if (tep_not_null($action)) {

    switch ($action) {

      case 'setflag':

        if ( ($HTTP_GET_VARS['flag'] == '0') || ($HTTP_GET_VARS['flag'] == '1') ) {

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

            tep_set_product_status($HTTP_GET_VARS['pID'], $HTTP_GET_VARS['flag']);

          }

 

          if (USE_CACHE == 'true') {

            tep_reset_cache_block('categories');

            tep_reset_cache_block('also_purchased');

          }

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $HTTP_GET_VARS['cPath'] . '&pID=' . $HTTP_GET_VARS['pID']));

        break;

      case 'insert_category':

      case 'update_category':

        if (isset($HTTP_POST_VARS['categories_id'])) $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

        $sort_order = tep_db_prepare_input($HTTP_POST_VARS['sort_order']);

 

        $sql_data_array = array('sort_order' => $sort_order);

 

        if ($action == 'insert_category') {

          $insert_sql_data = array('parent_id' => $current_category_id,

                                  'date_added' => 'now()');

 

          $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

          tep_db_perform(TABLE_CATEGORIES, $sql_data_array);

 

          $categories_id = tep_db_insert_id();

        } elseif ($action == 'update_category') {

          $update_sql_data = array('last_modified' => 'now()');

 

          $sql_data_array = array_merge($sql_data_array, $update_sql_data);

 

          tep_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', "categories_id = '" . (int)$categories_id . "'");

        }

 

        $languages = tep_get_languages();

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

          $categories_name_array = $HTTP_POST_VARS['categories_name'];

 

          $language_id = $languages[$i]['id'];

 

          $sql_data_array = array('categories_name' => tep_db_prepare_input($categories_name_array[$language_id]));

 

          if ($action == 'insert_category') {

            $insert_sql_data = array('categories_id' => $categories_id,

                                    'language_id' => $languages[$i]['id']);

 

            $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

            tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array);

          } elseif ($action == 'update_category') {

            tep_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array, 'update', "categories_id = '" . (int)$categories_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");

          }

        }

 

        if ($categories_image = new upload('categories_image', DIR_FS_CATALOG_IMAGES)) {

          tep_db_query("update " . TABLE_CATEGORIES . " set categories_image = '" . tep_db_input($categories_image->filename) . "' where categories_id = '" . (int)$categories_id . "'");

        }

 

        if (USE_CACHE == 'true') {

          tep_reset_cache_block('categories');

          tep_reset_cache_block('also_purchased');

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories_id));

        break;

      case 'delete_category_confirm':

        if (isset($HTTP_POST_VARS['categories_id'])) {

          $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

 

          $categories = tep_get_category_tree($categories_id, '', '0', '', true);

          $products = array();

          $products_delete = array();

 

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

            $product_ids_query = tep_db_query("select products_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$categories[$i]['id'] . "'");

 

            while ($product_ids = tep_db_fetch_array($product_ids_query)) {

              $products[$product_ids['products_id']]['categories'][] = $categories[$i]['id'];

            }

          }

 

          reset($products);

          while (list($key, $value) = each($products)) {

            $category_ids = '';

 

            for ($i=0, $n=sizeof($value['categories']); $i<$n; $i++) {

              $category_ids .= "'" . (int)$value['categories'][$i] . "', ";

            }

            $category_ids = substr($category_ids, 0, -2);

 

            $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$key . "' and categories_id not in (" . $category_ids . ")");

            $check = tep_db_fetch_array($check_query);

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

              $products_delete[$key] = $key;

            }

          }

 

// removing categories can be a lengthy process

          tep_set_time_limit(0);

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

            tep_remove_category($categories[$i]['id']);

          }

 

          reset($products_delete);

          while (list($key) = each($products_delete)) {

            tep_remove_product($key);

          }

        }

 

        if (USE_CACHE == 'true') {

          tep_reset_cache_block('categories');

          tep_reset_cache_block('also_purchased');

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath));

        break;

      case 'delete_product_confirm':

        if (isset($HTTP_POST_VARS['products_id']) && isset($HTTP_POST_VARS['product_categories']) && is_array($HTTP_POST_VARS['product_categories'])) {

          $product_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);

          $product_categories = $HTTP_POST_VARS['product_categories'];

 

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

            tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "' and categories_id = '" . (int)$product_categories[$i] . "'");

          }

 

          $product_categories_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "'");

          $product_categories = tep_db_fetch_array($product_categories_query);

 

          if ($product_categories['total'] == '0') {

            tep_remove_product($product_id);

          }

        }

 

        if (USE_CACHE == 'true') {

          tep_reset_cache_block('categories');

          tep_reset_cache_block('also_purchased');

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath));

        break;

      case 'move_category_confirm':

        if (isset($HTTP_POST_VARS['categories_id']) && ($HTTP_POST_VARS['categories_id'] != $HTTP_POST_VARS['move_to_category_id'])) {

          $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

          $new_parent_id = tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

 

          $path = explode('_', tep_get_generated_category_path_ids($new_parent_id));

 

          if (in_array($categories_id, $path)) {

            $messageStack->add_session(ERROR_CANNOT_MOVE_CATEGORY_TO_PARENT, 'error');

 

            tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories_id));

          } else {

            tep_db_query("update " . TABLE_CATEGORIES . " set parent_id = '" . (int)$new_parent_id . "', last_modified = now() where categories_id = '" . (int)$categories_id . "'");

 

            if (USE_CACHE == 'true') {

              tep_reset_cache_block('categories');

              tep_reset_cache_block('also_purchased');

            }

 

            tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $new_parent_id . '&cID=' . $categories_id));

          }

        }

 

        break;

      case 'move_product_confirm':

        $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);

        $new_parent_id = tep_db_prepare_input($HTTP_POST_VARS['move_to_category_id']);

 

        $duplicate_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$new_parent_id . "'");

        $duplicate_check = tep_db_fetch_array($duplicate_check_query);

        if ($duplicate_check['total'] < 1) tep_db_query("update " . TABLE_PRODUCTS_TO_CATEGORIES . " set categories_id = '" . (int)$new_parent_id . "' where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$current_category_id . "'");

 

        if (USE_CACHE == 'true') {

          tep_reset_cache_block('categories');

          tep_reset_cache_block('also_purchased');

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $new_parent_id . '&pID=' . $products_id));

        break;

      case 'insert_product':

      case 'update_product':

        if (isset($HTTP_POST_VARS['edit_x']) || isset($HTTP_POST_VARS['edit_y'])) {

          $action = 'new_product';

        } else {

          if (isset($HTTP_GET_VARS['pID'])) $products_id = tep_db_prepare_input($HTTP_GET_VARS['pID']);

          $products_date_available = tep_db_prepare_input($HTTP_POST_VARS['products_date_available']);

 

          $products_date_available = (date('Y-m-d') < $products_date_available) ? $products_date_available : 'null';

 

          $sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),

                                  'products_model' => tep_db_prepare_input($HTTP_POST_VARS['products_model']),

                                  'products_price' => tep_db_prepare_input($HTTP_POST_VARS['products_price']),

                                  'products_date_available' => $products_date_available,

                                  'products_weight' => tep_db_prepare_input($HTTP_POST_VARS['products_weight']),

                                  'products_status' => tep_db_prepare_input($HTTP_POST_VARS['products_status']),

// Master Products

                                  'products_listing_status' => tep_db_prepare_input($HTTP_POST_VARS['products_listing_status']),

                                  'products_master_status' => tep_db_prepare_input($HTTP_POST_VARS['products_master_status']),

                                  'products_tax_class_id' => tep_db_prepare_input($HTTP_POST_VARS['products_tax_class_id']),

                                  'manufacturers_id' => tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']),

                                  'products_master' => tep_db_prepare_input($HTTP_POST_VARS['products_master']));

// Master Products EOF

 

          if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none')) {

            $sql_data_array['products_image'] = tep_db_prepare_input($HTTP_POST_VARS['products_image']);

          }

 

          if ($action == 'insert_product') {

            $insert_sql_data = array('products_date_added' => 'now()');

 

            $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

            tep_db_perform(TABLE_PRODUCTS, $sql_data_array);

            $products_id = tep_db_insert_id();

 

            tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$current_category_id . "')");

          } elseif ($action == 'update_product') {

            $update_sql_data = array('products_last_modified' => 'now()');

 

            $sql_data_array = array_merge($sql_data_array, $update_sql_data);

 

            tep_db_perform(TABLE_PRODUCTS, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "'");

          }

 

          $languages = tep_get_languages();

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

            $language_id = $languages[$i]['id'];

 

            $sql_data_array = array('products_name' => tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]),

                                    'products_description' => tep_db_prepare_input($HTTP_POST_VARS['products_description'][$language_id]),

                                    'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]));

 

            if ($action == 'insert_product') {

              $insert_sql_data = array('products_id' => $products_id,

                                      'language_id' => $language_id);

 

              $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

              tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array);

            } elseif ($action == 'update_product') {

              tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "' and language_id = '" . (int)$language_id . "'");

            }

          }

 

          if (USE_CACHE == 'true') {

            tep_reset_cache_block('categories');

            tep_reset_cache_block('also_purchased');

          }

 

          tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products_id));

        }

        break;

//Master Products       

      case 'insert_master':

      case 'update_master':

 

        if (isset($HTTP_POST_VARS['edit_x']) || isset($HTTP_POST_VARS['edit_y'])) {

          $action = 'new_master';

        } else {

          if (isset($HTTP_GET_VARS['pID'])) $products_id = tep_db_prepare_input($HTTP_GET_VARS['pID']);

          $products_date_available = tep_db_prepare_input($HTTP_POST_VARS['products_date_available']);

 

          $products_date_available = (date('Y-m-d') < $products_date_available) ? $products_date_available : 'null';

          $products_master_status = '1';

 

          $sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),

                                  'products_model' => tep_db_prepare_input($HTTP_POST_VARS['products_model']),

                                  'products_price' => tep_db_prepare_input($HTTP_POST_VARS['products_price']),

                                  'products_date_available' => $products_date_available,

                                  'products_status' => tep_db_prepare_input($HTTP_POST_VARS['products_status']),

                                  'products_master_status' => tep_db_prepare_input($HTTP_POST_VARS['products_master_status']),

                                  'products_tax_class_id' => tep_db_prepare_input($HTTP_POST_VARS['products_tax_class_id']),

                           

                                  'manufacturers_id' => tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']));

                                 

 

          if (isset($HTTP_POST_VARS['products_image']) && tep_not_null($HTTP_POST_VARS['products_image']) && ($HTTP_POST_VARS['products_image'] != 'none')) {

            $sql_data_array['products_image'] = tep_db_prepare_input($HTTP_POST_VARS['products_image']);

          }

 

          if ($action == 'insert_master') {

            $insert_sql_data = array('products_date_added' => 'now()');

 

            $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

            tep_db_perform(TABLE_PRODUCTS, $sql_data_array);

            $products_id = tep_db_insert_id();

 

            tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$current_category_id . "')");

          } elseif ($action == 'update_master') {

            $update_sql_data = array('products_last_modified' => 'now()');

 

            $sql_data_array = array_merge($sql_data_array, $update_sql_data);

 

            tep_db_perform(TABLE_PRODUCTS, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "'");

          }

 

          $languages = tep_get_languages();

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

            $language_id = $languages[$i]['id'];

 

            $sql_data_array = array('products_name' => tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]),

                                    'products_description' => tep_db_prepare_input($HTTP_POST_VARS['products_description'][$language_id]),

                                    'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]));

 

            if ($action == 'insert_master') {

              $insert_sql_data = array('products_id' => $products_id,

                                      'language_id' => $language_id);

 

              $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

 

              tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array);

            } elseif ($action == 'update_master') {

              tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array, 'update', "products_id = '" . (int)$products_id . "' and language_id = '" . (int)$language_id . "'");

            }

          }

 

          if (USE_CACHE == 'true') {

            tep_reset_cache_block('categories');

            tep_reset_cache_block('also_purchased');

          }

 

          tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products_id));

        }

        break;

// Master Products EOF

      case 'copy_to_confirm':

        if (isset($HTTP_POST_VARS['products_id']) && isset($HTTP_POST_VARS['categories_id'])) {

          $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']);

          $categories_id = tep_db_prepare_input($HTTP_POST_VARS['categories_id']);

 

          if ($HTTP_POST_VARS['copy_as'] == 'link') {

            if ($categories_id != $current_category_id) {

              $check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$categories_id . "'");

              $check = tep_db_fetch_array($check_query);

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

                tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$categories_id . "')");

              }

            } else {

              $messageStack->add_session(ERROR_CANNOT_LINK_TO_SAME_CATEGORY, 'error');

            }

          } elseif ($HTTP_POST_VARS['copy_as'] == 'duplicate') {

// Master Products           

            $product_query = tep_db_query("select products_quantity, products_model, products_image, products_price, products_date_available, products_weight, products_tax_class_id, manufacturers_id, products_master, products_master_status from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");

            $product = tep_db_fetch_array($product_query);

            tep_db_query("insert into " . TABLE_PRODUCTS . " (products_quantity, products_model,products_image, products_price, products_date_added, products_date_available, products_weight, products_status, products_tax_class_id, manufacturers_id, products_master, products_master_status) values ('" . tep_db_input($product['products_quantity']) . "', '" . tep_db_input($product['products_model']) . "', '" . tep_db_input($product['products_image']) . "', '" . tep_db_input($product['products_price']) . "',  now(), '" . tep_db_input($product['products_date_available']) . "', '" . tep_db_input($product['products_weight']) . "', '0', '" . (int)$product['products_tax_class_id'] . "', '" . (int)$product['manufacturers_id']. "', '" . $product['products_master']. "', '" .(int)$product['products_master_status'] . "')");

            $dup_products_id = tep_db_insert_id();

// Master Products EOF

            $description_query = tep_db_query("select language_id, products_name, products_description, products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'");

            while ($description = tep_db_fetch_array($description_query)) {

              tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0')");

            }

 

            tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$dup_products_id . "', '" . (int)$categories_id . "')");

            $products_id = $dup_products_id;

          }

 

          if (USE_CACHE == 'true') {

            tep_reset_cache_block('categories');

            tep_reset_cache_block('also_purchased');

          }

        }

 

        tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $categories_id . '&pID=' . $products_id));

        break;

      case 'new_product_preview':

// copy image only if modified

        $products_image = new upload('products_image');

        $products_image->set_destination(DIR_FS_CATALOG_IMAGES);

        if ($products_image->parse() && $products_image->save()) {

          $products_image_name = $products_image->filename;

        } else {

          $products_image_name = (isset($HTTP_POST_VARS['products_previous_image']) ? $HTTP_POST_VARS['products_previous_image'] : '');

        }

        break;

      case 'new_master_preview':

// copy image only if modified

        $products_image = new upload('products_image');

        $products_image->set_destination(DIR_FS_CATALOG_IMAGES);

        if ($products_image->parse() && $products_image->save()) {

          $products_image_name = $products_image->filename;

        } else {

          $products_image_name = (isset($HTTP_POST_VARS['products_previous_image']) ? $HTTP_POST_VARS['products_previous_image'] : '');

        }

        break;

    }

  }

 

// check if the catalog image directory exists

  if (is_dir(DIR_FS_CATALOG_IMAGES)) {

    if (!is_writeable(DIR_FS_CATALOG_IMAGES)) $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE, 'error');

  } else {

    $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_DOES_NOT_EXIST, 'error');

  }

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">

<script language="javascript" src="includes/general.js"></script>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">

<div id="spiffycalendar" class="text"></div>

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->

 

<!-- body //-->

<table border="0" width="100%" cellspacing="2" cellpadding="2">

  <tr>

    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

    </table></td>

<!-- body_text //-->

    <td width="100%" valign="top">

<?php

  if ($action == 'new_product') {

    $parameters = array('products_name' => '',

                      'products_description' => '',

                      'products_url' => '',

                      'products_id' => '',

                      'products_quantity' => '',

                      'products_model' => '',

                      'products_image' => '',

                      'products_price' => '',

                      'products_weight' => '',

                      'products_date_added' => '',

                      'products_last_modified' => '',

                      'products_date_available' => '',

                      'products_status' => '',

//Master Products

                      'products_listing_status' => '',

                      'products_tax_class_id' => '',

                      'manufacturers_id' => '');

 

    $pInfo = new objectInfo($parameters);

 

    if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {

      $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_listing_status, p.products_price, p.products_tax_class_id, p.manufacturers_id, p.products_master, products_master_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");

//Master Products EOF

      $product = tep_db_fetch_array($product_query);

      $pInfo->objectInfo($product);

    } elseif (tep_not_null($HTTP_POST_VARS)) {

      $pInfo->objectInfo($HTTP_POST_VARS);

      $products_name = $HTTP_POST_VARS['products_name'];

      $products_description = $HTTP_POST_VARS['products_description'];

      $products_url = $HTTP_POST_VARS['products_url'];

    }

 

    $manufacturers_array = array(array('id' => '', 'text' => TEXT_NONE));

    $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");

    while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {

      $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'],

                                    'text' => $manufacturers['manufacturers_name']);

    }

 

    $tax_class_array = array(array('id' => '0', 'text' => TEXT_NONE));

    $tax_class_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title");

    while ($tax_class = tep_db_fetch_array($tax_class_query)) {

      $tax_class_array[] = array('id' => $tax_class['tax_class_id'],

                                'text' => $tax_class['tax_class_title']);

    }

 

// Master Products

    $products_master_array = array(array('id' => ' ', 'text' => TEXT_MASTER_SELECT));

    $products_master_array[] = array('id' => '', 'text' => TEXT_NONE);

 

    $products_master_query = tep_db_query("select p.products_id, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_master_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name");

     

    while ($products_master = tep_db_fetch_array($products_master_query)) {

    $products_master_array[] = array('id' => $products_master['products_id'],

                                  'text' => $products_master['products_name']);

    }

// Master Products EOF

 

    $languages = tep_get_languages();

 

    if (!isset($pInfo->products_status)) $pInfo->products_status = '1';

    switch ($pInfo->products_status) {

      case '0': $in_status = false; $out_status = true; break;

      case '1':

      default: $in_status = true; $out_status = false;

    }

//Master Products   

    if (!isset($pInfo->products_listing_status)) $pInfo->products_listing_status = '1';

    switch ($pInfo->products_listing_status) {

      case '0': $in_listing_status = false; $out_listing_status = true; break;

      case '1':

      default: $in_listing_status = true; $out_listing_status = false;

    }

   

    if (!isset($pInfo->products_master_status)) $pInfo->products_master_status = '1';

    switch ($pInfo->products_master_status) {

      case '0': $in_master_status = false; $out_master_status = true; break;

      case '1':

      default: $in_master_status = true; $out_master_status = false;

    }   

//Master Products EOF

?>

<link rel="stylesheet" type="text/css" href="includes/javascript/spiffyCal/spiffyCal_v2_1.css">

<script language="JavaScript" src="includes/javascript/spiffyCal/spiffyCal_v2_1.js"></script>

<script language="javascript"><!--

  var dateAvailable = new ctlSpiffyCalendarBox("dateAvailable", "new_product", "products_date_available","btnDate1","<?php echo $pInfo->products_date_available; ?>",scBTNMODE_CUSTOMBLUE);

//--></script>

<script language="javascript"><!--

var tax_rates = new Array();

<?php

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

      if ($tax_class_array[$i]['id'] > 0) {

        echo 'tax_rates["' . $tax_class_array[$i]['id'] . '"] = ' . tep_get_tax_rate_value($tax_class_array[$i]['id']) . ';' . "\n";

      }

    }

?>

 

function doRound(x, places) {

  return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);

}

 

function getTaxRate() {

  var selected_value = document.forms["new_product"].products_tax_class_id.selectedIndex;

  var parameterVal = document.forms["new_product"].products_tax_class_id[selected_value].value;

 

  if ( (parameterVal > 0) && (tax_rates[parameterVal] > 0) ) {

    return tax_rates[parameterVal];

  } else {

    return 0;

  }

}

 

function updateGross() {

  var taxRate = getTaxRate();

  var grossValue = document.forms["new_product"].products_price.value;

 

  if (taxRate > 0) {

    grossValue = grossValue * ((taxRate / 100) + 1);

  }

 

  document.forms["new_product"].products_price_gross.value = doRound(grossValue, 4);

}

 

function updateNet() {

  var taxRate = getTaxRate();

  var netValue = document.forms["new_product"].products_price_gross.value;

 

  if (taxRate > 0) {

    netValue = netValue / ((taxRate / 100) + 1);

  }

 

  document.forms["new_product"].products_price.value = doRound(netValue, 4);

}

 

// Master Products

function updateProductsMaster() {

  var selected_value = document.forms["new_product"].products_master_select.selectedIndex;

  var masValue = document.forms["new_product"].products_master_select[selected_value].value;

  document.forms["new_product"].products_master.value = masValue;

  document.forms["new_product"].products_master_select.selectedIndex = 0;

}

// Master Products EOF

 

//--></script>

    <?php echo tep_draw_form('new_product', FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '') . '&action=new_product_preview', 'post', 'enctype="multipart/form-data"'); ?>

    <table border="0" width="100%" cellspacing="0" cellpadding="2">

      <tr>

        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

          <tr>

            <td class="pageHeading"><?php echo sprintf(TEXT_NEW_PRODUCT, tep_output_generated_category_path($current_category_id)); ?></td>

            <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

          </tr>

        </table></td>

      </tr>

      <tr>

        <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

      </tr>

      <tr>

        <td><table border="0" cellspacing="0" cellpadding="2">

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_STATUS; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_radio_field('products_status', '1', $in_status) . ' ' . TEXT_PRODUCT_AVAILABLE . ' ' . tep_draw_radio_field('products_status', '0', $out_status) . ' ' . TEXT_PRODUCT_NOT_AVAILABLE; ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_DATE_AVAILABLE; ?><br><small>(YYYY-MM-DD)</small></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' '; ?><script language="javascript">dateAvailable.writeControl(); dateAvailable.dateFormat="yyyy-MM-dd";</script></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_MANUFACTURER; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, $pInfo->manufacturers_id); ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

<?php

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

?>

          <tr>

            <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_NAME; ?></td>

            <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('products_name[' . $languages[$i]['id'] . ']', (isset($products_name[$languages[$i]['id']]) ? $products_name[$languages[$i]['id']] : tep_get_products_name($pInfo->products_id, $languages[$i]['id']))); ?></td>

          </tr>

<?php

    }

?>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr bgcolor="#ebebff">

            <td class="main"><?php echo TEXT_PRODUCTS_TAX_CLASS; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('products_tax_class_id', $tax_class_array, $pInfo->products_tax_class_id, 'onchange="updateGross()"'); ?></td>

          </tr>

          <tr bgcolor="#ebebff">

            <td class="main"><?php echo TEXT_PRODUCTS_PRICE_NET; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_price', $pInfo->products_price, 'onKeyUp="updateGross()"'); ?></td>

          </tr>

          <tr bgcolor="#ebebff">

            <td class="main"><?php echo TEXT_PRODUCTS_PRICE_GROSS; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_price_gross', $pInfo->products_price, 'OnKeyUp="updateNet()"'); ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

<script language="javascript"><!--

updateGross();

//--></script>

<?php

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

?>

          <tr>

            <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_DESCRIPTION; ?></td>

            <td><table border="0" cellspacing="0" cellpadding="0">

              <tr>

                <td class="main" valign="top"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']); ?> </td>

                <td class="main"><?php echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_description[$languages[$i]['id']]) ? $products_description[$languages[$i]['id']] : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></td>

              </tr>

            </table></td>

          </tr>

<?php

    }

?>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_QUANTITY; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_quantity', $pInfo->products_quantity); ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_MODEL; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_model', $pInfo->products_model); ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

          <tr>

            <td class="main"><?php echo TEXT_PRODUCTS_IMAGE; ?></td>

            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_file_field('products_image') . '<br>' . tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . $pInfo->products_image . tep_draw_hidden_field('products_previous_image', $pInfo->products_image); ?></td>

          </tr>

          <tr>

            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

          </tr>

<?php

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

?>

          <tr>

            <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_URL . '<br><small>' . TEXT_PRODUCTS_URL_WITHOUT_HTTP . '</small>'; ?></td>

            <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('products_url[' . $lan

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...