Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/applications/core/extensions/sitemapPlugins/topics.php
Строк: 81
<?php

if(!IN_IPB)
{
    die(
'This file is not designed to be accessed directly.');
}

class 
sitemap_core_topics extends ipseoSitemapPlugin
{
    public function 
generate()
    {
        if(
$this->settings['sitemap_priority_topics'] == 0)
        {
            return;
        }
        
        
$maxTopics = (int)ipsRegistry::$settings['sitemap_recent_topics'];
        
        if(!
ipSeo_SitemapGenerator::isCronJob() && ($maxTopics 10000 || $maxTopics == -1))
        {
            
$maxTopics 10000;
        }
        elseif(
ipSeo_SitemapGenerator::isCronJob() && $maxTopics == -1)
        {
            
$maxTopics 50000000;
        }
        
        
$curTopics   0;
        
$limitTopics 0;    
        
        if(
ipSeo_SitemapGenerator::isCronJob())
        {
            
//print 'Done: ';
        
}
        
        while(
$curTopics $maxTopics)
        {
            if(
ipSeo_SitemapGenerator::isCronJob())
            {
                
//print $curTopics . ', ';
                
sleep(0.5);
            }
            
            
$permCheck $this->DB->buildWherePermission( array( $this->caches['group_cache'][ $this->settings['guest_group'] ]['g_perm_id'] ), 'p.perm_2'true);
            
            
$this->DB->build( array(
                
'select'    => 't.*, f.ipseo_priority',
                
'from'        => array( 'topics' => 't' ),
                
'add_join'    => array(
                    array(
                        
'from'    => array( 'permission_index' => 'p' ),
                        
'where'    => "(p.perm_type = 'forum' AND p.perm_type_id = t.forum_id)",
                        
'type'    => 'left'
                        
),
                    array(
                        
'from'    => array( 'forums' => 'f' ),
                        
'where'    => "f.id=t.forum_id",
                        
'type'    => 'left'
                        
),
                    ),
                
'where'        => "{$permCheck} AND " $this->registry->getClass('class_forums')->fetchTopicHiddenQuery( array( 'visible' ), '' ),
                
'limit'        => array( $limitTopics100 )
                ) );
            
$result $this->DB->execute();
            
            if(
$result)
            {                
                
/*$_one   = 0;
                $_two   = 0;
                $_three = 0;*/
                
                // Add the resulting rows to the sitemap:
                
while($row $this->DB->fetch($result))
                {
                    if ( 
$row['ipseo_priority'] == '0' )
                    {
                        continue;
                    }
                
                    if(!
$this->settings['sitemap_topic_pages'] || $row['posts'] <= $this->settings['display_max_posts'])
                    {    
                        
$url $this->settings['board_url'] . '/index.php?showtopic=' $row['tid'];
                        
$url ipSeo_FURL::build($url'none'$row['title_seo'], 'showtopic');
                        
//$url = ipsRegistry::getClass('output')->buildSEOUrl($url, 'none', $row['title_seo'], 'showtopic');
                        
                        
if($this->settings['sitemap_priority_topics'] == 100)
                        {
                            
$priority $this->calculatePriority($row);
                        }
                        else
                        {
                            
$priority $this->settings['sitemap_priority_topics'];
                        }
                        
                        
$curTopics $this->sitemap->addURL($url$row['last_post'], $priority);
                    }
                    else
                    {
                        
$j 1;

                        for(
$i 0$i <= $row['posts']; $i += $this->settings['display_max_posts'])
                        {
                            
$url $this->settings['board_url'] . '/index.php?showtopic=' $row['tid'] . ( ( $j == ) ? '' '&page=' $j );
                            
$url ipSeo_FURL::build($url'none'$row['title_seo'], 'showtopic');
                            
//$url = ipsRegistry::getClass('output')->buildSEOUrl($url, 'none', $row['title_seo'], 'showtopic');

                            
if($this->settings['sitemap_priority_topics'] == 100)
                            {
                                
$priority $this->calculatePriority($rowtrue);
                            }
                            else
                            {
                                
$priority $this->settings['sitemap_priority_topics'];
                            }

                            
$curTopics $this->sitemap->addURL($url$row['last_post'], $priority);
                            
$j++;
                        }
                    }
                    
                    
/*$_one += $one;
                    $_two += $two;
                    $_three += $three;*/
                
}
                
                
$limitTopics += 100;                
                
                
// If we've got back less rows than expected, we've probably got no more to pull:
                
if($this->DB->getTotalRows($result) < 100)
                {
                    break;
                }                
            }
                        
        }
        
        if(
ipSeo_SitemapGenerator::isCronJob())
        {
            
//print PHP_EOL;
        
}
    }
    
    protected function 
calculatePriority($topic$subPage false)
    {
        
$priority $subPage 0.4 0.6;
        
        
// Modify if forum has a special setting
        
if ( $topic['ipseo_priority'] != '' )
        {
            
$priority += ( $topic['ipseo_priority'] - $priority );
        }
        
        
// Boost topics where start date is today:
        
if($topic['start_date'] > (time() - 86400))
        {
            
$priority $priority 0.1;
        }
        
        
// Drop closed topics, but only if not pinned.
        
if(!$topic['pinned'] && $topic['state'] != 'open')
        {
            
$priority $priority 0.2;
        }
        
        
// Boost pinned topics:
        
if($topic['pinned'])
        {
            
$priority $priority 0.1;
        }
        
        
// Boost topics with more than one page of posts:
        
if($topic['posts'] > $this->settings['display_max_posts'])
        {
            
$priority $priority 0.1;
        }
        
        
// Extra boost for topics with more than ten pages of posts:
        
if($topic['posts'] > ($this->settings['display_max_posts'] * 10))
        {
            
$priority $priority 0.2;
        }
        
        if(
$priority 1)
        {
            
$priority 1.0;
        }
        elseif(
$priority 0)
        {
            
$priority 0.0;
        }
        
        return 
$priority;
    }
}
Онлайн: 1
Реклама