Is it optimal? Code for Latest Topics

Discussion forum for MOD Writers regarding MOD Development.
Locked
Crazzel
Registered User
Posts: 15
Joined: Fri Feb 03, 2012 1:46 pm
Location: Poland
Contact:

Is it optimal? Code for Latest Topics

Post by Crazzel »

Hi.
Firstly sorry if this wrong forum.

I was wrote small code, to show latest topics on forum and I would like to will find out if it is optimal...

My functions.php file (page_header function):

Code: Select all

if($topic_id == 0 && $forum_id == 0)
    {
        global $qte;
        $limit_tematow = 5;

        $tematy = 'SELECT topic_title, topic_poster, topic_time, topic_type, forum_id, topic_id, topic_first_poster_colour, topic_first_poster_name, topic_attr_id, topic_attr_user, topic_attr_time FROM ' . TOPICS_TABLE . '
                    WHERE topic_status <> ' . ITEM_MOVED . '
                    AND topic_approved = 1
                    ORDER BY topic_id DESC';

        $pobierz_wynik = $db->sql_query_limit($tematy, $limit_tematow);

        while( $wynik_tematow = $db->sql_fetchrow($pobierz_wynik) )
        {
            $tytul_tematu        = $wynik_tematow['topic_title'];
            $autor_tematu        = get_username_string('full', $wynik_tematow['topic_poster'], $wynik_tematow['topic_first_poster_name'], $wynik_tematow['topic_first_poster_colour']);
            $data_tematu        = $user->format_date($wynik_tematow['topic_time']);
            $link_tematu        = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $wynik_tematow['forum_id'] . '&t=' . $wynik_tematow['topic_id']);

            $template->assign_block_vars('tematy', array(                    
                'S_TOPIC_ATTR'             => !empty($wynik_tematow['topic_attr_id']) ? true : false,
                'TOPIC_ATTRIBUTE'         => !empty($wynik_tematow['topic_attr_id']) ? $qte->attr_display($wynik_tematow['topic_attr_id'], $wynik_tematow['topic_attr_user'], $wynik_tematow['topic_attr_time']) : '',
                'POST_ANNOUNCE'            => ($wynik_tematow['topic_type'] == POST_ANNOUNCE) ? true : false,
                'POST_GLOBAL'              => ($wynik_tematow['topic_type'] == POST_GLOBAL) ? true : false,
                'POST_STICKY'            => ($wynik_tematow['topic_type'] == POST_STICKY) ? true : false,
                'TYTUL_TEMATU'               => censor_text($tytul_tematu),
                'AUTOR_TEMATU'          => $autor_tematu,
                'DATA_TEMATU'            => $data_tematu,
                'LINK_TEMATU'              => $link_tematu,
            ));
        }
        $db-> sql_freeresult($pobierz_wynik);
    }

And my overall_header:

Code: Select all

<h3 class="tytul-boczny">
        Najnowsze tematy
        </h3>
        <div class="kat-bg">
            <!-- IF SCRIPT_NAME eq 'index' --><div class="trigger aktywny"></div><!-- ENDIF -->
            <div class="collapsethis">
            <ul style="border: 1px solid #393939; padding: 2px 8px;">
                <li>
                    <!-- BEGIN tematy -->
                    <!-- IF tematy.POST_GLOBAL --><span class="ogloszenie-globalne">ważne ogłoszenie</span> <!-- ENDIF -->
                    <!-- IF tematy.POST_ANNOUNCE --><span class="ogloszenie">ogłoszenie</span> <!-- ENDIF -->
                    <!-- IF tematy.POST_STICKY --><span class="przyklejony">podpięty</span> <!-- ENDIF -->
                    <!-- IF tematy.S_TOPIC_ATTR -->{tematy.TOPIC_ATTRIBUTE} <!-- ENDIF -->
                    <a href="{tematy.LINK_TEMATU}" title=" {tematy.TYTUL_TEMATU}">{tematy.TYTUL_TEMATU}</a><br />
                    przez {tematy.AUTOR_TEMATU} - {tematy.DATA_TEMATU}<hr class="tematy" />
                    <!-- END tematy -->
                </li>
            </ul>
            </div>
        </div>] 

What Can I possibly change?
User avatar
AmigoJack
Registered User
Posts: 5715
Joined: Tue Jun 15, 2010 11:33 am
Location: グリーン ヒル ゾーン
Contact:

