File: /var/www/ilya/data/www/irkboard.ru/admin/applications/forums/xml/hooks/recent_topics.xml
<?xml version="1.0" encoding="utf-8"?>
<hookexport>
<hookdata>
<config>
<hook_name>Последние темы</hook_name>
<hook_desc>Выводит блок последних тем на главной странице форума</hook_desc>
<hook_author>Invision Power Services, Inc</hook_author>
<hook_email/>
<hook_website>www.invisionpower.com</hook_website>
<hook_update_check/>
<hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:0;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:0:"";s:20:"hook_php_version_max";s:0:"";}]]></hook_requirements>
<hook_version_human>1.0.0</hook_version_human>
<hook_version_long>1000</hook_version_long>
<hook_extra_data/>
<hook_key>recent_topics</hook_key>
</config>
</hookdata>
<hookfiles>
<file>
<hook_file_real>boardIndexRecentTopics.php</hook_file_real>
<hook_type>templateHooks</hook_type>
<hook_classname>boardIndexRecentTopics</hook_classname>
<hook_data><![CDATA[a:6:{s:15:"classToOverload";N;s:9:"skinGroup";s:11:"skin_boards";s:12:"skinFunction";s:18:"boardIndexTemplate";s:4:"type";s:7:"foreach";s:2:"id";s:11:"side_blocks";s:8:"position";s:9:"outer.pre";}]]></hook_data>
<hooks_source><![CDATA[<?php
class boardIndexRecentTopics
{
public $registry;
public function __construct()
{
$this->registry = ipsRegistry::instance();
$this->registry->class_localization->loadLanguageFile( array( 'public_topic' ), 'forums' );
}
public function getOutput()
{
/* INIT */
$topicIDs = array();
$timesUsed = array();
/* Grab last X data */
foreach( $this->registry->getClass('class_forums')->forum_by_id as $forumID => $forumData )
{
if ( ! $forumData['can_view_others'] )
{
continue;
}
if ( $forumData['password'] )
{
continue;
}
if ( ! $this->registry->permissions->check( 'read', $forumData ) )
{
continue;
}
/* Still here? */
$_topics = $this->registry->getClass('class_forums')->lastXThaw( $forumData['last_x_topic_ids'] );
if ( is_array( $_topics ) )
{
foreach( $_topics as $id => $time )
{
if( in_array( $time, $timesUsed ) )
{
while( in_array( $time, $timesUsed ) )
{
$time +=1;
}
}
$topicIDs[ $time ] = $id;
}
}
}
$timesUsed = array();
if ( is_array( $topicIDs ) )
{
krsort( $topicIDs );
$_topics = array_slice( $topicIDs, 0, 5 );
if ( is_array( $_topics ) && count( $_topics ) )
{
/* Query Topics */
$this->registry->DB()->build( array(
'select' => 't.tid, t.title, t.title_seo, t.start_date, t.starter_id, t.starter_name',
'from' => array( 'topics' => 't' ),
'where' => 't.tid IN (' . implode( ',', array_values( $_topics ) ) . ')',
'add_join' => array(
array(
'select' => 'm.members_display_name, m.members_seo_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=t.starter_id',
'type' => 'left',
)
)
) );
$this->registry->DB()->execute();
$topic_rows = array();
while( $r = $this->registry->DB()->fetch() )
{
$time = $r['start_date'];
if( in_array( $time, $timesUsed ) )
{
while( in_array( $time, $timesUsed ) )
{
$time +=1;
}
}
$topics_rows[ $time ] = $r;
}
krsort( $topics_rows );
}
}
return $this->registry->output->getTemplate( 'boards' )->hookRecentTopics( $topics_rows );
}
}]]></hooks_source>
</file>
</hookfiles>
<hookextras_settings/>
<hookextras_language/>
<hookextras_modules/>
<hookextras_help/>
<hookextras_templates/>
<hookextras_tasks/>
<hookextras_database_create/>
<hookextras_database_alter/>
<hookextras_database_update/>
<hookextras_database_insert/>
</hookexport>