Jump to content
Sign in to follow this  
Parikesit

[Contribution] Additional Images Module

Recommended Posts

I seem to have encountered a problem with the additional images contrib. When I upload an additional image I get both the warning and succes bar displayed (green and pink bars in admin). Sometimes, it doesn't upload the requested image, but instead it just places the primairy image as an additional one. Further more, when I delete the image it says it's deleted correcltly but the image is still there. It's only actually deleted when I go trough the process twice.

I don't know if this is a database issue or not. I didn't have this problem when I first installed it. But after trying to install a condition agreement contrib wich required inserting sql queries into the configuration table. That contribution is now deleted and the the database was restored from a backup sql file I made before installing it. Only other thing I did was modify categories.php, by using the tip for bypassing preview page when adding a new product.

Hmmm, I'm at a loss here, would some one PLEASE help point in the direction to fix this.

The development of my store's functionality is almost finished accept for implementing a few other things and now this?!? <_<

 

Any help would be greatly appreciated!! :)

this contribution uploads & deletes on the preview page as the original osCommerce shop does with the original image. If you skip the preview page you must also move the AI code that depends on it.

Share this post


Link to post
Share on other sites

Hi Surfalot, Thanks so much for your time. As I do not know how to move the AI code for the preview page, I removed the trick for bypassing that when adding a new product. Seems to work fine now, but I'm still receiving the conflicting warning and success message after I upload an additional image...

Would you please take a look at my categories.php? I can't seem to figure out where it's coming from...

<?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++) {
            $delimg_query = tep_db_query("select medium_images, popup_images from " . TABLE_ADDITIONAL_IMAGES . " where products_id = '" . (int)$product_id . "'");
           while ($delimg = tep_db_fetch_array($delimg_query)){
              if (tep_not_null($delimg['medium_images']) && file_exists(DIR_FS_CATALOG_IMAGES.$delimg['medium_images']) )
                 if (!unlink (DIR_FS_CATALOG_IMAGES.$delimg['medium_images']))
                    $messageStack->add_session(ERROR_DEL_IMG_XTRA.$delimg['medium_images'], 'error');
                 else
                    $messageStack->add_session(SUCCESS_DEL_IMG_XTRA.$delimg['medium_images'], 'success');
              if (tep_not_null($delimg['popup_images']) && file_exists(DIR_FS_CATALOG_IMAGES.$delimg['popup_images']) )
                 if (!unlink (DIR_FS_CATALOG_IMAGES.$delimg['popup_images']))
                    $messageStack->add_session(ERROR_DEL_IMG_XTRA.$delimg['popup_images'], 'error');
                 else
                    $messageStack->add_session(SUCCESS_DEL_IMG_XTRA.$delimg['popup_images'], 'success');
           }
           tep_db_query("delete from " . TABLE_ADDITIONAL_IMAGES . " where products_id = '" . (int)$product_id . "'");
           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']),
                                // Start product thickness shipping module
                                'products_thickness' => tep_db_prepare_input($HTTP_POST_VARS['products_thickness']),
                                // Stop product thickness shipping module
                                'products_status' => tep_db_prepare_input($HTTP_POST_VARS['products_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 (isset($HTTP_POST_VARS['products_image_pop']) && tep_not_null($HTTP_POST_VARS['products_image_pop']) && ($HTTP_POST_VARS['products_image_pop'] != 'none')) {
           $sql_data_array['products_image_pop'] = tep_db_prepare_input($HTTP_POST_VARS['products_image_pop']);
         }
         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;
     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') {
          // Start adapted for product thickness shipping module 
          $product_query = tep_db_query("select products_quantity, products_model, products_image, products_price, products_date_available, products_weight, products_thickness, products_tax_class_id, manufacturers_id from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");
          // Stop adapted for product thickness shipping module
          $product = tep_db_fetch_array($product_query);

           // Start adapted for product thickness shipping module 
          tep_db_query("insert into " . TABLE_PRODUCTS . " (products_quantity, products_model,products_image, products_price, products_date_added, products_date_available, products_weight, products_thickness, products_status, products_tax_class_id, manufacturers_id) 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']) . "', '" . tep_db_input($product['products_thickness']) . "', '0', '" . (int)$product['products_tax_class_id'] . "', '" . (int)$product['manufacturers_id'] . "')");
          // Stop adapted for product thickness shipping module
          $dup_products_id = tep_db_insert_id();

           $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'] : '');
       }
       $products_image_pop = new upload('products_image_pop');
       $products_image_pop->set_destination(DIR_FS_CATALOG_IMAGES);
	if ($products_image_pop->parse() && $products_image_pop->save()) {
         $products_image_pop_name = $products_image_pop->filename;
       } else {
         $products_image_pop_name = (isset($HTTP_POST_VARS['products_previous_image_pop']) ? $HTTP_POST_VARS['products_previous_image_pop'] : '');
       }
       break;
       case 'add_images':
       $products_id = $HTTP_GET_VARS['pID'];
       $add_images_error = true;
       if ($medium_images = new upload('medium_images', DIR_FS_CATALOG_IMAGES)) {
         $add_images_error = false;
         $sql_data_array = array('products_id' => tep_db_prepare_input($products_id),
                                 'images_description' => tep_db_prepare_input($HTTP_POST_VARS['images_description']),
                                 'medium_images' => tep_db_prepare_input($medium_images->filename));
         if ($popup_images = new upload('popup_images', DIR_FS_CATALOG_IMAGES)) {
           $add_data_array = array('popup_images' => tep_db_prepare_input($popup_images->filename));
         } else {
           $add_data_array = array('popup_images' => tep_db_prepare_input($medium_images->filename));          
         }
         $sql_data_array = array_merge($sql_data_array, $add_data_array);
       }

       if ($add_images_error == false) {
         tep_db_perform(TABLE_ADDITIONAL_IMAGES, $sql_data_array);
       } else {
         $messageStack->add_session(ERROR_ADDITIONAL_IMAGE_IS_EMPTY, 'error');
       }
       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products_id));
       break;
     case 'del_images':
       $products_id = tep_db_prepare_input($HTTP_GET_VARS['pID']);
       if ( ($HTTP_GET_VARS['pID']) && (is_array($HTTP_POST_VARS['additional_images_id'])) ) {                       
         $additional_images_id[] = tep_db_prepare_input($HTTP_POST_VARS['additional_images_id']);
         for ($i=0; $i<sizeof($additional_images_id); $i++) {
//SECTION DELETE POPUP IMAGES
           $delimg_query = tep_db_query("select medium_images, popup_images from " . TABLE_ADDITIONAL_IMAGES . " where additional_images_id = '" . tep_db_input($additional_images_id[$i]) . "'");
           $delimg = tep_db_fetch_array($delimg_query);
           if (tep_not_null($delimg['medium_images']) && file_exists(DIR_FS_CATALOG_IMAGES.$delimg['medium_images']) )
               if (!unlink (DIR_FS_CATALOG_IMAGES.$delimg['medium_images']))
                  $messageStack->add_session(ERROR_DEL_IMG_XTRA.$delimg['medium_images'], 'error');
               else
                  $messageStack->add_session(SUCCESS_DEL_IMG_XTRA.$delimg['medium_images'], 'success');
           if (tep_not_null($delimg['popup_images']) && file_exists(DIR_FS_CATALOG_IMAGES.$delimg['popup_images']) )
               if (!unlink (DIR_FS_CATALOG_IMAGES.$delimg['popup_images']))
                  $messageStack->add_session(ERROR_DEL_IMG_XTRA.$delimg['popup_images'], 'error');
               else
                  $messageStack->add_session(SUCCESS_DEL_IMG_XTRA.$delimg['popup_images'], 'success');
//END OF SECTION DELETE POPUP IMAGES
           tep_db_query("delete from " . TABLE_ADDITIONAL_IMAGES . " where additional_images_id = '" . tep_db_input($additional_images_id[$i]) . "'");
         }
       }
       tep_redirect(tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products_id));
       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' => '',
                   // Start product thickness shipping module
                     'products_thickness' => '',
                   // Stop product thickness shipping module
                     'products_date_added' => '',
                     'products_last_modified' => '',
                     'products_date_available' => '',
                     'products_status' => '',
                     'products_tax_class_id' => '',
                     'manufacturers_id' => '');

   $pInfo = new objectInfo($parameters);

    if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {
    // Start adapted for product thickness shipping module
    $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_thickness, 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_tax_class_id, p.manufacturers_id 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 . "'");
    // Stop adapted for product thickness shipping module
    $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']);
   }

   $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;
   }
