vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   MySQL query for making a FORUM Active/Open ? (https://vborg.vbsupport.ru/showthread.php?t=117261)

jwocky 06-01-2006 01:49 AM

MySQL query for making a FORUM Active/Open ?
 
Does anyone know what the SQL query would be to make a certain forumid into an "Active" forum and an "Open" forum.. and vice versa?

Would be much appreciated!!

Update:

Ok I *think* I found the location where this info is kept and changed

Its in the forum.options area..

Now it seems my defauly forums have options of "87751" while one that has the Forum Active/Open settings set to NO are listed as "87748"

So I made a Db query command to change the 87748 to an 87751 to open a restricted forum..

PHP Code:

    if ($subfid>0)
    {
    echo 
"ACTIVE!!";
    
$vbulletin->db->query_write(
        UPDATE " 
TABLE_PREFIX "forum 
        SET options = " 
$activeperm .
        WHERE forumid = 
$subfid 
    "
); 
    } 


Now the change goes through on the database.. and if I open the subforum options in AdminCP is lists the change as having taken effect (just from looking at the radio button things)..

But the problem is in the forum display to the user, the change doesnt take effect.. ie. the users still cant see the forum. The change doesnt go through until I resubmit the forum options form in AdminCP then it works..

Any ideas on why this is acting like that ?

Thanks!!!

Ps. Ive been doing more reading thru old threads and Im wondering if my problem has to do with updating the 'datastore' anyone know if i'm barking up the right or wrong tree here ?

hambil 06-02-2006 05:28 PM

Okay, a couple things.

First, the options field is a bit field. So you want to find out the bit value of the option you want to change. In your case the difference is 3 (87751 - 87748), which means more than one option is different between the two forums, because valid bit values are multiples of 2. e.g. 1, 2, 4, 8, 16, 32, etc...

The only way to get three is if the option represented by 1 and the option represented by 2 are both different between the two forums. So we can assume that one of those options is "Open" and the other "Active".

Fortunately, since you want to toggle both open and active you can just go ahead and use 3 without knowing which is which. This will allow you to change the options regardless of what other options are set. You do so with simple math: options + 3, or options - 3. To check if the options are set, use options & 3.

So your query would like this to turn on the forum:
PHP Code:

if ($subfid>0)
{
    echo 
"ACTIVE!!";
    
$vbulletin->db->query_write(
        UPDATE " 
TABLE_PREFIX "forum 
        SET options = options + 3  
        WHERE forumid = 
$subfid 
    "
); 


And this to turn off the forum:
PHP Code:

if ($subfid>0)
{
    echo 
"NOT ACTIVE!!";
    
$vbulletin->db->query_write(
        UPDATE " 
TABLE_PREFIX "forum 
        SET options = options - 3
        WHERE forumid = 
$subfid 
    "
); 


Second, once you've done that you need to rebuild $vbulletin->usergroupcache and $vbulletin->forumcache.

Fortunately, there is a handy function for this already in includes/adminfunctions.php. So just call it. The php code put all together might look like this:

PHP Code:

require_once('./global.php');
require_once(
DIR '/includes/adminfunctions.php');

if (
$subfid>0)
{
    echo 
"ACTIVE!!";
    
$vbulletin->db->query_write(
        UPDATE " 
TABLE_PREFIX "forum 
        SET options = options + 3  
        WHERE forumid = 
$subfid 
    "
); 


build_forum_permissions(); 

Hope this helps :)

jwocky 06-02-2006 07:52 PM

.... You

are a god to me :)

THank you for that perfect response. It works flawlessly now. !!!! I'm so happy my little script works now.

Thanks again my friend

:banana:

hambil 06-02-2006 08:20 PM

LOL

Glad I could help :)

bigfoot 03-03-2007 02:40 PM

How do you rebuild $vbulletin->forumcache automatically ???

gamma912 03-05-2007 03:56 PM

Yes How do you?


All times are GMT. The time now is 10:10 AM.

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.01042 seconds
  • Memory Usage 1,735KB
  • 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_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (6)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete