[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 options_name_manager.php

Zen Cart 源代码 options_name_manager.php




下载文件

文件名: options_name_manager.php
文件类型: PHP文件
文件大小: 62.71 KiB
MD5: d087b5dca909059881ef9c2c886e9770

options_name_manager.php - 关闭高亮
  1. <?php
  2. /**
  3.  * @package admin
  4.  * @copyright Copyright 2003-2010 Zen Cart Development Team
  5.  * @copyright Portions Copyright 2003 osCommerce
  6.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  7.  * @version $Id: options_name_manager.php 17902 2010-10-09 21:15:03Z wilt $
  8.  */
  9.  
  10.   require('includes/application_top.php');
  11.   $languages = zen_get_languages();
  12.  
  13.   require(DIR_WS_CLASSES . 'currencies.php');
  14.   $currencies = new currencies();
  15.  
  16.   $action = (isset($_GET['action']) ? $_GET['action'] : '');
  17.  
  18. // display or hide copier features
  19.   if (!isset($_SESSION['option_names_values_copier'])) {
  20.     $_SESSION['option_names_values_copier'] = OPTION_NAMES_VALUES_GLOBAL_STATUS;
  21.   }
  22.   if (!isset($_GET['reset_option_names_values_copier'])) {
  23.     $reset_option_names_values_copier = $_SESSION['option_names_values_copier'];
  24.   }
  25.  
  26. /*
  27.   if (!isset($_GET['option_order_by'])) {
  28.     $_GET['option_order_by'] = 'products_options_id';
  29.   }
  30. */
  31.     if (isset($_GET['option_order_by'])) {
  32.       $option_order_by = $_GET['option_order_by'];
  33.     } else {
  34.       $option_order_by = 'products_options_id';
  35.     }
  36.  
  37.   if (zen_not_null($action)) {
  38.     $_SESSION['page_info'] = '';
  39.     if (isset($_GET['option_page'])) $_SESSION['page_info'] .= 'option_page=' . $_GET['option_page'] . '&';
  40.     if (isset($_GET['value_page'])) $_SESSION['page_info'] .= 'value_page=' . $_GET['value_page'] . '&';
  41.     if (isset($_GET['attribute_page'])) $_SESSION['page_info'] .= 'attribute_page=' . $_GET['attribute_page'] . '&';
  42.     if (zen_not_null($_SESSION['page_info'])) {
  43.       $_SESSION['page_info'] = substr($_SESSION['page_info'], 0, -1);
  44.     }
  45.  
  46.     switch ($action) {
  47.       case 'set_option_names_values_copier':
  48.         $_SESSION['option_names_values_copier'] = $_GET['reset_option_names_values_copier'];
  49.         $action='';
  50.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER));
  51.         break;
  52.       case 'add_product_options':
  53.         //clr 030714 update to add option type to products_option.
  54.         $products_options_id = zen_db_prepare_input($_POST['products_options_id']);
  55.         $option_name_array = $_POST['option_name'];
  56.         $products_options_sort_order = $_POST['products_options_sort_order'];
  57.         $option_type = $_POST['option_type'];
  58.         $products_options_images_per_row = $_POST['products_options_images_per_row'];
  59.         $products_options_images_style = $_POST['products_options_images_style'];
  60.         $products_options_rows = $_POST['products_options_rows'];
  61.  
  62.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  63.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  64.  
  65.           $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS . "
  66.                      (products_options_id, products_options_name, language_id, products_options_sort_order, products_options_type, products_options_images_per_row, products_options_images_style, products_options_rows)
  67.                      values ('" . (int)$products_options_id . "',
  68.                              '" . zen_db_input($option_name) . "',
  69.                              '" . (int)$languages[$i]['id'] . "',
  70.                              '" . (int)$products_options_sort_order[$languages[$i]['id']] . "',
  71.                              '" . (int)zen_db_input($option_type) . "',
  72.                              '" . (int)zen_db_input($products_options_images_per_row) . "',
  73.                              '" . (int)zen_db_input($products_options_images_style) . "',
  74.                              '" . (int)(($products_options_rows <= 1 and $option_type == PRODUCTS_OPTIONS_TYPE_TEXT) ? 1 : zen_db_input($products_options_rows)) . "'
  75.                              )");
  76.         }
  77.  
  78. // iii 030811 added:  For TEXT and FILE option types, automatically add
  79. // PRODUCTS_OPTIONS_VALUE_TEXT to the TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS
  80.         switch ($option_type) {
  81.           case PRODUCTS_OPTIONS_TYPE_TEXT:
  82.           case PRODUCTS_OPTIONS_TYPE_FILE:
  83.             $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . "
  84.                        (products_options_values_id, products_options_id)
  85.                        values ('" . PRODUCTS_OPTIONS_VALUES_TEXT_ID .  "',
  86.                                '" .  (int)$products_options_id .  "')");
  87.             break;
  88.         }
  89.  
  90. // alert if possible duplicate
  91.         $duplicate_option= '';
  92.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  93.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  94.  
  95.           if (!empty($option_name)) {
  96.             $check= $db->Execute("select count(products_options_name) as count
  97.                                  from " . TABLE_PRODUCTS_OPTIONS . "
  98.                                  where language_id= '" . $languages[$i]['id'] . "'
  99.                                  and products_options_name='" . zen_db_input($option_name) . "'");
  100.             if ($check->fields['count'] > 1) {
  101. // BOM by zen-cart.cn
  102.               $duplicate_option .= ' <b>' . GBcase(zen_get_language_name($languages[$i]['id']),"upper") . '</b> : ' . $option_name;
  103. // EOM by zen-cart.cn
  104.             }
  105.           }
  106.         }
  107.         if (!empty($duplicate_option)) {
  108.           $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
  109.         }
  110.  
  111.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  112.         break;
  113.       case 'update_option_name':
  114.         //clr 030714 update to add option type to products_option.
  115.         $option_name_array = $_POST['option_name'];
  116.         $option_type = $_POST['option_type'];
  117.         $option_id = zen_db_prepare_input($_POST['option_id']);
  118.         $products_options_sort_order_array = $_POST['products_options_sort_order'];
  119.  
  120.         $products_options_length_array = $_POST['products_options_length'];
  121.         $products_options_comment_array = $_POST['products_options_comment'];
  122.         $products_options_size_array = $_POST['products_options_size'];
  123.  
  124.         $products_options_images_per_row_array = $_POST['products_options_images_per_row'];
  125.         $products_options_images_style_array = $_POST['products_options_images_style'];
  126.         $products_options_rows_array = $_POST['products_options_rows'];
  127.  
  128.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  129.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  130.           $products_options_sort_order = (int)zen_db_prepare_input($products_options_sort_order_array[$languages[$i]['id']]);
  131.  
  132.  
  133.           $products_options_length = zen_db_prepare_input($products_options_length_array[$languages[$i]['id']]);
  134.           $products_options_comment = zen_db_prepare_input($products_options_comment_array[$languages[$i]['id']]);
  135.           $products_options_size = zen_db_prepare_input($products_options_size_array[$languages[$i]['id']]);
  136.  
  137.           $products_options_images_per_row = (int)zen_db_prepare_input($products_options_images_per_row_array[$languages[$i]['id']]);
  138.           $products_options_images_style = (int)zen_db_prepare_input($products_options_images_style_array[$languages[$i]['id']]);
  139.           $products_options_rows = (int)zen_db_prepare_input($products_options_rows_array[$languages[$i]['id']]);
  140.  
  141. //          zen_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_name = '" . zen_db_input($option_name) . "', products_options_type = '" . $option_type . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'");
  142.  
  143.           $db->Execute("update " . TABLE_PRODUCTS_OPTIONS . "
  144.                        set products_options_name = '" . zen_db_input($option_name) . "', products_options_type = '" . $option_type . "', products_options_length = '" . zen_db_input($products_options_length) . "', products_options_comment = '" . zen_db_input($products_options_comment) . "', products_options_size = '" . zen_db_input($products_options_size) . "', products_options_sort_order = '" . zen_db_input($products_options_sort_order) . "', products_options_images_per_row = '" . zen_db_input($products_options_images_per_row) . "', products_options_images_style = '" . zen_db_input($products_options_images_style) . "', products_options_rows = '" . zen_db_input($products_options_rows) . "'
  145.                        where products_options_id = '" . (int)$option_id . "'
  146.                        and language_id = '" . (int)$languages[$i]['id'] . "'");
  147.         }
  148.  
  149.         switch ($option_type) {
  150.           case PRODUCTS_OPTIONS_TYPE_TEXT:
  151.           case PRODUCTS_OPTIONS_TYPE_FILE:
  152. // disabled because this could cause trouble if someone changed types unintentionally and deleted all their option values.  Shops with small numbers of values per option should consider uncommenting this.
  153. //            zen_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . $_POST['option_id'] . "'");
  154. // add in a record if none exists when option type is switched
  155.             $check_type = $db->Execute("select count(products_options_id) as count from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . $_POST['option_id'] .  "' and products_options_values_id ='0'");
  156.             if ($check_type->fields['count'] == 0) {
  157.               $db->Execute("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_values_to_products_options_id, products_options_id, products_options_values_id) values (NULL, '" . $_POST['option_id'] . "', '" . PRODUCTS_OPTIONS_VALUES_TEXT_ID . "')");
  158.             }
  159.             break;
  160.           default:
  161. // if switched from file or text remove 0
  162.             $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . $_POST['option_id'] . "' and products_options_values_id = '" . PRODUCTS_OPTIONS_VALUES_TEXT_ID . "'");
  163.             break;
  164.         }
  165.  
  166. // alert if possible duplicate
  167.         $duplicate_option= '';
  168.         for ($i=0, $n=sizeof($languages); $i<$n; $i ++) {
  169.           $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
  170.  
  171.           $check= $db->Execute("select products_options_name
  172.                                from " . TABLE_PRODUCTS_OPTIONS . "
  173.                                where language_id= '" . $languages[$i]['id'] . "'
  174.                                and products_options_name='" . zen_db_input($option_name) . "'");
  175.  
  176.           if ($check->RecordCount() > 1 and !empty($option_name)) {
  177. // BOM by zen-cart.cn
  178.             $duplicate_option .= ' <b>' . GBcase(zen_get_language_name($languages[$i]['id']),"upper") . '</b> : ' . $option_name;
  179. // EOM by zen-cart.cn
  180.           }
  181.         }
  182.         if (!empty($duplicate_option)) {
  183.           $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
  184.         }
  185.  
  186.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  187.         break;
  188.       case 'delete_option':
  189.         // demo active test
  190.         if (zen_admin_demo()) {
  191.           $_GET['action']= '';
  192.           $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
  193.             zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  194.         }
  195.         $option_id = zen_db_prepare_input($_GET['option_id']);
  196.  
  197.         $remove_option_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . (int)$option_id . "'");
  198.  
  199.         while (!$remove_option_values->EOF) {
  200.           $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id='" . $remove_option_values->fields['products_options_values_id'] . "' and products_options_values_id !=0");
  201.           $remove_option_values->MoveNext();
  202.         }
  203.  
  204.         $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS . "
  205.                      where products_options_id = '" . (int)$option_id . "'");
  206.  
  207.         $db->Execute("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$option_id . "'");
  208.  
  209.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  210.         break;
  211.  
  212. /////////////////////////////////////
  213. // additional features
  214.     case 'update_options_values':
  215.       // get products to update with at least one option_value for selected options_name
  216.       $update_to = $_GET['update_to'];
  217.       $update_action = $_GET['update_action'];
  218.  
  219.       switch($update_to) {
  220.         case (0):
  221.         // all products
  222.         $all_update_products = $db->Execute("select distinct products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where options_id='" . $_POST['options_id'] . "'");
  223.         break;
  224.         case (1):
  225.         // one product
  226.         $product_to_update = $_POST['product_to_update'];
  227.         $all_update_products = $db->Execute("select distinct products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where options_id='" . $_POST['options_id'] . "' and products_id='" . $product_to_update . "'");
  228.         break;
  229.         case (2):
  230.         // category of products
  231.         $category_to_update = $_POST['category_to_update'];
  232. // re-write with categories
  233.         $all_update_products = $db->Execute("select distinct pa.products_id from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc on pa.products_id = ptc.products_id where ptc.categories_id ='" . $category_to_update . "' and pa.options_id='" . $_POST['options_id'] . "' and pa.products_id = ptc.products_id");
  234.         break;
  235.       }
  236.  
  237.       if ($all_update_products->RecordCount() < 1) {
  238.         $messageStack->add_session(ERROR_PRODUCTS_OPTIONS_VALUES, 'caution');
  239.       } else {
  240. //die('I want to update ' . $_GET['update_to'] . ' : update action: ' . $update_action . ' product: ' . $_POST['product_to_update']  . ' category: ' . $_POST['category_to_update'] . ' found records: ' . $all_update_products->RecordCount() . ' - ' . $all_update_products->fields['products_id']);
  241.  
  242.         if ($update_action == 0) {
  243.           // action add
  244.           while (!$all_update_products->EOF) {
  245.             // get all option_values
  246.             $all_options_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . $_POST['options_id'] . "'");
  247.             $updated = 'false';
  248.            while (!$all_options_values->EOF) {
  249.               $check_all_options_values = $db->Execute("select products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . $all_update_products->fields['products_id'] . "' and options_id='" . $all_options_values->fields['products_options_id'] . "' and options_values_id='" . $all_options_values->fields['products_options_values_id'] . "'");
  250.               if ($check_all_options_values->RecordCount() < 1) {
  251.                 // add missing options_value_id
  252.                 $updated = 'true';
  253.                 $db->Execute("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " (products_id, options_id, options_values_id) values ('" . $all_update_products->fields['products_id'] . "', '" . $all_options_values->fields['products_options_id'] . "', '" . $all_options_values->fields['products_options_values_id'] . "')");
  254.               } else {
  255.                 // skip it the attribute is there
  256.               }
  257.               $all_options_values->MoveNext();
  258.             }
  259.             if ($updated == 'true') {
  260.               zen_update_attributes_products_option_values_sort_order($all_update_products->fields['products_id']);
  261.             }
  262.             $all_update_products->MoveNext();
  263.           }
  264.           if ($updated='true') {
  265.             $messageStack->add_session(SUCCESS_PRODUCTS_OPTIONS_VALUES, 'success');
  266.           } else {
  267.             $messageStack->add_session(ERROR_PRODUCTS_OPTIONS_VALUES, 'error');
  268.           }
  269.         } else {
  270.           // action delete
  271.           while (!$all_update_products->EOF) {
  272.             // get all option_values
  273.             $all_options_values = $db->Execute("select products_options_id, products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id='" . $_POST['options_id'] . "'");
  274.             $updated = 'false';
  275.            while (!$all_options_values->EOF) {
  276.               $check_all_options_values = $db->Execute("select products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . $all_update_products->fields['products_id'] . "' and options_id='" . $all_options_values->fields['products_options_id'] . "' and options_values_id='" . $all_options_values->fields['products_options_values_id'] . "'");
  277.               if ($check_all_options_values->RecordCount() >= 1) {
  278.                 // delete for this product with Option Name options_value_id
  279. // echo '<br>This should be deleted: ' . zen_get_products_name($all_options_values->fields['products_options_id']);
  280. // change to delete
  281. // should add download delete
  282.                 $db->Execute("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . $all_update_products->fields['products_id'] . "' and options_id='" . $_POST['options_id'] . "'");
  283.               } else {
  284.                 // skip this option_name does not exist
  285.               }
  286.               $all_options_values->MoveNext();
  287.             }
  288.             $all_update_products->MoveNext();
  289.           }
  290.         } // update_action
  291.  
  292.       } // no products found
  293.         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
  294.         break;
  295. ////////////////////////////////////
  296. // copy features
  297.     case 'copy_options_values':
  298.       $options_id_from = $_POST['options_id_from'];
  299.       $options_id_to = $_POST['options_id_to'];
  300.  
  301.       if ($options_id_from == $options_id_to) {
  302.         // cannot copy to self
  303.         $messageStack->add(ERROR_OPTION_VALUES_COPIED . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'warning');
  304.       } else {
  305.         // successful copy
  306.         $start_id = $db->Execute("select pov.products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov order by pov.products_options_values_id DESC LIMIT 1");
  307.         $copy_from_values = $db->Execute("select pov.* from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " povtpo on pov.products_options_values_id= povtpo.products_options_values_id where povtpo.products_options_id='" . $options_id_from . "' order by povtpo.products_options_values_id");
  308.         if ($copy_from_values->RecordCount() > 0) {
  309.           // successful copy
  310.           $next_id = ($start_id->fields['products_options_values_id'] + 1);
  311.           while(!$copy_from_values->EOF) {
  312.             $current_id = $copy_from_values->fields['products_options_values_id'];
  313.             $sql = "insert into " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name, products_options_values_sort_order) values ('" . $next_id . "', '" . $copy_from_values->fields['language_id'] . "', '" . $copy_from_values->fields['products_options_values_name'] . "', '" . $copy_from_values->fields['products_options_values_sort_order'] . "')";
  314.             $db->Execute($sql);
  315.             $copy_from_values->MoveNext();
  316.             if ($copy_from_values->fields['products_options_values_id'] != $current_id or $copy_from_values->EOF) {
  317.               $sql = "insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_values_to_products_options_id, products_options_id, products_options_values_id) values (0, '" . $options_id_to . "', '" . $next_id . "')";
  318.               $db->Execute($sql);
  319.               $next_id++;
  320.             }
  321.           }
  322.           $messageStack->add(SUCCESS_OPTION_VALUES_COPIED . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'success');
  323.         } else {
  324.           // warning nothing to copy
  325.           $messageStack->add(ERROR_OPTION_VALUES_NONE . ' from: ' . zen_options_name($options_id_from) . ' to: ' . zen_options_name($options_id_to), 'warning');
  326.         }
  327.       }
  328.     break;
  329. ////////////////////////////////////
  330.     }
  331.  
  332.   }
  333.  
  334. //iii 031103 added to get results from database option type query
  335.   $products_options_types_list = array();
  336. //  $products_options_type_array = $db->Execute("select products_options_types_id, products_options_types_name from " . TABLE_PRODUCTS_OPTIONS_TYPES . " where language_id='" . $_SESSION['languages_id'] . "' order by products_options_types_id");
  337.   $products_options_type_array = $db->Execute("select products_options_types_id, products_options_types_name from " . TABLE_PRODUCTS_OPTIONS_TYPES . " order by products_options_types_id");
  338.   while (!$products_options_type_array->EOF) {
  339.     $products_options_types_list[$products_options_type_array->fields['products_options_types_id']] = $products_options_type_array->fields['products_options_types_name'];
  340.     $products_options_type_array->MoveNext();
  341.   }
  342.  
  343. //CLR 030312 add function to draw pulldown list of option types
  344. // Draw a pulldown for Option Types
  345. //iii 031103 modified to use results of database option type query from above
  346. function draw_optiontype_pulldown($name, $default = '') {
  347.   global $products_options_types_list;
  348.   $values = array();
  349.   foreach ($products_options_types_list as $id => $text) {
  350.     $values[] = array('id' => $id, 'text' => $text);
  351.   }
  352.   return zen_draw_pull_down_menu($name, $values, $default);
  353. }
  354.  
  355. //CLR 030312 add function to translate type_id to name
  356. // Translate option_type_values to english string
  357. //iii 031103 modified to use results of database option type query from above
  358. function translate_type_to_name($opt_type) {
  359.   global $products_options_types_list;
  360.   return $products_options_types_list[$opt_type];
  361.   return 'Error ' . $opt_type;
  362. }
  363.  
  364. ?>
  365. <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
  366. <html <?php echo HTML_PARAMS; ?>>
  367. <head>
  368. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
  369. <title><?php echo TITLE; ?></title>
  370. <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
  371. <link rel="stylesheet" type="text/css" href="includes/cssjsmenuhover.css" media="all" id="hoverJS">
  372. <script language="javascript" src="includes/menu.js"></script>
  373. <script language="javascript"><!--
  374. function go_option() {
  375.   if (document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value != "none") {
  376.     location = "<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . ($_GET['option_page'] ? $_GET['option_page'] : 1)); ?>&option_order_by="+document.option_order_by.selected.options[document.option_order_by.selected.selectedIndex].value;
  377.   }
  378. }
  379. //--></script>
  380. <script type="text/javascript">
  381.   <!--
  382.   function init()
  383.   {
  384.     cssjsmenu('navbar');
  385.     if (document.getElementById)
  386.     {
  387.       var kill = document.getElementById('hoverJS');
  388.       kill.disabled = true;
  389.     }
  390.   }
  391.   // -->
  392. </script>
  393. </head>
  394. <body onLoad="init()">
  395. <!-- header //-->
  396. <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
  397. <!-- header_eof //-->
  398.  
  399. <!-- body //-->
  400. <!-- body_text //-->
  401.  
  402.     <!-- options and values//-->
  403.     <table border="0" width="75%" cellspacing="0" cellpadding="0" align="center">
  404.       <tr>
  405.         <td width="100%">
  406.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  407.               <tr>
  408.               <td height="40" valign="bottom">
  409.                 <a href="<?php echo  zen_href_link(FILENAME_ATTRIBUTES_CONTROLLER, '', 'NONSSL') ?>"><?php echo zen_image_button('button_edit_attribs.gif', IMAGE_EDIT_ATTRIBUTES); ?></a> &nbsp;
  410.                 <a href="<?php echo  zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, '', 'NONSSL') ?>"><?php echo zen_image_button('button_option_values.gif', IMAGE_OPTION_VALUES); ?></a>
  411.               </td>
  412.               <td class="main" height="40" valign="bottom">
  413.                 <?php
  414. // toggle switch for show copier features
  415.                   $option_names_values_copier_array = array(array('id' => '0', 'text' => TEXT_SHOW_OPTION_NAMES_VALUES_COPIER_OFF),
  416.                                         array('id' => '1', 'text' => TEXT_SHOW_OPTION_NAMES_VALUES_COPIER_ON),
  417.                                         );
  418.                   echo zen_draw_form('set_option_names_values_copier_form', FILENAME_OPTIONS_NAME_MANAGER, '', 'get') . '&nbsp;&nbsp;' . zen_draw_pull_down_menu('reset_option_names_values_copier', $option_names_values_copier_array, $reset_option_names_values_copier, 'onChange="this.form.submit();"') .
  419.                   zen_hide_session_id() .
  420.                   zen_draw_hidden_field('action', 'set_option_names_values_copier') .
  421.                   '</form>';
  422.                 ?>
  423.               </td>
  424.               <td class="main" align="right" valign="bottom"><?php echo TEXT_PRODUCT_OPTIONS_INFO; ?></td>
  425.             </tr>
  426.           </table>
  427.         </td>
  428.       </tr>
  429.       <tr>
  430.         <td valign="top" width="50%">
  431.            <table width="100%" border="0" cellspacing="0" cellpadding="2">
  432. <!-- options //-->
  433. <?php
  434.   if ($action == 'delete_product_option') { // delete product option
  435.     $options = $db->Execute("select products_options_id, products_options_name
  436.                             from " . TABLE_PRODUCTS_OPTIONS . "
  437.                             where products_options_id = '" . (int)$_GET['option_id'] . "'
  438.                             and language_id = '" . (int)$_SESSION['languages_id'] . "'");
  439.  
  440. ?>
  441.               <tr>
  442.                 <td class="pageHeading">&nbsp;<?php echo $options_values->fields['products_options_name']; ?>&nbsp;</td>
  443.               </tr>
  444.               <tr>
  445.                 <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  446. <?php
  447.     $products = $db->Execute("select p.products_id, pd.products_name, pov.products_options_values_name
  448.                              from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov,
  449.                                   " . TABLE_PRODUCTS_ATTRIBUTES . " pa,
  450.                                   " . TABLE_PRODUCTS_DESCRIPTION . " pd
  451.                              where pd.products_id = p.products_id
  452.                              and pov.language_id = '" . (int)$_SESSION['languages_id'] . "'
  453.                              and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
  454.                              and pa.products_id = p.products_id
  455.                              and pa.options_id='" . (int)$_GET['option_id'] . "'
  456.                              and pov.products_options_values_id = pa.options_values_id
  457.                              order by pd.products_name");
  458.  
  459.     if ($products->RecordCount()>0) {
  460. ?>
  461.  
  462. <?php
  463. // extra cancel
  464.       if ($products->RecordCount()> 10) {
  465. ?>
  466.                   <tr>
  467.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  468.                   </tr>
  469.                   <tr>
  470.                     <td colspan="2" class="main"><br /><?php echo '<strong>' . TEXT_OPTION_NAME . ':</strong> ' . zen_options_name((int)$_GET['option_id']) . '<br />' . TEXT_WARNING_OF_DELETE; ?></td>
  471.                     <td align="right" colspan="3" class="main"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  472.                   </tr>
  473. <?php
  474.       }
  475. ?>
  476.                   <tr class="dataTableHeadingRow">
  477.                     <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_ID; ?>&nbsp;</td>
  478.                     <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_PRODUCT; ?>&nbsp;</td>
  479.                     <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_VALUE; ?>&nbsp;</td>
  480.                   </tr>
  481.                   <tr>
  482.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  483.                   </tr>
  484. <?php
  485.       $rows = 0;
  486.       while (!$products->EOF) {
  487.         $rows++;
  488. ?>
  489.                   <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  490.                     <td align="center" class="smallText">&nbsp;<?php echo $products->fields['products_id']; ?>&nbsp;</td>
  491.                     <td class="smallText">&nbsp;<?php echo $products->fields['products_name']; ?>&nbsp;</td>
  492.                     <td class="smallText">&nbsp;<?php echo $products->fields['products_options_values_name']; ?>&nbsp;</td>
  493.                   </tr>
  494. <?php
  495.         $products->MoveNext();
  496.       }
  497. ?>
  498.                   <tr>
  499.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  500.                   </tr>
  501.                   <tr>
  502.                     <td colspan="2" class="main"><br /><?php echo TEXT_WARNING_OF_DELETE; ?></td>
  503.                     <td align="right" colspan="3" class="main"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  504.                   </tr>
  505.                   <tr>
  506.                     <td colspan="3"><?php echo zen_black_line(); ?></td>
  507.                   </tr>
  508. <?php
  509.     } else {
  510. ?>
  511.                   <tr>
  512.                     <td class="main" colspan="3"><br /><?php echo '<strong>' . TEXT_OPTION_NAME . ':</strong> ' . zen_options_name((int)$_GET['option_id']) . '<br />' . TEXT_OK_TO_DELETE; ?></td>
  513.                   </tr>
  514.                   <tr>
  515.                     <td class="main" align="right" colspan="3"><br /><?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=delete_option&option_id=' . $_GET['option_id'] . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_delete.gif', ' delete '); ?></a>&nbsp;&nbsp;&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['order_by']) ? 'order_by=' . $_GET['order_by'] . '&' : '') . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', ' cancel '); ?></a>&nbsp;</td>
  516.                   </tr>
  517. <?php
  518.     }
  519. ?>
  520.                 </table></td>
  521.               </tr>
  522. <?php
  523.   } else {
  524.     if (isset($_GET['option_order_by'])) {
  525.       $option_order_by = $_GET['option_order_by'];
  526.     } else {
  527.       $option_order_by = 'products_options_id';
  528.     }
  529. ?>
  530.               <tr>
  531.                 <td colspan="2" class="pageHeading">&nbsp;<?php echo HEADING_TITLE_OPT; ?>&nbsp;</td>
  532.                 <td valign="top" align="left"><form name="option_order_by" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_order_by=' . $option_order_by, 'NONSSL'); ?>"><select name="selected" onChange="go_option()"><option value="products_options_id"<?php if ($option_order_by == 'products_options_id') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_ID; ?></option><option value="products_options_name"<?php if ($option_order_by == 'products_options_name') { echo ' SELECTED'; } ?>><?php echo TEXT_OPTION_NAME; ?></option></select></form></td>
  533.               </tr>
  534.               <tr>
  535.                 <td colspan="4" class="smallText">
  536. <?php
  537.     $per_page = MAX_ROW_LISTS_OPTIONS;
  538.     $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = :languageId: order by :optionOrderBy:";
  539.     $options = $db->bindVars($options, ':languageId:', $_SESSION['languages_id'], 'integer');
  540.     $options = $db->bindVars($options, ':optionOrderBy:', $option_order_by, 'string');
  541.     if (!isset($_GET['option_page'])) {
  542.       $_GET['option_page'] = 1;
  543.     }
  544.     $prev_option_page = $_GET['option_page'] - 1;
  545.     $next_option_page = $_GET['option_page'] + 1;
  546.  
  547.     $option_query = $db->Execute($options);
  548.  
  549.     $option_page_start = ($per_page * $_GET['option_page']) - $per_page;
  550.     $num_rows = $option_query->RecordCount();
  551.  
  552.     if ($num_rows <= $per_page) {
  553.       $num_pages = 1;
  554.     } else if (($num_rows % $per_page) == 0) {
  555.       $num_pages = ($num_rows / $per_page);
  556.     } else {
  557.       $num_pages = ($num_rows / $per_page) + 1;
  558.     }
  559.     $num_pages = (int) $num_pages;
  560.  
  561. // fix limit error on some versions
  562.     if ($option_page_start < 0) { $option_page_start = 0; }
  563.  
  564.     $options = $options . " LIMIT $option_page_start, $per_page";
  565.  
  566.     // Previous
  567.     if ($prev_option_page)  {
  568.       echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $prev_option_page . '&option_order_by=' . $option_order_by) . '"> &lt;&lt; </a> | ';
  569.     }
  570.  
  571.     for ($i = 1; $i <= $num_pages; $i++) {
  572.       if ($i != $_GET['option_page']) {
  573.         echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $i . '&option_order_by=' . $option_order_by) . '">' . $i . '</a> | ';
  574.       } else {
  575.         echo '<b><font color=red>' . $i . '</font></b> | ';
  576.       }
  577.     }
  578.  
  579.     // Next
  580.     if ($_GET['option_page'] != $num_pages) {
  581.       echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'option_page=' . $next_option_page . '&option_order_by=' . $option_order_by) . '"> &gt;&gt; </a>';
  582.     }
  583. //CLR 030212 - Add column for option type
  584. ?>
  585.                 </td>
  586.               </tr>
  587.               <tr>
  588.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  589.               </tr>
  590.               <tr class="dataTableHeadingRow">
  591.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_ID; ?>&nbsp;</td>
  592.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_NAME; ?>&nbsp;</td>
  593.                 <td class="dataTableHeadingContent">&nbsp;<?php echo TABLE_HEADING_OPT_TYPE; ?>&nbsp;</td>
  594.                 <td class="dataTableHeadingContent" align="right">&nbsp;<?php echo TABLE_HEADING_OPTION_SORT_ORDER; ?>&nbsp;</td>
  595.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_OPTION_VALUE_SIZE; ?></td>
  596.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_OPTION_VALUE_MAX; ?></td>
  597.                 <td class="dataTableHeadingContent" align="center">&nbsp;<?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
  598.               </tr>
  599.               <tr>
  600.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  601.               </tr>
  602. <?php
  603.     $next_id = 1;
  604.     $rows = 0;
  605.     $options_values = $db->Execute($options);
  606.     while (!$options_values->EOF) {
  607.       $rows++;
  608. ?>
  609.               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  610. <?php
  611. // edit option name
  612.       if (($action == 'update_option') && ($_GET['option_id'] == $options_values->fields['products_options_id'])) {
  613.         echo '<form name="option" action="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_option_name' . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '')  . '&option_order_by=' . $option_order_by) . '" method="post">';echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']);
  614.         $inputs = '';
  615.         $inputs2 = '';
  616.         for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
  617.           $option_name = $db->Execute("select products_options_name, products_options_sort_order, products_options_size, products_options_length, products_options_comment, products_options_images_per_row, products_options_images_style, products_options_rows
  618.                                       from " . TABLE_PRODUCTS_OPTIONS . "
  619.                                       where products_options_id = '" . $options_values->fields['products_options_id'] . "'
  620.                                       and language_id = '" . $languages[$i]['id'] . "'");
  621.  
  622.           $inputs .= $languages[$i]['code'] . ':&nbsp;<input type="text" name="option_name[' . $languages[$i]['id'] . ']" ' . zen_set_field_length(TABLE_PRODUCTS_OPTIONS, 'products_options_name', 40) . ' value="' . zen_output_string($option_name->fields['products_options_name']) . '">' . TEXT_SORT . '<input type="text" name="products_options_sort_order[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_sort_order'] . '">&nbsp;<br />';
  623.           $inputs2 .= $languages[$i]['code'] . ':&nbsp; ' .
  624.                    '&nbsp;' . TEXT_OPTION_VALUE_COMMENTS . '<input type="text" name="products_options_comment[' . $languages[$i]['id'] . ']" size="50" value="' . zen_output_string($option_name->fields['products_options_comment']) . '">' .
  625.                    '<br /><br />' . TEXT_OPTION_VALUE_ROWS . '<input type="text" name="products_options_rows[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_rows'] . '">' .
  626.                    '&nbsp;' . TEXT_OPTION_VALUE_SIZE . '<input type="text" name="products_options_size[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_size'] . '">' .
  627.                    '&nbsp;' . TEXT_OPTION_VALUE_MAX . '<input type="text" name="products_options_length[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_length'] . '">' .
  628.                    '<br /><br />' . TEXT_OPTION_ATTRIBUTE_IMAGES_PER_ROW . '<input type="text" name="products_options_images_per_row[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_images_per_row'] . '">' .
  629.                    '&nbsp;' . TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE . '<input type="text" name="products_options_images_style[' . $languages[$i]['id'] . ']" size="3" value="' . $option_name->fields['products_options_images_style'] . '">' . '<br /><br />';
  630.  
  631.         }
  632.  
  633. //CLR 030212 - Add column for option type
  634. ?>
  635.                 <td height="50" align="center" class="attributeBoxContent">&nbsp;<?php echo $options_values->fields['products_options_id']; ?><input type="hidden" name="option_id" value="<?php echo $options_values->fields['products_options_id']; ?>">&nbsp;</td>
  636.                 <td class="attributeBoxContent"><?php echo $inputs; ?></td>
  637.                 <td class="attributeBoxContent"><?php echo draw_optiontype_pulldown('option_type', $options_values->fields['products_options_type']); ?></td>
  638.                 <td colspan="3" align="left" class="attributeBoxContent">&nbsp;</td>
  639.                 <td colspan="1"  align="center" class="attributeBoxContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '">'; ?><?php echo zen_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a>&nbsp;</td>
  640.               </tr>
  641.       <tr>
  642.         <td colspan="7"><?php echo zen_draw_separator('pixel_black.gif', '100%', '2'); ?></td>
  643.       </tr>
  644.  
  645.               <tr class="attributeBoxContent">
  646.                 <td class="attributeBoxContent">&nbsp;</td>
  647.                 <td colspan="6" class="attributeBoxContent"><?php echo TEXT_OPTION_ATTIBUTE_MAX_LENGTH . $inputs2; ?></td>
  648.               </tr>
  649.               <tr class="attributeBoxContent">
  650.                 <td class="attributeBoxContent">&nbsp;</td>
  651.                 <td colspan="6" class="attributeBoxContent">
  652.               <?php echo '<br />' .
  653.                      TEXT_OPTION_IMAGE_STYLE . '<br />' .
  654.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_0 . '<br />' .
  655.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_1 . '<br />' .
  656.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_2 . '<br />' .
  657.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_3 . '<br />' .
  658.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_4 . '<br />' .
  659.                      TEXT_OPTION_ATTRIBUTE_IMAGES_STYLE_5 . '<br />';
  660.               ?>
  661.                 </td>
  662.  
  663.       </tr>
  664.       <tr>
  665.         <td colspan="7"><?php echo zen_draw_separator('pixel_black.gif', '100%', '2'); ?></td>
  666. <?php
  667.         echo '</form>' . "\n";
  668.       } else {
  669. //CLR 030212 - Add column for option type
  670. ?>
  671.                 <td align="center" class="smallText">&nbsp;<?php echo $options_values->fields["products_options_id"]; ?>&nbsp;</td>
  672.                 <td class="smallText">&nbsp;<?php echo $options_values->fields["products_options_name"]; ?>&nbsp;</td>
  673.                 <td class="smallText">&nbsp;<?php echo translate_type_to_name($options_values->fields["products_options_type"]); ?>&nbsp;</td>
  674.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_sort_order"]; ?>&nbsp;</td>
  675.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_size"]; ?>&nbsp;</td>
  676.                 <td class="smallText" align="right">&nbsp;<?php echo $options_values->fields["products_options_length"]; ?>&nbsp;</td>
  677. <?php
  678. // hide buttons when editing
  679.   if ($action== 'update_option') {
  680. ?>
  681.             <td width='120' align="center" class="smallText">&nbsp;</td>
  682. <?php
  683.   } else {
  684. ?>
  685.                 <td align="center" class="smallText">&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_option&option_id=' . $options_values->fields['products_options_id'] . '&option_order_by=' . $option_order_by . '&option_page=' . $_GET['option_page'] . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') ) . '">'; ?><?php echo zen_image_button('button_edit.gif', IMAGE_UPDATE); ?></a>&nbsp;&nbsp;<?php echo '<a href="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=delete_product_option&option_id=' . $options_values->fields['products_options_id'] . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . '&option_order_by=' . $option_order_by, 'NONSSL') , '">'; ?><?php echo zen_image_button('button_delete.gif', IMAGE_DELETE); ?></a>&nbsp;</td>
  686. <?php
  687.   }
  688. ?>
  689. <?php
  690.       }
  691. ?>
  692.               </tr>
  693. <?php
  694.       $max_options_id_values = $db->Execute("select max(products_options_id) + 1 as next_id
  695.                                             from " . TABLE_PRODUCTS_OPTIONS);
  696.  
  697.       $next_id = $max_options_id_values->fields['next_id'];
  698.       $options_values->MoveNext();
  699.     }
  700. ?>
  701.               <tr>
  702.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  703.               </tr>
  704. <?php
  705. // add option name
  706.     if ($action != 'update_option') {
  707. ?>
  708.               <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>">
  709. <?php
  710.       echo '<form name="options" action="' . zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=add_product_options' . (isset($_GET['option_page']) ? '&option_page=' . $_GET['option_page'] . '&' : '') . (isset($_GET['value_page']) ? '&value_page=' . $_GET['value_page'] . '&' : '') . (isset($_GET['attribute_page']) ? '&attribute_page=' . $_GET['attribute_page'] : '') . '&option_order_by=' . $option_order_by ) . '" method="post"><input type="hidden" name="products_options_id" value="' . $next_id . '">';echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']);
  711.       $inputs = '';
  712.       for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) {
  713.         $inputs .= $languages[$i]['code'] . ':&nbsp;<input type="text" name="option_name[' . $languages[$i]['id'] . ']" ' . zen_set_field_length(TABLE_PRODUCTS_OPTIONS, 'products_options_name', 40) . '>' . TEXT_SORT . '<input type="text" name="products_options_sort_order[' . $languages[$i]['id'] . ']" size="3">' . '&nbsp;<br />';
  714.       }
  715. //CLR 030212 - Add column for option type
  716. ?>
  717.                 <td align="center" class="smallText">&nbsp;<?php echo $next_id; ?>&nbsp;</td>
  718.                 <td class="smallText"><?php echo $inputs; ?></td>
  719.                 <td class="smallText"><?php echo draw_optiontype_pulldown('option_type'); ?></td>
  720.                 <td colspan="2" class="smallText">&nbsp;</td>
  721.                 <td colspan="2" align="center" class="smallText">&nbsp;<?php echo zen_image_submit('button_insert.gif', IMAGE_INSERT); ?>&nbsp;</td>
  722. <?php
  723.       echo '</form>';
  724. ?>
  725.               </tr>
  726.               <tr>
  727.                 <td colspan="7"><?php echo zen_black_line(); ?></td>
  728.               </tr>
  729. <?php
  730.     }
  731.   }
  732. ?>
  733.             </table>
  734. </td></tr></table>
  735. <!-- options eof //-->
  736.  
  737. <?php if ($_SESSION['option_names_values_copier'] == '0') { ?>
  738.   <table align="center" width="90%">
  739.     <tr>
  740.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  741.     </tr>
  742.     <tr>
  743.       <td class="pageHeading" align="center"><?php echo TEXT_INFO_OPTION_NAMES_VALUES_COPIER_STATUS; ?></td>
  744.     </tr>
  745.     <tr>
  746.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  747.     </tr>
  748.   </table>
  749. <?php } else { ?>
  750.   <table align="center" width="90%">
  751.     <tr>
  752.       <td><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  753.     </tr>
  754.     <tr>
  755.       <td class="pageHeading" align="center"><span class="alert"><?php echo TEXT_WARNING_BACKUP; ?></span></td>
  756.     </tr>
  757.   </table>
  758.  
  759. <!-- ADD - additional features //-->
  760.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  761.       <tr>
  762.         <td width="100%">
  763.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  764.  
  765. <!-- bof: add all option values to products with current Option Name -->
  766.             <tr>
  767.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_ALL; ?></td>
  768.             </tr>
  769.             <tr>
  770.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_ALL; ?></td>
  771.             </tr>
  772.             <tr class="dataTableHeadingRow">
  773.               <td><table border="0" cellspacing="0" cellpadding="2">
  774.                 <tr class="dataTableHeadingRow">
  775.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=0&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  776.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  777. <?php
  778.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  779.         while(!$options_values->EOF) {
  780.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  781.             $options_values->MoveNext();
  782.         }
  783. ?>
  784.                   </select>&nbsp;</td>
  785.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  786.                   </form>
  787.                 </tr>
  788.  
  789.               </table></td>
  790.             </tr>
  791.  
  792.             <tr>
  793.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_PRODUCT; ?></td>
  794.             </tr>
  795.             <tr>
  796.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_PRODUCT; ?></td>
  797.             </tr>
  798.             <tr class="dataTableHeadingRow">
  799.               <td><table border="0" cellspacing="0" cellpadding="2">
  800.                 <tr class="dataTableHeadingRow">
  801.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=1&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  802.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  803. <?php
  804.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  805.         while(!$options_values->EOF) {
  806.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  807.             $options_values->MoveNext();
  808.         }
  809. ?>
  810.                   </select>&nbsp;</td>
  811.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_PRODUCT; ?><br /><?php echo zen_draw_products_pull_down_attributes('product_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  812.  
  813.                   <td align="center" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  814.                   </form>
  815.                 </tr>
  816.  
  817.               </table></td>
  818.             </tr>
  819.  
  820.             <tr>
  821.               <td class="main"><?php echo TEXT_OPTION_VALUE_ADD_CATEGORY; ?></td>
  822.             </tr>
  823.             <tr>
  824.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_ADD_CATEGORY; ?></td>
  825.             </tr>
  826.             <tr class="dataTableHeadingRow">
  827.               <td><table border="0" cellspacing="0" cellpadding="2">
  828.                 <tr class="dataTableHeadingRow">
  829.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=2&update_action=0' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  830.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  831. <?php
  832.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  833.         while(!$options_values->EOF) {
  834.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  835.             $options_values->MoveNext();
  836.         }
  837. ?>
  838.                   </select>&nbsp;</td>
  839.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_CATEGORY; ?><br /><?php echo zen_draw_products_pull_down_categories('category_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  840.  
  841.                   <td align="lef" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  842.                   </form>
  843.                 </tr>
  844.  
  845.               </table></td>
  846.             </tr>
  847.  
  848.             <tr>
  849.               <td class="main"><?php echo TEXT_COMMENT_OPTION_VALUE_ADD_ALL; ?></td>
  850.             </tr>
  851. <!-- eof: add all option values to products with current Option Name -->
  852.  
  853.             </table>
  854.           </td>
  855.         </tr>
  856.    </table>
  857. <!-- ADD - additional features eof //-->
  858.  
  859.   <table>
  860.     <tr>
  861.       <td colspan="4"><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  862.     </tr>
  863.   </table>
  864.  
  865. <!-- DELETE - additional features //-->
  866.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  867.       <tr>
  868.         <td width="100%">
  869.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  870.  
  871. <!-- bof: delete all option values to products with current Option Name -->
  872.             <tr>
  873.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_ALL; ?></td>
  874.             </tr>
  875.             <tr>
  876.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_ALL; ?></td>
  877.             </tr>
  878.             <tr class="dataTableHeadingRow">
  879.               <td><table border="0" cellspacing="0" cellpadding="2">
  880.                 <tr class="dataTableHeadingRow">
  881.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=0&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  882.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  883. <?php
  884.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  885.         while(!$options_values->EOF) {
  886.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  887.             $options_values->MoveNext();
  888.         }
  889. ?>
  890.                   </select>&nbsp;</td>
  891.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  892.                   </form>
  893.                 </tr>
  894.  
  895.               </table></td>
  896.             </tr>
  897.  
  898.             <tr>
  899.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_PRODUCT; ?></td>
  900.             </tr>
  901.             <tr>
  902.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_PRODUCT; ?></td>
  903.             </tr>
  904.             <tr class="dataTableHeadingRow">
  905.               <td><table border="0" cellspacing="0" cellpadding="2">
  906.                 <tr class="dataTableHeadingRow">
  907.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=1&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  908.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  909. <?php
  910.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  911.         while(!$options_values->EOF) {
  912.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  913.             $options_values->MoveNext();
  914.         }
  915. ?>
  916.                   </select>&nbsp;</td>
  917.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_PRODUCT; ?><br /><?php echo zen_draw_products_pull_down_attributes('product_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  918.  
  919.                   <td align="center" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  920.                   </form>
  921.                 </tr>
  922.  
  923.               </table></td>
  924.             </tr>
  925.  
  926.             <tr>
  927.               <td class="main"><?php echo TEXT_OPTION_VALUE_DELETE_CATEGORY; ?></td>
  928.             </tr>
  929.             <tr>
  930.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_DELETE_CATEGORY; ?></td>
  931.             </tr>
  932.             <tr class="dataTableHeadingRow">
  933.               <td><table border="0" cellspacing="0" cellpadding="2">
  934.                 <tr class="dataTableHeadingRow">
  935.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=update_options_values&update_to=2&update_action=1' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  936.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION; ?><br /><select name="options_id">
  937. <?php
  938.         $options_values = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  939.         while(!$options_values->EOF) {
  940.             echo "\n" . '<option name="' . $options_values->fields['products_options_name'] . '" value="' . $options_values->fields['products_options_id'] . '">' . $options_values->fields['products_options_name'] . '</option>';
  941.             $options_values->MoveNext();
  942.         }
  943. ?>
  944.                   </select>&nbsp;</td>
  945.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_CATEGORY; ?><br /><?php echo zen_draw_products_pull_down_categories('category_to_update', 'size="5"', '', true, $_GET['products_filter'], true); ?></td>
  946.  
  947.                   <td align="lef" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  948.                   </form>
  949.                 </tr>
  950.  
  951.               </table></td>
  952.             </tr>
  953.  
  954.             <tr>
  955.               <td class="main"><?php echo TEXT_COMMENT_OPTION_VALUE_DELETE_ALL; ?></td>
  956.             </tr>
  957. <!-- eof: delete all option values to products with current Option Name -->
  958.  
  959.             </table>
  960.           </td>
  961.         </tr>
  962.    </table>
  963. <!-- DELETE - additional features eof //-->
  964.  
  965.  
  966.   <table>
  967.     <tr>
  968.       <td colspan="4"><?php echo zen_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
  969.     </tr>
  970.   </table>
  971.  
  972.  
  973. <!-- COPY - additional features //-->
  974.     <table border="2" width="75%" cellspacing="0" cellpadding="0" align="center">
  975.       <tr>
  976.         <td width="100%">
  977.             <table width="100%" border="0" cellspacing="0" cellpadding="2">
  978.  
  979. <!-- bof: copy all option values to another Option Name -->
  980.             <tr>
  981.               <td class="main"><?php echo TEXT_OPTION_VALUE_COPY_ALL; ?></td>
  982.             </tr>
  983.             <tr>
  984.               <td class="main"><?php echo TEXT_INFO_OPTION_VALUE_COPY_ALL; ?></td>
  985.             </tr>
  986.             <tr class="dataTableHeadingRow">
  987.               <td><table border="0" cellspacing="0" cellpadding="2">
  988.                 <tr class="dataTableHeadingRow">
  989.                   <form name="quick_jump" method="post" action="<?php echo zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, 'action=copy_options_values' . '&option_order_by=' . $option_order_by, 'NONSSL'); ?>"><?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
  990.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION_FROM; ?><br /><select name="options_id_from">
  991. <?php
  992.         $options_values_from = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  993.         while(!$options_values_from->EOF) {
  994.             echo "\n" . '<option name="' . $options_values_from->fields['products_options_name'] . '" value="' . $options_values_from->fields['products_options_id'] . '">' . $options_values_from->fields['products_options_name'] . '</option>';
  995.             $options_values_from->MoveNext();
  996.         }
  997. ?>
  998.                   </select>&nbsp;</td>
  999.                   <td class="dataTableHeadingContent" width="75">&nbsp;</td>
  1000.                   <td class="dataTableHeadingContent"><?php echo TEXT_SELECT_OPTION_TO; ?><br /><select name="options_id_to">
  1001. <?php
  1002.         $options_values_to = $db->Execute("select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . $_SESSION['languages_id'] . "' and products_options_name !='' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_TEXT . "' and products_options_type !='" . PRODUCTS_OPTIONS_TYPE_FILE . "' order by products_options_name");
  1003.         while(!$options_values_to->EOF) {
  1004.             echo "\n" . '<option name="' . $options_values_to->fields['products_options_name'] . '" value="' . $options_values_to->fields['products_options_id'] . '">' . $options_values_to->fields['products_options_name'] . '</option>';
  1005.             $options_values_to->MoveNext();
  1006.         }
  1007. ?>
  1008.                   </select>&nbsp;</td>
  1009.  
  1010.                   <td align="right" class="dataTableHeadingContent">&nbsp;<?php echo zen_image_submit('button_update.gif', IMAGE_UPDATE); ?>&nbsp;</td>
  1011.                   </form>
  1012.                 </tr>
  1013.               </table></td>
  1014.             </tr>
  1015. <!-- eof: copy all option values to another Option Name -->
  1016.             </table>
  1017. <?php } // show copier features ?>
  1018.           </td>
  1019.         </tr>
  1020.    </table>
  1021.  
  1022.  
  1023.  
  1024.  
  1025. <!-- body_text_eof //-->
  1026. <!-- footer //-->
  1027. <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
  1028. <!-- footer_eof //-->
  1029. </body>
  1030. </html>
  1031. <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  1032.  


cron