?>
<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);
}
//--></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']]) ? stripslashes($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']]) ? stripslashes($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 class="main"><?php echo TEXT_PRODUCTS_IMAGE_POP; ?></td>
           <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_file_field('products_image_pop') . '<br>' . tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . $pInfo->products_image_pop . tep_draw_hidden_field('products_previous_image_pop', $pInfo->products_image_pop); ?></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[' . $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']))); ?></td>
         </tr>
<?php
   }
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <!-- Start product thickness shipping module //-->
        <tr bgcolor="#ebebff">
          <td class="main"><?php echo TEXT_PRODUCTS_WEIGHT; ?></td>
          <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_weight', $pInfo->products_weight); ?></td>
        </tr>
        <tr bgcolor="#ebebff">
          <td class="main"><?php echo TEXT_PRODUCTS_THICKNESS; ?></td>
          <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_input_field('products_thickness', $pInfo->products_thickness); ?></td>
        </tr>
        <tr>
          <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
        </tr>
        <!-- Stop sproduct thickness shipping module //-->

       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td class="main" 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_image_submit('button_preview.gif', IMAGE_PREVIEW) . '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '')) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>
     </tr>
   </table></form>
<?php
 } elseif ($action == 'new_product_preview') {
   if (tep_not_null($HTTP_POST_VARS)) {
     $pInfo = new 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'];
    } else {
    // Start adapted for product thickness shipping module    
    $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_thickness, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id  from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = pd.products_id and p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "'");
    // Stop adapted for product thickness shipping module
    $product = tep_db_fetch_array($product_query);

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

   $form_action = (isset($HTTP_GET_VARS['pID'])) ? 'update_product' : 'insert_product';

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

   $languages = tep_get_languages();
   for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
     if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
       $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']);
     } else {
       $pInfo->products_name = tep_db_prepare_input($products_name[$languages[$i]['id']]);
       $pInfo->products_description = tep_db_prepare_input($products_description[$languages[$i]['id']]);
       $pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);
     }
