Вход Регистрация
Файл: oc-includes/osclass/helpers/hItems.php
Строк: 1501
<?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 Items - returns object from the static class (View)
     * @package Osclass
     * @subpackage Helpers
     * @author Osclass
     */

    ////////////////////////////////////////////////////////////////
    // FUNCTIONS THAT RETURNS OBJECT FROM THE STATIC CLASS (VIEW) //
    ////////////////////////////////////////////////////////////////

    /**
    * Gets current item array from view
    *
    * @return array $item, or null if not exist
    */
    
function osc_item() {
        if(
View::newInstance()->_exists('item')) {
            
$item View::newInstance()->_get('item');
        } else {
            
$item null;
        }

        return(
$item);
    }

    
/**
    * Gets comment array form view
    *
    * @return array $comment
    */
    
function osc_comment() {
        if (
View::newInstance()->_exists('comments')) {
            
$comment View::newInstance()->_current('comments');
        } else {
            
$comment View::newInstance()->_get('comment');
        }

        return(
$comment);
    }

    
/**
    * Gets resource array from view
    *
    * @return array $resource
    */
    
function osc_resource() {
        if (
View::newInstance()->_exists('resources')) {
            
$resource View::newInstance()->_current('resources');
        } else {
            
$resource View::newInstance()->_get('resource');
        }

        return(
$resource);
    }

    
/**
    * Gets a specific field from current item
    *
    * @param type $field
    * @param type $locale
    * @return field_type
    */
    
function osc_item_field($field$locale "") {
        return 
osc_field(osc_item(), $field$locale);
    }

    
/**
    * Gets a specific field from current comment
    *
    * @param type $field
    * @param type $locale
    * @return field_type
    */
    
function osc_comment_field($field$locale '') {
        return 
osc_field(osc_comment(), $field$locale);
    }

    
/**
    * Gets a specific field from current resource
    *
    * @param type $field
    * @param type $locale
    * @return field_type
    */
    
function osc_resource_field($field$locale '') {
        return 
osc_field(osc_resource(), $field$locale);
    }
    
/////////////////////////////////////////////////
    // END FUNCTIONS THAT RETURNS OBJECT FROM VIEW //
    /////////////////////////////////////////////////


    ///////////////////////
    // HELPERS FOR ITEMS //
    ///////////////////////


    /**
    * Gets id from current item
    *
    * @return int
    */
    
function osc_item_id() {
        return (int) 
osc_item_field("pk_i_id");
    }

    
/**
    * Gets user id from current item
    *
    * @return int
    */
    
function osc_item_user_id() {
        return (int) 
osc_item_field("fk_i_user_id");
    }

    
/**
     * Gets description from current item, if $locale is unspecified $locale is current user locale
     *
     * @param string $locale
     * @return string $desc
     */
    
function osc_item_description($locale "") {
        if (
$locale == ""$locale osc_current_user_locale();
        
$desc osc_item_field("s_description"$locale);
        if(
$desc=='') {
            
$desc osc_item_field("s_description"osc_language());
            if(
$desc=='') {
                
$aLocales osc_get_locales();
                foreach(
$aLocales as $locale) {
                    
$desc osc_item_field("s_description", @$locale['pk_c_code']);
                    if(
$desc!='') {
                        break;
                    }
                }
            }
        }
        return (string) 
$desc;
    }

    
/**
     * Gets title from current item, if $locale is unspecified $locale is current user locale
     *
     * @param string $locale
     * @return string
     */
    
function osc_item_title($locale "") {
        if (
$locale == ""$locale osc_current_user_locale();
        
$title osc_item_field("s_title"$locale);
        if(
$title=='') {
            
$title osc_item_field("s_title"osc_language());
            if(
$title=='') {
                
$aLocales osc_get_locales();
                foreach(
$aLocales as $locale) {
                    
$title osc_item_field("s_title", @$locale['pk_c_code']);
                    if(
$title!='') {
                        break;
                    }
                }
            }
        }
        return (string) 
$title;
    }

    
/**
     * Gets category from current item
     *
     * @param string $locale
     * @return string
     */
    
function osc_item_category($locale "") {
        if ( !
View::newInstance()->_exists('item_category') ) {
            
View::newInstance()->_exportVariableToView('item_category'Category::newInstance()->findByPrimaryKeyosc_item_category_id(), $locale ) );
        }
        
$category View::newInstance()->_get('item_category');
        return (string) 
osc_field($category"s_name"$locale);
    }

    
/**
     * Gets category description from current item, if $locale is unspecified $locale is current user locale
     *
     * @param type $locale
     * @return string
     */
    
function osc_item_category_description($locale "") {
        if ( !
View::newInstance()->_exists('item_category') ) {
            
View::newInstance()->_exportVariableToView('item_category'Category::newInstance()->findByPrimaryKeyosc_item_category_id(), $locale ) );
        }
        
$category View::newInstance()->_get('item_category');
        return 
osc_field($category"s_description"$locale);
    }

    
