Файл: oc-includes/osclass/helpers/hSearch.php
Строк: 1158
<?php
/*
* Copyright 2014 Osclass
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Helper Search
* @package Osclass
* @subpackage Helpers
* @author Osclass
*/
/**
* Gets search object
*
* @return mixed
*/
function osc_search() {
if(View::newInstance()->_exists('search')) {
return View::newInstance()->_get('search');
} else {
$search = new Search();
View::newInstance()->_exportVariableToView('search', $search);
return $search;
}
}
/**
* Gets available search orders
*
* @return array
*/
function osc_list_orders() {
if (osc_price_enabled_at_items()) {
return array(
__('Newly listed') => array('sOrder' => 'dt_pub_date', 'iOrderType' => 'desc')
,__('Lower price first') => array('sOrder' => 'i_price', 'iOrderType' => 'asc')
,__('Higher price first') => array('sOrder' => 'i_price', 'iOrderType' => 'desc')
);
}
else {
return array(
__('Newly listed') => array('sOrder' => 'dt_pub_date', 'iOrderType' => 'desc')
);
}
}
/**
* Gets current search page
*
* @return int
*/
function osc_search_page() {
return View::newInstance()->_get('search_page');
}
/**
* Gets total pages of search
*
* @return int
*/
function osc_search_total_pages() {
return View::newInstance()->_get('search_total_pages');
}
/**
* Gets if "has pic" option is enabled or not in the search
*
* @return boolean
*/
function osc_search_has_pic() {
return View::newInstance()->_get('search_has_pic');
}
/**
* Gets if "only premium" option is enabled or not in the search
*
* @return boolean
*/
function osc_search_only_premium() {
return View::newInstance()->_get('search_only_premium');
}
/**
* Gets current search order
*
* @return string
*/
function osc_search_order() {
return View::newInstance()->_get('search_order');
}
/**
* Gets current search order type
*
* @return string
*/
function osc_search_order_type() {
return View::newInstance()->_get('search_order_type');
}
/**
* Gets current search pattern
*
* @return string
*/
function osc_search_pattern() {
if(View::newInstance()->_exists('search_pattern')) {
return View::newInstance()->_get('search_pattern');
} else {
return '';
}
}
/**
* Gets current search country
*
* @return string
*/
function osc_search_country() {
return View::newInstance()->_get('search_country');
}
/**
* Gets current search region
*
* @return string
*/
function osc_search_region() {
return View::newInstance()->_get('search_region');
}
/**
* Gets current search city
*
* @return string
*/
function osc_search_city() {
return View::newInstance()->_get('search_city');
}
/**
* Gets current search users
*
* @return string
*/
function osc_search_user() {
if(is_array(View::newInstance()->_get('search_from_user') ) ){
return View::newInstance()->_get('search_from_user');
}
return array();
}
/**
* Gets current search max price
*
* @return float
*/
function osc_search_price_max() {
return View::newInstance()->_get('search_price_max');
}
/**
* Gets current search min price
*
* @return float
*/
function osc_search_price_min() {
return View::newInstance()->_get('search_price_min');
}
/**
* Gets current search total items
*
* @return int
*/
function osc_search_total_items() {
return View::newInstance()->_get('search_total_items');
}
/**
* Gets current search "show as" variable (show the items as a list or as a gallery)
*
* @return string
*/
function osc_search_show_as() {
return View::newInstance()->_get('search_show_as');
}
/**
* Gets current search start item record
*
* @return int
*/
function osc_search_start() {
return View::newInstance()->_get('search_start');
}
/**
* Gets current search end item record
*
* @return int
*/
function osc_search_end() {
return View::newInstance()->_get('search_end');
}
/**
* Gets current search category
*
* @return array
*/
function osc_search_category() {
if (View::newInstance()->_exists('search_subcategories')) {
$category = View::newInstance()->_current('search_subcategories');
} elseif (View::newInstance()->_exists('search_categories')) {
$category = View::newInstance()->_current('search_categories');
} else {
$category = View::newInstance()->_get('search_category');
}
if(!is_array($category)) { $category = array(); }
return($category);
}
/**
* Gets current search category id
*
* @return int
*/
function osc_search_category_id() {
$categories = osc_search_category();
$category = array();
$where = array();
$mCat = Category::newInstance();
foreach($categories as $cat) {
if( is_numeric($cat) ) {
$tmp = $mCat->findByPrimaryKey($cat);
if(isset($tmp['pk_i_id'])) { $category[] = $tmp['pk_i_id']; }
} else {
$slug_cat = explode( "/", trim($cat, "/") );
$tmp = $mCat->findBySlug($slug_cat[count($slug_cat)-1]);
if(isset($tmp['pk_i_id'])) { $category[] = $tmp['pk_i_id']; }
}
}
return $category;
}
/**
* Update the search url with new options
*
* @return string
*/
function osc_update_search_url($params = array(), $forced = false) {
$request = Params::getParamsAsArray();
unset($request['osclass']);
if(isset($request['sCategory[0]'])) { unset($request['sCategory']); }
unset($request['sCategory[]']);
if(isset($request['sUser[0]'])) { unset($request['sUser']); }
unset($request['sUser[]']);
if(!$forced && View::newInstance()->_get('subdomain_slug')!='') {
$subdomain_type = osc_subdomain_type();
if($subdomain_type=='category') {
unset($request['sCategory']);
} else if($subdomain_type=='country') {
unset($request['sCountry']);
} else if($subdomain_type=='region') {
unset($request['sCountry']);
unset($request['sRegion']);
} else if($subdomain_type=='city') {
unset($request['sCountry']);
unset($request['sRegion']);
unset($request['sCity']);
} else if($subdomain_type=='user') {
unset($request['sUser']);
}
}
$merged = array_merge($request, $params);
return osc_search_url($merged);
}
/**
* Load the form for the alert subscription
*
* @return void
*/
function osc_alert_form() {
osc_current_web_theme_path('alert-form.php');
}
/**
* Gets alert of current search
*
* @return string
*/
function osc_search_alert() {
return View::newInstance()->_get('search_alert');
}
/**
* Gets for a default search (all categories, noother option)
*
* @return string
*/
function osc_search_show_all_url($params = array()) {
$params['page'] = 'search';
return osc_update_search_url($params);
}
/**
* 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);
}
/**
* Gets list of countries with items
*
* @return array
*/
function osc_list_country() {
if (View::newInstance()->_exists('list_countries')) {
return View::newInstance()->_current('list_countries');
} else {
return null;
}
}
/**
* Gets list of regions with items
*
* @return array
*/
function osc_list_region() {
if (View::newInstance()->_exists('list_regions')) {
return View::newInstance()->_current('list_regions');
} else {
return null;
}
}
/**
* Gets list of cities with items
*
* @return array
*/
function osc_list_city() {
if (View::newInstance()->_exists('list_cities')) {
return View::newInstance()->_current('list_cities');
} else {
return null;
}
}
/**
* Gets the next country in the list_countries list
*
* @return array
*/
function osc_has_list_countries() {
if ( !View::newInstance()->_exists('list_countries') ) {
View::newInstance()->_exportVariableToView('list_countries', CountryStats::newInstance()->listCountries() );
}
$result = View::newInstance()->_next('list_countries');
if (!$result) {
View::newInstance()->_reset('list_countries');
}
return $result;
}
/**
* Gets the next region in the list_regions list
*
* @param string $country
* @return array
*/
function osc_has_list_regions($country = '%%%%') {
if ( !View::newInstance()->_exists('list_regions') ) {
View::newInstance()->_exportVariableToView('list_regions', RegionStats::newInstance()->listRegions($country) );
}
$result = View::newInstance()->_next('list_regions');
if (!$result) {
View::newInstance()->_reset('list_regions');
}
return $result;
}
/**
* Gets the next city in the list_cities list
*
* @param string $region
* @return array
*/
function osc_has_list_cities($region = '%%%%') {
if ( !View::newInstance()->_exists('list_cities') ) {
View::newInstance()->_exportVariableToView('list_cities', CityStats::newInstance()->listCities($region) );
}
$result = View::newInstance()->_next('list_cities');
if (!$result) {
View::newInstance()->_reset('list_cities');
}
return $result;
}
/**
* Gets the total number of countries in list_countries
*
* @return int
*/
function osc_count_list_countries() {
if ( !View::newInstance()->_exists('list_countries') ) {
View::newInstance()->_exportVariableToView('list_countries', CountryStats::newInstance()->listCountries() );
}
return View::newInstance()->_count('list_countries');
}
/**
* Gets the total number of regions in list_regions
*
* @param string $country
* @return int
*/
function osc_count_list_regions($country = '%%%%') {
if ( !View::newInstance()->_exists('list_regions') ) {
View::newInstance()->_exportVariableToView('list_regions', RegionStats::newInstance()->listRegions($country) );
}
return View::newInstance()->_count('list_regions');
}
/**
* Gets the total number of cities in list_cities
*
* @param string $region
* @return int
*/
function osc_count_list_cities($region = '%%%%') {
if ( !View::newInstance()->_exists('list_cities') ) {
View::newInstance()->_exportVariableToView('list_cities', CityStats::newInstance()->listCities($region) );
}
return View::newInstance()->_count('list_cities');
}
// country attributes
/**
* Gets the name of current "list country"
*
* @return string
*/
function osc_list_country_name() {
return osc_field(osc_list_country(), 'country_name', '');
}
/**
* Gets the number of items of current "list country"
*
* @return int
*/
function osc_list_country_code() {
return osc_field(osc_list_country(), 'country_code', '');
}
/**
* Gets the number of items of current "list country"
*
* @return int
*/
function osc_list_country_items() {
return osc_field(osc_list_country(), 'items', '');
}
/**
* Gets the url of current "list country"
*
* @return string
*/
function osc_list_country_url() {
return osc_search_url(array('sCountry' => osc_list_country_code()));
}
// region attributes
/**
* Gets the name of current "list region" by name
*
* @return string
*/
function osc_list_region_name() {
return osc_field(osc_list_region(), 'region_name', '');
}
/**
* Gets the name of current "list region" by slug
*
* @return string
*/
function osc_list_region_slug() {
return osc_field(osc_list_region(), 'region_name', '');
}
/**
* Gets the ID of current "list region"
*
* @return string
*/
function osc_list_region_id() {
return osc_field(osc_list_region(), 'region_id', '');
}
/**
* Gets the number of items of current "list region"
*
* @return int
*/
function osc_list_region_items() {
return osc_field(osc_list_region(), 'items', '');
}
/**
* Gets the url of current "list region"
*
* @return string
*/
function osc_list_region_url() {
return osc_search_url( array( 'sRegion' => osc_list_region_id() ) );
}
// city attributes
/**
* Gets the name of current "list city" by name
*
* @return string
*/
function osc_list_city_name() {
return osc_field(osc_list_city(), 'city_name', '');
}
/**
* Gets the list of current "list city" by slug
*
* @return string
*/
function osc_list_city_slug() {
return osc_field(osc_list_city(), 'city_slug', '');
}
/**
* Gets the ID of current "list city"
*
* @return string
*/
function osc_list_city_id() {
return osc_field(osc_list_city(), 'city_id', '');
}
/**
* Gets the number of items of current "list city"
*
* @return int
*/
function osc_list_city_items() {
return osc_field(osc_list_city(), 'items', '');
}
/**
* Gets the url of current "list city"
*
* @return string
*/
function osc_list_city_url() {
return osc_search_url(array('sCity' => osc_list_city_id()));
}
/**********************
** LATEST SEARCHES **
**********************/
/**
* Gets the latest searches done in the website
*
* @param int $limit
* @return array
*/
function osc_get_latest_searches($limit = 20) {
if ( !View::newInstance()->_exists('latest_searches') ) {
View::newInstance()->_exportVariableToView('latest_searches', LatestSearches::newInstance()->getSearches($limit) );
}
return View::newInstance()->_get('latest_searches');
}
/**
* Gets the total number of latest searches done in the website
*
* @return int
*/
function osc_count_latest_searches() {
if ( !View::newInstance()->_exists('latest_searches') ) {
View::newInstance()->_exportVariableToView('latest_searches', LatestSearches::newInstance()->getSearches() );
}
return View::newInstance()->_count('latest_searches');
}
/**
* Gets the next latest search
*
* @return array
*/
function osc_has_latest_searches() {
if ( !View::newInstance()->_exists('latest_searches') ) {
View::newInstance()->_exportVariableToView('latest_searches', LatestSearches::newInstance()->getSearches() );
}
return View::newInstance()->_next('latest_searches');
}
/**
* Gets the current latest search
*
* @return array
*/
function osc_latest_search() {
if (View::newInstance()->_exists('latest_searches')) {
return View::newInstance()->_current('latest_searches');
}
return null;
}
/**
* Gets the current latest search pattern
*
* @return string
*/
function osc_latest_search_text() {
return osc_field(osc_latest_search(), 's_search', '');
}
/**
* Gets the current latest search date
*
* @return string
*/
function osc_latest_search_date() {
return osc_field(osc_latest_search(), 'd_date', '');
}
/**
* Gets the current latest search total
*
* @return string
*/
function osc_latest_search_total() {
return osc_field(osc_latest_search(), 'i_total', '');
}
function osc_get_canonical() {
if( View::newInstance()->_exists('canonical') ) {
return View::newInstance()->_get('canonical');
}
return '';
}
function osc_get_raw_search($conditions) {
$keys = array("aCategories", "countries", "regions", "cities", "city_areas");
$mCategory = Category::newInstance();
foreach($keys as $key) {
if(isset($conditions[$key]) && is_array($conditions[$key]) && !empty($conditions[$key])) {
foreach($conditions[$key] as $k => $v) {
if(preg_match('|([0-9]+)|', $v, $match)) {
if($key=="aCategories") {
$conditions[$key][$k] = $mCategory->findNameByPrimaryKey($match[1]);
} else {
$conditions[$key][$k] = $match[1];
}
}
}
} else {
unset($conditions[$key]);
}
}
if(!isset($conditions['price_min']) || $conditions['price_min']==0) {
unset($conditions['price_min']);
}
if(!isset($conditions['price_max']) || $conditions['price_max']==0) {
unset($conditions['price_max']);
}
if(!isset($conditions['sPattern']) || $conditions['sPattern']=='') {
unset($conditions['sPattern']);
}
unset($conditions['withPattern']);
unset($conditions['tables']);
unset($conditions['tables_join']);
unset($conditions['no_catched_tables']);
unset($conditions['no_catched_conditions']);
unset($conditions['user_ids']);
unset($conditions['order_column']);
unset($conditions['order_direction']);
unset($conditions['limit_init']);
unset($conditions['results_per_page']);
return $conditions;
}
function _aux_search_category_slug($paramCat) {
if (is_array($paramCat)) {
if(count($paramCat) == 1) {
$paramCat = $paramCat[0];
} else {
return '';
}
}
if (osc_category_id() == $paramCat) {
$category['s_slug'] = osc_category_slug();
} else {
if (is_numeric($paramCat)) {
$category = Category::newInstance()->findByPrimaryKey($paramCat);
} else {
$category = Category::newInstance()->findBySlug($paramCat);
}
}
return isset($category['s_slug'])?$category['s_slug']:'';
}
?>