Пример #1
0
 function __construct()
 {
     // this is necessary because if HTTP_HOST doesn't have the PORT the parse_url is null
     $current_host = parse_url(Params::getServerParam('HTTP_HOST'), PHP_URL_HOST);
     if ($current_host === null) {
         $current_host = Params::getServerParam('HTTP_HOST');
     }
     if (parse_url(osc_base_url(), PHP_URL_HOST) !== $current_host) {
         // first check if it's http or https
         $url = 'http://';
         if (osc_is_ssl()) {
             $url = 'https://';
         }
         // append the domain
         $url .= parse_url(osc_base_url(), PHP_URL_HOST);
         // append the port number if it's necessary
         $http_port = parse_url(Params::getServerParam('HTTP_HOST'), PHP_URL_PORT);
         if ($http_port !== 80) {
             $url .= ':' . parse_url(Params::getServerParam('HTTP_HOST'), PHP_URL_PORT);
         }
         // append the request
         $url .= Params::getServerParam('REQUEST_URI', false, false);
         $this->redirectTo($url);
     }
     $this->subdomain_params($current_host);
     $this->page = Params::getParam('page');
     $this->action = Params::getParam('action');
     $this->ajax = false;
     $this->time = list($sm, $ss) = explode(' ', microtime());
     WebThemes::newInstance();
     osc_run_hook('init');
 }
Пример #2
0
/**
 * Print recaptcha html, if $section = "recover_password"
 * set 'recover_time' at session.
 *
 * @param  string $section
 * @return void
 */
function osc_show_recaptcha($section = '')
{
    if (osc_recaptcha_public_key()) {
        require_once osc_lib_path() . 'recaptchalib.php';
        switch ($section) {
            case 'recover_password':
                $time = Session::newInstance()->_get('recover_time');
                if (time() - $time <= 1200) {
                    echo recaptcha_get_html(osc_recaptcha_public_key(), null, osc_is_ssl()) . "<br />";
                }
                break;
            default:
                echo recaptcha_get_html(osc_recaptcha_public_key(), null, osc_is_ssl());
                break;
        }
    }
}
Пример #3
0
/**
 * Gets search url given params
 *
 * @params array $params
 * @return string
 */