/**
     * Gets category id of current item
     *
     * @return int
     */
    
function osc_item_category_id() {
        return (int) 
osc_item_field("fk_i_category_id");
    }

    
/**
     * Checks to see if the price is enabled for this category.
     *
     * @param string $locale
     * @return string
     */
    
function osc_item_category_price_enabled($catId null) {
        if(
$catId == null) {
            
$category Category::newInstance()->findByPrimaryKeyosc_item_category_id() ) ;
        } else {
            
$category Category::newInstance()->findByPrimaryKey($catId) ;
        }
        return 
$category['b_price_enabled']==1?true:false;
    }

    
/**
     * Gets publication date of current item
     *
     * @return string
     */
    
function osc_item_pub_date() {
        return (string) 
osc_item_field("dt_pub_date");
    }

    
/**
     * Gets modification date of current item
     *
     * @return string
     */
    
function osc_item_mod_date() {
        return (string) 
osc_item_field("dt_mod_date");
    }

    
/**
     * Gets date expiration of current item
     *
     * @return string
     */
    
function osc_item_dt_expiration() {
        return (string) 
osc_item_field("dt_expiration");
    }

    
/**
     * Gets price of current item
     *
     * @return float
     */
    
function osc_item_price() {
        if(
osc_item_field("i_price")=='') return null;
        else return (float) 
osc_item_field("i_price");
    }

    
/**
     * Gets formated price of current item
     *
     * @return string
     */
    
function osc_item_formated_price() {
        return (string) 
osc_format_priceosc_item_price() );
    }

    
/**
     * Gets currency of current item
     *
     * @return string
     */
    
function osc_item_currency() {
        return (string) 
osc_item_field("fk_c_currency_code");
    }

    
/**
     * Gets currency symbol of an item
     *
     * @since 3.0
     * @return string
     */
    
function osc_item_currency_symbol() {
        
$aCurrency Currency::newInstance()->findByPrimaryKey(osc_item_currency());
        return 
$aCurrency['s_description'];
    }

    
/**
     * Gets contact name of current item
     *
     * @return string
     */
    
function osc_item_contact_name() {
        return (string) 
osc_item_field("s_contact_name");
    }

    
/**
     * Gets contact email of current item
     *
     * @return string
     */
    
function osc_item_contact_email() {
        return (string) 
osc_item_field("s_contact_email");
    }

    
/**
     * Gets country name of current item
     *
     * @return string
     */
    
function osc_item_country() {
        return (string) 
osc_item_field("s_country");
    }

    
/**
     * Gets country code of current item
     * Country code are two letters like US, ES, ...
     *
     * @return string
     */
    
function osc_item_country_code() {
        return (string) 
osc_item_field("fk_c_country_code");
    }

    
/**
     * Gets region of current item
     *
     * @return string
     */
    
function osc_item_region() {
        return (string) 
osc_item_field("s_region");
    }

    
/**
     * Gets region id of current item
     *
     * @return string
     */
    
function osc_item_region_id() {
        return (string) 
osc_item_field("fk_i_region_id");
    }

    
/**
     * Gets city of current item
     *
     * @return string
     */
    
function osc_item_city() {
        return (string) 
osc_item_field("s_city");
    }

    
/**
     * Gets city of current item
     *
     * @return string
     */
    
function osc_item_city_id() {
        return (string) 
osc_item_field("fk_i_city_id");
    }

    
/**
     * Gets city area of current item
     *
     * @return string
     */
    
function osc_item_city_area() {
        return (string) 
osc_item_field("s_city_area");
    }

    
/**
     * Gets city area of current item
     *
     * @return string
     */
    
function osc_item_city_area_id() {
        return (string) 
osc_item_field("fk_i_city_area_id");
    }

    
/**
     * Gets address of current item
     *
     * @return string
     */
    
function osc_item_address() {
        return (string) 
osc_item_field("s_address");
    }

    
/**
     * Gets true if can show email user at frontend, else return false
     *
     * @return boolean
     */
    
function osc_item_show_email() {
        return (boolean) 
osc_item_field("b_show_email");
    }

    
