Jump to content

Featured Replies

Posted
comment_46110

(SOS34) Monthly Top Posters 1.0.0


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


 

  • 1 year later...
comment_92393

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

comment_92394

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

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

comment_92395

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

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

Edited by ss11

comment_92397

Есть за все время 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";

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

  • 11 месяцев спустя...
  • 1 year later...
comment_136180

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

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

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>
 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.