Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

dewarsco2

Members
  • Posts

    44
  • Joined

  • Last visited

Posts posted by dewarsco2

  1. Jack installed new version to get rid of this warning. But even the new version error is showing up. using V 234 php 7.2

    warning. PHP Warning:  Use of undefined constant ENTRY_ENQUIRY_TEXT - assumed 'ENTRY_ENQUIRY_TEXT' (this will throw an Error in a future version of PHP) catalog/contact_us.php on line 117

    Here is line 117 in contact us

     echo tep_draw_textarea_field('enquiry', 'soft', 50, 15, NULL, 'required aria-required="true" id="inputEnquiry" placeholder="' . ENTRY_ENQUIRY_TEXT . '"');

    attached is the contact_us.php file

    Thanks Nick

     

    contact_us.php

  2. Just check error log and in 1 hour I got 110 error reports. Cleared codes earlier because in just one day the file was 1.54 MB. I had to delete the file because it was to large to open in cPanel

    92% of the errors were from priceformatters. and rest in paypal express.php.

    If I don't clear the errors the site will bog down.  

  3. Hi jack getting a warning with priceformatter.

    [25-Apr-2020 09:55:20 America/New_York] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /includes/classes/PriceFormatterStore.php on line 60
    [25-Apr-2020 09:55:20 America/New_York] PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /includes/classes/PriceFormatter.php on line 117

    Attached is the PriceFormatter.php file

    Any fix you can help with.

    Thanks

    PriceFormatter.php

  4. Jack using Pheonix 1.0.5.4 and trying to install. FIND (around line 787):

    <?php
      } elseif ($action == 'new_product_preview') {
        $product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id, pd.products_seo_title, p.products_gtin, pd.products_seo_description, pd.products_seo_keywords from products p, products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");

    REPLACE WITH:
     
    <?php
      } elseif ($action == 'new_product_preview') {
        /*** Begin Header Tags SEO ***/ 
        $product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id, pd.products_seo_title, p.products_gtin, pd.products_seo_description, pd.products_seo_keywords, " . GetHTSFieldListWithIDs() . " from products p, products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");
        /*** End Header Tags SEO ***/ 

    problem is  that I already replaced that area with Quantity Price breaks

    <?php
      } elseif ($action == 'new_product_preview') {
        // BOF QUANTITY Price Breaks
        $product_query = tep_db_query("select p.*, pd.*, ptdc.discount_categories_id, dc.discount_categories_name from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id left join discount_categories dc using(discount_categories_id), products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");

    How can I combine them to work.

    Thanks

     

     

     

  5. Seems in version 1.0.5..2  there is some code changes and found this will work for admin/categories.php code below

    <?php
    /*
      $Id$

      osCommerce, Open Source E-Commerce Solutions
      http://www.oscommerce.com

      Copyright (c) 2019 osCommerce

      Released under the GNU General Public License
    */

      require 'includes/application_top.php';
     require('includes/classes/currencies.php');
    // BOF QUANTITY Price Breaks
    // include the price formatter for the price breaks contribution
      require('includes/classes/PriceFormatter.php');
      $pf = new PriceFormatter;
    // EOF QUANTITY Price Breaks
      $currencies = new currencies();

      // calculate category path
      $cPath = $_GET['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;
      }

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

      $OSCOM_Hooks->call('categories', 'productPreAction');

      if (tep_not_null($action)) {
        switch ($action) {
          case 'setflag':
            if ( ($_GET['flag'] == '0') || ($_GET['flag'] == '1') ) {
              if (isset($_GET['pID'])) {
                tep_set_product_status($_GET['pID'], $_GET['flag']);
              }
            }

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $_GET['cPath'] . '&pID=' . $_GET['pID']));
            break;
          case 'insert_category':
          case 'update_category':
            if (isset($_POST['categories_id'])) $categories_id = tep_db_prepare_input($_POST['categories_id']);
            $sort_order = tep_db_prepare_input($_POST['sort_order']);

            $sql_data_array = array('sort_order' => (int)$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('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('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 = $_POST['categories_name'];
              $categories_description_array = $_POST['categories_description'];
              $categories_seo_description_array = $_POST['categories_seo_description'];
              $categories_seo_keywords_array = $_POST['categories_seo_keywords'];
              $categories_seo_title_array = $_POST['categories_seo_title'];

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

              $sql_data_array = array('categories_name' => tep_db_prepare_input($categories_name_array[$language_id]));
              $sql_data_array['categories_description'] = tep_db_prepare_input($categories_description_array[$language_id]);
              $sql_data_array['categories_seo_description'] = tep_db_prepare_input($categories_seo_description_array[$language_id]);
              $sql_data_array['categories_seo_keywords'] = tep_db_prepare_input($categories_seo_keywords_array[$language_id]);
              $sql_data_array['categories_seo_title'] = tep_db_prepare_input($categories_seo_title_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('categories_description', $sql_data_array);
              } elseif ($action == 'update_category') {
                tep_db_perform('categories_description', $sql_data_array, 'update', "categories_id = '" . (int)$categories_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
              }
            }

            $categories_image = new upload('categories_image');
            $categories_image->set_destination(DIR_FS_CATALOG_IMAGES);

            if ($categories_image->parse() && $categories_image->save()) {
              tep_db_query("update categories set categories_image = '" . tep_db_input($categories_image->filename) . "' where categories_id = '" . (int)$categories_id . "'");
            }

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $categories_id));
            break;
          case 'delete_category_confirm':
            if (isset($_POST['categories_id'])) {
              $categories_id = tep_db_prepare_input($_POST['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 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'];
                }
              }

              foreach ($products as $key => $value) {
                $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 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']);
              }

              foreach ($products_delete as $key) {
                tep_remove_product($key);
              }
            }

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath));
            break;
          case 'delete_product_confirm':
            if (isset($_POST['products_id']) && isset($_POST['product_categories']) && is_array($_POST['product_categories'])) {
              $product_id = tep_db_prepare_input($_POST['products_id']);
              $product_categories = $_POST['product_categories'];

              for ($i=0, $n=sizeof($product_categories); $i<$n; $i++) {
                tep_db_query("delete from products_to_categories where products_id = '" . (int)$product_id . "' and categories_id = '" . (int)$product_categories[$i] . "'");
              }
          
              // BOF QUANTITY Price Breaks
              tep_db_query("delete from products_price_break where products_id = '" . (int)$product_id . "'");
              // EOF QUANTITY Price Breaks

              $product_categories_query = tep_db_query("select count(*) as total from 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);
              }
            }

            $OSCOM_Hooks->call('categories', 'productActionDelete');

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath));
            break;
          case 'move_category_confirm':
            if (isset($_POST['categories_id']) && ($_POST['categories_id'] != $_POST['move_to_category_id'])) {
              $categories_id = tep_db_prepare_input($_POST['categories_id']);
              $new_parent_id = tep_db_prepare_input($_POST['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('categories.php', 'cPath=' . $cPath . '&cID=' . $categories_id));
              } else {
                tep_db_query("update categories set parent_id = '" . (int)$new_parent_id . "', last_modified = now() where categories_id = '" . (int)$categories_id . "'");

                tep_redirect(tep_href_link('categories.php', 'cPath=' . $new_parent_id . '&cID=' . $categories_id));
              }
            }

            break;
          case 'move_product_confirm':
            $products_id = tep_db_prepare_input($_POST['products_id']);
            $new_parent_id = tep_db_prepare_input($_POST['move_to_category_id']);

            $duplicate_check_query = tep_db_query("select count(*) as total from 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 products_to_categories set categories_id = '" . (int)$new_parent_id . "' where products_id = '" . (int)$products_id . "' and categories_id = '" . (int)$current_category_id . "'");

            $OSCOM_Hooks->call('categories', 'productActionMove');

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $new_parent_id . '&pID=' . $products_id));
            break;
          case 'insert_product':
          case 'update_product':
            if (isset($_GET['pID'])) $products_id = tep_db_prepare_input($_GET['pID']);
            $products_date_available = tep_db_prepare_input($_POST['products_date_available']);

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

            $sql_data_array = array('products_quantity' => (int)tep_db_prepare_input($_POST['products_quantity']),
                                    'products_model' => tep_db_prepare_input($_POST['products_model']),
                                    'products_price' => tep_db_prepare_input($_POST['products_price']),
                                    // BOF QUANTITY Price Breaks
                                      'products_qty_blocks' => (($i=tep_db_prepare_input($_POST['products_qty_blocks'])) < 1) ? 1 : $i,
                                    // EOF QUANTITY Price Breaks
                                    'products_date_available' => $products_date_available,
                                    'products_weight' => (float)tep_db_prepare_input($_POST['products_weight']),
                                    'products_status' => tep_db_prepare_input($_POST['products_status']),
                                    'products_tax_class_id' => tep_db_prepare_input($_POST['products_tax_class_id']),
                                    'manufacturers_id' => (int)tep_db_prepare_input($_POST['manufacturers_id']));
            $sql_data_array['products_gtin'] = (tep_not_null($_POST['products_gtin'])) ? str_pad(tep_db_prepare_input($_POST['products_gtin']), 14, '0', STR_PAD_LEFT) : 'null';

            $products_image = new upload('products_image');
            $products_image->set_destination(DIR_FS_CATALOG_IMAGES);
            if ($products_image->parse() && $products_image->save()) {
              $sql_data_array['products_image'] = tep_db_prepare_input($products_image->filename);
            }

            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('products', $sql_data_array);
              $products_id = tep_db_insert_id();

              tep_db_query("insert into 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('products', $sql_data_array, 'update', "products_id = '" . (int)$products_id . "'");
            }

            // BOF QUANTITY Price Breaks
              tep_db_query("delete from products_price_break where products_id = '" . (int)$products_id . "'");
              for ($count = 0; $count <= (PRICE_BREAK_NOF_LEVELS - 1); $count++) {
                if(isset($_POST['products_price' . $count]) && tep_not_null($_POST['products_price' . $count]) &&
                   isset($_POST['products_qty' . $count]) && tep_not_null($_POST['products_qty' . $count]) &&
                   !(isset($_POST['products_delete' . $count]) && tep_not_null($_POST['products_delete' . $count]))) {
                  $sql_price_break_data_array = array(
                    'products_id' => (int)$products_id,
                    'products_price' => tep_db_prepare_input($_POST['products_price' . $count]),
                    'products_qty' => tep_db_prepare_input($_POST['products_qty' . $count]));
                  tep_db_perform('products_price_break', $sql_price_break_data_array);
                }
              }
              $current_discount_category = (int)$_POST['current_discount_cat_id'];
              $new_discount_category = (int)$_POST['discount_categories_id'];
              $discount_category_result = qpbpp_insert_update_discount_cats($products_id, $current_discount_category, $new_discount_category);
              if ($discount_category_result == false) {
                $messageStack->add_session(ERROR_UPDATE_INSERT_DISCOUNT_CATEGORY, 'error');
              }
            // EOF QUANTITY Price Breaks          
            $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($_POST['products_name'][$language_id]),
                                      'products_description' => tep_db_prepare_input($_POST['products_description'][$language_id]),
                                      'products_url' => tep_db_prepare_input($_POST['products_url'][$language_id]));
              $sql_data_array['products_seo_description'] = tep_db_prepare_input($_POST['products_seo_description'][$language_id]);
              $sql_data_array['products_seo_keywords'] = tep_db_prepare_input($_POST['products_seo_keywords'][$language_id]);
              $sql_data_array['products_seo_title'] = tep_db_prepare_input($_POST['products_seo_title'][$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('products_description', $sql_data_array);
              } elseif ($action == 'update_product') {
                tep_db_perform('products_description', $sql_data_array, 'update', "products_id = '" . (int)$products_id . "' and language_id = '" . (int)$language_id . "'");
              }
            }

            $pi_sort_order = 0;
            $piArray = array(0);

            foreach ($_FILES as $key => $value) {
    // Update existing large product images
              if (preg_match('/^products_image_large_([0-9]+)$/', $key, $matches)) {
                $pi_sort_order++;

                $sql_data_array = array('htmlcontent' => tep_db_prepare_input($_POST['products_image_htmlcontent_' . $matches[1]]),
                                        'sort_order' => $pi_sort_order);

                $t = new upload($key);
                $t->set_destination(DIR_FS_CATALOG_IMAGES);
                if ($t->parse() && $t->save()) {
                  $sql_data_array['image'] = tep_db_prepare_input($t->filename);
                }

                tep_db_perform('products_images', $sql_data_array, 'update', "products_id = '" . (int)$products_id . "' and id = '" . (int)$matches[1] . "'");

                $piArray[] = (int)$matches[1];
              } elseif (preg_match('/^products_image_large_new_([0-9]+)$/', $key, $matches)) {
    // Insert new large product images
                $sql_data_array = array('products_id' => (int)$products_id,
                                        'htmlcontent' => tep_db_prepare_input($_POST['products_image_htmlcontent_new_' . $matches[1]]));

                $t = new upload($key);
                $t->set_destination(DIR_FS_CATALOG_IMAGES);
                if ($t->parse() && $t->save()) {
                  $pi_sort_order++;

                  $sql_data_array['image'] = tep_db_prepare_input($t->filename);
                  $sql_data_array['sort_order'] = $pi_sort_order;

                  tep_db_perform('products_images', $sql_data_array);

                  $piArray[] = tep_db_insert_id();
                }
              }
            }

            $product_images_query = tep_db_query("select image from products_images where products_id = '" . (int)$products_id . "' and id not in (" . implode(',', $piArray) . ")");
            if (tep_db_num_rows($product_images_query)) {
              while ($product_images = tep_db_fetch_array($product_images_query)) {
                $duplicate_image_query = tep_db_query("select count(*) as total from products_images where image = '" . tep_db_input($product_images['image']) . "'");
                $duplicate_image = tep_db_fetch_array($duplicate_image_query);

                if ($duplicate_image['total'] < 2) {
                  if (file_exists(DIR_FS_CATALOG_IMAGES . $product_images['image'])) {
                    @unlink(DIR_FS_CATALOG_IMAGES . $product_images['image']);
                  }
                }
              }

              tep_db_query("delete from products_images where products_id = '" . (int)$products_id . "' and id not in (" . implode(',', $piArray) . ")");
            }

            $OSCOM_Hooks->call('categories', 'productActionSave');

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products_id));
            break;
          case 'copy_to_confirm':
            if (isset($_POST['products_id']) && isset($_POST['categories_id'])) {
              $products_id = tep_db_prepare_input($_POST['products_id']);
              $categories_id = tep_db_prepare_input($_POST['categories_id']);

              if ($_POST['copy_as'] == 'link') {
                if ($categories_id != $current_category_id) {
                  $check_query = tep_db_query("select count(*) as total from 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 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 ($_POST['copy_as'] == 'duplicate') {
                // BOF QUANTITY Price Breaks
                $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_gtin, products_qty_blocks, ptdc.discount_categories_id from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id where p.products_id = '" . (int)$products_id . "'");

                $product = tep_db_fetch_array($product_query);
     
                tep_db_query("insert into 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_qty_blocks) 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(), " .
                  (empty($product['products_date_available']) ? "null" : "'" . tep_db_input($product['products_date_available']) . "'") . ", '" . 
                  tep_db_input($product['products_weight']) . "', '0', '" . 
                  (int)$product['products_tax_class_id'] . "', '" . 
                  (int)$product['manufacturers_id'] . "', '" . 
                  tep_db_input($product['products_qty_blocks']) . "')");  
    // EOF QUANTITY Price Breaks
                $dup_products_id = tep_db_insert_id();

                $description_query = tep_db_query("select language_id, products_name, products_description, products_url, products_seo_title, products_seo_description, products_seo_keywords from products_description where products_id = '" . (int)$products_id . "'");
                while ($description = tep_db_fetch_array($description_query)) {
                  tep_db_query("insert into products_description (products_id, language_id, products_name, products_description, products_url, products_viewed, products_seo_title, products_seo_description, products_seo_keywords) 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_input($description['products_seo_title']) . "', '" . tep_db_input($description['products_seo_description']) . "', '" . tep_db_input($description['products_seo_keywords']) . "')");
                }

                $product_images_query = tep_db_query("select image, htmlcontent, sort_order from products_images where products_id = '" . (int)$products_id . "'");
                while ($product_images = tep_db_fetch_array($product_images_query)) {
                  tep_db_query("insert into products_images (products_id, image, htmlcontent, sort_order) values ('" . (int)$dup_products_id . "', '" . tep_db_input($product_images['image']) . "', '" . tep_db_input($product_images['htmlcontent']) . "', '" . tep_db_input($product_images['sort_order']) . "')");
                }

                tep_db_query("insert into products_to_categories (products_id, categories_id) values ('" . (int)$dup_products_id . "', '" . (int)$categories_id . "')");
            
                // BOF QUANTITY Price Breaks
                $price_breaks_query = tep_db_query("select products_price, products_qty from products_price_break where products_id = '" . (int)$products_id . "' order by products_qty");
                while ($price_break = tep_db_fetch_array($price_breaks_query)) {
                  $sql_price_break_data_array = array(
                    'products_id' => (int)$dup_products_id,
                    'products_price' => $price_break['products_price'],
                    'products_qty' => $price_break['products_qty']);
                  tep_db_perform('products_price_break', $sql_price_break_data_array);
                }
                $current_discount_categories_id = (int)$product['discount_categories_id'];
                if ($current_discount_categories_id > 0) {
                  // insert the new products_id in products_to_discount_categories only 
                  // if the cloned product was already in it
                  $discount_category_result = qpbpp_insert_update_discount_cats($dup_products_id, '0', $current_discount_categories_id);
                  if ($discount_category_result == false) {
                    $messageStack->add_session(ERROR_UPDATE_INSERT_DISCOUNT_CATEGORY, 'error');
                  }
                } // end if ($current_discount_category > 0)
                // EOF QUANTITY Price Breaks
                $products_id = $dup_products_id;
              }
            }

            $OSCOM_Hooks->call('categories', 'productActionCopy');

            tep_redirect(tep_href_link('categories.php', 'cPath=' . $categories_id . '&pID=' . $products_id));
            break;
        }
      }

      $OSCOM_Hooks->call('categories', 'productPostAction');

    // check if the catalog image directory exists
      if (is_dir(DIR_FS_CATALOG_IMAGES)) {
        if (!tep_is_writable(DIR_FS_CATALOG_IMAGES)) $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE, 'error');
      } else {
        $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_DOES_NOT_EXIST, 'error');
      }

      require('includes/template_top.php');

      $base_url = ($request_type == 'SSL') ? HTTPS_SERVER . DIR_WS_HTTPS_ADMIN : HTTP_SERVER . DIR_WS_ADMIN;

      if ($action == 'new_product') {
        $parameters = array('products_name' => '',
                            'products_description' => '',
                            'products_url' => '',
                            'products_id' => '',
                            'products_quantity' => '',
                            'products_model' => '',
                            'products_image' => '',
                            'products_larger_images' => array(),
                            'products_price' => '',
                           // BOF QUANTITY Price Breaks
                           'products_qty_blocks' => '',
                           'discount_categories_id' => '',
                           // EOF QUANTITY Price Breaks                        
                            'products_weight' => '',
                            'products_date_added' => '',
                            'products_last_modified' => '',
                            'products_date_available' => '',
                            'products_status' => '',
                            'products_tax_class_id' => '',
                            'manufacturers_id' => '');
        $parameters['products_gtin'] = '';
        $parameters['products_seo_description'] = '';
        $parameters['products_seo_keywords'] = '';
        $parameters['products_seo_title'] = '';

        $pInfo = new objectInfo($parameters);

        if (isset($_GET['pID']) && empty($_POST)) {
          // BOF QUANTITY Price Breaks    
          $product_query = tep_db_query("select pd.*, p.*, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, ptdc.discount_categories_id from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id, products_description pd where p.products_id = '" . (int)$_GET['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");
          // EOF QUANTITY Price Breaks   
          $product = tep_db_fetch_array($product_query);

          $pInfo->objectInfo($product);
          
          // BOF QUANTITY Price Breaks
          $price_breaks_array = array();
          $price_breaks_query = tep_db_query("select products_price, products_qty from products_price_break where products_id = '" . tep_db_input($pInfo->products_id) . "' order by products_qty");
          while ($price_break = tep_db_fetch_array($price_breaks_query)) {
            $price_breaks_array[] = $price_break;
          }
          // EOF QUANTITY Price Breaks

          $product_images_query = tep_db_query("select id, image, htmlcontent, sort_order from products_images where products_id = '" . (int)$product['products_id'] . "' order by sort_order");
          while ($product_images = tep_db_fetch_array($product_images_query)) {
            $pInfo->products_larger_images[] = array('id' => $product_images['id'],
                                                     'image' => $product_images['image'],
                                                     'htmlcontent' => $product_images['htmlcontent'],
                                                     'sort_order' => $product_images['sort_order']);
          }
        }

        $manufacturers_array = array(array('id' => '', 'text' => TEXT_NONE));
        $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from 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 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']);
        }
        
        // BOF QUANTITY Price Breaks
        $discount_categories_array = array(array('id' => '0', 'text' => TEXT_NONE));
        $discount_categories_query = tep_db_query("select discount_categories_id, discount_categories_name from discount_categories order by discount_categories_name");
        while ($discount_categories = tep_db_fetch_array($discount_categories_query)) {
          $discount_categories_array[] = array('id' => $discount_categories['discount_categories_id'],
                                               'text' => $discount_categories['discount_categories_name']);
        }
        // EOF QUANTITY Price Breaks

        $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;
        }

        $form_action = (isset($_GET['pID'])) ? 'update_product' : 'insert_product';
    ?>
    <script>
    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);
    }
    </script>

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

    <h1 class="pageHeading"><?php echo (isset($_GET['pID'])) ? sprintf(TEXT_EXISTING_PRODUCT, tep_output_generated_category_path($current_category_id)) : sprintf(TEXT_NEW_PRODUCT, tep_output_generated_category_path($current_category_id)); ?></h1>

    <div id="productTabs" style="overflow: auto;">
      <ul id="productTabsMain">
        <li><?php echo '<a href="' . substr(tep_href_link('categories.php', tep_get_all_get_params()), strlen($base_url)) . '#section_general_content">' . SECTION_HEADING_GENERAL . '</a>'; ?></li>
        <li><?php echo '<a href="' . substr(tep_href_link('categories.php', tep_get_all_get_params()), strlen($base_url)) . '#section_data_content">' . SECTION_HEADING_DATA . '</a>'; ?></li>
        <li><?php echo '<a href="' . substr(tep_href_link('categories.php', tep_get_all_get_params()), strlen($base_url)) . '#section_images_content">' . SECTION_HEADING_IMAGES . '</a>'; ?></li>
      </ul>

      <div id="section_general_content" style="padding: 10px;">
        <div id="productLanguageTabs">
          <ul>

    <?php
    for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
      echo '<li><a href="' . substr(tep_href_link('categories.php', tep_get_all_get_params()), strlen($base_url)) . '#section_general_content_' . $languages[$i]['directory'] . '">' . $languages[$i]['name'] . '</a></li>';
    }
    ?>

          </ul>

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

          <div id="section_general_content_<?php echo $languages[$i]['directory']; ?>">
            <table border="0" cellspacing="0" cellpadding="2">
              <tr>
                <td class="main"><?php echo TEXT_PRODUCTS_NAME; ?></td>
                <td class="main"><?php echo tep_draw_input_field('products_name[' . $languages[$i]['id'] . ']', (empty($pInfo->products_id) ? '' : tep_get_products_name($pInfo->products_id, $languages[$i]['id'])), 'style="width: 500px;"'); ?></td>
              </tr>
              <tr>
                <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
              </tr>
              <tr>
                <td class="main" valign="top"><?php echo TEXT_PRODUCTS_DESCRIPTION; ?></td>
                <td class="main"><?php echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->products_id) ? '' : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></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_URL . '<br /><small>' . TEXT_PRODUCTS_URL_WITHOUT_HTTP . '</small>'; ?></td>
                <td class="main"><?php echo tep_draw_input_field('products_url[' . $languages[$i]['id'] . ']', (isset($products_url[$languages[$i]['id']]) ? stripslashes($products_url[$languages[$i]['id']]) : tep_get_products_url($pInfo->products_id, $languages[$i]['id'])), 'style="width: 500px;"'); ?></td>
              </tr>
              <tr>
                <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
              </tr>
              <tr bgcolor="#eeeeee">
                <td class="main"><?php echo TEXT_PRODUCTS_SEO_TITLE; ?></td>
                <td class="main"><?php echo tep_draw_input_field('products_seo_title[' . $languages[$i]['id'] . ']', (empty($pInfo->products_id) ? '' : tep_get_products_seo_title($pInfo->products_id, $languages[$i]['id'])), 'style="width: 500px;"'); ?></td>
              </tr>
              <tr bgcolor="#eeeeee">
                <td class="main" valign="top"><?php echo TEXT_PRODUCTS_SEO_DESCRIPTION; ?></td>
                <td class="main"><?php echo tep_draw_textarea_field('products_seo_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->products_id) ? '' : tep_get_products_seo_description($pInfo->products_id, $languages[$i]['id']))); ?></td>
              </tr>
              <tr bgcolor="#eeeeee">
                <td class="main" valign="top"><?php echo TEXT_PRODUCTS_SEO_KEYWORDS; ?></td>
                <td class="main" valign="top"><?php echo tep_draw_input_field('products_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_products_seo_keywords($pInfo->products_id, $languages[$i]['id']), 'style="width: 500px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"'); ?></td>
              </tr>
            </table>
          </div>
    <?php
        }
    ?>
        </div>
      </div>

      <div id="section_data_content" style="padding: 10px;">
        <table border="0" cellspacing="0" cellpadding="2">
          <tr>
            <td class="main"><?php echo TEXT_PRODUCTS_STATUS; ?></td>
            <td class="main"><?php echo tep_draw_radio_field('products_status', '1', $in_status) . '&nbsp;' . TEXT_PRODUCT_AVAILABLE . '&nbsp;' . tep_draw_radio_field('products_status', '0', $out_status) . '&nbsp;' . 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; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_date_available', $pInfo->products_date_available, 'id="products_date_available" style="width: 500px;"') . ' <small>(YYYY-MM-DD)</small>'; ?></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_pull_down_menu('manufacturers_id', $manufacturers_array, $pInfo->manufacturers_id, 'style="width: 500px;"'); ?></td>
          </tr>
          <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_pull_down_menu('products_tax_class_id', $tax_class_array, $pInfo->products_tax_class_id, 'style="width: 500px;" onchange="updateGross()"'); ?></td>
          </tr>
          <tr bgcolor="#ebebff">
            <td class="main"><?php echo TEXT_PRODUCTS_PRICE_NET; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_price', $pInfo->products_price, 'style="width: 200px;" onkeyup="updateGross()"'); ?></td>
          </tr>
          <tr bgcolor="#ebebff">
            <td class="main"><?php echo TEXT_PRODUCTS_PRICE_GROSS; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_price_gross', $pInfo->products_price, 'style="width: 200px;" onkeyup="updateNet()"'); ?></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_QUANTITY; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_quantity', $pInfo->products_quantity, 'style="width: 200px;"'); ?></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_input_field('products_model', $pInfo->products_model, 'style="width: 500px;"'); ?></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_WEIGHT; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_weight', $pInfo->products_weight, 'style="width: 200px;"'); ?></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_GTIN; ?></td>
            <td class="main"><?php echo tep_draw_input_field('products_gtin', $pInfo->products_gtin, 'style="width: 500px;"'); ?></td>
          </tr>
          <!-- BOF QUANTITY Price Breaks -->
          <?php require('includes/modules/quantity_price_breaks.php'); ?>          
          <!-- EOF QUANTITY Price Breaks -->
        </table>
      </div>

      <div id="section_images_content" style="padding: 10px;">
        <div><?php echo '<strong>' . TEXT_PRODUCTS_MAIN_IMAGE . '</strong><br />' . (tep_not_null($pInfo->products_image) ? '<a href="' . HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . $pInfo->products_image . '" target="_blank">' . $pInfo->products_image . '</a> &#124; ' : '') . tep_draw_file_field('products_image'); ?></div>

        <ul id="piList">
    <?php
        $pi_counter = 0;

        foreach ($pInfo->products_larger_images as $pi) {
          $pi_counter++;

          echo '      <li id="piId' . $pi_counter . '" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s" style="float: right;"></span><a href="#" onclick="showPiDelConfirm(' . $pi_counter . ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a><strong>' . TEXT_PRODUCTS_LARGE_IMAGE . '</strong><br />' . tep_draw_file_field('products_image_large_' . $pi['id']) . '<br /><a href="' . HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . $pi['image'] . '" target="_blank">' . $pi['image'] . '</a><br /><br />' . TEXT_PRODUCTS_LARGE_IMAGE_HTML_CONTENT . '<br />' . tep_draw_textarea_field('products_image_htmlcontent_' . $pi['id'], 'soft', '70', '3', $pi['htmlcontent']) . '</li>';
        }
    ?>
        </ul>

        <br>
        <span class="tdbLink"><a href="#" id="add_image" onclick="addNewPiForm();return false;"><?php echo TEXT_PRODUCTS_ADD_LARGE_IMAGE; ?></a></span>
        <script>$("#add_image").button({icons:{primary:"ui-icon-plus"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");</script>

    <div id="piDelConfirm" title="<?php echo TEXT_PRODUCTS_LARGE_IMAGE_DELETE_TITLE; ?>">
      <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span><?php echo TEXT_PRODUCTS_LARGE_IMAGE_CONFIRM_DELETE; ?></p>
    </div>

    <style type="text/css">
    #piList { list-style-type: none; margin: 0; padding: 0; }
    #piList li { margin: 5px 0; padding: 2px; }
    </style>

    <script type="text/javascript">
    $('#piList').sortable({
      containment: 'parent'
    });

    var piSize = <?php echo $pi_counter; ?>;

    function addNewPiForm() {
      piSize++;

      $('#piList').append('<li id="piId' + piSize + '" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s" style="float: right;"></span><a href="#" onclick="showPiDelConfirm(' + piSize + ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a><strong><?php echo TEXT_PRODUCTS_LARGE_IMAGE; ?></strong><br /><input type="file" name="products_image_large_new_' + piSize + '" /><br /><br /><?php echo TEXT_PRODUCTS_LARGE_IMAGE_HTML_CONTENT; ?><br /><textarea name="products_image_htmlcontent_new_' + piSize + '" wrap="soft" cols="70" rows="3"></textarea></li>');
    }

    var piDelConfirmId = 0;

    $('#piDelConfirm').dialog({
      autoOpen: false,
      resizable: false,
      draggable: false,
      modal: true,
      buttons: {
        'Delete': function() {
          $('#piId' + piDelConfirmId).effect('blind').remove();
          $(this).dialog('close');
        },
        Cancel: function() {
          $(this).dialog('close');
        }
      }
    });

    function showPiDelConfirm(piId) {
      piDelConfirmId = piId;

      $('#piDelConfirm').dialog('open');
    }
    </script>
      </div>

    <?php
        echo $OSCOM_Hooks->call('categories', 'productTab');
    ?>

    </div>

    <script>
    $(function() {
      $('#productTabs').tabs();
      $('#productLanguageTabs').tabs();
    });
    updateGross();
    $('#products_date_available').datepicker({
      dateFormat: 'yy-mm-dd'
    });
    </script>

    <div style="padding-top: 15px; text-align: right;">
      <?php echo tep_draw_hidden_field('products_date_added', (tep_not_null($pInfo->products_date_added) ? $pInfo->products_date_added : date('Y-m-d'))) . tep_draw_button(IMAGE_SAVE, 'disk', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . (isset($_GET['pID']) ? '&pID=' . $_GET['pID'] : ''))); ?>
    </div>

        </form>
    <?php
      } elseif ($action == 'new_product_preview') {
        // BOF QUANTITY Price Breaks
        $product_query = tep_db_query("select p.*, pd.*, ptdc.discount_categories_id, dc.discount_categories_name from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id left join discount_categories dc using(discount_categories_id), products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");
        // EOF QUANTITY Price Breaks
        $product = tep_db_fetch_array($product_query);

        $pInfo = new objectInfo($product);
        $products_image_name = $pInfo->products_image;

        $languages = tep_get_languages();
        for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
          $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
          $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
          $pInfo->products_url = tep_get_products_url($pInfo->products_id, $languages[$i]['id']);
          $pInfo->products_seo_description = tep_get_products_seo_description($pInfo->products_id, $languages[$i]['id']);
          $pInfo->products_seo_keywords = tep_get_products_seo_keywords($pInfo->products_id, $languages[$i]['id']);
          $pInfo->products_seo_title = tep_get_products_seo_title($pInfo->products_id, $languages[$i]['id']);
           // BOF QUANTITY Price Breaks
          $price_breaks_array = array();
          for ($count = 0; $count <= (PRICE_BREAK_NOF_LEVELS - 1); $count++) {
            if(isset($_POST['products_price' . $count]) && tep_not_null($_POST['products_price' . $count]) &&
               isset($_POST['products_qty' . $count]) && tep_not_null($_POST['products_qty' . $count])) {
              $price_breaks_array[] = array(
                'products_price' => $_POST['products_price' . $count],
                'products_qty' => $_POST['products_qty' . $count]);
            }
          }
          // EOF QUANTITY Price Breaks
    ?>
        <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 tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . $pInfo->products_name; ?></td>
                <td class="pageHeading" align="right"><?php 
                // BOF QUANTITY Price Breaks
                echo $currencies->format($pInfo->products_price);
                $pf->loadProduct((int)$_GET['pID'], $pInfo->products_price, $pInfo->products_tax_class_id, (int)$pInfo->products_qty_blocks, $price_breaks_array);
                echo $pf->getPriceString();
                // EOF QUANTITY Price Breaks ?>
            </td>
              </tr>
            </table></td>
          </tr>
          <tr>
            <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
          </tr>
          <tr>
            <td class="main"><?php echo tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . $products_image_name, $pInfo->products_name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'align="right" hspace="5" vspace="5"') . $pInfo->products_description; ?></td>
          </tr>
    <?php
          if ($pInfo->products_url) {
    ?>
          <tr>
            <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
          </tr>
          <tr>
            <td class="main"><?php echo sprintf(TEXT_PRODUCT_MORE_INFORMATION, $pInfo->products_url); ?></td>
          </tr>
    <?php
          }
    ?>
          <tr>
            <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
          </tr>
    <?php
          if ($pInfo->products_date_available > date('Y-m-d')) {
    ?>
          <tr>
            <td align="center" class="smallText"><?php echo sprintf(TEXT_PRODUCT_DATE_AVAILABLE, tep_date_long($pInfo->products_date_available)); ?></td>
          </tr>
    <?php
          } else {
    ?>
          <tr>
            <td align="center" class="smallText"><?php echo sprintf(TEXT_PRODUCT_DATE_ADDED, tep_date_long($pInfo->products_date_added)); ?></td>
          </tr>
    <?php
          }
    ?>
          <tr>
            <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
          </tr>
    <?php
        }

        if (isset($_GET['origin'])) {
          $pos_params = strpos($_GET['origin'], '?', 0);
          if ($pos_params != false) {
            $back_url = substr($_GET['origin'], 0, $pos_params);
            $back_url_params = substr($_GET['origin'], $pos_params + 1);
          } else {
            $back_url = $_GET['origin'];
            $back_url_params = '';
          }
        } else {
          $back_url = 'categories.php';
          $back_url_params = 'cPath=' . $cPath . '&pID=' . $pInfo->products_id;
        }
    ?>
          <tr>
            <td align="right" class="smallText"><?php echo tep_draw_button(IMAGE_BACK, 'triangle-1-w', tep_href_link($back_url, $back_url_params)); ?></td>
          </tr>
        </table>
    <?php
      } else {
    ?>
        <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 HEADING_TITLE; ?></td>
                <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
                <td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">
                  <tr>
                    <td class="smallText" align="right">
    <?php
        echo tep_draw_form('search', 'categories.php', '', 'get');
        echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
        echo tep_hide_session_id() . '</form>';
    ?>
                    </td>
                  </tr>
                  <tr>
                    <td class="smallText" align="right">
    <?php
        echo tep_draw_form('goto', 'categories.php', '', 'get');
        echo HEADING_TITLE_GOTO . ' ' . tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onchange="this.form.submit();"');
        echo tep_hide_session_id() . '</form>';
    ?>
                    </td>
                  </tr>
                </table></td>
              </tr>
            </table></td>
          </tr>
          <tr>
            <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
              <tr>
                <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                  <tr class="dataTableHeadingRow">
                    <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CATEGORIES_PRODUCTS; ?></td>
                    <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_STATUS; ?></td>
                    <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
                  </tr>
    <?php
        $categories_count = 0;
        $rows = 0;
        if (isset($_GET['search'])) {
          $search = tep_db_prepare_input($_GET['search']);

          $categories_query = tep_db_query("select c.*, cd.* from categories c, categories_description cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and cd.categories_name like '%" . tep_db_input($search) . "%' order by c.sort_order, cd.categories_name");
        } else {
          $categories_query = tep_db_query("select c.*, cd.*  from categories c, categories_description cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by c.sort_order, cd.categories_name");
        }
        while ($categories = tep_db_fetch_array($categories_query)) {
          $categories_count++;
          $rows++;

    // Get parent_id for subcategories if search
          if (isset($_GET['search'])) $cPath= $categories['parent_id'];

          if ((!isset($_GET['cID']) && !isset($_GET['pID']) || (isset($_GET['cID']) && ($_GET['cID'] == $categories['categories_id']))) && !isset($cInfo) && (substr($action, 0, 3) != 'new')) {
            $category_childs = array('childs_count' => tep_childs_in_category_count($categories['categories_id']));
            $category_products = array('products_count' => tep_products_in_category_count($categories['categories_id']));

            $cInfo_array = array_merge($categories, $category_childs, $category_products);
            $cInfo = new objectInfo($cInfo_array);
          }

          if (isset($cInfo) && is_object($cInfo) && ($categories['categories_id'] == $cInfo->categories_id) ) {
            echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('categories.php', tep_get_path($categories['categories_id'])) . '\'">' . "\n";
          } else {
            echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '\'">' . "\n";
          }
    ?>
                    <td class="dataTableContent"><?php echo '<a href="' . tep_href_link('categories.php', tep_get_path($categories['categories_id'])) . '">' . tep_image('images/icons/folder.gif', ICON_FOLDER) . '</a>&nbsp;<strong>' . $categories['categories_name'] . '</strong>'; ?></td>
                    <td class="dataTableContent" align="center">&nbsp;</td>
                    <td class="dataTableContent" align="right"><?php if (isset($cInfo) && is_object($cInfo) && ($categories['categories_id'] == $cInfo->categories_id) ) { echo tep_image('images/icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '">' . tep_image('images/icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
                  </tr>
    <?php
        }

        $products_count = 0;
        if (isset($_GET['search'])) {
        // BOF QUANTITY Price Breaks    
          $products_query = tep_db_query("select p.*, pd.*, p2c.categories_id, ptdc.discount_categories_id, dc.discount_categories_name from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id left join discount_categories dc using(discount_categories_id), products_description pd, products_to_categories p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . tep_db_input($search) . "%' order by pd.products_name");  
        } else { 
          $products_query = tep_db_query("select p.*, pd.*, ptdc.discount_categories_id, dc.discount_categories_name from products p left join products_to_discount_categories ptdc on p.products_id = ptdc.products_id left join discount_categories dc using(discount_categories_id), products_description pd, products_to_categories p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by pd.products_name");     
        // EOF QUANTITY Price Breaks
        }
        while ($products = tep_db_fetch_array($products_query)) {
          $products_count++;
          $rows++;

    // Get categories_id for product if search
          if (isset($_GET['search'])) $cPath = $products['categories_id'];

          if ( (!isset($_GET['pID']) && !isset($_GET['cID']) || (isset($_GET['pID']) && ($_GET['pID'] == $products['products_id']))) && !isset($pInfo) && !isset($cInfo) && (substr($action, 0, 3) != 'new')) {
    // find out the rating average from customer reviews
            $reviews_query = tep_db_query("select (avg(reviews_rating) / 5 * 100) as average_rating from reviews where products_id = '" . (int)$products['products_id'] . "'");
            $reviews = tep_db_fetch_array($reviews_query);
            $pInfo_array = array_merge($products, $reviews);
            $pInfo = new objectInfo($pInfo_array);
          }

          if (isset($pInfo) && is_object($pInfo) && ($products['products_id'] == $pInfo->products_id) ) {
            echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '\'">' . "\n";
          } else {
            echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '\'">' . "\n";
          }
    ?>
                    <td class="dataTableContent"><?php echo '<a href="' . tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '">' . tep_image('images/icons/preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $products['products_name']; ?></td>
                    <td class="dataTableContent" align="center">
    <?php
          if ($products['products_status'] == '1') {
            echo tep_image('images/icon_status_green.gif', IMAGE_ICON_STATUS_GREEN, 10, 10) . '&nbsp;&nbsp;<a href="' . tep_href_link('categories.php', 'action=setflag&flag=0&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image('images/icon_status_red_light.gif', IMAGE_ICON_STATUS_RED_LIGHT, 10, 10) . '</a>';
          } else {
            echo '<a href="' . tep_href_link('categories.php', 'action=setflag&flag=1&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image('images/icon_status_green_light.gif', IMAGE_ICON_STATUS_GREEN_LIGHT, 10, 10) . '</a>&nbsp;&nbsp;' . tep_image('images/icon_status_red.gif', IMAGE_ICON_STATUS_RED, 10, 10);
          }
    ?></td>
                    <td class="dataTableContent" align="right"><?php if (isset($pInfo) && is_object($pInfo) && ($products['products_id'] == $pInfo->products_id)) { echo tep_image('images/icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '">' . tep_image('images/icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
                  </tr>
    <?php
        }

        $cPath_back = '';
        if (isset($cPath_array) && sizeof($cPath_array) > 0) {
          for ($i=0, $n=sizeof($cPath_array)-1; $i<$n; $i++) {
            if (empty($cPath_back)) {
              $cPath_back .= $cPath_array[$i];
            } else {
              $cPath_back .= '_' . $cPath_array[$i];
            }
          }
        }

        $cPath_back = (tep_not_null($cPath_back)) ? 'cPath=' . $cPath_back . '&' : '';
    ?>
                  <tr>
                    <td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                      <tr>
                        <td class="smallText"><?php echo TEXT_CATEGORIES . '&nbsp;' . $categories_count . '<br />' . TEXT_PRODUCTS . '&nbsp;' . $products_count; ?></td>
                        <td align="right" class="smallText"><?php if (isset($cPath_array) && (sizeof($cPath_array) > 0))  echo tep_draw_button(IMAGE_BACK, 'triangle-1-w', tep_href_link('categories.php', $cPath_back . 'cID=' . $current_category_id)); if (!isset($_GET['search'])) echo tep_draw_button(IMAGE_NEW_CATEGORY, 'plus', tep_href_link('categories.php', 'cPath=' . $cPath . '&action=new_category')) . tep_draw_button(IMAGE_NEW_PRODUCT, 'plus', tep_href_link('categories.php', 'cPath=' . $cPath . '&action=new_product')); ?>&nbsp;</td>
                      </tr>
                    </table></td>
                  </tr>
                </table></td>
    <?php
        $heading = array();
        $contents = array();
        switch ($action) {
          case 'new_category':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_NEW_CATEGORY . '</strong>');

            $contents = array('form' => tep_draw_form('newcategory', 'categories.php', 'action=insert_category&cPath=' . $cPath, 'post', 'enctype="multipart/form-data"'));
            $contents[] = array('text' => TEXT_NEW_CATEGORY_INTRO);

            $category_inputs_string = $category_description_string = $category_seo_description_string = $category_seo_keywords_string = $category_seo_title_string = '';
            $languages = tep_get_languages();
            for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
              $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
              $category_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
              $category_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
              $category_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_keywords[' . $languages[$i]['id'] . ']', NULL, 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');
              $category_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_title[' . $languages[$i]['id'] . ']');
            }

            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_NAME . $category_inputs_string);
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_SEO_TITLE . $category_seo_title_string);
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_DESCRIPTION . $category_description_string);
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_SEO_DESCRIPTION . $category_seo_description_string);
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_SEO_KEYWORDS . $category_seo_keywords_string);
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES_IMAGE . '<br />' . tep_draw_file_field('categories_image'));
            $contents[] = array('text' => '<br />' . TEXT_SORT_ORDER . '<br />' . tep_draw_input_field('sort_order', '', 'size="2"'));
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_SAVE, 'disk', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath)));
            break;
          case 'edit_category':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_EDIT_CATEGORY . '</strong>');

            $contents = array('form' => tep_draw_form('categories', 'categories.php', 'action=update_category&cPath=' . $cPath, 'post', 'enctype="multipart/form-data"') . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
            $contents[] = array('text' => TEXT_EDIT_INTRO);

            $category_inputs_string = $category_description_string = $category_seo_description_string = $category_seo_keywords_string = $category_seo_title_string = '';
            $languages = tep_get_languages();
            for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
              $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
              $category_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_title[' . $languages[$i]['id'] . ']', tep_get_category_seo_title($cInfo->categories_id, $languages[$i]['id']));
              $category_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_category_description($cInfo->categories_id, $languages[$i]['id']));
              $category_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_category_seo_description($cInfo->categories_id, $languages[$i]['id']));
              $category_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_category_seo_keywords($cInfo->categories_id, $languages[$i]['id']), 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');
            }

            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_NAME . $category_inputs_string);
            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_SEO_TITLE . $category_seo_title_string);
            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_DESCRIPTION . $category_description_string);
            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_SEO_DESCRIPTION . $category_seo_description_string);
            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_SEO_KEYWORDS . $category_seo_keywords_string);
            $contents[] = array('text' => '<br />' . tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . $cInfo->categories_image, $cInfo->categories_name) . '<br />' . DIR_WS_CATALOG_IMAGES . '<br /><strong>' . $cInfo->categories_image . '</strong>');
            $contents[] = array('text' => '<br />' . TEXT_EDIT_CATEGORIES_IMAGE . '<br />' . tep_draw_file_field('categories_image'));
            $contents[] = array('text' => '<br />' . TEXT_EDIT_SORT_ORDER . '<br />' . tep_draw_input_field('sort_order', $cInfo->sort_order, 'size="2"'));
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_SAVE, 'disk', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id)));
            break;
          case 'delete_category':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_DELETE_CATEGORY . '</strong>');

            $contents = array('form' => tep_draw_form('categories', 'categories.php', 'action=delete_category_confirm&cPath=' . $cPath) . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
            $contents[] = array('text' => TEXT_DELETE_CATEGORY_INTRO);
            $contents[] = array('text' => '<br /><strong>' . $cInfo->categories_name . '</strong>');
            if ($cInfo->childs_count > 0) $contents[] = array('text' => '<br />' . sprintf(TEXT_DELETE_WARNING_CHILDS, $cInfo->childs_count));
            if ($cInfo->products_count > 0) $contents[] = array('text' => '<br />' . sprintf(TEXT_DELETE_WARNING_PRODUCTS, $cInfo->products_count));
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_DELETE, 'trash', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id)));
            break;
          case 'move_category':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_MOVE_CATEGORY . '</strong>');

            $contents = array('form' => tep_draw_form('categories', 'categories.php', 'action=move_category_confirm&cPath=' . $cPath) . tep_draw_hidden_field('categories_id', $cInfo->categories_id));
            $contents[] = array('text' => sprintf(TEXT_MOVE_CATEGORIES_INTRO, $cInfo->categories_name));
            $contents[] = array('text' => '<br />' . sprintf(TEXT_MOVE, $cInfo->categories_name) . '<br />' . tep_draw_pull_down_menu('move_to_category_id', tep_get_category_tree(), $current_category_id));
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_MOVE, 'arrow-4', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id)));
            break;
          case 'delete_product':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_DELETE_PRODUCT . '</strong>');

            $contents = array('form' => tep_draw_form('products', 'categories.php', 'action=delete_product_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
            $contents[] = array('text' => TEXT_DELETE_PRODUCT_INTRO);
            $contents[] = array('text' => '<br /><strong>' . $pInfo->products_name . '</strong>');

            $product_categories_string = '';
            $product_categories = tep_generate_category_path($pInfo->products_id, 'product');
            for ($i = 0, $n = sizeof($product_categories); $i < $n; $i++) {
              $category_path = '';
              for ($j = 0, $k = sizeof($product_categories[$i]); $j < $k; $j++) {
                $category_path .= $product_categories[$i][$j]['text'] . '&nbsp;&gt;&nbsp;';
              }
              $category_path = substr($category_path, 0, -16);
              $product_categories_string .= tep_draw_checkbox_field('product_categories[]', $product_categories[$i][sizeof($product_categories[$i])-1]['id'], true) . '&nbsp;' . $category_path . '<br />';
            }
            $product_categories_string = substr($product_categories_string, 0, -4);

            $contents[] = array('text' => '<br />' . $product_categories_string);
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_DELETE, 'trash', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id)));
            break;
          case 'move_product':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_MOVE_PRODUCT . '</strong>');

            $contents = array('form' => tep_draw_form('products', 'categories.php', 'action=move_product_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
            $contents[] = array('text' => sprintf(TEXT_MOVE_PRODUCTS_INTRO, $pInfo->products_name));
            $contents[] = array('text' => '<br />' . TEXT_INFO_CURRENT_CATEGORIES . '<br /><strong>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</strong>');
            $contents[] = array('text' => '<br />' . sprintf(TEXT_MOVE, $pInfo->products_name) . '<br />' . tep_draw_pull_down_menu('move_to_category_id', tep_get_category_tree(), $current_category_id));
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_MOVE, 'arrow-4', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id)));
            break;
          case 'copy_to':
            $heading[] = array('text' => '<strong>' . TEXT_INFO_HEADING_COPY_TO . '</strong>');

            $contents = array('form' => tep_draw_form('copy_to', 'categories.php', 'action=copy_to_confirm&cPath=' . $cPath) . tep_draw_hidden_field('products_id', $pInfo->products_id));
            $contents[] = array('text' => TEXT_INFO_COPY_TO_INTRO);
            $contents[] = array('text' => '<br />' . TEXT_INFO_CURRENT_CATEGORIES . '<br /><strong>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</strong>');
            $contents[] = array('text' => '<br />' . TEXT_CATEGORIES . '<br />' . tep_draw_pull_down_menu('categories_id', tep_get_category_tree(), $current_category_id));
            $contents[] = array('text' => '<br />' . TEXT_HOW_TO_COPY . '<br />' . tep_draw_radio_field('copy_as', 'link', true) . ' ' . TEXT_COPY_AS_LINK . '<br />' . tep_draw_radio_field('copy_as', 'duplicate') . ' ' . TEXT_COPY_AS_DUPLICATE);
            $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(IMAGE_COPY, 'copy', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id)));
            break;
          default:
            if ($rows > 0) {
              if (isset($cInfo) && is_object($cInfo)) { // category info box contents
                $category_path_string = '';
                $category_path = tep_generate_category_path($cInfo->categories_id);
                for ($i=(sizeof($category_path[0])-1); $i>0; $i--) {
                  $category_path_string .= $category_path[0][$i]['id'] . '_';
                }
                $category_path_string = substr($category_path_string, 0, -1);

                $heading[] = array('text' => '<strong>' . $cInfo->categories_name . '</strong>');

                $contents[] = array('align' => 'center', 'text' => tep_draw_button(IMAGE_EDIT, 'document', tep_href_link('categories.php', 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=edit_category')) . tep_draw_button(IMAGE_DELETE, 'trash', tep_href_link('categories.php', 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=delete_category')) . tep_draw_button(IMAGE_MOVE, 'arrow-4', tep_href_link('categories.php', 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=move_category')));
                $contents[] = array('text' => '<br />' . TEXT_DATE_ADDED . ' ' . tep_date_short($cInfo->date_added));
                if (tep_not_null($cInfo->last_modified)) $contents[] = array('text' => TEXT_LAST_MODIFIED . ' ' . tep_date_short($cInfo->last_modified));
                $contents[] = array('text' => '<br />' . tep_info_image($cInfo->categories_image, $cInfo->categories_name, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT) . '<br />' . $cInfo->categories_image);
                $contents[] = array('text' => '<br />' . TEXT_SUBCATEGORIES . ' ' . $cInfo->childs_count . '<br />' . TEXT_PRODUCTS . ' ' . $cInfo->products_count);
              } elseif (isset($pInfo) && is_object($pInfo)) { // product info box contents
                $heading[] = array('text' => '<strong>' . tep_get_products_name($pInfo->products_id, $languages_id) . '</strong>');

                $contents[] = array('align' => 'center', 'text' => tep_draw_button(IMAGE_EDIT, 'document', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=new_product')) . tep_draw_button(IMAGE_DELETE, 'trash', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=delete_product')) . tep_draw_button(IMAGE_MOVE, 'arrow-4', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=move_product')) . tep_draw_button(IMAGE_COPY_TO, 'copy', tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=copy_to')));
                $contents[] = array('text' => '<br />' . TEXT_DATE_ADDED . ' ' . tep_date_short($pInfo->products_date_added));
                if (tep_not_null($pInfo->products_last_modified)) $contents[] = array('text' => TEXT_LAST_MODIFIED . ' ' . tep_date_short($pInfo->products_last_modified));
                if (date('Y-m-d') < $pInfo->products_date_available) $contents[] = array('text' => TEXT_DATE_AVAILABLE . ' ' . tep_date_short($pInfo->products_date_available));
                $contents[] = array('text' => '<br />' . tep_info_image($pInfo->products_image, $pInfo->products_name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '<br />' . $pInfo->products_image);
                $contents[] = array('text' => '<br />' . TEXT_PRODUCTS_PRICE_INFO . ' ' . $currencies->format($pInfo->products_price) . '<br />' . TEXT_PRODUCTS_QUANTITY_INFO . ' ' . $pInfo->products_quantity);
                $contents[] = array('text' => '<br />' . TEXT_PRODUCTS_AVERAGE_RATING . ' ' . number_format($pInfo->average_rating, 2) . '%');
                //BOF QUANTITY Price Breaks
                $contents[] = array('text' => '<br>' . TEXT_DISCOUNT_CATEGORY . ' ' . (tep_not_null($pInfo->discount_categories_name) ? $pInfo->discount_categories_name : TEXT_NONE));
                //EOF QUANTITY Price Breaks
              }
            } else { // create category/product info
              $heading[] = array('text' => '<strong>' . EMPTY_CATEGORY . '</strong>');

              $contents[] = array('text' => TEXT_NO_CHILD_CATEGORIES_OR_PRODUCTS);
            }
            break;
        }

        if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
          echo '            <td width="50%" valign="top">' . "\n";

          $box = new box;
          echo $box->infoBox($heading, $contents);

          echo '            </td>' . "\n";
        }
    ?>
              </tr>
            </table></td>
          </tr>
        </table>
    <?php
      }

      require('includes/template_bottom.php');
      require('includes/application_bottom.php');
    ?>

  6. 2 questions.

    When updating do you uninstall previous version or just overwrite the files? I just overwritten the files and reset thumbnailer.

     getting this error

    PHP Notice:  Could not extract image size. in catalog/includes/modules/kiss_image_thumbnailer/classes/Image.php on line 181

    PHP Warning:  Division by zero in catalog/includes/modules/kiss_image_thumbnailer/classes/Image.php on line 264

    Anyway quick way to find the image that may be causing this. I have some html with images and wondering if that could be the problem. Have images set to width 100% height not set.

  7. Could there be a mistake in the install instructions or did I miss something.

    Installed on osC v2.3.3 and V2.3.1

    Had to insert in includes/languages/english/modules/boxes/bm_information.php

    define('MODULE_BOXES_INFORMATION_SITEMAP_SEO', 'Site Map');

    To get the information box to read "Site Map"

    Was this left out of the install instructions?? Or did I overlook something.

    Posted just in case others are having the same problem. Works perfect now.

    Thanks for a great contrib.

  8. I had the same problem. I just hard coded it in product_info.php Just to let my customers know to click it.

    This is based on osc 2.3.1

    Goto catalog/product_info.php

    Find around line 190

     

     

    <?php

    $reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and reviews_status = 1");

    $reviews = tep_db_fetch_array($reviews_query);

    ?>

     

    Under that paste this

     

     

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

    <tr>

    <td><h2 align="right">Click Image<br>to ENLARGE</h2></td>

    </tr>

    </table>

     

     

    That's it all done.

    If the letters are to large try changing the <h2> tags to <h3> or just remove the tags. or whatever you want in your stylesheet.css

  9. I have found the answer and very simple add on. Sub Category Description on Selected Categories

    The problem I was having was the "no picture icon" was showing up. FYI if you have a picture for your products in the elected category remove the link from your database mySql. Just go to the products page and the image link.

    This is the final result in patiodoorrepair.net website.

    All pictures and info after category name heading and before the page count was inserted in the file Catalog/includes/languages/english/index.php

    Hope this helps someone out.

    Nick

  10. I have found the answer and very simple add on. Sub Category Description on Selected Categories

    The problem I was having was the "no picture icon" was showing up. FYI if you have a picture for your products in the elected category remove the link from your database mySql. Just go to the products page and the image link.

    This is the final result in patiodoorrepair.net website.

    All pictures and info after category name heading and before the page count was inserted in the file Catalog/includes/languages/english/index.php

    Hope this helps someone out.

    Nick

  11. using v2.2RC2a

    I would like to shut off images to certain categories.

    Some of my categories have the same product image and there is no need to have all the same images in the product listing. Would like to have maybe an "if" statement that would state if category c-181_182_191 was selected turn off product images. Therefore just have products and buy now.

    You can see what I've done so far patio door repair

    Please help

    Nick

×
×
  • Create New...