/**
     * Gets zip code of current item
     *
     * @return string
     */
    
function osc_item_zip() {
        return (string) 
osc_item_field("s_zip");
    }

    
/**
     * Gets latitude of current item
     *
     * @return float
     */
    
function osc_item_latitude() {
        return (float) 
osc_item_field("d_coord_lat");
    }

    
/**
     * Gets longitude of current item
     *
     * @return float
     */
    
function osc_item_longitude() {
        return (float) 
osc_item_field("d_coord_long");
    }

    
/**
     * Gets IP of current item
     *
     * @return string
     */
    
function osc_item_ip() {
        return 
osc_item_field("s_ip");
    }

    
/**
     * Gets true if current item is marked premium, else return false
     *
     * @return boolean
     */
    
function osc_item_is_premium() {
        if ( 
osc_item_field("b_premium") ) return true;
        else return 
false;
    }

    
/**
     * return number of views of current item
     *
     * @return int
     */
    
function osc_item_views($viewAll false) {
        
$item osc_item();
        if(
$viewAll) {
            return 
ItemStats::newInstance()->getViews(osc_item_id());
        } else {
            if(isset(
$item['i_num_views'])) {
                return (int) 
osc_item_field("i_num_views");
            } else {
                return 
ItemStats::newInstance()->getViews(osc_item_id());
            }
        }
    }

    
/**
     * Return true if item is expired, else return false
     *
     * @return boolean
     */
    
function osc_item_is_expired() {
        if( 
osc_item_is_premium() ) {
            return 
false;
        } else {
            return 
osc_isExpired(osc_item_dt_expiration());
        }
    }

    
/**
     * Gets status of current item.
     * b_active = true  -> item is active
     * b_active = false -> item is inactive
     *
     * @return boolean
     */
    
function osc_item_status() {
        return (boolean) 
osc_item_field("b_active");
    }

    
/**
     * Gets secret string of current item
     *
     * @return string
     */
    
function osc_item_secret() {
        return (string) 
osc_item_field("s_secret");
    }

    
/**
     * Gets if current item is active
     *
     * @return boolean
     */
    
function osc_item_is_active() {
        return (
osc_item_field("b_active")==1);
    }

    
/**
     * Gets if current item is inactive
     *
     * @return boolean
     */
    
function osc_item_is_inactive() {
        return (
osc_item_field("b_active")==0);
    }

    
/**
     * Gets if current item is enabled
     *
     * @return boolean
     */
    
function osc_item_is_enabled() {
        return (
osc_item_field("b_enabled")==1);
    }

    
/**
     * Gets if item is marked as spam
     *
     * @return boolean
     */
    
function osc_item_is_spam() {
        return (
osc_item_field("b_spam")==1);
    }

    
/**
     * Gets link for mark as spam the current item
     *
     * @return string
     */
    
function osc_item_link_spam() {
        if(!
osc_rewrite_enabled ()) {
            
$url osc_base_url(true) . "?page=item&action=mark&as=spam&id=" osc_item_id();
        } else {
            
$url osc_base_url() . osc_get_preference('rewrite_item_mark') . "/spam/" osc_item_id();
        }

        return (string) 
$url;
    }

    
/**
     * Retrun link for mark as bad category the current item.
     *
     * @return string
     */
    
function osc_item_link_bad_category() {
        if(!
osc_rewrite_enabled ()) {
            
$url osc_base_url(true) . "?page=item&action=mark&as=badcat&id=" osc_item_id();
        } else {
            
$url osc_base_url() . osc_get_preference('rewrite_item_mark') . "/badcat/" osc_item_id();
        }

        return (string) 
$url;
    }

    
/**
     * Gets link for mark as repeated the current item
     *
     * @return string
     */
    
function osc_item_link_repeated() {
        if(!
osc_rewrite_enabled ()) {
            
$url osc_base_url(true) . "?page=item&action=mark&as=repeated&id=" osc_item_id();
        } else {
            
$url osc_base_url() . osc_get_preference('rewrite_item_mark') . "/repeated/" osc_item_id();
        }

        return (string) 
$url;
    }

    
/**
     * Gets link for mark as offensive the current item
     *
     * @return string
     */
    
function osc_item_link_offensive() {
        if(!
osc_rewrite_enabled ()) {
            
$url osc_base_url(true) . "?page=item&action=mark&as=offensive&id=" osc_item_id();
        } else {
            
$url osc_base_url() . osc_get_preference('rewrite_item_mark') . "/offensive/" osc_item_id();
        }

        return (string) 
$url;
    }

    
