Вход Регистрация
Файл: oc-includes/osclass/functions.php
Строк: 608
<?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.
 */

function osc_meta_publish($catId null) {
    
osc_enqueue_script('php-date');
    echo 
'<div class="row">';
        
FieldForm::meta_fields_input($catId);
    echo 
'</div>';
}

function 
osc_meta_edit($catId null$item_id null) {
    
osc_enqueue_script('php-date');
    echo 
'<div class="row">';
        
FieldForm::meta_fields_input($catId$item_id);
    echo 
'</div>';
}

osc_add_hook('item_form''osc_meta_publish');
osc_add_hook('item_edit''osc_meta_edit');

/**
 *
 * All CF will be searchable
 *
 */
function osc_meta_search($catId null) {
    
FieldForm::meta_fields_search($catId);
}
osc_add_hook('search_form''osc_meta_search');

function 
search_title() {
    
$region   osc_search_region();
    
$city     osc_search_city();
    
$category osc_search_category_id();
    
$result   '';

    
$b_show_all = ($region == '' && $city == '' && $category == '');
    
$b_category = ($category != '');
    
$b_city     = ($city != '');
    
$b_region   = ($region != '');

    if( 
$b_show_all ) {
        return 
__('Search results');
    }

    if( 
osc_get_preference('seo_title_keyword') != '' ) {
        
$result .= osc_get_preference('seo_title_keyword') . ' ';
    }

    if(
$b_category && !empty($category)) {
        
$cat Category::newInstance()->findByPrimaryKey($category[0]);
        if(isset(
$cat['s_name'])) {
            
$result .= $cat['s_name'].' ';
        }
    }

    if(
$b_city) {
        
$result .= $city;
    } else if(
$b_region) {
        
$result .= $region;
    }

    return 
$result;
}

function 
meta_title() {
    
$location Rewrite::newInstance()->get_location();
    
$section  Rewrite::newInstance()->get_section();
    
$text '';

    switch (
$location) {
        case (
'item'):
            switch (
$section) {
                case 
'item_add':    $text __('Publish a listing'); break;
                case 
'item_edit':   $text __('Edit your listing'); break;
                case 
'send_friend'$text __('Send to a friend') . ' - ' osc_item_title(); break;
                case 
'contact':     $text __('Contact seller') . ' - ' osc_item_title(); break;
                default:            
$text osc_item_title() . ' ' osc_item_city(); break;
            }
        break;
        case(
'page'):
            
$text osc_static_page_title();
        break;
        case(
'error'):
            
$text __('Error');
        break;
        case(
'search'):
            
$region   osc_search_region();
            
$city     osc_search_city();
            
$pattern  osc_search_pattern();
            
$category osc_search_category_id();
            
$s_page   '';
            
$i_page   Params::getParam('iPage');

            if(
$i_page != '' && $i_page 1) {
                
$s_page ' - ' __('page') . ' ' $i_page;
            }

            
$b_show_all = ($region == '' && $city == '' && $pattern == '' && empty($category));
            
$b_category = (!empty($category));
            
$b_pattern  = ($pattern != '');
            
$b_city     = ($city != '');
            
$b_region   = ($region != '');

            if(
$b_show_all) {
                
$text __('Show all listings') . ' - ' $s_page osc_page_title();
            }

            
$result '';
            if(
$b_pattern) {
                
$result .= $pattern ' &raquo; ';
            }

            if(
$b_category && is_array($category) && count($category) > 0) {
                
$cat Category::newInstance()->findByPrimaryKey($category[0]);
                if( 
$cat ) {
                    
$result .= $cat['s_name'].' ';
                }
            }

            if(
$b_city) {
                
$result .= $city ' &raquo; ';
            } else if(
$b_region) {
                
$result .= $region ' &raquo; ';
            }

            
$result preg_replace('|s?&raquo;s$|'''$result);

            if(
$result == '') {
                
$result __('Search results');
            }

            
$text '';
            if( 
osc_get_preference('seo_title_keyword') != '' ) {
                
$text .= osc_get_preference('seo_title_keyword') . ' ';
            }
            
$text .= $result $s_page;
        break;
        case(
'login'):
            switch (
$section) {
                case(
'recover'): $text __('Recover your password');
                default:         
$text __('Login');
            }
        break;
        case(
'register'):
            
$text __('Create a new account');
        break;
        case(
'user'):
            switch (
$section) {
                case(
'dashboard'):       $text __('Dashboard'); break;
                case(
'items'):           $text __('Manage my listings'); break;
                case(
'alerts'):          $text __('Manage my alerts'); break;
                case(
'profile'):         $text __('Update my profile'); break;
                case(
'pub_profile'):     $text __('Public profile') . ' - ' osc_user_name(); break;
                case(
'change_email'):    $text __('Change my email'); break;
                case(
'change_username'): $text __('Change my username'); break;
                case(
'change_password'): $text __('Change my password'); break;
                case(
'forgot'):          $text __('Recover my password'); break;
            }
        break;
        case(
'contact'):
            
$text __('Contact');
        break;
        default:
            
$text osc_page_title();
        break;
    }

    if( !
osc_is_home_page() ) {
        if(
$text!='') {
            
$text .= ' - ' osc_page_title();
        } else {
            
$text osc_page_title();
        }
    }

    return (
osc_apply_filter('meta_title_filter'$text));
}

