vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   where do I change the order of rank images? (https://vborg.vbsupport.ru/showthread.php?t=109292)

Lynne 06-19-2009 07:31 PM

Quote:

Originally Posted by rrudeboy (Post 1832896)
thanks Lynne.... after the day i had, maybe tomorrow i will be brave enough to triple check the code (which i all copy 'n pasted so not sure what went wrong)

My guess it that you didn't read post 21 in which someone corrects the code posted in post 20. And, you may have missed a few steps since your table doesn't look correct.

rrudeboy 06-20-2009 01:57 AM

Quote:

Originally Posted by Lynne (Post 1832897)
My guess it that you didn't read post 21 in which someone corrects the code posted in post 20. And, you may have missed a few steps since your table doesn't look correct.

yea, i did get that correct.... since it's all in the ranks.php maybe somebody can share a working copy ? :)

orion808 06-20-2009 12:37 PM

Just do like he said...

Post 20 is the code
Post 21 is a slight fix of the code (had somehting named wrong)
Post 24 is responsible for making the above screenshot have the rankid visible for an overview

Obviously you didn't do 24 right...but if you did 20/21, then you should be able to hit the edit button to the right of the rank and see a rank order section. See screenshot below.

http://www.azurebloodfire.com/member...t/rank_id2.jpg

rrudeboy 06-20-2009 03:07 PM

Quote:

Originally Posted by orion808 (Post 1833272)
Just do like he said...

Post 20 is the code
Post 21 is a slight fix of the code (had somehting named wrong)
Post 24 is responsible for making the above screenshot have the rankid visible for an overview

Obviously you didn't do 24 right...but if you did 20/21, then you should be able to hit the edit button to the right of the rank and see a rank order section. See screenshot below.
*SNIP*

thanks orion808, i did post 20, and i think i did what post 21 advised.. after doing post 21 nothing changed, so i also need to do post 24 ? did you see my screen shot of how it looks in my ACP ? how am i sure i did the add entry to my database correctly ?

there's no way you can share your working ranks.php ? with possible edits to protect sensitive information ?

again thanks...

orion808 06-21-2009 02:23 PM

ranks.php for vBulletin 3.8.0 Release Candidate 2
(I still need to update to the latest vBulletin)
Code:

<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.8.0 Release Candidate 2
|| # ---------------------------------------------------------------- # ||
|| # Copyright ?2000-2009 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### DEFINE IMPORTANT CONSTANTS #######################
define('CVS_REVISION', '$RCSfile$ - $Revision: 12761 $');

// #################### PRE-CACHE TEMPLATES AND DATA ######################
$phrasegroups = array('user', 'cpuser', 'cprank');
$specialtemplates = array();

// ########################## REQUIRE BACK-END ############################
require_once('./global.php');
require_once(DIR . '/includes/functions_ranks.php');

// ######################## CHECK ADMIN PERMISSIONS #######################
if (!can_administer('canadminusers'))
{
        print_cp_no_permission();
}

$vbulletin->input->clean_array_gpc('r', array('rankid' => TYPE_UINT));

// ############################# LOG ACTION ###############################
log_admin_action(!empty($vbulletin->GPC['rankid']) ? "rank id = " . $vbulletin->GPC['rankid'] : '');

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

print_cp_header($vbphrase['user_rank_manager']);


if (empty($_REQUEST['do']))
{
        $_REQUEST['do'] = 'modify';
}

// ###################### Start insert #######################
if ($_POST['do'] == 'insert')
{
        $vbulletin->input->clean_array_gpc('p', array(
                'ranklevel'  => TYPE_UINT,
                'minposts'    => TYPE_UINT,
                'rankimg'    => TYPE_STR,
                'usergroupid' => TYPE_INT,
                'doinsert'    => TYPE_STR,
                'rankhtml'    => TYPE_NOTRIM,
                'stack'      => TYPE_UINT,
                'display'    => TYPE_UINT,
                'rankorder'          => TYPE_UNIT,
        ));

        if (!$vbulletin->GPC['ranklevel'] OR (!$vbulletin->GPC['rankimg'] AND !$vbulletin->GPC['rankhtml']))
        {
                if ($vbulletin->GPC['doinsert'])
                {
                        echo '<p><b>' . $vbphrase['invalid_file_path_specified'] . '</b></p>';
                        $vbulletin->GPC['rankimg'] = $vbulletin->GPC['doinsert'];
                }
                else
                {
                        print_stop_message('please_complete_required_fields');
                }

        }

        if ($vbulletin->GPC['usergroupid'] == -1)
        {
                $vbulletin->GPC['usergroupid'] = 0;
        }

        if (!$vbulletin->GPC['rankhtml'])
        {
                $vbulletin->GPC['rankimg'] = preg_replace('/\/$/s', '', $vbulletin->GPC['rankimg']);
                if($dirhandle = @opendir(DIR . '/' . $vbulletin->GPC['rankimg']))
                { // Valid directory!
                        readdir($dirhandle);
                        readdir($dirhandle);
                        while ($filename = readdir($dirhandle))
                        {
                                if (is_file(DIR . "/{$vbulletin->GPC['rankimg']}/" . $filename) AND (($filelen = strlen($filename)) >= 5))
                                {
                                        $fileext = strtolower(substr($filename, $filelen - 4, $filelen - 1));
                                        if ($fileext == '.gif' OR $fileext == '.bmp' OR $fileext == '.jpg' OR $fileext == 'jpeg' OR $fileext == 'png')
                                        {
                                                $FileArray[] = htmlspecialchars_uni($filename);
                                        }
                                }
                        }
                        if (!is_array($FileArray))
                        {
                                print_stop_message('no_matches_found');
                        }

                        print_form_header('ranks', 'insert', 0, 1, 'name', '');
                        print_table_header($vbphrase['images']);
                        construct_hidden_code('usergroupid', $vbulletin->GPC['usergroupid']);
                        construct_hidden_code('ranklevel', $vbulletin->GPC['ranklevel']);
                        construct_hidden_code('minposts', $vbulletin->GPC['minposts']);
                        construct_hidden_code('rankorder', $vbulletin->GPC['rankorder']);
                        construct_hidden_code('doinsert', $vbulletin->GPC['rankimg']);
                        foreach ($FileArray AS $key => $val)
                        {
                                print_yes_row("<img src='../" . $vbulletin->GPC['rankimg'] . "/$val' border='0' alt='' align='center' />", 'rankimg', '', '', $vbulletin->GPC['rankimg'] . "/$val");
                        }
                        print_submit_row($vbphrase['save']);
                        closedir($dirhandle);
                        exit;
                }
                else
                { // Not a valid dir so assume it is a filename
                        if (!(@is_file(DIR . '/' . $vbulletin->GPC['rankimg'])))
                        {
                                print_stop_message('invalid_file_path_specified');
                        }
                }
                $type = 0;
        }
        else
        {
                $vbulletin->GPC['rankimg'] = $vbulletin->GPC['rankhtml'];
                $type = 1;
        }

        build_ranks();

        /*insert query*/
        $db->query_write("
                INSERT INTO " . TABLE_PREFIX . "ranks
                        (ranklevel, minposts, rankimg, usergroupid, type, stack, display, rankorder)
                VALUES
                        (
                        " . $vbulletin->GPC['ranklevel'] . ",
                        " . $vbulletin->GPC['minposts'] . ",
                        '" . $db->escape_string($vbulletin->GPC['rankimg']) . "',
                        " . $vbulletin->GPC['usergroupid'] . ",
                        $type,
                        " . $vbulletin->GPC['stack'] . ",
                        " . $vbulletin->GPC['display'] . ",
                        " . $vbulletin->GPC['rankorder'] . "
                        )
        ");

        build_ranks();

        define('CP_REDIRECT', 'ranks.php?do=modify');
        print_stop_message('saved_user_rank_successfully');
}

// ###################### Start edit #######################
if ($_REQUEST['do'] == 'edit' OR $_REQUEST['do'] == 'add')
{

        if ($_REQUEST['do'] == 'edit')
        {
                $ranks = $db->query_first("
                        SELECT *
                        FROM " . TABLE_PREFIX . "ranks
                        WHERE rankid = " . $vbulletin->GPC['rankid'] . "
                ");
                print_form_header('ranks', 'doupdate');
        }
        else
        {
                $ranks = array(
                        'ranklevel'  => 1,
                        'usergroupid' => -1,
                        'minposts'    => 10,
                        'rankimg'    => 'images/',
                );
                print_form_header('ranks', 'insert');
        }

        if ($ranks['type'])
        {
                $ranktext = $ranks['rankimg'];
        }
        else
        {
                $rankimg = $ranks['rankimg'];
        }

        $displaytype = array(
                $vbphrase['always'],
                $vbphrase['if_displaygroup_equals_this_group'],
        );

        construct_hidden_code('rankid', $vbulletin->GPC['rankid']);
        print_table_header(construct_phrase($vbphrase['x_y_id_z'], $vbphrase['user_rank'], '', $vbulletin->GPC['rankid']));
        print_input_row($vbphrase['times_to_repeat_rank'], 'ranklevel', $ranks['ranklevel']);
        print_chooser_row($vbphrase['usergroup'], 'usergroupid', 'usergroup', $ranks['usergroupid'], $vbphrase['all_usergroups']);
        print_input_row($vbphrase['minimum_posts'], 'minposts', $ranks['minposts']);
        print_yes_no_row($vbphrase['stack_rank'], 'stack', $ranks['stack']);
        print_select_row($vbphrase['display_type'], 'display', $displaytype, $ranks['display']);
        print_table_header($vbphrase['rank_type']);
        print_input_row($vbphrase['user_rank_file_path'], 'rankimg', $rankimg);
        print_input_row($vbphrase['or_you_may_enter_text'], 'rankhtml', $ranktext);
        print_input_row('Rank Order', 'rankorder', $ranks['rankorder']); 

        print_submit_row();
}

// ###################### Start do update #######################
if ($_POST['do'] == 'doupdate')
{
        $vbulletin->input->clean_array_gpc('p', array(
                'ranklevel'  => TYPE_UINT,
                'minposts'    => TYPE_UINT,
                'rankimg'    => TYPE_STR,
                'usergroupid' => TYPE_INT,
                'rankhtml'    => TYPE_NOTRIM,
                'stack'      => TYPE_UINT,
                'display'    => TYPE_UINT,
                'rankorder'  => TYPE_UNIT,
        ));

        if (!$vbulletin->GPC['ranklevel'] OR (!$vbulletin->GPC['rankimg'] AND !$vbulletin->GPC['rankhtml']))
        {
                print_stop_message('please_complete_required_fields');
        }

        if ($vbulletin->GPC['rankhtml'])
        {
                $type = 1;
                $vbulletin->GPC['rankimg'] = $vbulletin->GPC['rankhtml'];
        }
        else
        {
                $type = 0;
                if (!(@is_file(DIR . '/' . $vbulletin->GPC['rankimg'])))
                {
                        print_stop_message('invalid_file_path_specified');
                }
        }

        $db->query_write("
                UPDATE " . TABLE_PREFIX . "ranks
                SET ranklevel = " . $vbulletin->GPC['ranklevel'] . ",
                        minposts = " . $vbulletin->GPC['minposts'] . ",
                        rankimg = '" . $db->escape_string($vbulletin->GPC['rankimg']) . "',
                        usergroupid = " . $vbulletin->GPC['usergroupid'] . ",
                        type = $type,
                        stack = " . $vbulletin->GPC['stack'] . ",
                        display = " . $vbulletin->GPC['display'] . ",
                        rankorder = " . $vbulletin->GPC['rankorder'] . "
                WHERE rankid = " . $vbulletin->GPC['rankid'] . "
        ");
        build_ranks();

        define('CP_REDIRECT', 'ranks.php?do=modify');
        print_stop_message('saved_user_rank_successfully');
}
// ###################### Start Remove #######################

if ($_REQUEST['do'] == 'remove')
{

        print_form_header('ranks', 'kill');
        construct_hidden_code('rankid', $vbulletin->GPC['rankid']);
        print_table_header($vbphrase['confirm_deletion']);
        print_description_row($vbphrase['are_you_sure_you_want_to_delete_this_user_rank']);
        print_submit_row($vbphrase['yes'], '', 2, $vbphrase['no']);

}

// ###################### Start Kill #######################

if ($_POST['do'] == 'kill')
{

        $db->query_write("DELETE FROM " . TABLE_PREFIX . "ranks WHERE rankid = " . $vbulletin->GPC['rankid']);
        build_ranks();

        define('CP_REDIRECT', 'ranks.php?do=modify');
        print_stop_message('deleted_user_rank_successfully');
}

// ###################### Start modify #######################
if ($_REQUEST['do'] == 'modify')
{
    $ranks = $db->query_write("
        SELECT rankid, ranklevel, minposts, rankimg, ranks. usergroupid,title, type, display, stack, rankorder
        FROM " . TABLE_PREFIX . "ranks AS ranks
        LEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup USING(usergroupid)
        ORDER BY rankorder, ranks.usergroupid, minposts
    ");

        print_form_header('', '');
        print_table_header($vbphrase['user_rank_manager']);
        print_description_row($vbphrase['user_ranks_desc'] . '<br /><br />' .
        construct_phrase($vbphrase['it_is_recommended_that_you_update_user_titles'], $vbulletin->session->vars['sessionurl'])
        ,'',0);
        print_table_footer();

        if ($db->num_rows($ranks) == 0)
        {
                print_stop_message('no_user_ranks_defined');
        }

        print_form_header('', '');
        while ($rank = $db->fetch_array($ranks))
        {
                if ($tempgroup != $rank['usergroupid'])
                {
                        if (isset($tempgroup))
                        {
                                print_table_break();
                        }
                        $tempgroup = $rank['usergroupid'];

                        print_table_header(iif($rank['usergroupid'] == 0, $vbphrase['all_usergroups'], $rank['title']), 6, 1);
                        print_cells_row(array($vbphrase['user_rank'], $vbphrase['minimum_posts'], $vbphrase['display_type'], $vbphrase['stack_rank'], 'Rank Order', $vbphrase['controls']), 1, '', -1);
                }

                $count = 0;
                $rankhtml = '';
                while ($count++ < $rank['ranklevel'])
                {
                        if (!$rank['type'])
                        {
                                $rankhtml .= "<img src=\"../$rank[rankimg]\" border=\"0\" alt=\"\" />";
                        }
                        else
                        {
                                $rankhtml .= $rank['rankimg'];
                        }
                }

                $cell = array(
            $rankhtml,
            vb_number_format($rank['minposts']),
            ($rank['display'] ? $vbphrase['displaygroup'] : $vbphrase['always']),
            ($rank['stack'] ? $vbphrase['yes'] : $vbphrase['no']),
            vb_number_format($rank['rankorder']),
            construct_link_code($vbphrase['edit'], "ranks.php?" . $vbulletin->session->vars['sessionurl'] . "do=edit&rankid=$rank[rankid]") . construct_link_code($vbphrase['delete'], "ranks.php?" . $vbulletin->session->vars['sessionurl'] . "do=remove&rankid=$rank[rankid]")
        );
                print_cells_row($cell, 0, '', -1);

        }
        print_table_footer();

}

print_cp_footer();

/*======================================================================*\
|| ####################################################################
|| # Downloaded: 09:08, Thu Jan 1st 2009
|| # CVS: $RCSfile$ - $Revision: 12761 $
|| ####################################################################
\*======================================================================*/
?>

Hope this helps.

Also noticed something. My version is a working version. I haven't had any issues with it. However, there appears to be a typo. Any know if it is truly one or if it's intended?

This occurs in a couple places:
Code:

                'display'    => TYPE_UINT,
                'rankorder'  => TYPE_UNIT,

Note that it's "TYPE_UINT" vs "TYPE_UNIT". Thoughts?

--------------- Added [DATE]1245598267[/DATE] at [TIME]1245598267[/TIME] ---------------

Quote:

Originally Posted by rrudeboy (Post 1833350)
thanks orion808, i did post 20, and i think i did what post 21 advised.. after doing post 21 nothing changed, so i also need to do post 24 ? did you see my screen shot of how it looks in my ACP ? how am i sure i did the add entry to my database correctly ?

there's no way you can share your working ranks.php ? with possible edits to protect sensitive information ?

again thanks...

Post 24 is responsible for showing the rankorder in your screenshot above. If it's not listed there like mine, 24 is definitely not completed.

As for the database, this is how mine looks on the ranks table. I just added another field with these values:
http://www.azurebloodfire.com/member...t/rank_id3.jpg

Hope that helps.

rrudeboy 06-22-2009 11:28 AM

sweet.... THANKS, it works now.

SnaKe |WiH| 07-16-2009 02:53 AM

I've been working on this for several hours now trying to figure out why I get the following error. I've looked up the error code 1064 and there was some reference to 'order' as a reserved word in some versions of MySQL but I dont think 'rankorder' would cause that problem. Plus more ppl would be having the problem.
I've gone over my php code changes several times in ranks and functions_ranks to make sure it's right.

Can anyone see what the problem might be? I saw some reference to the CHARSET setting but I tried different settings with no help. It's not real intuitive considering my db tables appear to default to MyISAM DEFAULT latin1_swedish_ci. Not sure why it would be swedish. I'm in the US. I digress, I'm not trying to get a MySQL lesson, just sayin.
Thanks for any help.

The rankorder column shows up just fine in admincp. I get this error when I try to change the rankorder on a badge.
Here's the error:
Quote:

Database error in vBulletin 3.7.6:

Invalid SQL:

UPDATE ranks
SET ranklevel = 1,
minposts = 10,
rankimg = 'images/ranks/moderator.png',
usergroupid = 7,
type = 0,
stack = 1,
display = 0
rankorder = 1
WHERE rankid = 7;

MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rankorder = 1
WHERE rankid = 7' at line 9
Error Number : 1064
Request Date : Wednesday, July 15th 2009 @ 08:26:54 PM
Error Date : Wednesday, July 15th 2009 @ 08:26:54 PM
Script : http://www.warishellgaming.com/forum...hp?do=doupdate
Referrer : http://www.warishellgaming.com/forum...=edit&rankid=7
IP Address : 76.X.X.X
Username : SnaKe
Classname : vB_Database
MySQL Version : 5.1.30

Lynne 07-16-2009 04:23 PM

If you take a look at the error query, you'll see you are missing commas between a couple of the values. So, go back to the instructions and copy the query exactly - with the commas - and it should work.

orion808 07-16-2009 09:54 PM

I've learned that whenever I get a syntax error for line X (9 in your example), the error is usually at the end of the previous line...8.

Line 8: display = 0

compare that to line 7 since it's basically the same, and you can see it's missing a comma. I don't think you need a comma after "rankorder = 1" though. Commas are separating all the values...not the WHERE statement.

SnaKe |WiH| 07-16-2009 11:23 PM

You guys rock! That fixed it.

I def did post 21 but obviously messed it up. Thanks again!

Badhabitz 03-15-2011 10:04 PM

I am using 4.1.2

I have completed all the steps and everything is working fine in the AdminCP the field shows up and even orders them by rank in the AdminCP and the values are going into the sql database from the new fields.

However in the Forums the ranks are not ordering correctly based upon these values. I'm guessing this is the code build_ranks() function in includes/functions_ranks.php which I have re-modified several times. Yes I am rebuilding the ranks each time ,but it still seems to be ordering them the default way. After trying to solve this for awhile now I decided to post. Could something have changed in the 4.x code? Any help on this would be greatly appreciated.

BirdOPrey5 03-16-2011 12:58 PM

It would be best to ask in the 4.x forum. This forum is strictly for VB 3.x discussion and mixing in 4.x code will only confuse people looking for help in the future.

Lynne 03-16-2011 04:41 PM

Yeah, I would start a new thread in the vB4, post exactly what you did (you can reference this thread with a link) and then ask for help.

Badhabitz 03-16-2011 06:11 PM

Thank you, I wasn't sure if I should make a new thread in the 4.x section. For reference it was working just takes 2hrs for each change to register it's working on the forums.

midnz 11-04-2011 06:12 AM

Excellent tutorial :). Thanks for helping to solve the user-ranks sorting headache.

whitewolf68 08-25-2012 05:21 AM

I have this mod completed and working on my localhost installation but every time I upload to the online server I get "The service is unavailable."

Please help, I have been looking for this mod for a really long time now.

demolicionchica 09-23-2012 11:14 PM

Sorry, I know this thread is old but thank you so much for the code! I'm not technical AT ALL but your instructions were super easy to follow and everything works just as it should.

Sangheili 11-06-2012 05:02 PM

I seriously can't believe this is still not part of the default vBulletin installation, it's been over 4 years!

SnaKe |WiH| 12-12-2013 04:02 PM

So does this work with v4 of vB? I've searched the v4 forums for anything to do with ranks and did not find anything.

BirdOPrey5 12-12-2013 04:19 PM

I suspect it would work in VB4. Main thing to check is if the "Find" code is the same in VB4, it probably is.

Don't forget to add the rankorder field to the database.

reviziongaming 12-15-2013 09:01 PM

assume that this would all need to be redone in the case of an upgrade?? say you do all this extra code and then upgrade from 4.1 to 4.2 ... all this will be replaced and have to be reworked??

BirdOPrey5 12-15-2013 09:12 PM

Yes you will need to redo it in case of an upgrade. Although it is unlikely the ranks.php file changes much, if at all, between versions - so you can check first but likely get away with using the same file in various 4.x versions.

reviziongaming 12-15-2013 10:09 PM

Thanks...

Any chance of someone offering us "less than newbies" instructions on exactly how to create the new field in the ranks table manually?

--------------- Added [DATE]1387153203[/DATE] at [TIME]1387153203[/TIME] ---------------

Scratch that... I just dove in on it and it seems to be working just fine. I love this community.

TRG 02-17-2014 04:11 PM

Amazing Thread. Thanks for the information

dany_danay 08-05-2014 12:00 PM

This should work in 4.2.2 but no changes make.. still the prorder order.. someone has any ideas?


All times are GMT. The time now is 01:34 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.01491 seconds
  • Memory Usage 1,881KB
  • 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
  • (2)bbcode_code_printable
  • (5)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (25)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