/**
     * Gets link for mark as expired the current item
     *
     * @return string
     */
    
function osc_item_link_expired() {
        if(!
osc_rewrite_enabled ()) {
            
$url osc_base_url(true) . "?page=item&action=mark&as=expired&id=" osc_item_id();
        } else {
            
$url osc_base_url() . osc_get_preference('rewrite_item_mark') . "/expired/" osc_item_id();
        }

        return (string) 
$url;
    }

    
// DEPRECATED: This function will be removed in version 4.0
    
function osc_list_page() {
        return 
osc_search_page();
    }

    
// DEPRECATED: This function will be removed in version 4.0
    
function osc_list_total_pages() {
        return 
osc_search_total_pages();
    }

    
/**
     * Gets number of items per page for current pagination
     *
     * @return <type>
     */
    
function osc_list_items_per_page() {
        return 
View::newInstance()->_get('items_per_page');
    }

    
/**
     * Gets total number of comments of current item
     *
     * @return int
     */
    
function osc_item_total_comments() {
        return 
ItemComment::newInstance()->totalCommentsosc_item_id() );
    }

    
/**
     * Gets page of comments in current pagination
     *
     * @return <type>
     */
    
function osc_item_comments_page() {
        
$page Params::getParam('comments-page');
        if(
$page=='') {
            return 
0;
        }
        if(
$page>0) {
            return (int) 
$page-1;
        }
    }

    
///////////////////////
    // HELPERS FOR ITEMS //
    ///////////////////////


    //////////////////////////
    // HELPERS FOR COMMENTS //
    //////////////////////////

    /**
     * Gets id of current comment
     *
     * @return int
     */
    
function osc_comment_id() {
        return (int) 
osc_comment_field("pk_i_id");
    }

    
/**
     * Gets publication date of current comment
     *
     * @return string
     */
    
function osc_comment_pub_date() {
        return (string) 
osc_comment_field("dt_pub_date");
    }

    
/**
     * Gets title of current commnet
     *
     * @return string
     */
    
function osc_comment_title() {
        return (string) 
osc_comment_field("s_title");
    }

    
/**
     * Gets author name of current comment
     *
     * @return string
     */
    
function osc_comment_author_name() {
        return (string) 
osc_comment_field("s_author_name");
    }

    
/**
     * Gets author email of current comment
     *
     * @return string
     */
    
function osc_comment_author_email() {
        return (string) 
osc_comment_field("s_author_email");
    }

    
/**
     * Gets body of current comment
     *
     * @return string
     */
    
function osc_comment_body() {
        return (string) 
osc_comment_field("s_body");
    }

    
/**
     * Gets user id of current comment
     *
     * @return int
     */
    
function osc_comment_user_id() {
        return (int) 
osc_comment_field("fk_i_user_id");
    }

    
/**
     * Gets  link to delete the current comment of current item
     *
     * @return string
     */
    
function osc_delete_comment_url() {
        return (string) 
osc_base_url(true)."?page=item&action=delete_comment&id=".osc_item_id()."&comment=".osc_comment_id()."&".osc_csrf_token_url();
    }

    
//////////////////////////////
    // END HELPERS FOR COMMENTS //
    //////////////////////////////

    ///////////////////////////
    // HELPERS FOR RESOURCES //
    ///////////////////////////

    /**
     * Gets id of current resource
     *
     * @return int
     */
    
function osc_resource_id() {
        return (int) 
osc_resource_field("pk_i_id");
    }

    
/**
     * Gets name of current resource
     *
     * @return string
     */
    
function osc_resource_name() {
        return (string) 
osc_resource_field("s_name");
    }

    
/**
     * Gets content type of current resource
     *
     * @return string
     */
    
function osc_resource_type() {
        return (string) 
osc_resource_field("s_content_type");
    }

    
/**
     * Gets extension of current resource
     *
     * @return string
     */
    
function osc_resource_extension() {
        return (string) 
osc_resource_field("s_extension");
    }

    
/**
     * Gets path of current resource
     *
     * @return string
     */
    
function osc_resource_path() {
        return (string) 
osc_apply_filter('resource_path'osc_base_url().osc_resource_field("s_path"));
    }

    
/**
     * Gets url of current resource
     *
     * @return string
     */
    
function osc_resource_url() {
        return (string) 
osc_resource_path().osc_resource_id().".".osc_resource_field("s_extension");
    }

    
/**
     * Gets thumbnail url of current resource
     *
     * @return string
     */
    