?>
   <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(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . $pInfo->products_name; ?></td>
           <td class="pageHeading" align="right"><?php echo $currencies->format($pInfo->products_price); ?></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(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($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
     if (isset($HTTP_GET_VARS['origin'])) {
       $pos_params = strpos($HTTP_GET_VARS['origin'], '?', 0);
       if ($pos_params != false) {
         $back_url = substr($HTTP_GET_VARS['origin'], 0, $pos_params);
         $back_url_params = substr($HTTP_GET_VARS['origin'], $pos_params + 1);
       } else {
         $back_url = $HTTP_GET_VARS['origin'];
         $back_url_params = '';
       }
     } else {
       $back_url = FILENAME_CATEGORIES;
       $back_url_params = 'cPath=' . $cPath . '&pID=' . $pInfo->products_id;
     }
?>
     <tr>
       <td align="right"><?php echo '<a href="' . tep_href_link($back_url, $back_url_params, 'NONSSL') . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>
     </tr>
<?php
   } else {
?>
     <tr>
       <td align="right" class="smallText">
<?php
/* Re-Post all POST'ed variables */
     reset($HTTP_POST_VARS);
     while (list($key, $value) = each($HTTP_POST_VARS)) {
       if (!is_array($HTTP_POST_VARS[$key])) {
         echo tep_draw_hidden_field($key, htmlspecialchars(stripslashes($value)));
       }
     }
     $languages = tep_get_languages();
     for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
       echo tep_draw_hidden_field('products_name[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_name[$languages[$i]['id']])));
       echo tep_draw_hidden_field('products_description[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_description[$languages[$i]['id']])));
       echo tep_draw_hidden_field('products_url[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_url[$languages[$i]['id']])));
     }
     echo tep_draw_hidden_field('products_image', stripslashes($products_image_name));
     echo tep_draw_hidden_field('products_image_pop', stripslashes($products_image_pop_name));

     echo tep_image_submit('button_back.gif', IMAGE_BACK, 'name="edit"') . '  ';

     if (isset($HTTP_GET_VARS['pID'])) {
       echo tep_image_submit('button_update.gif', IMAGE_UPDATE);
     } else {
       echo tep_image_submit('button_insert.gif', IMAGE_INSERT);
     }
     echo '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '')) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>';
?></td>
     </tr>
   </table></form>
<?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', FILENAME_CATEGORIES, '', 'get');
   echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('search');
   echo '</form>';
?>
               </td>
             </tr>
             <tr>
               <td class="smallText" align="right">
<?php
   echo tep_draw_form('goto', FILENAME_CATEGORIES, '', 'get');
   echo HEADING_TITLE_GOTO . ' ' . tep_draw_pull_down_menu('cPath', tep_get_category_tree(), $current_category_id, 'onChange="this.form.submit();"');
   echo '</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; ?> </td>
             </tr>
<?php
   $categories_count = 0;
   $rows = 0;
   if (isset($HTTP_GET_VARS['search'])) {
     $search = tep_db_prepare_input($HTTP_GET_VARS['search']);

     $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified from " . TABLE_CATEGORIES . " c, " . TABLE_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.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified from " . TABLE_CATEGORIES . " c, " . TABLE_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($HTTP_GET_VARS['search'])) $cPath= $categories['parent_id'];

     if ((!isset($HTTP_GET_VARS['cID']) && !isset($HTTP_GET_VARS['pID']) || (isset($HTTP_GET_VARS['cID']) && ($HTTP_GET_VARS['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(FILENAME_CATEGORIES, 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(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '\'">' . "\n";
     }
?>
               <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, tep_get_path($categories['categories_id'])) . '">' . tep_image(DIR_WS_ICONS . 'folder.gif', ICON_FOLDER) . '</a> <b>' . $categories['categories_name'] . '</b>'; ?></td>
               <td class="dataTableContent" align="center"> </td>
               <td class="dataTableContent" align="right"><?php if (isset($cInfo) && is_object($cInfo) && ($categories['categories_id'] == $cInfo->categories_id) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $categories['categories_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }

   $products_count = 0;
   if (isset($HTTP_GET_VARS['search'])) {
     $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_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.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_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");
   }
   while ($products = tep_db_fetch_array($products_query)) {
     $products_count++;
     $rows++;

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

     if ( (!isset($HTTP_GET_VARS['pID']) && !isset($HTTP_GET_VARS['cID']) || (isset($HTTP_GET_VARS['pID']) && ($HTTP_GET_VARS['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 " . TABLE_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(FILENAME_CATEGORIES, '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(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '\'">' . "\n";
     }
?>
               <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a> ' . $products['products_name']; ?></td>
               <td class="dataTableContent" align="center">
<?php
     if ($products['products_status'] == '1') {
       echo tep_image(DIR_WS_IMAGES . 'icon_status_green.gif', IMAGE_ICON_STATUS_GREEN, 10, 10) . '  <a href="' . tep_href_link(FILENAME_CATEGORIES, 'action=setflag&flag=0&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image(DIR_WS_IMAGES . 'icon_status_red_light.gif', IMAGE_ICON_STATUS_RED_LIGHT, 10, 10) . '</a>';
     } else {
       echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'action=setflag&flag=1&pID=' . $products['products_id'] . '&cPath=' . $cPath) . '">' . tep_image(DIR_WS_IMAGES . 'icon_status_green_light.gif', IMAGE_ICON_STATUS_GREEN_LIGHT, 10, 10) . '</a>  ' . tep_image(DIR_WS_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(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }

   $cPath_back = '';
   if (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 . ' ' . $categories_count . '<br>' . TEXT_PRODUCTS . ' ' . $products_count; ?></td>
                   <td align="right" class="smallText"><?php if (sizeof($cPath_array) > 0) echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, $cPath_back . 'cID=' . $current_category_id) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a> '; if (!isset($HTTP_GET_VARS['search'])) echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&action=new_category') . '">' . tep_image_button('button_new_category.gif', IMAGE_NEW_CATEGORY) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&action=new_product') . '">' . tep_image_button('button_new_product.gif', IMAGE_NEW_PRODUCT) . '</a>'; ?> </td>
                 </tr>
               </table></td>
             </tr>
           </table></td>
<?php
   $heading = array();
   $contents = array();
   switch ($action) {
     case 'new_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_CATEGORY . '</b>');

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

       $category_inputs_string = '';
       $languages = tep_get_languages();
       for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $category_inputs_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
       }

       $contents[] = array('text' => '<br>' . TEXT_CATEGORIES_NAME . $category_inputs_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_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'edit_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_EDIT_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, '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 = '';
       $languages = tep_get_languages();
       for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $category_inputs_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
       }

       $contents[] = array('text' => '<br>' . TEXT_EDIT_CATEGORIES_NAME . $category_inputs_string);
       $contents[] = array('text' => '<br>' . tep_image(DIR_WS_CATALOG_IMAGES . $cInfo->categories_image, $cInfo->categories_name) . '<br>' . DIR_WS_CATALOG_IMAGES . '<br><b>' . $cInfo->categories_image . '</b>');
       $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_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'delete_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, '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><b>' . $cInfo->categories_name . '</b>');
       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_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'move_category':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_MOVE_CATEGORY . '</b>');

       $contents = array('form' => tep_draw_form('categories', FILENAME_CATEGORIES, '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_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'delete_product':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_PRODUCT . '</b>');

       $contents = array('form' => tep_draw_form('products', FILENAME_CATEGORIES, '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><b>' . $pInfo->products_name . '</b>');

       $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'] . ' > ';
         }
         $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) . ' ' . $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_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'move_product':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_MOVE_PRODUCT . '</b>');

       $contents = array('form' => tep_draw_form('products', FILENAME_CATEGORIES, '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><b>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</b>');
       $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_image_submit('button_move.gif', IMAGE_MOVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
     case 'copy_to':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_COPY_TO . '</b>');

       $contents = array('form' => tep_draw_form('copy_to', FILENAME_CATEGORIES, '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><b>' . tep_output_generated_category_path($pInfo->products_id, 'product') . '</b>');
       $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_image_submit('button_copy.gif', IMAGE_COPY) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
       break;
       case 'new_images':
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_IMAGES . '</b>');   

       $contents = array('form' => tep_draw_form('new_images', FILENAME_CATEGORIES, 'action=add_images&cPath=' . $cPath . '&pID=' . $HTTP_GET_VARS['pID'], 'post', 'enctype="multipart/form-data"')); 
       $contents[] = array('text' => TEXT_NEW_IMAGES_INTRO);      
       $contents[] = array('text' => '<br>' . TEXT_PRODUCTS_IMAGES_DESC . '<br>' . tep_draw_input_field('images_description')); 
       $newimg_resol = (DISPLAY_IMAGE_WIDTH!=''&&DISPLAY_IMAGE_HEIGHT!='')?' '.DISPLAY_IMAGE_WIDTH .'x'. DISPLAY_IMAGE_HEIGHT .' px':'';
       $newpop_resol = (POPUP_IMAGE_WIDTH!=''&&POPUP_IMAGE_HEIGHT!='')?' '.POPUP_IMAGE_WIDTH .'x'. POPUP_IMAGE_HEIGHT .' px':'';
       $contents[] = array('text' => '<br>' . TEXT_PRODUCTS_IMAGES_NEW . $newimg_resol . '<br>' . tep_draw_file_field('medium_images'));
       $contents[] = array('text' => '<br>' . TEXT_PRODUCTS_IMAGES_NEWPOP . $newpop_resol . '<br>' . tep_draw_file_field('popup_images'));
       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_save.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $HTTP_GET_VARS['pID']) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');    
       break;                                                                                   
     case 'delete_images': 
       $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_IMAGES . '</b>');             
       $contents = array('form' => tep_draw_form('delete_images', FILENAME_CATEGORIES, 'action=del_images&cPath=' . $cPath . '&pID=' . $HTTP_GET_VARS['pID'])); 
       $contents[] = array('text' => TEXT_DEL_IMAGES_INTRO);      

       $images_product = tep_db_query("SELECT additional_images_id, images_description, medium_images FROM " . TABLE_ADDITIONAL_IMAGES . " where products_id = '" . $HTTP_GET_VARS['pID'] . "'"); 
       if (!tep_db_num_rows($images_product)) {                                                                                                                                                                                                                                                        
         $contents[] = array('align' => 'center', 'text' => '<br><font color="red">No Additional Images!</font>');   
         $contents[] = array('align' => 'center', 'text' => '<br><a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $HTTP_GET_VARS['pID']) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');  
       } else {                                                                                                                                                                                                                                                                                        
         while ($new_images = tep_db_fetch_array($images_product)) {                                                                                                                                                                                                                                   
           $contents[] = array('text' => ' ' . tep_draw_checkbox_field('additional_images_id[]', $new_images['additional_images_id'], true) . $new_images['images_description'] . ' (' . $new_images['medium_images'] . ')');    
         }
         $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_SAVE) . ' <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $HTTP_GET_VARS['pID']) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');  
       }                                                                                                                                                                                                                                                                                               
       break;
     default:
       if ($rows > 0) {
         if (isset($cInfo) && is_object($cInfo)) { // category info box contents
           $heading[] = array('text' => '<b>' . $cInfo->categories_name . '</b>');

           $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
           $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' => '<b>' . tep_get_products_name($pInfo->products_id, $languages_id) . '</b>');

           $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=new_product') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=delete_product') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=move_product') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=copy_to') . '">' . tep_image_button('button_copy_to.gif', IMAGE_COPY_TO) . '</a>');
           $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) . '%');
    $contents[] = array('text' => '<br><b>' . TEXT_INFO_HEADING_NEW_IMAGES . '</b><hr>');

    $images_product = tep_db_query("SELECT additional_images_id, images_description, medium_images FROM " . TABLE_ADDITIONAL_IMAGES . " where products_id = '" . $pInfo->products_id . "'");
           if (!tep_db_num_rows($images_product)) {
             $contents[] = array('align' => 'center', 'text' => '<font color="red">No Additional Images!</font><hr>');
           } else {
             while ($new_images = tep_db_fetch_array($images_product)) {
               $contents[] = array('text' => ' ' . tep_image(DIR_WS_CATALOG_IMAGES . $new_images['medium_images'], $new_images['images_description'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'align="absmiddle"') . '<br><br> (' . $new_images['medium_images'] . ')<hr>');
             }
           }
           $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=new_images') . '">' . tep_image_button('button_images_add.gif', IMAGE_ADDITIONAL_NEW) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $pInfo->products_id . '&action=delete_images') . '">' . tep_image_button('button_images_del.gif', IMAGE_ADDITIONAL_DEL) . '</a>');
         }
       } else { // create category/product info
         $heading[] = array('text' => '<b>' . EMPTY_CATEGORY . '</b>');

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

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

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

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

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Edited by JSR

Share this post


Link to post
Share on other sites

-_- Modified the post 3 times, but the codebox is not showing correctly! Sorry, people!!!

Share this post


Link to post
Share on other sites
-_- Modified the post 3 times, but the codebox is not showing correctly! Sorry, people!!!

The error would be more helpful in locating the problem then your page of code.

and, sorry guy, completing the file merge is up to you. :thumbsup: support means to me offering guiding advice and correcting the contribution package when needed based on feedback. ;) It would just be insane for me to offer to complete everyone's projects for them. :D

Share this post


Link to post
Share on other sites
The error would be more helpful in locating the problem then your page of code.

and, sorry guy, completing the file merge is up to you. :thumbsup: support means to me offering guiding advice and correcting the contribution package when needed based on feedback. ;) It would just be insane for me to offer to complete everyone's projects for them. :D

Hm, ok. I already explained what the error is.

I would like to know where these conflicting messages are coming from, it might be nice if some one knows what this generally means in osc.

First time I encounter this.

The error is that I get both the warning and the succes message in admin upon upload of AI.

 

And btw I do not feel that by eximaning a the code containing part of the AI contrib would mean that you're completing my osc project for me, but I do understand that you're time is as valueble as mine. You could have simply said that you don't have the time to do this instead of implying that I'm trying to get you to complete my entire osc shop for me. I do appreciate the guiding advice you gave me so far, thank you!

And fiy, I'm not a "guy" ;)

 

Best Regards,

Chanel

Share this post


Link to post
Share on other sites

Hello, I'm looking for some help with AI. First of all, great contrib, it's worked very well for me so far until this last week. For some reason when my client uploads images now they are suddenly coming out pixelated, in the medium and thumb size, but not all of them. For most, the main pics medium size is clear, but the additional images uploaded are pixelated. When clicked on, the full sized pics are always clear. On a few even the main pic is pixelated, although not in full size. Here is what I mean: http://www.shoplocust.com/oscommerce/catal...35e6d67e0ee927a

You can also look at the "What's New" listings and see how some work and some don't: http://www.shoplocust.com/oscommerce/catal...35e6d67e0ee927a

I've tried uploading new additional images myself, and the same thing happens. Even looking at it in the admin panel, (Catalog, Categories/Products), in the listing the AI medium image shown is pixelated. I'm not sure why this is happening out of the blue. I did switch hosts about a month ago, but many of the products uploaded since then have worked fine. I have done nothing new to the code at all.

 

Any help would be much appreciated, and I think it's amazing that not only are people willing to create this contribs, but they are willing to offer support years later! :thumbsup:

Share this post


Link to post
Share on other sites
The error is that I get both the warning and the succes message in admin upon upload of AI.

that's not an error either. that is a description of an error. >_< ;)

 

You could have simply said that you don't have the time to do this instead of implying that I'm trying to get you to complete my entire osc shop for me.

:rolleyes:

Oh my, I could have, but it wouldn't be the truth. If there is a specific area you are having trouble with, maybe I can help.

 

The board can't handle posting entire files, in my humble opinion, that's by design. As a point of reference, Harold requires a donation to allow file attachments to our accounts. My assumption is that is where he draws the line on volunteering this fabulous resource for all of us. But again, just my assumption, don't want to put words in his mouth. :)

Share this post


Link to post
Share on other sites
Hello, I'm looking for some help with AI. First of all, great contrib, it's worked very well for me so far until this last week. For some reason when my client uploads images now they are suddenly coming out pixelated, in the medium and thumb size, but not all of them. For most, the main pics medium size is clear, but the additional images uploaded are pixelated. When clicked on, the full sized pics are always clear. On a few even the main pic is pixelated, although not in full size. Here is what I mean: http://www.shoplocust.com/oscommerce/catal...35e6d67e0ee927a

You can also look at the "What's New" listings and see how some work and some don't: http://www.shoplocust.com/oscommerce/catal...35e6d67e0ee927a

I've tried uploading new additional images myself, and the same thing happens. Even looking at it in the admin panel, (Catalog, Categories/Products), in the listing the AI medium image shown is pixelated. I'm not sure why this is happening out of the blue. I did switch hosts about a month ago, but many of the products uploaded since then have worked fine. I have done nothing new to the code at all.

 

Any help would be much appreciated, and I think it's amazing that not only are people willing to create this contribs, but they are willing to offer support years later! :thumbsup:

I believe that is a setting/bug issue. If you look at the AI settings in the admin configuration, there are a couple-few settings that say something like "restrict image size". If AI is resizing the images for you when you upload them in the admin, those settings should be set to false. AI will still use the image sizes defined in the configuration images area to resize them, but when displaying on the front end, skips the HTML image width/height tags which is causing that blurry image.

 

In addition to that, consider these changes...

 

in the product list files (/catalog/includes/modules/product_listing.php, and anywhere they are used), find:

SMALL_IMAGE_WIDTH

replace with:

(ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_WIDTH:'')

find:

SMALL_IMAGE_HEIGHT

replace with:

(ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_HEIGHT:'')

Share this post


Link to post
Share on other sites
that's not an error either. that is a description of an error. >_< ;)

 

 

:rolleyes:

Oh my, I could have, but it wouldn't be the truth. If there is a specific area you are having trouble with, maybe I can help.

 

The board can't handle posting entire files, in my humble opinion, that's by design. As a point of reference, Harold requires a donation to allow file attachments to our accounts. My assumption is that is where he draws the line on volunteering this fabulous resource for all of us. But again, just my assumption, don't want to put words in his mouth. :)

Thanks for the info! Problem with the actual error as mentioned in my first post (images not uploading correclty) is already fixed.

I asume that if the conflicting messages are not an error, I need not worry about it too much. But that's just my assumption. :-"

Unless ofcourse it would cause actual errors because I did not understand the description of the error. :lol:

Oh well, I'll cross that bridge if/when I get there.

Share this post


Link to post
Share on other sites

surfalot, you are awesome!! I'm so impressed with the support you're providing for this contrib. Your advice was right on... I changed the 3 "restrict image size" settings in the AI admin config, changed the code you provided in product_listing.php, new_products.php, and products_new.php, and it works perfectly! I'm still not sure why it suddenly stopped working correctly before, but your help fixed everything. Thanks again! :thumbsup:

Share this post


Link to post
Share on other sites
Thanks for the info! Problem with the actual error as mentioned in my first post (images not uploading correclty) is already fixed.

I asume that if the conflicting messages are not an error, I need not worry about it too much. But that's just my assumption.

Unless ofcourse it would cause actual errors because I did not understand the description of the error.

Oh well, I'll cross that bridge if/when I get there.

 

if you would post the actual error, I can help clarify it. :thumbsup:

Edited by surfalot

Share this post


Link to post
Share on other sites

Hey guys,

 

I need to add multiple image support to my site. I looked at this mod and I had a hard time integrating it with the current osCommerce code. I just installed the latest version of osCommerce so all of my .php files are the latest and greatest. Some of the modifications this module calls for references code that is different or doesn't exist. Is there a more updated mod or am I doing something wrong?

 

Thanks for the help.

 

-- Chad

Share this post


Link to post
Share on other sites

I just finished integrating the Additional Images mod into my site. However, my admin login in broken now so I can't get in to test it. When I navigate to catalog/admin/ The page tries to forward to catalog/admin/FILENAME_LOGIN which does not exist and I get a 404. Has anyone else had this problem?

 

Thanks,

 

-- Chad

Share this post


Link to post
Share on other sites
I just finished integrating the Additional Images mod into my site. However, my admin login in broken now so I can't get in to test it. When I navigate to catalog/admin/ The page tries to forward to catalog/admin/FILENAME_LOGIN which does not exist and I get a 404. Has anyone else had this problem?

 

Thanks,

 

-- Chad

I think you have overwritten the /admin/includes/filenames.php file with the contribution's file. compare that file with the original file from the osCommerce shop and find the missing line. It will include the FILENAME_LOGIN definition you are missing.

Share this post


Link to post
Share on other sites

hi everbody

 

i am bad english sorry.

 

this problem --->

 

i want

 

product_info.php --- 1s.jpg ( 80x80 )

product_listing_col.php -- 1m.jpg (200x 200 )

 

this support , i am searching but not answer :(

 

my modify (5 hours night 01.00 / morning 06.00 :D )

 

this code replace :

 

product_listing_col.php -------- case 'PRODUCT_LIST_IMAGE':

 

$lc_text_old = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';

 

$cut_end=substr($listing[$x]['products_image'],0,-5);

 

$newimg_med = $cut_end . 'm.jpg';

 

$lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $newimg_med , $listing[$x]['products_name'], 200, 200) . '</a> ';

 

thanx everbody , very very thanx surfalot,great contrib.

 

murat

Edited by reel

Share this post


Link to post
Share on other sites

Hi,one week that I try to install the right "add images" for my shop...but always errors

 

With This contrib. I try first the last package avilable but always error,Today I try old version V1-13 and ...seems to works!!!

 

Only one thing additional images seem to be not uploaded,infact the additional images of products aren't showed...only "red X"

 

How I can fix it???

Share this post


Link to post
Share on other sites
Hi,one week that I try to install the right "add images" for my shop...but always errors

 

With This contrib. I try first the last package avilable but always error,Today I try old version V1-13 and ...seems to works!!!

 

Only one thing additional images seem to be not uploaded,infact the additional images of products aren't showed...only "red X"

 

How I can fix it???

 

Hi, I had the same thing happen and I had read somewhere that if the file name is too long it can't accept it. Try when you are in a product and click to add image to delete all info except leave the file as "products/" in the upload location box and see if it will take it then.

 

I hope that helps!

Share this post


Link to post
Share on other sites
hi everbody

 

i am bad english sorry.

 

this problem --->

 

i want

 

product_info.php --- 1s.jpg ( 80x80 )

product_listing_col.php -- 1m.jpg (200x 200 )

 

this support , i am searching but not answer :(

 

my modify (5 hours night 01.00 / morning 06.00 :D )

 

this code replace :

 

product_listing_col.php -------- case 'PRODUCT_LIST_IMAGE':

 

$lc_text_old = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';

 

$cut_end=substr($listing[$x]['products_image'],0,-5);

 

$newimg_med = $cut_end . 'm.jpg';

 

$lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $newimg_med , $listing[$x]['products_name'], 200, 200) . '</a> ';

 

thanx everbody , very very thanx surfalot,great contrib.

 

murat

It might have been easier to change the image size in the admin -> configuration -> images.

Share this post


Link to post
Share on other sites

hi,

 

great contribution! i hope to resolve the errors and be able to use this contribution...

 

i have installed all the new files for this contribution (under section A. New Files in install-readme), and also compared and installed the modified files (under section C. Files Modification in install-readme). As for section B, "Database Installation", I opened a browser and typed http://www.xxxx......catalog/admin/additio...s_configure.php and got these errors below. I have not done anything yet on this page, including "run configuration utility".

 

Should I resolve the errors before running the configuration utility?

 

I hope someone can help me with these errors:

 

Notice: Use of undefined constant tep_get_parent_category - assumed 'tep_get_parent_category' in .....\catalog\admin\includes\functions\general.php on line 1357

 

Notice: Use of undefined constant tep_catname_to_dir - assumed 'tep_catname_to_dir' in .....\catalog\admin\includes\functions\general.php on line 1371

 

Notice: Use of undefined constant version_compare_replacement_sub - assumed 'version_compare_replacement_sub' in .....\catalog\admin\includes\functions\general.php on line 1380

 

Notice: Use of undefined constant version_compare_replacement - assumed 'version_compare_replacement' in .....\catalog\admin\includes\functions\general.php on line 1441

 

 

I am guessing that the errors are related to the general.php file, and lines 1357 to 1450 of the general.php file is as follows:

 

if ( !function_exists(tep_get_parent_category) ) {
 function tep_get_parent_category($cat) {
   $category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cat . "' limit 1");
   if ( $category = tep_db_fetch_array($category_query) ) {
     if ($category['parent_id'] != 0) {
       return $category['parent_id'];
     } else {
       return false;
     }
   }
   return false;
 }
}

if ( !function_exists(tep_catname_to_dir) ) {
 function tep_catname_to_dir($catname) {
   return strtolower(str_replace(' ','-',preg_replace("/[^a-zA-Z0-9\s]/", "", $catname)));
 }
}

 // version_compare_replacement & version_compare_replacement_sub 
 // based on functions found in phpThumb() by James Heinrich <info@silisoftware.com>
 // released under GNU GENERAL PUBLIC LICENSE Version 2, June 1991
if (!function_exists(version_compare_replacement_sub)) {
 function version_compare_replacement_sub($version1, $version2, $operator='') {
   // If you specify the third optional operator argument, you can test for a particular relationship.
   // The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.
   // Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.

   // If a part contains special version strings these are handled in the following order: dev < (alpha = a) < (beta = B) < RC < pl
   static $versiontype_lookup = array();
   if (empty($versiontype_lookup)) {
       $versiontype_lookup['dev']   = 10001;
       $versiontype_lookup['a']     = 10002;
       $versiontype_lookup['alpha'] = 10002;
       $versiontype_lookup['b']     = 10003;
       $versiontype_lookup['beta']  = 10003;
       $versiontype_lookup['RC']    = 10004;
       $versiontype_lookup['pl']    = 10005;
   }
   if (isset($versiontype_lookup[$version1])) {
       $version1 = $versiontype_lookup[$version1];
   }
   if (isset($versiontype_lookup[$version2])) {
       $version2 = $versiontype_lookup[$version2];
   }

   switch ($operator) {
       case '<':
       case 'lt':
           return intval($version1 < $version2);
           break;
       case '<=':
       case 'le':
           return intval($version1 <= $version2);
           break;
       case '>':
       case 'gt':
           return intval($version1 > $version2);
           break;
       case '>=':
       case 'ge':
           return intval($version1 >= $version2);
           break;
       case '==':
       case '=':
       case 'eq':
           return intval($version1 == $version2);
           break;
       case '!=':
       case '<>':
       case 'ne':
           return intval($version1 != $version2);
           break;
   }
   if ($version1 == $version2) {
       return 0;
   } elseif ($version1 < $version2) {
       return -1;
   }
   return 1;
 }
}

if (!function_exists(version_compare_replacement)) {
 function version_compare_replacement($version1, $version2, $operator='') {
   if (function_exists('version_compare')) {
       // built into PHP v4.1.0+
       return version_compare($version1, $version2, $operator);
   }

   // The function first replaces _, - and + with a dot . in the version strings
   $version1 = strtr($version1, '_-+', '...');
   $version2 = strtr($version2, '_-+', '...');

 

pls help....

Share this post


Link to post
Share on other sites
hi,

 

great contribution! i hope to resolve the errors and be able to use this contribution...

 

i have installed all the new files for this contribution (under section A. New Files in install-readme), and also compared and installed the modified files (under section C. Files Modification in install-readme). As for section B, "Database Installation", I opened a browser and typed http://www.xxxx......catalog/admin/additio...s_configure.php and got these errors below. I have not done anything yet on this page, including "run configuration utility".

 

Should I resolve the errors before running the configuration utility?

 

I hope someone can help me with these errors:

 

Notice: Use of undefined constant tep_get_parent_category - assumed 'tep_get_parent_category' in .....\catalog\admin\includes\functions\general.php on line 1357

 

Notice: Use of undefined constant tep_catname_to_dir - assumed 'tep_catname_to_dir' in .....\catalog\admin\includes\functions\general.php on line 1371

 

Notice: Use of undefined constant version_compare_replacement_sub - assumed 'version_compare_replacement_sub' in .....\catalog\admin\includes\functions\general.php on line 1380

 

Notice: Use of undefined constant version_compare_replacement - assumed 'version_compare_replacement' in .....\catalog\admin\includes\functions\general.php on line 1441

 

 

I am guessing that the errors are related to the general.php file, and lines 1357 to 1450 of the general.php file is as follows:

 

if ( !function_exists(tep_get_parent_category) ) {
 function tep_get_parent_category($cat) {
   $category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cat . "' limit 1");
   if ( $category = tep_db_fetch_array($category_query) ) {
     if ($category['parent_id'] != 0) {
       return $category['parent_id'];
     } else {
       return false;
     }
   }
   return false;
 }
}

if ( !function_exists(tep_catname_to_dir) ) {
 function tep_catname_to_dir($catname) {
   return strtolower(str_replace(' ','-',preg_replace("/[^a-zA-Z0-9\s]/", "", $catname)));
 }
}

 // version_compare_replacement & version_compare_replacement_sub 
 // based on functions found in phpThumb() by James Heinrich <info@silisoftware.com>
 // released under GNU GENERAL PUBLIC LICENSE Version 2, June 1991
if (!function_exists(version_compare_replacement_sub)) {
 function version_compare_replacement_sub($version1, $version2, $operator='') {
   // If you specify the third optional operator argument, you can test for a particular relationship.
   // The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.
   // Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.

   // If a part contains special version strings these are handled in the following order: dev < (alpha = a) < (beta = B) < RC < pl
   static $versiontype_lookup = array();
   if (empty($versiontype_lookup)) {
       $versiontype_lookup['dev']   = 10001;
       $versiontype_lookup['a']     = 10002;
       $versiontype_lookup['alpha'] = 10002;
       $versiontype_lookup['b']     = 10003;
       $versiontype_lookup['beta']  = 10003;
       $versiontype_lookup['RC']    = 10004;
       $versiontype_lookup['pl']    = 10005;
   }
   if (isset($versiontype_lookup[$version1])) {
       $version1 = $versiontype_lookup[$version1];
   }
   if (isset($versiontype_lookup[$version2])) {
       $version2 = $versiontype_lookup[$version2];
   }

   switch ($operator) {
       case '<':
       case 'lt':
           return intval($version1 < $version2);
           break;
       case '<=':
       case 'le':
           return intval($version1 <= $version2);
           break;
       case '>':
       case 'gt':
           return intval($version1 > $version2);
           break;
       case '>=':
       case 'ge':
           return intval($version1 >= $version2);
           break;
       case '==':
       case '=':
       case 'eq':
           return intval($version1 == $version2);
           break;
       case '!=':
       case '<>':
       case 'ne':
           return intval($version1 != $version2);
           break;
   }
   if ($version1 == $version2) {
       return 0;
   } elseif ($version1 < $version2) {
       return -1;
   }
   return 1;
 }
}

if (!function_exists(version_compare_replacement)) {
 function version_compare_replacement($version1, $version2, $operator='') {
   if (function_exists('version_compare')) {
       // built into PHP v4.1.0+
       return version_compare($version1, $version2, $operator);
   }

   // The function first replaces _, - and + with a dot . in the version strings
   $version1 = strtr($version1, '_-+', '...');
   $version2 = strtr($version2, '_-+', '...');

 

pls help....

change any

!function_exists(tep_get_parent_category)

lines to this:

!function_exists('tep_get_parent_category')

 

and

!function_exists(version_compare_replacement_sub)

to

!function_exists('version_compare_replacement_sub')

 

etc...

Edited by surfalot

Share this post


Link to post
Share on other sites
change any
$fmt = $address_format['format'];
   eval("\$address = \"$fmt\";");

 

sorry for being very ignorant on php... please help...

Share this post


Link to post
Share on other sites
thanks so much. but got new error..

 

i have amended the 4 lines accordingly. now i cant access the administration screen, and instead the browser shows this:

 

Parse error: parse error, unexpected T_VARIABLE in .....\catalog\admin\includes\functions\general.php on line 405

 

line 404-405 is this:

$fmt = $address_format['format'];
   eval("\$address = \"$fmt\";");

 

sorry for being very ignorant on php... please help...

that wasn't anything this contrib added was it?

should be:

$fmt = $address_format['format'];
   eval("$address = $fmt;");

couldn't guess what someone would want to do that since this would work the same:

$fmt = $address_format['format'];
$address = $fmt;

Share this post


Link to post
Share on other sites
that wasn't anything this contrib added was it?

should be:

$fmt = $address_format['format'];
   eval("$address = $fmt;");

couldn't guess what someone would want to do that since this would work the same:

$fmt = $address_format['format'];
$address = $fmt;

 

thanks... and now this error... hope i'm inching closer to installing this module successfully...

 

at ...../catalog/admin browser screen, i get this error:

if ($image_subdirectory == '/' || $image_subdirectory == '\') { $image_subdirectory = ''; }  // in case the user mistakenly entered only a single /
   if ($image_subdirectory != '') {
     $image_subdirectory = preg_replace('/\/', '/', $image_subdirectory); // in case back-slashes used, flip 'em around
     $image_subdirectory = preg_replace('///+/', '/', $image_subdirectory); // change any multiple slashes to a single /
     if (strpos($image_subdirectory, '/') === 0) { 
       $image_subdirectory = substr($image_subdirectory, 1); // strip any leading slash
     }
     if (substr($image_subdirectory, -1, 1) == '/') { 
       $image_subdirectory = substr($image_subdirectory, 0, -1); // strip any trailing slash
     }
     $dirs =  explode('/',$image_subdirectory);

 

what do i amend now?... pls help...

Share this post


Link to post
Share on other sites
that wasn't anything this contrib added was it?

should be:

$fmt = $address_format['format'];
   eval("$address = $fmt;");

couldn't guess what someone would want to do that since this would work the same:

$fmt = $address_format['format'];
$address = $fmt;

 

thanks... and now this error... hope i'm inching closer to installing this module successfully...

 

at ...../catalog/admin browser screen, i get this error:

 

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ....\catalog\admin\includes\functions\general.php on line 1499

 

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in ....\catalog\admin\includes\functions\general.php on line 1499

 

 

Lines 1499 to 1509 are:

 

if ($image_subdirectory == '/' || $image_subdirectory == '\') { $image_subdirectory = ''; }  // in case the user mistakenly entered only a single /
   if ($image_subdirectory != '') {
     $image_subdirectory = preg_replace('/\/', '/', $image_subdirectory); // in case back-slashes used, flip 'em around
     $image_subdirectory = preg_replace('///+/', '/', $image_subdirectory); // change any multiple slashes to a single /
     if (strpos($image_subdirectory, '/') === 0) { 
       $image_subdirectory = substr($image_subdirectory, 1); // strip any leading slash
     }
     if (substr($image_subdirectory, -1, 1) == '/') { 
       $image_subdirectory = substr($image_subdirectory, 0, -1); // strip any trailing slash
     }
     $dirs =  explode('/',$image_subdirectory);

 

what do i amend now? pls help...

Edited by olive12b

Share this post


Link to post
Share on other sites
thanks... and now this error... hope i'm inching closer to installing this module successfully...

 

at ...../catalog/admin browser screen, i get this error:

 

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ....\catalog\admin\includes\functions\general.php on line 1499

 

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in ....\catalog\admin\includes\functions\general.php on line 1499

 

 

Lines 1499 to 1509 are:

 

if ($image_subdirectory == '/' || $image_subdirectory == '\') { $image_subdirectory = ''; }  // in case the user mistakenly entered only a single /
   if ($image_subdirectory != '') {
     $image_subdirectory = preg_replace('/\/', '/', $image_subdirectory); // in case back-slashes used, flip 'em around
     $image_subdirectory = preg_replace('///+/', '/', $image_subdirectory); // change any multiple slashes to a single /
     if (strpos($image_subdirectory, '/') === 0) { 
       $image_subdirectory = substr($image_subdirectory, 1); // strip any leading slash
     }
     if (substr($image_subdirectory, -1, 1) == '/') { 
       $image_subdirectory = substr($image_subdirectory, 0, -1); // strip any trailing slash
     }
     $dirs =  explode('/',$image_subdirectory);

 

what do i amend now? pls help...

that first line should read

 

	if ($image_subdirectory == '/' || $image_subdirectory == '\\') { $image_subdirectory = ''; }  // in case the user mistakenly entered only a single /

what did you use to edit and upload the changes? whatever it is, is changing the code

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×