$value_name = zen_db_prepare_input($value_name_array[$languages[$i]['id']]);
         $db->Execute("update " . TABLE_PRODUCTS_OPTIONS_VALUES . "\n                        set products_options_values_name = '" . zen_db_input($value_name) . "', products_options_values_sort_order = '" . (int) $products_options_values_sort_order . "'\n                        where products_options_values_id = '" . zen_db_input($value_id) . "'\n                        and language_id = '" . (int) $languages[$i]['id'] . "'");
     }
     $db->Execute("update " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . "\n                      set products_options_id = '" . (int) $option_id . "'\n                      where products_options_values_id = '" . (int) $value_id . "'");
     // alert if possible duplicate
     $duplicate_option_values = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $value_name = zen_db_prepare_input($value_name_array[$languages[$i]['id']]);
         if (!empty($value_name)) {
             $check = $db->Execute("select pov.products_options_values_id, pov.products_options_values_name, pov.language_id\n                                from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov\n                                left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " pov2po on pov.products_options_values_id = pov2po.products_options_values_id\n                                where pov.language_id= '" . $languages[$i]['id'] . "'\n                                and pov.products_options_values_name='" . zen_db_input($value_name) . "'\n                                and pov2po.products_options_id ='" . (int) $option_id . "'");
             if ($check->RecordCount() > 1) {
                 while (!$check->EOF) {
                     $check_dups .= ' - ' . $check->fields['products_options_values_id'];
                     $check->MoveNext();
                 }
                 $duplicate_option_values .= ' <b>' . strtoupper(zen_get_language_name($languages[$i]['id'])) . '</b> : ' . $check_dups;
             }
         }
     }
     if (!empty($duplicate_option_values)) {
         $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_VALUE_WARNING_DUPLICATE . ' ' . $duplicate_option_values, 'caution');
     }
     zen_redirect(zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, $_SESSION['page_info']));
     break;
 case 'delete_value':
     // demo active test
     if (zen_admin_demo()) {
         $_GET['action'] = '';
         $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
         zen_redirect(zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, $_SESSION['page_info']));
     }
             if ($check_type->fields['count'] == 0) {
                 $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 . "')");
             }
             break;
         default:
             // if switched from file or text remove 0
             $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 . "'");
             break;
     }
     // alert if possible duplicate
     $duplicate_option = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
         $check = $db->Execute("select products_options_name\n                                from " . TABLE_PRODUCTS_OPTIONS . "\n                                where language_id= '" . $languages[$i]['id'] . "'\n                                and products_options_name='" . zen_db_input($option_name) . "'");
         if ($check->RecordCount() > 1 and !empty($option_name)) {
             $duplicate_option .= ' <b>' . strtoupper(zen_get_language_name($languages[$i]['id'])) . '</b> : ' . $option_name;
         }
     }
     if (!empty($duplicate_option)) {
         $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
     }
     zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
     break;
 case 'delete_option':
     // demo active test
     if (zen_admin_demo()) {
         $_GET['action'] = '';
         $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
     }
     $option_id = zen_db_prepare_input($_GET['option_id']);
                 $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 . "')");
             }
             break;
         default:
             // if switched from file or text remove 0
             $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 . "'");
             break;
     }
     // alert if possible duplicate
     $duplicate_option = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $option_name = zen_db_prepare_input($option_name_array[$languages[$i]['id']]);
         $check = $db->Execute("select products_options_name\n                                from " . TABLE_PRODUCTS_OPTIONS . "\n                                where language_id= '" . $languages[$i]['id'] . "'\n                                and products_options_name='" . zen_db_input($option_name) . "'");
         if ($check->RecordCount() > 1 and !empty($option_name)) {
             // BOM by zen-cart.cn
             $duplicate_option .= ' <b>' . GBcase(zen_get_language_name($languages[$i]['id']), "upper") . '</b> : ' . $option_name;
             // EOM by zen-cart.cn
         }
     }
     if (!empty($duplicate_option)) {
         $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_NAME_WARNING_DUPLICATE . ' ' . $option_id . ' - ' . $duplicate_option, 'caution');
     }
     zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
     break;
 case 'delete_option':
     // demo active test
     if (zen_admin_demo()) {
         $_GET['action'] = '';
         $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
         zen_redirect(zen_href_link(FILENAME_OPTIONS_NAME_MANAGER, $_SESSION['page_info'] . '&option_order_by=' . $option_order_by));
     }
 function confirm()
 {
     global $_GET, $_POST, $db;
     $audience = array();
     $customers_languages_id = $_SESSION['languages_id'];
     if (isset($_GET['global']) && $_GET['global'] == 'true') {
         if (isset($_GET['languages_id']) && $_GET['languages_id'] > 0) {
             $customers_languages_id = (int) $_GET['languages_id'];
         }
         $products = $db->Execute("select distinct pn.customers_id\r\n                                  from " . TABLE_PRODUCTS_NOTIFICATIONS . " pn\r\n                                  , " . TABLE_CUSTOMERS . " c\r\n                                  where pn.customers_id = c.customers_id\r\n                                  and c.customers_languages_id = '" . $customers_languages_id . "'");
         while (!$products->EOF) {
             $audience[$products->fields['customers_id']] = '1';
             $products->MoveNext();
         }
         $customers = $db->Execute("select ci.customers_info_id\r\n                                   from " . TABLE_CUSTOMERS_INFO . " ci\r\n                                   , " . TABLE_CUSTOMERS . " c\r\n                                   where global_product_notifications = '1'\r\n                                   and ci.customers_info_id = c.customers_id\r\n                                   and c.customers_languages_id = '" . $customers_languages_id . "'");
         while (!$customers->EOF) {
             $audience[$customers->fields['customers_info_id']] = '1';
             $customers->MoveNext();
         }
     } else {
         $chosen = $_POST['chosen'];
         if (isset($_POST['languages_id']) && $_POST['languages_id'] > 0) {
             $customers_languages_id = (int) $_POST['languages_id'];
         }
         $ids = implode(',', $chosen);
         $products = $db->Execute("select distinct pn.customers_id\r\n                                  from " . TABLE_PRODUCTS_NOTIFICATIONS . " pn\r\n                                  , " . TABLE_CUSTOMERS . " c\r\n                                  where pn.products_id in (" . $ids . ")\r\n                                  and pn.customers_id = c.customers_id\r\n                                  and c.customers_languages_id = '" . $customers_languages_id . "'");
         while (!$products->EOF) {
             $audience[$products->fields['customers_id']] = '1';
             $products->MoveNext();
         }
         $customers = $db->Execute("select ci.customers_info_id\r\n                                   from " . TABLE_CUSTOMERS_INFO . " ci\r\n                                   , " . TABLE_CUSTOMERS . " c\r\n                                   where global_product_notifications = '1'\r\n                                   and ci.customers_info_id = c.customers_id\r\n                                   and c.customers_languages_id = '" . $customers_languages_id . "'");
         while (!$customers->EOF) {
             $audience[$customers->fields['customers_info_id']] = '1';
             $customers->MoveNext();
         }
     }
     $confirm_string = '<table border="0" cellspacing="0" cellpadding="2">' . "\n" . '  <tr>' . "\n" . '    <td class="main"><b>' . TEXT_CUSTOMERS_LANGUAGE . zen_get_language_name($customers_languages_id) . '</b><br /><font color="#ff0000"><b>' . sprintf(TEXT_COUNT_CUSTOMERS, sizeof($audience)) . '</b></font></td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td>' . zen_draw_separator('pixel_trans.gif', '1', '10') . '</td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td class="main"><b>' . $this->title . '</b></td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td>' . zen_draw_separator('pixel_trans.gif', '1', '10') . '<hr /></td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td class="main">' . nl2br($this->content_html) . '</td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td><hr>' . zen_draw_separator('pixel_trans.gif', '1', '10') . '</td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td class="main"><tt>' . nl2br($this->content) . '</tt><hr /></td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . "\n" . '    <td>' . zen_draw_separator('pixel_trans.gif', '1', '10') . '</td>' . "\n" . '  </tr>' . "\n" . '  <tr>' . zen_draw_form('confirm', FILENAME_NEWSLETTERS, 'page=' . $_GET['page'] . '&nID=' . $_GET['nID'] . '&action=confirm_send') . "\n" . '    <td align="right">';
     if (sizeof($audience) > 0) {
         if (isset($_GET['global']) && $_GET['global'] == 'true') {
             $confirm_string .= zen_draw_hidden_field('global', 'true');
         } else {
             for ($i = 0, $n = sizeof($chosen); $i < $n; $i++) {
                 $confirm_string .= zen_draw_hidden_field('chosen[]', $chosen[$i]);
             }
         }
         $confirm_string .= zen_draw_hidden_field('customer_language', zen_get_language_code($customers_languages_id));
         $confirm_string .= zen_draw_hidden_field('admin_language', zen_get_language_code($_SESSION['languages_id']));
         $confirm_string .= zen_image_submit('button_send.gif', IMAGE_SEND) . ' ';
     }
     $confirm_string .= '<a href="' . zen_href_link(FILENAME_NEWSLETTERS, 'page=' . $_GET['page'] . '&nID=' . $_GET['nID'] . '&action=send') . '">' . zen_image_button('button_back.gif', IMAGE_BACK) . '</a> <a href="' . zen_href_link(FILENAME_NEWSLETTERS, 'page=' . $_GET['page'] . '&nID=' . $_GET['nID']) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a></td>' . "\n" . '  </form></tr>' . "\n" . '</table>';
     return $confirm_string;
 }
         $db->Execute("update " . TABLE_PRODUCTS_OPTIONS_VALUES . "\n                        set products_options_values_name = '" . zen_db_input($value_name) . "', products_options_values_sort_order = '" . (int) $products_options_values_sort_order . "'\n                        where products_options_values_id = '" . zen_db_input($value_id) . "'\n                        and language_id = '" . (int) $languages[$i]['id'] . "'");
     }
     $db->Execute("update " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . "\n                      set products_options_id = '" . (int) $option_id . "'\n                      where products_options_values_id = '" . (int) $value_id . "'");
     // alert if possible duplicate
     $duplicate_option_values = '';
     for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
         $value_name = zen_db_prepare_input($value_name_array[$languages[$i]['id']]);
         if (!empty($value_name)) {
             $check = $db->Execute("select pov.products_options_values_id, pov.products_options_values_name, pov.language_id\n                                from " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov\n                                left join " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " pov2po on pov.products_options_values_id = pov2po.products_options_values_id\n                                where pov.language_id= '" . $languages[$i]['id'] . "'\n                                and pov.products_options_values_name='" . zen_db_input($value_name) . "'\n                                and pov2po.products_options_id ='" . (int) $option_id . "'");
             if ($check->RecordCount() > 1) {
                 while (!$check->EOF) {
                     $check_dups .= ' - ' . $check->fields['products_options_values_id'];
                     $check->MoveNext();
                 }
                 // BOM by zen-cart.cn
                 $duplicate_option_values .= ' <b>' . GBcase(zen_get_language_name($languages[$i]['id']), "upper") . '</b> : ' . $check_dups;
                 // EOM by zen-cart.cn
             }
         }
     }
     if (!empty($duplicate_option_values)) {
         $messageStack->add_session(ATTRIBUTE_POSSIBLE_OPTIONS_VALUE_WARNING_DUPLICATE . ' ' . $duplicate_option_values, 'caution');
     }
     zen_redirect(zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, $_SESSION['page_info']));
     break;
 case 'delete_value':
     // demo active test
     if (zen_admin_demo()) {
         $_GET['action'] = '';
         $messageStack->add_session(ERROR_ADMIN_DEMO, 'caution');
         zen_redirect(zen_href_link(FILENAME_OPTIONS_VALUES_MANAGER, $_SESSION['page_info']));
function get_audience_sql_query_with_language($selected_entry, $query_category = 'email')
{
    // This is used to take the query_name selected in the drop-down menu or singular customer email address and
    // generate the SQL Select query to be used to build the list of email addresses to be sent to
    // it only returns a query name and query string (SQL SELECT statement)
    // the query string is then used in a $db->Execute() command for later parsing and emailing.
    global $db;
    $query_name = '';
    $queries_list = $db->Execute("select query_name, query_string from " . TABLE_QUERY_BUILDER . " " . "where query_category like '%" . $query_category . "%'");
    //                           "where query_category = '" . $query_category . "'");
    list($selected_entry, $language) = spliti(',', $selected_entry);
    $languages_query_string = '';
    if ($language != '') {
        list($keyname, $customers_languages_id) = spliti(':', $language);
        $customer_language = zen_get_language_code($customers_languages_id);
        $languages_query_string = "customers_languages_id = '" . (int) $customers_languages_id . "'";
        if ($customer_language == DEFAULT_LANGUAGE) {
            $languages_query_string = "(" . $languages_query_string . " or customers_languages_id = '0')";
        }
    }
    while (!$queries_list->EOF) {
        if ($selected_entry == $queries_list->fields['query_name']) {
            $query_string = $queries_list->fields['query_string'];
            $query_name = $queries_list->fields['query_name'];
            if (preg_match('/TABLE_CUSTOMERS/', $query_string) && $languages_query_string != '') {
                $query_string = preg_replace('/where/i', 'where ' . $languages_query_string . ' and', $query_string);
                $query_name .= ' (' . zen_get_language_name($customers_languages_id) . ')';
            }
            if (preg_match('/TABLE_CUSTOMERS c/', $query_string) && $languages_query_string != '') {
                $query_string = preg_replace('/customers_languages_id/', 'c.customers_languages_id', $query_string);
            }
            $query_string = parsed_query_string($query_string);
            //echo 'GET_AUD_EM_ADDR_QRY:<br />query_name='.$query_name.'<br />query_string='.$query_string;
        }
        $queries_list->MoveNext();
    }
    //if no match found against queries listed in database, then $selected_entry must be an email address
    if ($query_name == '' && $query_category == 'email') {
        $cust_email_address = zen_db_prepare_input($selected_entry);
        $query_name = $cust_email_address;
        $query_string = "select customers_firstname, customers_lastname, customers_email_address, customers_languages_id\n                       from " . TABLE_CUSTOMERS . "\n                       where customers_email_address = '" . zen_db_input($cust_email_address) . "'";
        $mail = $db->Execute($query_string);
        $customers_languages_id = $mail->fields['customers_languages_id'];
        $query_name .= ' (' . zen_get_language_name($customers_languages_id) . ')';
    }
    //send back a 1-row array containing the query_name and the SQL query_string
    return array('query_name' => $query_name, 'query_string' => $query_string, 'customers_languages_id' => $customers_languages_id);
}
    return $directory_array;
}
$select_lang_array = array();
$languages = zen_get_languages();
if (sizeof($languages) > 1) {
    for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
        $test_directory = DIR_WS_LANGUAGES . $languages[$i]['directory'];
        $test_file = DIR_WS_LANGUAGES . $languages[$i]['directory'] . '.php';
        if (file_exists($test_file) and file_exists($test_directory)) {
            $select_lang_array[] = array('id' => $languages[$i]['code'], 'text' => $languages[$i]['name']);
        }
    }
}
$selected_lang = isset($_GET['selected_lang']) ? $_GET['selected_lang'] : zen_get_language_code($_SESSION['languages_id']);
$selected_lang_id = zen_get_languages_id_by_code($selected_lang);
$edit_language = isset($selected_lang_id) ? zen_get_language_name($selected_lang_id) : $_SESSION['language'];
$action = isset($_GET['action']) ? $_GET['action'] : '';
$za_who = $_GET['za_lookup'];
if ($action == 'new_page') {
    $page = $_GET['define_it'];
    $check_directory = array();
    $check_directory[] = DIR_FS_CATALOG . DIR_WS_LANGUAGES . $edit_language . '/html_includes/';
    $directory_files = zen_display_files();
    $za_lookup = array();
    for ($i = 0, $n = sizeof($directory_files); $i < $n; $i++) {
        $za_lookup[] = array('id' => $i, 'text' => $directory_files[$i]);
    }
    // This will cause it to look for 'define_conditions.php'
    $_GET['filename'] = $za_lookup[$page]['text'];
    $_GET['box_name'] = BOX_TOOLS_DEFINE_CONDITIONS;
}