function osc_resource_thumbnail_url() {
        return (string) 
osc_resource_path().osc_resource_id()."_thumbnail.".osc_resource_field("s_extension");
    }

    
/**
     * Gets preview url of current resource
     *
     * @since 2.3.7
     * @return string
     */
    
function osc_resource_preview_url() {
        return (string) 
osc_resource_path().osc_resource_id()."_preview.".osc_resource_field("s_extension");
    }

    
/**
     * Gets original resource url of current resource
     *
     * @return string
     */
    
function osc_resource_original_url() {
        return (string) 
osc_resource_path().osc_resource_id()."_original.".osc_resource_field("s_extension");
    }

    
/**
     * Set the internal pointer of array resources to its first element, and return it.
     *
     * @since 2.3.6
     * @return array
     */
    
function osc_reset_resources() {
        return 
View::newInstance()->_reset('resources');
    }


    
///////////////////////////////
    // END HELPERS FOR RESOURCES //
    ///////////////////////////////

    /////////////
    // DETAILS //
    /////////////

    /**
     * Gets next item if there is, else return null
     *
     * @return array
     */
    
function osc_has_items() {
        if ( 
View::newInstance()->_exists('resources') ) {
            
View::newInstance()->_erase('resources');
        }
        if ( 
View::newInstance()->_exists('item_category') ) {
            
View::newInstance()->_erase('item_category');
        }
        if ( 
View::newInstance()->_exists('metafields') ) {
            
View::newInstance()->_erase('metafields');
        }
        if(
View::newInstance()->_get('itemLoop')!='items') {
            
View::newInstance()->_exportVariableToView('oldItem'View::newInstance()->_get('item'));
            
View::newInstance()->_exportVariableToView('itemLoop''items');
        }
        
$item View::newInstance()->_next('items');
        if(!
$item) {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
            
View::newInstance()->_exportVariableToView('itemLoop''');
        } else {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_current('items'));
        }
        return 
$item;
    }

    
/**
     * Set the internal pointer of array items to its first element, and return it.
     *
     * @return array
     */
    
function osc_reset_items() {
        
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
        
View::newInstance()->_exportVariableToView('itemLoop''');
        return 
View::newInstance()->_reset('items');
    }

    
/**
     * Set the internal pointer of array latestItems to its first element, and return it.
     *
     * @since 2.4
     * @return array
     */
    
function osc_reset_latest_items() {
        
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
        
View::newInstance()->_exportVariableToView('itemLoop''');
        return 
View::newInstance()->_reset('latestItems');
    }

    
/**
     * Gets number of items in current array items
     *
     * @return int
     */
    
function osc_count_items() {
        return (int) 
View::newInstance()->_count('items');
    }

    
/**
     * Gets number of resources in array resources of current item
     *
     * @return int
     */
    
function osc_count_item_resources() {
        if ( !
View::newInstance()->_exists('resources') ) {
            
View::newInstance()->_exportVariableToView('resources'ItemResource::newInstance()->getAllResourcesFromItemosc_item_id() ) );
        }
        return (int) 
View::newInstance()->_count('resources');
    }

    
/**
     * Gets next item resource if there is, else return null
     *
     * @return array
     */
    
function osc_has_item_resources() {
        if ( !
View::newInstance()->_exists('resources') ) {
            
View::newInstance()->_exportVariableToView('resources'ItemResource::newInstance()->getAllResourcesFromItemosc_item_id() ) );
        }
        return 
View::newInstance()->_next('resources');
    }

    
/**
     * Gets current resource of current array resources of current item
     *
     * @return array
     */
    
function osc_get_item_resources() {
        if ( !
View::newInstance()->_exists('resources') ) {
            
View::newInstance()->_exportVariableToView('resources'ItemResource::newInstance()->getAllResourcesFromItemosc_item_id() ) );
        }
        return 
View::newInstance()->_get('resources');
    }

    
/**
     * Gets number of item comments of current item
     *
     * @return int
     */
    
function osc_count_item_comments() {
        if ( !
View::newInstance()->_exists('comments') ) {
            
View::newInstance()->_exportVariableToView('comments'ItemComment::newInstance()->findByItemIDosc_item_id(), osc_item_comments_page(), osc_comments_per_page() ) );
        }
        return 
View::newInstance()->_count('comments');
    }

    
/**
     * Gets next comment of current item comments
     *
     * @return array
     */
    
