vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 4.x Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=245)
-   -   Add-On Releases - v3 Arcade Stats Widget or Forum Sideblock (https://vborg.vbsupport.ru/showthread.php?t=261177)

Gemma 09-14-2011 08:29 PM

1 Attachment(s)
I've also been able to use almost all the same templates and php code to make a forum sideblock.

1. Install the product as normal.

2. Create a new template called v3a_CMS_arcadestats1 and add the following code
Code:

<div>
<table align="left" width="100%">
  <tr><td>{vb:raw as_score_table}</td></tr>
  <tr><td>{vb:raw as_news_table}</td></tr>
  <tr><td>{vb:raw as_random_table}</td></tr>
  <tr><td>{vb:raw as_champs_table}</td></tr>
  <tr><td>{vb:raw as_recent_table}</td></tr>
  <tr><td>{vb:raw as_played_table}</td></tr>
  <tr><td>{vb:raw as_popular_table}</td></tr>
</table>
</div>

3. Go to AdminCP > Forums & Moderators > Forum Block Manager > Add Block
Title - Arcade Stats (or whatever)
Content Type - PHP
Content -
Code:

global $vbulletin, $bbcode, $parser, $path, $db;
$g_limit = 5;
$g_champs_limit = 5;
$g_news_limit = 5;
$g_scores_limit = 5;

function get_games ($as_handle, $as_title, $limit) {
    global $vbulletin;

    switch ($as_handle) {
        case 'recent':
            $orderby = "dateadded DESC";
            break;
        case 'played':
            $orderby = "sessioncount DESC";
            break;
        case 'popular':
            $orderby = "votepoints DESC";
            break;
        default:
            $orderby = "gameid ASC";
            break;
    }


    $getgames = $vbulletin->db->query("
            SELECT games.* FROM " . TABLE_PREFIX . "v3arcade_games AS games
            ORDER BY " . $orderby . "
            LIMIT $limit
    ");

    while ($game = $vbulletin->db->fetch_array($getgames))
    {
            $game['gamename'] = fetch_trimmed_title(stripslashes($game['title']),$maxtitlechars);
            $game['gamedate'] = vbdate($vbulletin->options['dateformat'], $game['dateadded']);
            $getbgrow = exec_switch_bg();

        switch ($as_handle) {
            case 'recent':
                $as_game_data = $game['gamedate'];
                break;
            case 'played':
                $as_game_data = "Played " . $game['sessioncount'] . " times";
                break;
            case 'popular':
                $as_game_data = $game['votepoints'] . " votes";
                break;
            default:
                $as_game_data = "";
                break;
        }

            //eval('$as_gamebits .= "' . fetch_template('v3a_CMS_as_gamebits') . '";');
            $templater = vB_Template::create('v3a_CMS_as_gamebits');
        $templater->register('as_game_data',$as_game_data);
          $templater->register('game',$game);
          $as_gamebits .= $templater->render();

    }
    $vbulletin->db->free_result($getgames);

    // eval('$gametable = "' . fetch_template("v3a_CMS_as_{$as_handle}_gametable") . '";');
    $templater = vB_Template::create('v3a_CMS_as_' . $as_handle . '_gametable');
    $templater->register('as_title',$as_title);
    $templater->register('as_gamebits',$as_gamebits);
    $gametable = $templater->render();
    return $gametable;
}

function get_champs ($limit) {
    global $vbulletin;

    $champs = $vbulletin->db->query_read("
            SELECT COUNT(games.highscorerid) AS count, user.username, user.userid
        FROM " . TABLE_PREFIX . "v3arcade_games AS games
            LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
            WHERE user.userid IS NOT NULL
            GROUP BY user.username, user.userid
        ORDER BY count DESC, user.userid ASC
        LIMIT " . $limit
    );

    $row = '0';
    $awards = '0';
    $leaders = '0';
    while ($champ = $vbulletin->db->fetch_array($champs)) {
        $leaders++;
        if ($awards != $champ['count']) {
            $row = $leaders;
        }
        $awards = $champ['count'];
        $getbgrow = exec_switch_bg();
        //eval('$as_champbits .= "' . fetch_template('v3a_CMS_as_champbits') . '";');
        $templater = vB_Template::create('v3a_CMS_as_champbits');
        $templater->register('getbrow',$getbrow);
          $templater->register('champ',$champ);
          $as_champbits .= $templater->render();
    }
    $vbulletin->db->free_result($champs);

    //eval('$champstable = "' . fetch_template("v3a_CMS_as_champstable") . '";');
    $templater = vB_Template::create('v3a_CMS_as_champstable');
    $templater->register('as_champbits',$as_champbits);
    $champstable = $templater->render();
    return $champstable;
}

function get_random_game () {
    global $vbulletin;

    $random_game = $vbulletin->db->query_first("
        SELECT gameid,title,description,stdimage,highscore,user.userid,user.username
        FROM " . TABLE_PREFIX . "v3arcade_games AS games
            LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
        ORDER BY RAND()
        LIMIT 1
    ");

    $as_random_gameid = $random_game[gameid];
        $as_random_gametitle = $random_game[title];
        $as_random_stdimage = $random_game[stdimage];
        $as_random_description = $random_game[description];
    if($random_game[highscore] == 0)
    {
        $as_random_highscore    = "No Score";
        $as_random_highscorer    = "";
        $as_random_userid    = "";
    }
    else
    {
        $as_random_highscore    = intval($random_game[highscore]);
        $as_random_highscorer    = "(" . $random_game[username] . ")";
        $as_random_userid    = $random_game[userid];
    }
    $vbulletin->db->free_result($random_game);
    //eval('$random_table = "' . fetch_template('v3a_CMS_as_random') . '";');
    $templater = vB_Template::create('v3a_CMS_as_random');
    $templater->register('as_random_gameid',$as_random_gameid);
    $templater->register('as_random_gametitle',$as_random_gametitle);
    $templater->register('as_random_highscore',$as_random_highscore);
    $templater->register('as_random_userid',$as_random_userid);
    $templater->register('as_random_highscorer',$as_random_highscorer);
    $templater->register('as_random_stdimage',$as_random_stdimage);
    $templater->register('as_random_description',$as_random_description);
    $random_table = $templater->render();
    return $random_table;
}

function get_latest_champs ($limit)
{
    global $vbulletin, $bbcode_parser;

    //var_dump($vbulletin);
    //highlight_file('./modules/arcadestats.php');
    //exit;
    $news_items = $vbulletin->db->query_read("
        SELECT *
        FROM " . TABLE_PREFIX . "v3arcade_news
        WHERE newstext LIKE '%is the new%'
        ORDER BY datestamp DESC
        LIMIT $limit
    ");

    while ($news_item = $vbulletin->db->fetch_array($news_items)) {
          //$as_news_text =  $bbcode_parser->do_parse($news_item['newstext'], 1, 1, 1, 0);
        $as_news_text = $news_item['newstext'];
        $as_news_text = str_replace("arcade.php", $vbulletin->options['bburl'] . "/arcade.php", $as_news_text);

        $as_news_date = vbdate($vbulletin->options['dateformat'],$news_item['datestamp']);
        $as_news_time = vbdate($vbulletin->options['timeformat'],$news_item['datestamp']);
        $getbgrow = exec_switch_bg();
        //eval('$as_newsbits .= "' . fetch_template('v3a_CMS_as_newsbits') . '";');
        $templater = vB_Template::create('v3a_CMS_as_newsbits');
          $templater->register('getbrow',$getbrow);
          $templater->register('as_news_text',$as_news_text);
          $templater->register('as_news_date',$as_news_date);
          $templater->register('as_news_time',$as_news_time);
          $as_newsbits .= $templater->render();

    }
    $vbulletin->db->free_result($news_items);

    //eval('$news_table = "' . fetch_template('v3a_CMS_as_newstable') . '";');
    $templater = vB_Template::create('v3a_CMS_as_newstable');
    $templater->register('as_newsbits',$as_newsbits);
    $news_table = $templater->render();
    return $news_table;
}

function get_latest_scores ($limit)
{
    global $vbulletin;

    $latest_scores = $vbulletin->db->query_read("
        SELECT sessions.userid, sessions.gamename, sessions.gameid, sessions.score, sessions.start, sessions.finish,
            user.username,
            games.title
        FROM " . TABLE_PREFIX . "v3arcade_sessions as sessions
        LEFT JOIN " . TABLE_PREFIX . "user AS user
            ON (sessions.userid = user.userid)
        LEFT JOIN " . TABLE_PREFIX . "v3arcade_games as games
            on (sessions.gameid = games.gameid)
        WHERE valid = 1
            AND tourid = 0
          AND challengeid = 0
        ORDER BY  sessions.sessionid DESC
        LIMIT $limit
    ");

    while ($latest_score = $vbulletin->db->fetch_array($latest_scores)) {
        $as_score_userid = $latest_score['userid'];
        $as_score_gameid = $latest_score['gameid'];
        $as_score_name = $latest_score['username'];
        $as_score_score = floatval($latest_score['score']);
        $as_score_gametitle = $latest_score['title'];
        $as_score_date = vbdate($vbulletin->options['dateformat'],$latest_score['finish']);
        $as_score_time = vbdate($vbulletin->options['timeformat'],$latest_score['finish']);
        //echo "foo: $as_score_gametitle<br>\n";
        $getbgrow = exec_switch_bg();
        //eval('$as_scorebits .= "' . fetch_template('v3a_CMS_as_scorebits') . '";');
        $templater = vB_Template::create('v3a_CMS_as_scorebits');
          $templater->register('getbrow',$getbrow);
          $templater->register('as_score_userid',$as_score_userid);
          $templater->register('as_score_name',$as_score_name);
          $templater->register('as_score_score',$as_score_score);
          $templater->register('as_score_gameid',$as_score_gameid);
          $templater->register('as_score_gametitle',$as_score_gametitle);
          $templater->register('as_score_date',$as_score_date);
          $templater->register('as_score_time',$as_score_time);
          $as_scorebits .= $templater->render();
    }
    $vbulletin->db->free_result($latest_scores);

    //eval('$score_table = "' . fetch_template('v3a_CMS_as_scoretable') . '";');
    $templater = vB_Template::create('v3a_CMS_as_scoretable');
    $templater->register('as_scorebits',$as_scorebits);
    $score_table = $templater->render();
    return $score_table;
}

$as_score_table = get_latest_scores($g_scores_limit);
$as_news_table = get_latest_champs($g_news_limit);
$as_random_table = get_random_game();
$as_champs_table = get_champs($g_champs_limit);
$as_recent_table = get_games("recent","Most Recent", $g_limit);
$as_played_table = get_games("played","Most Played", $g_limit);
$as_popular_table = get_games("popular","Most Popular", $g_limit);

$collapseobj_arcadestats = $vbcollapse['collapseobj_arcadestats'];
$collapseimg_arcadestats = $vbcollapse['collapseimg_arcadestats'];

//eval('$home[$mods[\'modid\']][\'content\'] .= "' . fetch_template('v3a_CMS_arcadestats1') . '";');
$templater = vB_Template::create('v3a_CMS_arcadestats1');
$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
$templater->register('as_random_table',$as_random_table);
$templater->register('as_champs_table',$as_champs_table);
$templater->register('as_recent_table',$as_recent_table);
$templater->register('as_played_table',$as_played_table);
$templater->register('as_popular_table',$as_popular_table);
$output = $templater->render();

As with the CMS block you can comment parts out if you don't want them to display, for example if you only want the latest scores and latest champions you would comment the rest of the blocks out like so
Code:

$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
//$templater->register('as_random_table',$as_random_table);
//$templater->register('as_champs_table',$as_champs_table);
//$templater->register('as_recent_table',$as_recent_table);
//$templater->register('as_played_table',$as_played_table);
//$templater->register('as_popular_table',$as_popular_table);


Gemma 09-26-2011 04:43 PM

If you would prefer a sideblock widget instead of a central one on the CMS, you can also replace the v3a_CMS_arcadestats with this code.

Code:

<div>
<table align="left" width="100%">
  <tr><td>{vb:raw as_score_table}</td></tr>
  <tr><td>{vb:raw as_news_table}</td></tr>
  <tr><td>{vb:raw as_random_table}</td></tr>
  <tr><td>{vb:raw as_champs_table}</td></tr>
  <tr><td>{vb:raw as_recent_table}</td></tr>
  <tr><td>{vb:raw as_played_table}</td></tr>
  <tr><td>{vb:raw as_popular_table}</td></tr>
</table>
</div>

And make a CMS siderbar widget (albeit a long one) instead of a central widget.

*Fixed the code so it displays properly in Google Chrome.

oldfan 09-28-2011 06:33 PM

Ive tried the sideblock version by Gemma and had no luck with it :(

Gemma 09-28-2011 06:39 PM

The forum sideblock or CMS sideblock.

Did you import the product?

Any error messages?

oldfan 09-28-2011 06:46 PM

Quote:

forum sideblock
Nope no messages, the block doesn't show up, could it have something to do with "Everywhere sidebar 1.4.4.4" mod?

Gemma 09-28-2011 06:53 PM

Not sure, I've never used that mod. Did you try purging the forumblock cache?

If you want to send me temp access I'll have a look for you.

tidus78 02-09-2012 10:13 AM

Hi Gemma!

I have this problem of layout in forum-block :

https://vborg.vbsupport.ru/

Gemma 02-09-2012 11:06 AM

Quote:

Originally Posted by tidus78 (Post 2297853)
Hi Gemma!

I have this problem of layout in forum-block :

http://img571.imageshack.us/img571/8...0209121029.png

Try re-importing the product file. I've changed 'View Leaderboard' to 'View Leaders' so it fits better.

tidus78 02-09-2012 11:31 AM

you are too operational :eek:

Thanks.....:D

doctorsexy 02-14-2012 02:35 PM

Installed again..thank you.....


All times are GMT. The time now is 03:09 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01054 seconds
  • Memory Usage 1,797KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete