Example #1
0
function xos_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true, $add_get_language = true, $add_get_currency = true, $add_get_tpl = true)
{
    global $session_started, $request_type, $cats, $mans, $cots, $lng, $lang_code;
    $add_parameter = false;
    if (!xos_not_null($page)) {
        die('<br /><br /><span style="color : #ff0000;"><b>Error!</b></span><br /><br /><b>Unable to determine the page link!</b><br /><br />');
    }
    if ($connection == 'REQUEST_TYPE') {
        $connection = $request_type;
    }
    if ($connection == 'NONSSL') {
        $link = HTTP_SERVER . DIR_WS_CATALOG;
    } elseif ($connection == 'SSL') {
        if (ENABLE_SSL == 'true') {
            $link = HTTPS_SERVER . DIR_WS_CATALOG;
        } else {
            $link = HTTP_SERVER . DIR_WS_CATALOG;
        }
    } else {
        die('<br /><br /><span style="color : #ff0000;"><b>Error!</b></span><br /><br /><b>Unable to determine connection method on a link!<br /><br />Known methods: NONSSL SSL</b><br /><br />');
    }
    if (SEARCH_ENGINE_FRIENDLY_URLS == 'true' && $search_engine_safe == true && xos_not_null($parameters)) {
        $parameters = str_replace(array('&amp;', '%2F', '%5C'), array('&', '_.~', '~._'), $parameters);
    }
    if (SEARCH_ENGINE_FRIENDLY_URLS == 'true' && $search_engine_safe == true) {
        if (!isset($cats)) {
            $all_cat_query = xos_db_query("select c.categories_or_pages_id as id, cpd.categories_or_pages_name as name from " . TABLE_CATEGORIES_OR_PAGES . " c, " . TABLE_CATEGORIES_OR_PAGES_DATA . " cpd where c.categories_or_pages_id = cpd.categories_or_pages_id and cpd.language_id = '" . (int) $_SESSION['languages_id'] . "' and c.categories_or_pages_status = '1'");
            while ($cat = xos_db_fetch_array($all_cat_query)) {
                $cats[$cat['id']] = $cat['name'];
            }
        }
        if (!isset($mans)) {
            $all_man_query = xos_db_query("select manufacturers_id as id, manufacturers_name as name from " . TABLE_MANUFACTURERS_INFO . " where languages_id = '" . (int) $_SESSION['languages_id'] . "'");
            while ($man = xos_db_fetch_array($all_man_query)) {
                $mans[$man['id']] = $man['name'];
            }
        }
        if (!isset($cots)) {
            $all_content_query = xos_db_query("select content_id as id, name from " . TABLE_CONTENTS_DATA . " where language_id = '" . (int) $_SESSION['languages_id'] . "'");
            while ($cot = xos_db_fetch_array($all_content_query)) {
                $cots[$cot['id']] = $cot['name'];
            }
        }
        parse_str($parameters, $param_array);
        $lng_code = '';
        // enable this lines if language code is needed
        // if (sizeof($lng->catalog_languages) > 1) {
        //   if (!empty($lang_code)) {
        //     $lng_code = $lang_code . '/';
        //   } else if (!empty($_SESSION['languages_code'])) {
        //     $lng_code = $_SESSION['languages_code'] . '/';
        //   }
        // }
        switch ($page) {
            case FILENAME_DEFAULT:
                if (array_key_exists('c', $param_array)) {
                    foreach (explode('_', $param_array['c']) as $value) {
                        $c_name_array[] = $cats[$value];
                    }
                    $name_str = implode('^', $c_name_array);
                } elseif (array_key_exists('m', $param_array)) {
                    $name_str = $mans[$param_array['m']];
                } else {
                    $name_str = HEADER_TITLE_HOME;
                }
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/a' : FILENAME_DEFAULT;
                break;
            case FILENAME_PRODUCT_INFO:
                if (array_key_exists('c', $param_array)) {
                    foreach (explode('_', $param_array['c']) as $value) {
                        $c_name_array[] = $cats[$value];
                    }
                    $name_str = implode('^', $c_name_array);
                } elseif (array_key_exists('p', $param_array)) {
                    if (array_key_exists('m', $param_array)) {
                        $name_str = $mans[$param_array['m']];
                    } else {
                        $c_id_str = xos_get_product_path($param_array['p']);
                        foreach (explode('_', $c_id_str) as $value) {
                            $c_name_array[] = $cats[$value];
                        }
                        $name_str = implode('^', $c_name_array);
                    }
                }
                $name_str = $name_str . '^' . htmlspecialchars_decode(xos_get_products_name($param_array['p']));
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/b' : FILENAME_PRODUCT_INFO;
                break;
            case FILENAME_CONTENT:
                if (array_key_exists('co', $param_array)) {
                    $name_str = $cots[$param_array['co']];
                }
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/c' : FILENAME_CONTENT;
                break;
            case FILENAME_SPECIALS:
                $name_str = SEF_URL_NAME_SPECIALS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/d' : FILENAME_SPECIALS;
                break;
            case FILENAME_PRODUCTS_NEW:
                $name_str = SEF_URL_NAME_NEW_PRODUCTS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/e' : FILENAME_PRODUCTS_NEW;
                break;
            case FILENAME_NEWSLETTER_SUBSCRIBE:
                $name_str = SEF_URL_NAME_SUBSCRIBE_NEWSLETTER;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/f' : FILENAME_NEWSLETTER_SUBSCRIBE;
                break;
            case FILENAME_REVIEWS:
                $name_str = SEF_URL_NAME_REVIEWS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/g' : FILENAME_REVIEWS;
                break;
            case FILENAME_PRODUCT_REVIEWS:
                if (array_key_exists('m', $param_array)) {
                    $name_str = $mans[$param_array['m']];
                } else {
                    $c_id_str = xos_get_product_path($param_array['p']);
                    foreach (explode('_', $c_id_str) as $value) {
                        $c_name_array[] = $cats[$value];
                    }
                    $name_str = implode('^', $c_name_array);
                }
                $name_str = $name_str . '^' . htmlspecialchars_decode(xos_get_products_name($param_array['p'])) . '^' . SEF_URL_NAME_REVIEWS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/h' : FILENAME_PRODUCT_REVIEWS;
                break;
            case FILENAME_PRODUCT_REVIEWS_INFO:
                if (array_key_exists('m', $param_array)) {
                    $name_str = $mans[$param_array['m']];
                } else {
                    $c_id_str = xos_get_product_path($param_array['p']);
                    foreach (explode('_', $c_id_str) as $value) {
                        $c_name_array[] = $cats[$value];
                    }
                    $name_str = implode('^', $c_name_array);
                }
                $name_str = $name_str . '^' . htmlspecialchars_decode(xos_get_products_name($param_array['p'])) . '^' . SEF_URL_NAME_REVIEWS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/i' : FILENAME_PRODUCT_REVIEWS_INFO;
                break;
            case FILENAME_TELL_A_FRIEND:
                if (array_key_exists('m', $param_array)) {
                    $name_str = $mans[$param_array['m']];
                } else {
                    $c_id_str = xos_get_product_path($param_array['p']);
                    foreach (explode('_', $c_id_str) as $value) {
                        $c_name_array[] = $cats[$value];
                    }
                    $name_str = implode('^', $c_name_array);
                }
                $name_str = $name_str . '^' . htmlspecialchars_decode(xos_get_products_name($param_array['p'])) . '^' . SEF_URL_NAME_TELL_A_FRIEND;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/k' : FILENAME_TELL_A_FRIEND;
                break;
            case FILENAME_SHOPPING_CART:
                $name_str = SEF_URL_NAME_SHOPPING_CART;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/l' : FILENAME_SHOPPING_CART;
                break;
            case FILENAME_LOGIN:
                $name_str = SEF_URL_NAME_LOGIN;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/m' : FILENAME_LOGIN;
                break;
            case FILENAME_CREATE_ACCOUNT:
                $name_str = SEF_URL_NAME_CREATE_ACCOUNT;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/n' : FILENAME_CREATE_ACCOUNT;
                break;
            case FILENAME_PASSWORD_FORGOTTEN:
                $name_str = SEF_URL_NAME_PASSWORD_FORGOTTEN;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/o' : FILENAME_PASSWORD_FORGOTTEN;
                break;
            case FILENAME_ADVANCED_SEARCH_AND_RESULTS:
                $name_str = SEF_URL_NAME_ADVANCED_SEARCH_AND_RESULTS;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/p' : FILENAME_ADVANCED_SEARCH_AND_RESULTS;
                break;
            case FILENAME_SEARCH_RESULT:
                $name_str = SEF_URL_NAME_SEARCH_RESULT;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/q' : FILENAME_SEARCH_RESULT;
                break;
            case FILENAME_COOKIE_USAGE:
                $name_str = SEF_URL_NAME_COOKIE_USAGE;
                $page = ($trail_string = xos_sef_url_trail_converter($name_str)) ? $lng_code . $trail_string . '.html/r' : FILENAME_COOKIE_USAGE;
                break;
        }
    }
    if (xos_not_null($parameters)) {
        $link .= $page . '?' . xos_output_string($parameters);
        $add_parameter = true;
        $separator = '&';
    } else {
        $link .= $page;
        $separator = '?';
    }
    while (substr($link, -1) == '&' || substr($link, -1) == '?') {
        $link = substr($link, 0, -1);
    }
    if (!$session_started && xos_not_null($_GET['cur']) && $add_get_currency == true) {
        $link .= $separator . xos_output_string('cur=' . $_GET['cur']);
        $add_parameter = true;
        $separator = '&';
    }
    if (!$session_started && xos_not_null($_GET['lnc']) && $add_get_language == true) {
        $link .= $separator . xos_output_string('lnc=' . $_GET['lnc']);
        $add_parameter = true;
        $separator = '&';
    }
    if (!$session_started && xos_not_null($_GET['tpl']) && $add_get_tpl == true) {
        $link .= $separator . xos_output_string('tpl=' . $_GET['tpl']);
        $add_parameter = true;
    }
    // Add the session ID when moving from different HTTP and HTTPS servers, or when SESSID is not empty
    if ($add_session_id == true && $session_started == true && SESSION_FORCE_COOKIE_USE == 'false') {
        if (SESSID) {
            $_sid = SESSID;
        } elseif (($request_type == 'NONSSL' && $connection == 'SSL' && ENABLE_SSL == 'true' || $request_type == 'SSL' && $connection == 'NONSSL' && ENABLE_SSL == 'true') && HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {
            $_sid = xos_session_name() . '=' . xos_session_id();
        }
    }
    if (isset($_sid)) {
        $add_parameter = true;
        $link .= $separator . xos_output_string($_sid);
    }
    if (SEARCH_ENGINE_FRIENDLY_URLS == 'true' && $search_engine_safe == true) {
        $link = str_replace(array('=%20', '&&', '=&', '/?', '?', '&', '='), array('=', '&', '/^/', '/', '/', '/', '/'), $link);
        if ($add_parameter) {
            $link = $link . '/';
        }
    } else {
        $link = str_replace(array('&amp;', '&'), array('&', '&amp;'), $link);
    }
    return $link;
}
xos_activate_banners();
xos_expire_banners();
// auto expire special products
// auto update products date available
// reset new order date and clear all cache
require DIR_WS_FUNCTIONS . 'reset_and_update.php';
xos_expire_specials();
xos_update_products_date_available();
if (CACHE_LEVEL > 0 && NEW_ORDER == 'true') {
    xos_update_new_order_date();
}
// calculate category path
if (isset($_GET['c'])) {
    $cPath = $_GET['c'];
} elseif (isset($_GET['p']) && !isset($_GET['m'])) {
    $cPath = xos_get_product_path($_GET['p']);
} else {
    $cPath = '';
}
if (xos_not_null($cPath)) {
    $cPath_array = xos_parse_category_path($cPath);
    $cPath = implode('_', $cPath_array);
    $current_category_id = $cPath_array[sizeof($cPath_array) - 1];
} else {
    $current_category_id = 0;
}
// include the site trail class and start the site trail
require DIR_WS_CLASSES . 'site_trail.php';
$site_trail = new site_trail();
if (DISPLAY_LINK_TO_ROOT_DIRECTORY == 'true' && DIR_WS_CATALOG != '') {
    $site_trail->add(HEADER_TITLE_TOP, str_replace(DIR_WS_CATALOG . FILENAME_DEFAULT, '', xos_href_link(FILENAME_DEFAULT, '', 'NONSSL', true, false)));