$cat_result = xos_db_query("\n      SELECT\n        c.categories_or_pages_id,\n        c.parent_id,\n        cd.language_id,\n        UNIX_TIMESTAMP(c.date_added) as date_added,\n        UNIX_TIMESTAMP(c.last_modified) as last_modified\n      FROM \n        " . TABLE_CATEGORIES_OR_PAGES . " c,\n        " . TABLE_CATEGORIES_OR_PAGES_DATA . " cd\n      WHERE\n        c.categories_or_pages_status='1' AND\n        c.categories_or_pages_id = cd.categories_or_pages_id AND\n        cd.language_id = '" . $value['id'] . "'\n      ORDER by \n        cd.categories_or_pages_id\n    ");
 $cat_array = array();
 if (xos_db_num_rows($cat_result) > 0) {
     while ($cat_data = xos_db_fetch_array($cat_result)) {
         $cat_array[$cat_data['categories_or_pages_id']][$lng_code] = $cat_data;
     }
 }
 reset($cat_array);
 foreach ($cat_array as $lang_array) {
     foreach ($lang_array as $cat_id => $cat_data) {
         $lang_param = sizeof($lng->catalog_languages) > 1 ? '&lnc=' . $lng_code : '';
         $date = $cat_data['last_modified'] != NULL ? $cat_data['last_modified'] : $cat_data['date_added'];
         reset($currencies->currencies);
         while (list($key) = each($currencies->currencies)) {
             $curr_param = sizeof($currencies->currencies) > 1 ? '&cur=' . $key : '';
             $string = sprintf(SITEMAP_ENTRY, xos_href_link('index.php', rv_get_path($cat_data['categories_or_pages_id'], $lng_code) . $lang_param . $curr_param, 'NONSSL', false), PRIORITY_CATEGORIES, iso8601_date($date), CHANGEFREQ_CATEGORIES);
             $function_write($fp, $string);
             $strlen += strlen($string);
             $c++;
             if ($autogenerate) {
                 // 500000 entrys or filesize > 10,485,760 - some space for the last entry
                 if ($c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
                     $function_write($fp, SITEMAP_FOOTER);
                     $function_close($fp);
                     $c = 0;
                     $i++;
                     $fp = $function_open(($output_to_doc_root ? str_replace(DIR_WS_CATALOG, '/', DIR_FS_CATALOG) : DIR_FS_CATALOG) . 'sitemap' . $i . $file_extension, 'w');
                     $function_write($fp, SITEMAP_HEADER);
                     $strlen = strlen(SITEMAP_HEADER);
                     $string = '';
                 }
$cat_result = olc_db_query("\n    SELECT\n      c.categories_id,\n      c.parent_id,\n      cd.language_id,\n      UNIX_TIMESTAMP(c.date_added) as date_added,\n      UNIX_TIMESTAMP(c.last_modified) as last_modified,\n      l.code\n    FROM\n      " . TABLE_CATEGORIES . " c,\n      " . TABLE_CATEGORIES_DESCRIPTION . " cd,\n      " . TABLE_LANGUAGES . " l\n    WHERE\n    \tc.categories_status='1' AND\n      c.categories_id = cd.categories_id AND\n      cd.language_id = l.languages_id\n    ORDER by\n      cd.categories_id\n  ");
$cat_array = array();
if (olc_db_num_rows($cat_result) > 0) {
    while ($cat_data = olc_db_fetch_array($cat_result)) {
        $cat_array[$cat_data['categories_id']][$cat_data['code']] = $cat_data;
    }
}
reset($cat_array);
$index_php = 'index.php';
$product_info_php = 'product_info.php';
foreach ($cat_array as $lang_array) {
    foreach ($lang_array as $cat_id => $cat_data) {
        //$lang_param = ($cat_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$cat_data['code'] : EMPTY_STRING;
        $lang_param = '&language=' . $cat_data['code'];
        $date = $cat_data['last_modified'] != NULL ? $cat_data['last_modified'] : $cat_data['date_added'];
        $string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(olc_href_link_catalog($index_php, rv_get_path($cat_data['categories_id'], $cat_data['code']) . $lang_param, NONSSL, false, USE_SEO, false))), PRIORITY_CATEGORIES, iso8601_date($date), CHANGEFREQ_CATEGORIES);
        $c_cat_total++;
        output_entry();
    }
}
$product_result = olc_db_query("\n    SELECT\n      p.products_id,\n      pd.language_id,\n      UNIX_TIMESTAMP(p.products_date_added) as products_date_added,\n      UNIX_TIMESTAMP(p.products_last_modified) as products_last_modified,\n      l.code\n    FROM\n      " . TABLE_PRODUCTS . " p,\n      " . TABLE_PRODUCTS_DESCRIPTION . " pd,\n      " . TABLE_LANGUAGES . " l\n    WHERE\n      p.products_status='1' AND\n      p.products_id = pd.products_id AND\n      pd.language_id = l.languages_id\n    ORDER BY\n      p.products_id\n  ");
if (olc_db_num_rows($product_result) > 0) {
    while ($product_data = olc_db_fetch_array($product_result)) {
        //$lang_param = ($product_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$product_data['code'] : EMPTY_STRING;
        $lang_param = '&language=' . $product_data['code'];
        $date = $product_data['products_last_modified'] != NULL ? $product_data['products_last_modified'] : $product_data['products_date_added'];
        $string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(olc_href_link_catalog($product_info_php, 'products_id=' . $product_data['products_id'] . $lang_param, NONSSL, false, SEARCH_ENGINE_FRIENDLY_URLS, false))), PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);
        $c_prod_total++;
        output_entry();
    }
}