Перейти к содержанию
Respected

(SOS34) Monthly Top Posters 1.0.0

Рекомендуемые сообщения

(SOS34) Monthly Top Posters 1.0.0


(SOS34) Monthly Top Posters 1.0.0 - хук отображает топ постеров за месяц в боковом блоке.


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поставил этот хук, но он учитывает сообщения пользователей даже из тем с отключенным счетчиком. Каким образом сделать так, чтобы количество сообщений в хуке было равно количеству сообщений в профиле? IPB 3.4.6

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Каким образом сделать так, чтобы количество сообщений в хуке было равно количеству сообщений в профиле? IPB 3.4.6

Покажите мне, где в профиле есть статистика постов по месяцам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

извините, неправильно выразился. имелась ввиду логика подсчета как профиле, т.е. исключая посты в темах с отключенным счетчиком.

P.S. может быть есть другой аналогичный хук, где учтен этот момент?

Изменено пользователем ss11

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть за все время http://ipbmafia.ru/files/file/1132-sos34-members-stats-on-board-index-sidebar-100/

 

Если нужен именно этот, то можете открыть xml-файл, найти 

		$where = array( "EXTRACT(MONTH FROM FROM_UNIXTIME(p.post_date)) = {$month}", "EXTRACT(YEAR FROM FROM_UNIXTIME(p.post_date)) = {$year}" );

и ниже добавить 

		$where[] = "f.inc_postcount=1";

Посты из форумов, где отключен счетчик, не будут входить в статистику.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

помогите. Как убрать форматирование в этом хуке?

подробно на скриншоте

Screenshot_1.jpg

что нужно изменить в коде хука чтоб ники были без форматирования?