function osc_has_item_comments() {
        if ( !
View::newInstance()->_exists('comments') ) {
            
View::newInstance()->_exportVariableToView('comments'ItemComment::newInstance()->findByItemIDosc_item_id(), osc_item_comments_page(), osc_comments_per_page() ) );
        }
        return 
View::newInstance()->_next('comments');
    }

    
//////////
    // HOME //
    //////////

    /**
     * Gets next item of latest items query
     *
     * @return boolean It returns true if there is another item available or false if there isn't
     */
    
function osc_has_latest_items($total_latest_items null$options = array(), $withPicture false) {
        
// if we don't have the latest items loaded, do the query
        
if ( !View::newInstance()->_exists('latestItems') ) {
            
$search Search::newInstance();
            if( !
is_numeric($total_latest_items) ) {
                
$total_latest_items osc_max_latest_items();
            }

            
View::newInstance()->_exportVariableToView('latestItems'$search->getLatestItems($total_latest_items$options$withPicture));
        }

        
// keys we want to erase from View
        
$to_erase = array('resources''item_category''metafields');
        foreach(
$to_erase as $t) {
            if ( 
View::newInstance()->_exists($t) ) {
                
View::newInstance()->_erase($t);
            }
        }

        
// set itemLoop to latest if it's the first time we enter here
        
if(View::newInstance()->_get('itemLoop') !== 'latest') {
            
View::newInstance()->_exportVariableToView('oldItem'View::newInstance()->_get('item'));
            
View::newInstance()->_exportVariableToView('itemLoop''latest');
        }

        
// get next item
        
$item View::newInstance()->_next('latestItems');

        if(!
$item) {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
            
View::newInstance()->_exportVariableToView('itemLoop''');
        } else {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_current('latestItems'));
        }

        
// reset the loop once we finish just in case we want to use it again
        
if( !$item && View::newInstance()->_count('latestItems') > ) {
            
View::newInstance()->_reset('latestItems');
        }

        return 
$item;
    }

    
/**
     * Gets number of latest items
     *
     * @return int
     */
    
function osc_count_latest_items($total_latest_items null$options = array()) {
        if ( !
View::newInstance()->_exists('latestItems') ) {
            
$search Search::newInstance();
            if( !
is_numeric($total_latest_items) ) {
                
$total_latest_items osc_max_latest_items();
            }
            if(
is_array($options) && empty($options)) {
                
$options osc_get_subdomain_params();
            } else if(
$options==null) {
                
$options = array();
            }
            
View::newInstance()->_exportVariableToView('latestItems'$search->getLatestItems($total_latest_items$options));
        };
        return (int) 
View::newInstance()->_count('latestItems');
    }

    
//////////////
    // END HOME //
    //////////////

    /**
     * Gets next item of custom items
     *
     * @return array
     */
    
function osc_has_custom_items() {
        if ( 
View::newInstance()->_exists('resources') ) {
            
View::newInstance()->_erase('resources');
        }
        if ( 
View::newInstance()->_exists('item_category') ) {
            
View::newInstance()->_erase('item_category');
        }
        if ( 
View::newInstance()->_exists('metafields') ) {
            
View::newInstance()->_erase('metafields');
        }
        if(
View::newInstance()->_get('itemLoop')!='custom') {
            
View::newInstance()->_exportVariableToView('oldItem'View::newInstance()->_get('item'));
            
View::newInstance()->_exportVariableToView('itemLoop''custom');
        }
        
$item View::newInstance()->_next('customItems');
        if(!
$item) {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
            
View::newInstance()->_exportVariableToView('itemLoop''');
        } else {
            
View::newInstance()->_exportVariableToView('item'View::newInstance()->_current('customItems'));
        }
        return 
$item;
    }

    
/**
     * Gets number of custom items
     *
     * @return int
     */
    
function osc_count_custom_items() {
        return (int) 
View::newInstance()->_count('customItems');
    }

    
/**
     * Set the internal pointer of array customItems to its first element, and return it.
     *
     * @since 2.4
     * @return array
     */
    
function osc_reset_custom_items() {
        
View::newInstance()->_exportVariableToView('item'View::newInstance()->_get('oldItem'));
        
View::newInstance()->_exportVariableToView('itemLoop''');
        return 
View::newInstance()->_reset('customItems');
    }

    
/**
     * Formats the price using the appropiate currency.
     *
     * @param float $price
     * @return string
     */
    