function osc_search_url($params = null)
{
    if (is_array($params)) {
        osc_prune_array($params);
    }
    $countP = count($params);
    if ($countP == 0) {
        $params['page'] = 'search';
    }
    $base_url = osc_base_url();
    $http_url = osc_is_ssl() ? "https://" : "http://";
    if (osc_subdomain_type() == 'category' && isset($params['sCategory'])) {
        if ($params['sCategory'] != Params::getParam('sCategory')) {
            if (is_array($params['sCategory'])) {
                $params['sCategory'] = implode(",", $params['sCategory']);
            }
            if ($params['sCategory'] != '' && strpos($params['sCategory'], ",") === false) {
                if (is_numeric($params['sCategory'])) {
                    $category = Category::newInstance()->findByPrimaryKey($params['sCategory']);
                } else {
                    $category = Category::newInstance()->findBySlug($params['sCategory']);
                }
                if (isset($category['s_slug'])) {
                    $base_url = $http_url . $category['s_slug'] . "." . osc_subdomain_host() . REL_WEB_URL;
                    unset($params['sCategory']);
                }
            }
        } else {
            if (osc_is_subdomain()) {
                unset($params['sCategory']);
            }
        }
    } else {
        if (osc_subdomain_type() == 'country' && isset($params['sCountry'])) {
            if ($params['sCountry'] != Params::getParam('sCountry')) {
                if (is_array($params['sCountry'])) {
                    $params['sCountry'] = implode(",", $params['sCountry']);
                }
                if ($params['sCountry'] != '' && strpos($params['sCountry'], ",") === false) {
                    if (is_numeric($params['sCountry'])) {
                        $country = Country::newInstance()->findByPrimaryKey($params['sCountry']);
                    } else {
                        $country = Country::newInstance()->findByCode($params['sCountry']);
                    }
                    if (isset($country['s_slug'])) {
                        $base_url = $http_url . $country['s_slug'] . "." . osc_subdomain_host() . REL_WEB_URL;
                        unset($params['sCountry']);
                    }
                }
            } else {
                if (osc_is_subdomain()) {
                    unset($params['sCountry']);
                }
            }
        } else {
            if (osc_subdomain_type() == 'region' && isset($params['sRegion'])) {
                if ($params['sRegion'] != Params::getParam('sRegion')) {
                    if (is_array($params['sRegion'])) {
                        $params['sRegion'] = implode(",", $params['sRegion']);
                    }
                    if ($params['sRegion'] != '' && strpos($params['sRegion'], ",") === false) {
                        if (is_numeric($params['sRegion'])) {
                            $region = Region::newInstance()->findByPrimaryKey($params['sRegion']);
                        } else {
                            $region = Region::newInstance()->findByName($params['sRegion']);
                        }
                        if (isset($region['s_slug'])) {
                            $base_url = $http_url . $region['s_slug'] . "." . osc_subdomain_host() . REL_WEB_URL;
                            unset($params['sRegion']);
                        }
                    }
                } else {
                    if (osc_is_subdomain()) {
                        unset($params['sRegion']);
                    }
                }
            } else {
                if (osc_subdomain_type() == 'city' && isset($params['sCity'])) {
                    if ($params['sCity'] != Params::getParam('sCity')) {
                        if (is_array($params['sCity'])) {
                            $params['sCity'] = implode(",", $params['sCity']);
                        }
                        if ($params['sCity'] != '' && strpos($params['sCity'], ",") === false) {
                            if (is_numeric($params['sCity'])) {
                                $city = City::newInstance()->findByPrimaryKey($params['sCity']);
                            } else {
                                $city = City::newInstance()->findByName($params['sCity']);
                            }
                            if (isset($city['s_slug'])) {
                                $base_url = $http_url . $city['s_slug'] . "." . osc_subdomain_host() . REL_WEB_URL;
                                unset($params['sCity']);
                            }
                        }
                    } else {
                        if (osc_is_subdomain()) {
                            unset($params['sCity']);
                        }
                    }
                } else {
                    if (osc_subdomain_type() == 'user' && isset($params['sUser'])) {
                        if ($params['sUser'] != Params::getParam('sUser')) {
                            if (is_array($params['sUser'])) {
                                $params['sUser'] = implode(",", $params['sUser']);
                            }
                            if ($params['sUser'] != '' && strpos($params['sUser'], ",") === false) {
                                if (is_numeric($params['sUser'])) {
                                    $user = User::newInstance()->findByPrimaryKey($params['sUser']);
                                } else {
                                    $user = User::newInstance()->findByUsername($params['sUser']);
                                }
                                if (isset($user['s_username'])) {
                                    $base_url = $http_url . $user['s_username'] . "." . osc_subdomain_host() . REL_WEB_URL;
                                    unset($params['sUser']);
                                }
                            }
                        } else {
                            if (osc_is_subdomain()) {
                                unset($params['sUser']);
                            }
                        }
                    }
                }
            }
        }
    }
    $countP = count($params);
    if ($countP == 0) {
        return $base_url;
    }
    unset($params['page']);
    $countP = count($params);
    if (osc_rewrite_enabled()) {
        $url = $base_url . osc_get_preference('rewrite_search_url');
        // CANONICAL URLS
        if (isset($params['sCategory']) && !is_array($params['sCategory']) && strpos($params['sCategory'], ',') === false && ($countP == 1 || $countP == 2 && isset($params['iPage']))) {
            if (osc_category_id() == $params['sCategory']) {
                $category['pk_i_id'] = osc_category_id();
                $category['s_slug'] = osc_category_slug();
            } else {
                if (is_numeric($params['sCategory'])) {
                    $category = Category::newInstance()->findByPrimaryKey($params['sCategory']);
                } else {
                    $category = Category::newInstance()->findBySlug($params['sCategory']);
                }
            }
            if (isset($category['pk_i_id'])) {
                $url = osc_get_preference('rewrite_cat_url');
                if (preg_match('|{CATEGORIES}|', $url)) {
                    $categories = Category::newInstance()->hierarchy($category['pk_i_id']);
                    $sanitized_categories = array();
                    $mCat = Category::newInstance();
                    for ($i = count($categories); $i > 0; $i--) {
                        $tmpcat = $mCat->findByPrimaryKey($categories[$i - 1]['pk_i_id']);
                        $sanitized_categories[] = $tmpcat['s_slug'];
                    }
                    $url = str_replace('{CATEGORIES}', implode("/", $sanitized_categories), $url);
                }
                $seo_prefix = '';
                if (osc_get_preference('seo_url_search_prefix') != '') {
                    $seo_prefix = osc_get_preference('seo_url_search_prefix') . '/';
                }
                $url = str_replace('{CATEGORY_NAME}', $category['s_slug'], $url);
                // DEPRECATED : CATEGORY_SLUG is going to be removed in 3.4
                $url = str_replace('{CATEGORY_SLUG}', $category['s_slug'], $url);
                $url = str_replace('{CATEGORY_ID}', $category['pk_i_id'], $url);
            } else {
                // Search by a category which does not exists (by form)
                // TODO CHANGE TO NEW ROUTES!!
                return $base_url . 'index.php?page=search&sCategory=' . urlencode($params['sCategory']);
            }
            if (isset($params['iPage']) && $params['iPage'] != '' && $params['iPage'] != 1) {
                $url .= '/' . $params['iPage'];
            }
            $url = $base_url . $seo_prefix . $url;
        } else {
            if (isset($params['sRegion']) && is_string($params['sRegion']) && strpos($params['sRegion'], ',') === false && ($countP == 1 || $countP == 2 && (isset($params['iPage']) || isset($params['sCategory'])) || $countP == 3 && isset($params['iPage']) && isset($params['sCategory']))) {
                $url = $base_url;
                if (osc_get_preference('seo_url_search_prefix') != '') {
                    $url .= osc_get_preference('seo_url_search_prefix') . '/';
                }
                if (isset($params['sCategory'])) {
                    $_auxSlug = _aux_search_category_slug($params['sCategory']);
                    if ($_auxSlug != '') {
                        $url .= $_auxSlug . '_';
                    }
                }
                if (isset($params['sRegion'])) {
                    if (osc_list_region_id() == $params['sRegion']) {
                        $url .= osc_sanitizeString(osc_list_region_slug()) . '-r' . osc_list_region_id();
                    } else {
                        if (is_numeric($params['sRegion'])) {
                            $region = Region::newInstance()->findByPrimaryKey($params['sRegion']);
                        } else {
                            $region = Region::newInstance()->findByName($params['sRegion']);
                        }
                        if (isset($region['s_slug'])) {
                            $url .= osc_sanitizeString($region['s_slug']) . '-r' . $region['pk_i_id'];
                        } else {
                            // Search by a region which does not exists (by form)
                            // TODO CHANGE TO NEW ROUTES!!
                            return $url . 'index.php?page=search&sRegion=' . urlencode($params['sRegion']);
                        }
                    }
                }
                if (isset($params['iPage']) && $params['iPage'] != '' && $params['iPage'] != 1) {
                    $url .= '/' . $params['iPage'];
                }
            } else {
                if (isset($params['sCity']) && !is_array($params['sCity']) && strpos($params['sCity'], ',') === false && ($countP == 1 || $countP == 2 && (isset($params['iPage']) || isset($params['sCategory'])) || $countP == 3 && isset($params['iPage']) && isset($params['sCategory']))) {
                    $url = $base_url;
                    if (osc_get_preference('seo_url_search_prefix') != '') {
                        $url .= osc_get_preference('seo_url_search_prefix') . '/';
                    }
                    if (isset($params['sCategory'])) {
                        $_auxSlug = _aux_search_category_slug($params['sCategory']);
                        if ($_auxSlug != '') {
                            $url .= $_auxSlug . '_';
                        }
                    }
                    if (isset($params['sCity'])) {
                        if (osc_list_city_id() == $params['sCity']) {
                            $url .= osc_sanitizeString(osc_list_city_slug()) . '-c' . osc_list_city_id();
                        } else {
                            if (is_numeric($params['sCity'])) {
                                $city = City::newInstance()->findByPrimaryKey($params['sCity']);
                            } else {
                                $city = City::newInstance()->findByName($params['sCity']);
                            }
                            if (isset($city['s_slug'])) {
                                $url .= osc_sanitizeString($city['s_slug']) . '-c' . $city['pk_i_id'];
                            } else {
                                // Search by a city which does not exists (by form)
                                // TODO CHANGE TO NEW ROUTES!!
                                return $url . 'index.php?page=search&sCity=' . urlencode($params['sCity']);
                            }
                        }
                    }
                    if (isset($params['iPage']) && $params['iPage'] != '' && $params['iPage'] != 1) {
                        $url .= '/' . $params['iPage'];
                    }
                } else {
                    if ($params != null && is_array($params)) {
                        foreach ($params as $k => $v) {
                            switch ($k) {
                                case 'sCountry':
                                    $k = osc_get_preference('rewrite_search_country');
                                    break;
                                case 'sRegion':
                                    $k = osc_get_preference('rewrite_search_region');
                                    break;
                                case 'sCity':
                                    $k = osc_get_preference('rewrite_search_city');
                                    break;
                                case 'sCityArea':
                                    $k = osc_get_preference('rewrite_search_city_area');
                                    break;
                                case 'sCategory':
                                    $k = osc_get_preference('rewrite_search_category');
                                    if (is_array($v)) {
                                        $v = implode(",", $v);
                                    }
                                    break;
                                case 'sUser':
                                    $k = osc_get_preference('rewrite_search_user');
                                    if (is_array($v)) {
                                        $v = implode(",", $v);
                                    }
                                    break;
                                case 'sPattern':
                                    $k = osc_get_preference('rewrite_search_pattern');
                                    break;
                                case 'meta':
                                    // meta(@id),value/meta(@id),value2/...
                                    foreach ($v as $key => $value) {
                                        if (is_array($value)) {
                                            foreach ($value as $_key => $_value) {
                                                if ($value != '') {
                                                    $url .= '/meta' . $key . '-' . $_key . ',' . urlencode($_value);
                                                }
                                            }
                                        } else {
                                            if ($value != '') {
                                                $url .= '/meta' . $key . ',' . urlencode($value);
                                            }
                                        }
                                    }
                                    break;
                                default:
                                    break;
                            }
                            if (!is_array($v) && $v != '') {
                                $url .= "/" . $k . "," . urlencode($v);
                            }
                        }
                    }
                }
            }
        }
    } else {
        $url = $base_url . 'index.php?page=search';
        if ($params != null && is_array($params)) {
            foreach ($params as $k => $v) {
                if ($k == 'meta') {
                    if (is_array($v)) {
                        foreach ($v as $_k => $aux) {
                            if (is_array($aux)) {
                                foreach (array_keys($aux) as $aux_k) {
                                    $url .= "&" . $k . "[{$_k}][{$aux_k}]=" . urlencode($aux[$aux_k]);
                                }
                            } else {
                                $url .= "&" . $_k . "[]=" . urlencode($aux);
                            }
                        }
                    }
                } else {
                    if (is_array($v)) {
                        $v = implode(",", $v);
                    }
                    $url .= "&" . $k . "=" . urlencode($v);
                }
            }
        }
    }
    return str_replace('%2C', ',', $url);
}