Re: Is it optimal? Code for Latest Topics

Post by AmigoJack »

  1. Cache the query results.
  2. Reduce function calls.
  3. Use ELSE where possible.

Code: Select all

if( $topic_id== 0
 && $forum_id== 0
  ) {
  global $qte;
  define( 'TEMATOW_LIMIT', 5 );  // Maximum row count
  define( 'TEMATOW_TTL', 60* 5 );  // Cache result in sec

  $tematy= 'SELECT topic_title, topic_poster, topic_time, topic_type, forum_id, topic_id, topic_first_poster_colour, topic_first_poster_name, topic_attr_id, topic_attr_user, topic_attr_time
    FROM '. TOPICS_TABLE. '
    WHERE topic_status<> '. ITEM_MOVED. '
    AND topic_approved= 1
    ORDER BY topic_id DESC';
  $pobierz_wynik= $db-> sql_query_limit( $tematy, TEMATOW_LIMIT, 0, TEMATOW_TTL );
  $aUser= array();
  while( $wynik_tematow= $db-> sql_fetchrow( $pobierz_wynik ) ) {
    if( !isset( $aUser[$wynik_tematow['topic_poster']] ) ) {
      $aUser[$wynik_tematow['topic_poster']]= get_username_string
      ( 'full'
      , $wynik_tematow['topic_poster']
      , $wynik_tematow['topic_first_poster_name']
      , $wynik_tematow['topic_first_poster_colour'] 
      );
    }

    $template-> assign_block_vars
    ( 'tematy'
    , array
      ( 'S_TOPIC_ATTR'=> $wynik_tematow['topic_attr_id']
      , 'TOPIC_ATTRIBUTE'=> $wynik_tematow['topic_attr_id']? $qte-> attr_display
        ( $wynik_tematow['topic_attr_id']
        , $wynik_tematow['topic_attr_user']
        , $wynik_tematow['topic_attr_time']
        ): ''
      , 'POST_ANNOUNCE'=> $wynik_tematow['topic_type']== POST_ANNOUNCE
      , 'POST_GLOBAL'=> $wynik_tematow['topic_type']== POST_GLOBAL
      , 'POST_STICKY'=> $wynik_tematow['topic_type']== POST_STICKY
      , 'TYTUL_TEMATU'=> censor_text( wynik_tematow['topic_title'] )
      , 'AUTOR_TEMATU'=> $aUser[$wynik_tematow['topic_poster']]
      , 'DATA_TEMATU'=> $user-> format_date( $wynik_tematow['topic_time'] )
      , 'LINK_TEMATU'=> append_sid
        ( "{$phpbb_root_path}viewtopic.$phpEx"
        , 'f='. $wynik_tematow['forum_id']. '&t='. $wynik_tematow['topic_id'] 
        )
      )
    );
  }
  $db-> sql_freeresult( $pobierz_wynik );
}

Code: Select all

<h3 class="tytul-boczny">Najnowsze tematy</h3>

<div class="kat-bg">
  <!-- IF SCRIPT_NAME eq 'index' --><div class="trigger aktywny"></div><!-- ENDIF -->
  <div class="collapsethis">
    <ul style="border: 1px solid #393939; padding: 2px 8px"><li>
      <!-- BEGIN tematy -->
        <span class="<!-- IF tematy.POST_GLOBAL -->ogloszenie-globalne">wazne ogloszenie
        <!-- ELSEIF tematy.POST_ANNOUNCE -->ogloszenie">ogloszenie
        <!-- ELSEIF tematy.POST_STICKY -->przyklejony">podpiety
        <!-- ENDIF --></span>
        <!-- IF tematy.S_TOPIC_ATTR -->{tematy.TOPIC_ATTRIBUTE} <!-- ENDIF -->
        <a href="{tematy.LINK_TEMATU}" title="{tematy.TYTUL_TEMATU}">{tematy.TYTUL_TEMATU}</a><br/>
        przez {tematy.AUTOR_TEMATU} - {tematy.DATA_TEMATU}
        <hr class="tematy"/>
      <!-- END tematy -->
    </li></ul>
  </div>
</div> 
The worst thing about censorship is ███████████
Affin wrote:
Tue Nov 20, 2018 9:51 am
The problem is probably not my English but you do not want to understand correctly.
...
We will not come anybody anyway, nevertheless, it's best to shit this.
Locked

Return to “[3.0.x] MOD Writers Discussion”