function osc_format_price($price$symbol null) {
        if (
$price === null) return osc_apply_filter ('item_price_null'__('Check with seller') );
        if (
$price == 0) return osc_apply_filter ('item_price_zero'__('Free') );

        if(
$symbol==null) { $symbol osc_item_currency_symbol(); }

        
$price $price/1000000;

        
$currencyFormat osc_locale_currency_format();
        
$currencyFormat str_replace('{NUMBER}'number_format($priceosc_locale_num_dec(), osc_locale_dec_point(), osc_locale_thousands_sep()), $currencyFormat);
        
$currencyFormat str_replace('{CURRENCY}'$symbol$currencyFormat);
        return 
osc_apply_filter('item_price'$currencyFormat );
    }

    
/**
     * Gets number of items
     *
     * @deprecated deprecated since version 2.4
     * @access private
     * @return int
     */
    
function osc_priv_count_items() {
        return (int) 
View::newInstance()->_count('items');
    }

    
/**
     * Gets number of item resources
     *
     * @deprecated deprecated since version 2.4
     * @access private
     * @return int
     */
    
function osc_priv_count_item_resources() {
        return (int) 
View::newInstance()->_count('resources');
    }

    
/***************
     * META FIELDS *
     ***************/

    /**
     * Gets number of item meta field
     *
     * @return integer
     */
    
function osc_count_item_meta() {
        if ( !
View::newInstance()->_exists('metafields') ) {
            
View::newInstance()->_exportVariableToView('metafields'Item::newInstance()->metaFields(osc_item_id()) );
        }
        return 
View::newInstance()->_count('metafields');
    }

    
/**
     * Gets next item meta field if there is, else return null
     *
     * @return array
     */
    
function osc_has_item_meta() {
        if ( !
View::newInstance()->_exists('metafields') ) {
            
View::newInstance()->_exportVariableToView('metafields'Item::newInstance()->metaFields(osc_item_id()) );
        }
        return 
View::newInstance()->_next('metafields');
    }

    
/**
     * Gets item meta fields
     *
     * @return array
     */
    
function osc_get_item_meta() {
        if ( !
View::newInstance()->_exists('metafields') ) {
            
View::newInstance()->_exportVariableToView('metafields'Item::newInstance()->metaFields(osc_item_id()) );
        }
        return 
View::newInstance()->_get('metafields');
    }

    
/**
     * Gets item meta field
     *
     * @return array
     */
    
function osc_item_meta() {
        return 
View::newInstance()->_current('metafields');
    }

    
/**
     * Gets item meta value
     *
     * @return string
     */
    
function osc_item_meta_value() {
        
$meta osc_item_meta();
        if(
$meta['e_type']=="DATEINTERVAL" || $meta['e_type']=="DATE") {
            
$value osc_field(osc_item_meta(), 's_value''');
            if(
is_array($value)) {
                
// from [date_from] to [date_to]
                
if(isset($value['from']) && $value['from']!='' && is_numeric($value['from']) && isset($value['to']) && $value['to']!='' && is_numeric($value['to'])) {
                    
$return  __('From') . ' ' htmlentitiesdate(osc_date_format(), $value['from']), ENT_COMPAT"UTF-8");
                    
$return .= ' ' __('to') . ' ' htmlentitiesdate(osc_date_format(), $value['to']), ENT_COMPAT"UTF-8");
                    return 
$return;
                } else {
                    return 
'';
                }
            } else {
                if(
$value!='' && is_numeric($value)) {
                    return 
htmlentitiesdate(osc_date_format(), $value), ENT_COMPAT"UTF-8");
                } else {
                    return 
'';
                }
            }
        } else if(
$meta['e_type']=="CHECKBOX") {
            if(
osc_field(osc_item_meta(), 's_value''')==1) {
                return 
'<img src="'.osc_current_web_theme_url('images/tick.png').'" alt="" title=""/>';
            } else {
                return 
'<img src="'.osc_current_web_theme_url('images/cross.png').'" alt="" title=""/>';
            }
        } else if(
$meta['e_type']=="URL") {
            if(
osc_field(osc_item_meta(), 's_value''')!='') {
                if(
stripos(osc_field(osc_item_meta(), 's_value'''),'http://')!==false || stripos(osc_field(osc_item_meta(), 's_value'''),'https://')!==false) {
                    return 
'<a href="'.html_entity_decode(osc_field(osc_item_meta(), 's_value'''), ENT_COMPAT"UTF-8").'" >'.html_entity_decode(osc_field(osc_item_meta(), 's_value'''), ENT_COMPAT"UTF-8").'</a>';
                } else {
                    return 
'<a href="http://'.html_entity_decode(osc_field(osc_item_meta(), 's_value'''), ENT_COMPAT"UTF-8").'" >'.html_entity_decode(osc_field(osc_item_meta(), 's_value'''), ENT_COMPAT"UTF-8").'</a>';
                }
            } else {
                return 
'';
            }
        } else {
            return 
nl2br(htmlentities(osc_field(osc_item_meta(), 's_value'''), ENT_COMPAT"UTF-8"));
        }
    }

    