function 
meta_description( ) {
    
$text '';
    
// home page
    
if( osc_is_home_page() ) {
        
$text osc_page_description();
    }
    
// static page
    
if( osc_is_static_page() ) {
        
$text osc_highlight(osc_static_page_text(), 140'''');
    }
    
// search
    
if( osc_is_search_page() ) {
        if( 
osc_has_items() ) {
            
$text osc_item_category() . ' ' osc_item_city() . ', ' osc_highlight(osc_item_description(), 120);
        }
        
osc_reset_items();
    }
    
// listing
    
if( osc_is_ad_page() ) {
        
$text osc_item_category() . ' ' osc_item_city() . ', ' osc_highlight(osc_item_description(), 120);
    }

    return (
osc_apply_filter('meta_description_filter'$text));
}

function 
meta_keywords( ) {
    
$text '';
    
// search
    
if( osc_is_search_page() ) {
        if( 
osc_has_items() ) {
            
$keywords = array();
            
$keywords[] = osc_item_category();
            if( 
osc_item_city() != '' ) {
                
$keywords[] = osc_item_city();
                
$keywords[] = sprintf('%s %s'osc_item_category(), osc_item_city());
            }
            if( 
osc_item_region() != '' ) {
                
$keywords[] = osc_item_region();
                
$keywords[] = sprintf('%s %s'osc_item_category(), osc_item_region());
            }
            if( (
osc_item_city() != '') && (osc_item_region() != '') ) {
                
$keywords[] = sprintf('%s %s %s'osc_item_category(), osc_item_region(), osc_item_city());
                
$keywords[] = sprintf('%s %s'osc_item_region(), osc_item_city());
            }
            
$text implode(', '$keywords);
        }
        
osc_reset_items();
    }
    
// listing
    
if( osc_is_ad_page() ) {
        
$keywords = array();
        
$keywords[] = osc_item_category();
        if( 
osc_item_city() != '' ) {
            
$keywords[] = osc_item_city();
            
$keywords[] = sprintf('%s %s'osc_item_category(), osc_item_city());
        }
        if( 
osc_item_region() != '' ) {
            
$keywords[] = osc_item_region();
            
$keywords[] = sprintf('%s %s'osc_item_category(), osc_item_region());
        }
        if( (
osc_item_city() != '') && (osc_item_region() != '') ) {
            
$keywords[] = sprintf('%s %s %s'osc_item_category(), osc_item_region(), osc_item_city());
            
$keywords[] = sprintf('%s %s'osc_item_region(), osc_item_city());
        }
        
$text implode(', '$keywords);
    }

    return (
osc_apply_filter('meta_keywords_filter'$text));
}

function 
osc_search_footer_links() {
    if( !
osc_rewrite_enabled() ) {
        return array();
    }

    
$categoryID osc_search_category_id();
    if( !empty(
$categoryID) ) {

        if( 
Category::newInstance()->isRootcurrent($categoryID) ) ) {
            
$cat Category::newInstance()->findSubcategories(current($categoryID));
            if( 
count($cat) > ) {
                
$categoryID = array();
                foreach(
$cat as $c) {
                    
$categoryID[] = $c['pk_i_id'];
                }
            }
        }
    }

    if( 
osc_search_city() != '' ) {
        return array();
    }

    
$regionID '';
    if( 
osc_search_region() != '' ) {
        
$aRegion  Region::newInstance()->findByName(osc_search_region());
        if(isset(
$aRegion['pk_i_id'])) {
            
$regionID $aRegion['pk_i_id'];
        }
    }

    
$conn DBConnectionClass::newInstance();
    
$data $conn->getOsclassDb();
    
$comm = new DBCommandClass($data);

    
$comm->select('i.fk_i_category_id');
    
$comm->select('l.*');
    
$comm->select('COUNT(*) AS total');
    
$comm->from(DB_TABLE_PREFIX 't_item as i');
    
$comm->from(DB_TABLE_PREFIX 't_item_location as l');
    if( !empty(
$categoryID) ) {
        
$comm->whereIn('i.fk_i_category_id'$categoryID);
    }
    
$comm->where('i.pk_i_id = l.fk_i_item_id');
    
$comm->where('i.b_enabled = 1');
    
$comm->where('i.b_active = 1');
    
$comm->where(sprintf("dt_expiration >= '%s'"date('Y-m-d H:i:s')));

    
$comm->where('l.fk_i_region_id IS NOT NULL');
    
$comm->where('l.fk_i_city_id IS NOT NULL');
    if( 
$regionID != '' ) {
        
$comm->where('l.fk_i_region_id'$regionID);
        
$comm->groupBy('l.fk_i_city_id');
    } else {
        
$comm->groupBy('l.fk_i_region_id');
    }
    
$rs $comm->get();

    if( !
$rs ) {
        return array();
    }

    return 
$rs->result();
}

function 
osc_footer_link_url($f null) {
    if(
$f==null) {
        if(
View::newInstance()->_exists('footer_link')) {
            
$f View::newInstance()->_get('footer_link');
        } else {
            return 
'';
        }
    } else {
        
View::newInstance()->_exportVariableToView('footer_link'$f);
    }
    
$params = array();
    
$tmp osc_search_category_id();
    if( !empty(
$tmp) ) {
        
$params['sCategory'] = $f['fk_i_category_id'];
    }

    if( 
osc_search_region() == '' ) {
        
$params['sRegion'] = $f['fk_i_region_id'];
    } else {
        
$params['sCity'] = $f['fk_i_city_id'];
    }

    return 
osc_search_url($params);
}

function 
osc_footer_link_title($f null) {
    if(
$f==null) {
        if(
View::newInstance()->_exists('footer_link')) {
            
$f View::newInstance()->_get('footer_link');
        } else {
            return 
'';
        }
    } else {
        
View::newInstance()->_exportVariableToView('footer_link'$f);
    }
    
$text '';

    if( 
osc_get_preference('seo_title_keyword') != '' ) {
        
$text .= osc_get_preference('seo_title_keyword') . ' ';
    }

    
$cat osc_get_category('id'$f['fk_i_category_id']);
    if(@
$cat['s_name']!='') {
        
$text .= $cat['s_name'].' ';
    }

    if( 
osc_search_region() == '' ) {
        
$text .= $f['s_region'];
    } else {
        
$text .= $f['s_city'];
    }

    
$text trim($text);
    return 
$text;
}

/**
 * Instantiate the admin toolbar object.
 *
 * @since 3.0
 * @access private
 * @return bool
 */
function _osc_admin_toolbar_init()
{
    
$adminToolbar AdminToolbar::newInstance();

    
$adminToolbar->init();
    
$adminToolbar->add_menus();
    return 
true;
}
// and we hook our function via
osc_add_hook'init_admin''_osc_admin_toolbar_init');

/**
 * Draws admin toolbar
 */
function osc_draw_admin_toolbar()
{
    
$adminToolbar AdminToolbar::newInstance();

    
// run hook for adding
    
osc_run_hook('add_admin_toolbar_menus');
    
$adminToolbar->render();
}

/**
 * Add webtitle with link to frontend
 */
function osc_admin_toolbar_menu()
{
    
AdminToolbar::newInstance()->add_menu( array(
                
'id'        => 'home',
                
'title'     => '<span class="">'.  osc_page_title() .'</span>',
                
'href'      => osc_base_url(),
                
'meta'      => array('class' => 'user-profile'),
                
'target'    => '_blank'
            
) );
}

/**
 * Add logout link
 */
function osc_admin_toolbar_logout()
{
    
AdminToolbar::newInstance()->add_menu( array(
                
'id'        => 'logout',
                
'title'     => __('Logout'),
                
'href'      => osc_admin_base_url(true) . '?action=logout',
                
'meta'      => array('class' => 'btn btn-dim ico ico-32 ico-power float-right')
            ) );
}

function 
osc_admin_toolbar_comments()
{
    
$total ItemComment::newInstance()->countAll'( c.b_active = 0 OR c.b_enabled = 0 OR c.b_spam = 1 )' );
    if( 
$total ) {
        
$title '<i class="circle circle-green">'.$total.'</i>'.__('New comments');

        
AdminToolbar::newInstance()->add_menu(
                array(
'id'    => 'comments',
                      
'title' => $title,
                      
'href'  => osc_admin_base_url(true) . "?page=comments",
                      
'meta'  => array('class' => 'action-btn action-btn-black')
                ) );
    }
}

function 
osc_admin_toolbar_spam()
{
    
$total Item::newInstance()->countByMarkas'spam' );
    if( 
$total ) {
        
$title '<i class="circle circle-red">'.$total.'</i>'.__('Spam');

        
AdminToolbar::newInstance()->add_menu(
                array(
'id'    => 'spam',
                      
'title' => $title,
                      
'href'  => osc_admin_base_url(true) . "?page=items&action=items_reported&sort=spam",
                      
'meta'  => array('class' => 'action-btn action-btn-black')
                ) );
    }
}

function 
osc_admin_toolbar_update_core($force false)
{
    if( !
osc_is_moderator() ) {
        
$data json_decode(osc_update_core_json(), true);

        if(
$force) {
            
AdminToolbar::newInstance()->remove_menu('update_core');
        }
        if(isset(
$data['version']) && $data['version'] > 0) {
            
$title sprintf(__('Osclass %s is available'), $data['s_name']);
            
AdminToolbar::newInstance()->add_menu(
                array(
'id'    => 'update_core',
                    
'title' => $title,
                    
'href'  => osc_admin_base_url(true) . "?page=tools&action=upgrade",
                    
'meta'  => array('class' => 'action-btn action-btn-black')
                ) );
        }
    }
}


function 
osc_check_plugins_update$force false )
{
    
$total getPreference('plugins_update_count');
    if(
$force) {
        return 
_osc_check_plugins_update();
    } else if((
time() - osc_plugins_last_version_check()) > (24 3600)) {
        
osc_add_hook('admin_footer''check_plugins_admin_footer');
    }
    return 
$total;
}
function 
_osc_check_plugins_update() {
    
$total 0;
    
$array = array();
    
$array_downloaded = array();
    
$plugins    Plugins::listAll();
    foreach(
$plugins as $plugin) {
        
$info osc_plugin_get_info($plugin);
        if(
osc_check_plugin_update(@$info['plugin_update_uri'], @$info['version'])) {
            
$array[] = @$info['plugin_update_uri'];
            
$total++;
        }else{
        }
        
$array_downloaded[] = @$info['plugin_update_uri'];
    }

    
osc_set_preference'plugins_to_update' json_encode($array) );
    
osc_set_preference'plugins_downloaded'json_encode($array_downloaded) );
    
osc_set_preference'plugins_update_count'$total );
    
osc_set_preference'plugins_last_version_check'time() );
    
osc_reset_preferences();
    return 
$total;
}

function 
osc_admin_toolbar_update_plugins($force false)
{
    if( !
osc_is_moderator() ) {
        
$total osc_check_plugins_update$force );

        if(
$force) {
            
AdminToolbar::newInstance()->remove_menu('update_plugin');
        }
        if(
$total 0) {
            
$title '<i class="circle circle-gray">'.$total.'</i>'.__('Plugin updates');
            
AdminToolbar::newInstance()->add_menu(
                array(
'id'    => 'update_plugin',
                    
'title' => $title,
                    
'href'  => osc_admin_base_url(true) . "?page=plugins#update-plugins",
                    
'meta'  => array('class' => 'action-btn action-btn-black')
                ) );
        }
    }
}

function 
osc_check_themes_update$force false )
{
    
$total getPreference('themes_update_count');
    if(
$force) {
        return 
_osc_check_themes_update();
    } else if((
time() - osc_themes_last_version_check()) > (24 3600)) {
        
osc_add_hook('admin_footer''check_themes_admin_footer');
    }
    return 
$total;
}
function 
_osc_check_themes_update() {
    
$total 0;
    
$array = array();
    
$array_downloaded = array();
    
$themes WebThemes::newInstance()->getListThemes();
    foreach(
$themes as $theme) {
        
$info WebThemes::newInstance()->loadThemeInfo($theme);
        if(
osc_check_theme_update(@$info['theme_update_uri'], @$info['version'])) {
            
$array[] = $theme;
            
$total++;
        }
        
$array_downloaded[] = @$info['theme_update_uri'];
    }
    
osc_set_preference'themes_to_update'json_encode($array) );
    
osc_set_preference'themes_downloaded'json_encode($array_downloaded) );
    
osc_set_preference'themes_update_count'$total );
    
osc_set_preference'themes_last_version_check'time() );
    
osc_reset_preferences();
    return 
$total;
}

function 
osc_admin_toolbar_update_themes($force false)
{
    if( !
osc_is_moderator() ) {
        
$total osc_check_themes_update$force );

        if(
$force) {
            
AdminToolbar::newInstance()->remove_menu('update_theme');
        }
        if(
$total 0) {
            
$title '<i class="circle circle-gray">'.$total.'</i>'.__('Theme updates');
            
AdminToolbar::newInstance()->add_menu(
                    array(
'id'    => 'update_theme',
                          
'title' => $title,
                          
'href'  => osc_admin_base_url(true) . "?page=appearance",
                          
'meta'  => array('class' => 'action-btn action-btn-black')
                    ) );
        }
    }
}

// languages todo
function osc_check_languages_update$force false ) {
    
$total getPreference('languages_update_count');
    if(
$force) {
        return 
_osc_check_languages_update();
    } else if((
time() - osc_languages_last_version_check()) > (24 3600)) {
        
osc_add_hook('admin_footer''check_languages_admin_footer');
    }
    return 
$total;
}
function 
_osc_check_languages_update() {
    
$total 0;
    
$array = array();
    
$array_downloaded = array();
    
$languages  OSCLocale::newInstance()->listAll();
    foreach(
$languages as $lang) {
        if(
osc_check_language_update($lang['pk_c_code'], $lang['s_version'] )) {
            
$array[] = $lang['pk_c_code'];
            
$total++;
        }
        
$array_downloaded[] = $lang['pk_c_code'];
    }
    
osc_set_preference'languages_to_update' json_encode($array) );
    
osc_set_preference'languages_downloaded'json_encode($array_downloaded) );
    
osc_set_preference'languages_update_count'$total );
    
osc_set_preference'languages_last_version_check'time() );
    
osc_reset_preferences();
    return 
$total;
}

function 
osc_admin_toolbar_update_languages($force false)
{
    if( !
osc_is_moderator() ) {
        
$total osc_check_languages_update$force );

        if(
$force) {
            
AdminToolbar::newInstance()->remove_menu('update_language');
        }
        if(
$total 0) {
            
$title '<i class="circle circle-gray">'.$total.'</i>'.__('Language updates');
            
AdminToolbar::newInstance()->add_menu(
                    array(
'id'    => 'update_language',
                          
'title' => $title,
                          
'href'  => osc_admin_base_url(true) . "?page=languages",
                          
'meta'  => array('class' => 'action-btn action-btn-black')
                    ) );
        }
    }
}
?>
Онлайн: 4
Реклама