PDA

View Full Version : How to display counter of how many sections u can see in each category


Honourable
04-04-2013, 10:29 AM
Hi,

I have been playing around the following three files

forumdisplay.php
/includes/functions_forumlist.php
forum.php

I tried to find how many sections in each category I was able to find out how to display the overall numbers
of sections in each category and the problem it that despite the permissions as it shows like there is 16 sections this forum yet it for that user it should be 4 sections as I have hidden all the rest

What I have done is made a global variable at the top of
forumdisplay.php file

global $numberinforums;

and below the following

$forumbits = construct_forum_bit($foruminfo['forumid']);


added the following for loop

for(int k=0; k < sizeof($foruminfo['childlist']); k++){
$numberinforums++;
}

it loops through sizeof($foruminfo['childlist']) which is does how many elements r there in the array of each forum

yet I want to wrap the loop with if statements
like following

for(int k=0; k < sizeof($foruminfo['childlist']); k++){
if(the user can see this forum increase counter){
$numberinforums++;
}
}

then I use in the forumdisplay template the following

{vb:raw numberinforums}

and to display the counter in the FORUMHOME I applied almost the same code
apart from the loop statement instead this

sizeof($foruminfo['childlist'])

added the following in /includes/functions_forumlist.php

sizeof($children)

I would really appreciate any tip or help anybody would give it to me

to apply the each section permission on each counter

Looking forward to the awsome helpers

Many thanks in advance :D

Honourable
04-05-2013, 01:34 PM
any help?

waiting....

kh99
04-05-2013, 02:47 PM
Maybe something like:

foreach ($foruminfo['childlist'] AS $fid)
{
$forumperms = fetch_permissions($fid);
if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])
{
$numberinforums++;
}
}

Honourable
04-05-2013, 03:40 PM
Hi,

I just found another way which don't know seems to me much easier but wondering if it makes load or its not proffissional than yours

here is what I have found

$subforumsasda = construct_subforum_bit($forumid);
for($k=0; $k < sizeof($subforumsasda); $k++){
$nberoffosinside++;
}

in functions_forumlist.php added the above which is for each forum i construct the subforum and count the size of the array and loop through which appears to be no need to the loop

as this sizeof($subforumsasda) will be more than enough to get the value the advantage of I thought that it does the permission calculation for you automatically

Many thanks KH for your help I would appreciate your point of view and suggestion on which code I should use

yours or mine?

Thank you again

--------------- Added 1365180367 at 1365180367 ---------------

More simple code I have found just to help someone might need it

just added this

$nberoffosinside = sizeof(construct_subforum_bit($forumid));

it does return the value that I wanted and does the permissions evaluation and everything and return the number of forums you only see

--------------- Added 1365181457 at 1365181457 ---------------

Here is another explaination as I designed a style changed the way to display the forums as boxes filled next each other once there is no space it does down using css inline box

I had problem when there is for example 4 sub forums then

3 will fill up and then one will come down

in this way the style will look no nice so I found that in each space I add adsense advert to make more money also make the style look fine

I had a problem when there is 5 forums I need google adsense advert with small size
when there is 4 forums I need with big size as two boxes will be empty in 4

3 boxes like following

BOX BOX BOX

AND ONE BOX THEN ADVERT NEXT TO IT WITH BIG SIZE

BOX AD VE R T

AND OTHER CASE

BOX BOX BOX
BOX BOX ADS

SMALL ADVERT HERE

TO SOLVE THIS PROBLEM

I HAVE DONE THE FOLLOWING

if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$nberoffosinside = true;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$nberoffosinside = false;
}


using this variable nberoffosinside if it true display small advert
if it false display big advert and so on

I hope this could someone else looking for the solution

remember the code should be added in includes/functions_forumlist.php

where you can find the following
// build the template for the current forum

paste the code below and go to your templates

forumhome_forumbit_level1_nopost
forumhome_forumbit_level2_nopost

using the variable with this way

<vb:if condition="{vb:raw nberoffosinside} == true">
big advert
<vb:else />
small advert
</vb:if>

Good luck everyone

thanks for your help

--------------- Added 1365182584 at 1365182584 ---------------

More concisely to do what I have done here is the instruction

go to includes folder in your forum root then functions_forumlist.php

search for


// build the template for the current forum

add below it

if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$nberoffosinside = 2;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$nberoffosinside = 1;
}

to apply this on your templates need to register the nberoffosinside variable with following instructions

search for following

$templater->register('forumid', $forumid);

add below it

$templater->register('nberoffosinside', $nberoffosinside);

now go to your following templates

forumhome_forumbit_level1_nopost
forumhome_forumbit_level2_nopost

using this code you can display the big and small adverts accodingly


<vb:if condition="$nberoffosinside == 2">big advert</vb:if>
<vb:if condition="$nberoffosinside == 1">small advert</vb:if>


this solution for the forumhome and you will need a solution for the forumdisplay to do so follow the next

open forumdisplay.php file in your main forum root

search for

construct_forum_bit($foruminfo['forumid'])

below it add the following


if( ((sizeof(construct_subforum_bit($forumid))) % 3) == 1 ) {
$numberinforums = 2;
} else if ( ((sizeof(construct_subforum_bit($forumid))) % 3) == 2) {
$numberinforums = 1;
}


samething to use this $numberinforums variable in forumdisplay template you will need to register it using the following

search for

$templater->register('forumid', $forumid);

below it add

$templater->register('numberinforums', $numberinforums);

note dont forget to save your files with the alteration

now go to forumdisplay template using this if statement


<vb:if condition="$numberinforums == 2">big advert</vb:if>
<vb:if condition="$numberinforums == 1">small advert</vb:if>


you can display the adverts accordingly

hope it got cleared now more

Good luck everyone again

please KH point if there is something I have done incorrectly

Many thanks