/**
     * Gets item meta name
     *
     * @return string
     */
    
function osc_item_meta_name() {
        return 
osc_field(osc_item_meta(), 's_name''');
    }

    
/**
     * Gets item meta id
     *
     * @return integer
     */
    
function osc_item_meta_id() {
        return 
osc_field(osc_item_meta(), 'pk_i_id''');
    }

    
/**
     * Gets item meta slug
     *
     * @return string
     */
    
function osc_item_meta_slug() {
        return 
osc_field(osc_item_meta(), 's_slug''');
    }

    
/**
     * Gets total number of active items
     *
     * @return string
     */
    
function osc_total_active_items() {
        return 
Item::newInstance()->totalItems(null'ACTIVE|ENABLED|NOTEXPIRED');
    }

    
/**
     * Gets total number of all items
     *
     * @return string
     */
    
function osc_total_items() {
        return 
Item::newInstance()->totalItems(null);
    }

    
/**
     * Gets total number of active items today
     *
     * @return string
     */
    
function osc_total_active_items_today() {
        return 
Item::newInstance()->totalItems(null'ACTIVE|ENABLED|NOTEXPIRED|TODAY');
    }

    
/**
     * Gets total number of all items today
     *
     * @return string
     */
    
function osc_total_items_today() {
        return 
Item::newInstance()->totalItems(null'TODAY');
    }


    
/**
     * Perform a search based on custom filters and conditions
     * export the results to a variable to be able to manage it
     * from custom_items' helpers
     *
     *
     * @param params This could be a string or and array
     * Examples:
     *  Only one keyword
     *  osc_query_item("keyword=value1,value2,value3,...")
     *
     *  Multiple keywords
     *  osc_query_item(array(
     *      'keyword1' => 'value1,value2',
     *      'keyword2' => 'value3,value4'
     *  ))
     *
     * Real live examples:
     *  osc_query_item('category_name=cars,houses');
     *  osc_query_item(array(
     *      'category_name' => 'cars,houses',
     *      'city' => 'Madrid'
     *  ))
     *
     * Possible keywords:
     *  author
     *  country
     *  country_name
     *  region
     *  region_name
     *  city
     *  city_name
     *  city_area
     *  city_area_name
     *  category
     *  category_name
     *  premium
     *  results_per_page
     *  page
     *  offset
     *
     *  Any other keyword will be passed to the hook "custom_query"
     *   osc_run_hook("custom_query", $mSearch, $keyword, $value);
     *  A plugin could be created to handle those extra situation
     *
     * @since 3.0
     */
    
function osc_query_item($params null) {
        
$mSearch = new Search();
        if(
$params==null) {
            
$params = array();
        } else if(
is_string($params)){
            
$keyvalue explode("="$params);
            
$params = array($keyvalue[0] => $keyvalue[1]);
        }
        foreach(
$params as $key => $value) {
            switch(
$key) {
                case 
'id':
                    
$mSearch->addItemId($value);
                    break;
                case 
'author':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->fromUser($t);
                    }
                    break;

                case 
'category':
                case 
'category_name':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->addCategory($t);
                    }
                    break;

                case 
'country':
                case 
'country_name':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->addCountry($t);
                    }
                    break;

                case 
'region':
                case 
'region_name':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->addRegion($t);
                    }
                    break;

                case 
'city':
                case 
'city_name':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->addCity($t);
                    }
                    break;

                case 
'city_area':
                case 
'city_area_name':
                    
$tmp explode(","$value);
                    foreach(
$tmp as $t) {
                        
$mSearch->addCityArea($t);
                    }
                    break;

                case 
'results_per_page':
                    
$mSearch->set_rpp($value);
                    break;

                case 
'premium':
                    
$mSearch->onlyPremium(($value==1?true:false));
                    break;

                case 
'page':
                    
$mSearch->page($value);
                    break;

                case 
'offset':
                    
$mSearch->limit($value);
                    break;

                default:
                    
osc_run_hook('custom_query'$mSearch$key$value);
                    break;
            }
        }
        
View::newInstance()->_exportVariableToView("customItems"$mSearch->doSearch());
    }


 
?>
Онлайн: 0
Реклама