заранее спасибо. код хука вот

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<hookexport>
  <hookdata>
    <config>
      <hook_name>(SOS34) Monthly Top Posters</hook_name>
      <hook_desc>Will show top monthly posters on sidebar</hook_desc>
      <hook_author>Adriano Faria</hook_author>
      <hook_email>[email protected]</hook_email>
      <hook_website>http://www.sosinvision.com.br</hook_website>
      <hook_update_check/>
      <hook_requirements><![CDATA[a:3:{s:21:"required_applications";a:1:{s:6:"forums";a:3:{s:8:"app_name";s:6:"Forums";s:11:"min_version";i:34006;s:11:"max_version";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>10000</hook_version_long>
      <hook_extra_data><![CDATA[a:5:{s:7:"display";a:3:{s:8:"language";s:50:"From forums_public_boards: topMonthlyPosters_month";s:9:"templates";s:35:"From skin_boards: topMonthlyPosters";s:8:"settings";s:90:"Setting groups: (SOS34) Monthly Top Posters<br />Settings: EXCLUDE Groups, Number of Users";}s:13:"settingGroups";a:1:{i:0;s:17:"topMonthlyPosters";}s:8:"settings";a:2:{i:0;s:24:"topMonthlyPosters_groups";i:1;s:20:"topMonthlyPosters_nr";}s:8:"language";a:1:{s:20:"forums_public_boards";a:1:{i:0;s:23:"topMonthlyPosters_month";}}s:9:"templates";a:1:{s:11:"skin_boards";a:1:{i:0;s:17:"topMonthlyPosters";}}}]]></hook_extra_data>
      <hook_key>topMonthlyPosters</hook_key>
      <hook_global_caches/>
    </config>
  </hookdata>
  <hookfiles>
    <file>
      <hook_file_real>topMonthlyPosters.php</hook_file_real>
      <hook_type>templateHooks</hook_type>
      <hook_classname>topMonthlyPosters</hook_classname>
      <hook_data><![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";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 topMonthlyPosters
{
    public $registry;
    public $member;
    public $cache;

    public function __construct()
    {
        $this->registry = ipsRegistry::instance();
        $this->DB        =  $this->registry->DB();
        $this->settings =& $this->registry->fetchSettings();
        $this->cache    = $this->registry->cache();
        $this->caches   =& $this->registry->cache()->fetchCaches();
        $this->member   = $this->registry->member();
        $this->memberData =& $this->registry->member()->fetchMemberData();
        $this->registry->class_localization->loadLanguageFile( array( 'public_boards', 'forums' ) );
    }

    public function getOutput()
    {
        if ( IPSMember::isInGroup( $this->memberData, explode( ',', IPSText::cleanPermString( $this->settings['topMonthlyPosters_groups'] ) ) ) )
        {
            return false;
        }

        $month         = date('m');
        $year        = date('Y');
        $monthname  = gmstrftime( '%B', time() );

        $where = array( "EXTRACT(MONTH FROM FROM_UNIXTIME(p.post_date)) = {$month}", "EXTRACT(YEAR FROM FROM_UNIXTIME(p.post_date)) = {$year}" );

        $this->DB->build( array( 'select'   => 'm.member_id, m.members_display_name, m.member_group_id, m.members_seo_name, COUNT(*) AS posts',
                                 'from'     => array( 'members' => 'm' ),
                                 'where'    => implode( ' AND ', $where ),
                                 'add_join' => array( 0 => array( 'select' => 'pp.*',
                                                                   'from'  => array( 'profile_portal' => 'pp' ),
                                                                  'where' => 'pp.pp_member_id=m.member_id',
                                                                  'type'  => 'left' ),
                                                      1 => array( 'from'  => array( 'posts' => 'p' ),
                                                                  'where' => 'p.author_id=m.member_id',
                                                                  'type'  => 'left' ),
                                                      2 => array( 'from'  => array( 'topics' => 't' ),
                                                                  'where' => 't.tid=p.topic_id',
                                                                  'type'  => 'left' ),
                                                      3 => array( 'from'  => array( 'forums' => 'f' ),
                                                                  'where' => 'f.id=t.forum_id',
                                                                  'type'  => 'left' ) ),
                                 'group'    => 'p.author_id',
                                 'order'    => 'posts DESC',
                                 'limit'    => array( 0, $this->settings['topMonthlyPosters_nr'] ),
        ) );

        $q = $this->DB->execute();

        if ( $this->DB->getTotalRows( $q ) )
        {
            $top_posters = array();

            while( $r = $this->DB->fetch( $q ) )
            {
                $r = IPSMember::buildDisplayData( $r );
                
                $top_posters[ $r['member_id'] ] = $r;
            }

            return $this->registry->output->getTemplate( 'boards' )->topMonthlyPosters( $top_posters, $monthname );
        }
    }
}]]></hooks_source>
    </file>
  </hookfiles>
  <hookextras_settings>
    <setting>
      <conf_is_title>1</conf_is_title>
      <conf_title_title>(SOS34) Monthly Top Posters</conf_title_title>
      <conf_title_desc>Settings for this hook</conf_title_desc>
      <conf_title_noshow>0</conf_title_noshow>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_title_app>forums</conf_title_app>
      <conf_title_tab>Hooks</conf_title_tab>
    </setting>
    <setting>
      <conf_id>1505</conf_id>
      <conf_title>EXCLUDE Groups</conf_title>
      <conf_description><![CDATA[Select which user groups YOU DON'T WANT to show the sidebar block]]></conf_description>
      <conf_group>201</conf_group>
      <conf_type>multi</conf_type>
      <conf_key>topMonthlyPosters_groups</conf_key>
      <conf_value/>
      <conf_default/>
      <conf_extra>#show_groups#</conf_extra>
      <conf_evalphp><![CDATA[$key = 'topMonthlyPosters_groups';

if ( $save == 1)
{
    if ( is_array($_POST[ $key ]) )
    {
        $_POST[ $key ] = implode(",",$_POST[ $key ]);
    }
    else
    {
        $_POST[ $key ] = "";
    }
}
if ( $show == 1 )
{
    $key .= '[]';
}]]></conf_evalphp>
      <conf_protected>1</conf_protected>
      <conf_position>2</conf_position>
      <conf_start_group/>
      <conf_add_cache>1</conf_add_cache>
      <conf_keywords/>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_is_title>0</conf_is_title>
    </setting>
    <setting>
      <conf_id>1504</conf_id>
      <conf_title>Number of Users</conf_title>
      <conf_description/>
      <conf_group>201</conf_group>
      <conf_type>input</conf_type>
      <conf_key>topMonthlyPosters_nr</conf_key>
      <conf_value/>
      <conf_default>5</conf_default>
      <conf_extra/>
      <conf_evalphp/>
      <conf_protected>1</conf_protected>
      <conf_position>1</conf_position>
      <conf_start_group/>
      <conf_add_cache>1</conf_add_cache>
      <conf_keywords/>
      <conf_title_keyword>topMonthlyPosters</conf_title_keyword>
      <conf_is_title>0</conf_is_title>
    </setting>
  </hookextras_settings>
  <hookextras_language>
    <language>
      <word_app>forums</word_app>
      <word_pack>public_boards</word_pack>
      <word_key>topMonthlyPosters_month</word_key>
      <word_default>Top Poster</word_default>
    </language>
  </hookextras_language>
  <hookextras_modules/>
  <hookextras_help/>
  <hookextras_templates>
    <templates>
      <template_group>skin_boards</template_group>
      <template_content><![CDATA[<div class='ipsSideBlock clearfix'>
    <h3>{$this->lang->words['topMonthlyPosters_month']} ({$monthname})</h3>
    <div class='_sbcollapsable'>
        <ul class='ipsList_withminiphoto'>
            <if test="top_posters:|:is_array( $top_posters ) && count( $top_posters )">
                {parse striping="top_posters" classes="row1,row2 altrow"}
                <foreach loop="top_posters:$top_posters as $r">
                    <li class='clearfix'>
                        <a href='{parse url="showuser={$r['member_id']}" seotitle="{$r['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}' class='ipsUserPhotoLink left'><img src='{$r['pp_mini_photo']}' alt="{$r['members_display_name']}{$this->lang->words['users_photo']}" class='ipsUserPhoto ipsUserPhoto_mini' /></a>
                        <div class='list_content'>
                            {IPSMember::makeProfileLink(IPSMember::makeNameFormatted( $r['members_display_name'], $r['member_group_id']), $r['member_id'])}
                            <p class='desc ipsType_smaller'>
                                {parse format_number="$r['posts']"} {$this->lang->words['posts']}
                            </p>
                        </div>
                    </li>
                </foreach>
            </if>
        </ul>
    </div>
</div>]]></template_content>
      <template_name>topMonthlyPosters</template_name>
      <template_data>$top_posters, $monthname</template_data>
      <template_updated>1235666400</template_updated>
      <template_removable>0</template_removable>
      <template_added_to>1</template_added_to>
      <template_user_added>1</template_user_added>
      <template_user_edited>0</template_user_edited>
      <template_master_key>root</template_master_key>
    </templates>
  </hookextras_templates>
  <hookextras_css/>
  <hookextras_replacements/>
  <hookextras_tasks/>
  <hookextras_database_create/>
  <hookextras_database_alter/>
  <hookextras_database_update/>
  <hookextras_database_insert/>
</hookexport>
 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×