[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文件
文件大小: 63.78 KiB
MD5: 7096c9998ba5f6ff116ce48f9a8d17f1

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


cron