I need to upgrade, but losing this hack is not an option. Help!

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ArtemisL
    Member
    • Oct 2004
    • 31
    • 3.0.3

    I need to upgrade, but losing this hack is not an option. Help!

    I can't put this off any longer, and I need up upgrade/patch or something. The problem is, I cannot lose the Shop/Bank hack nor can I afford for all my members to loose the money points they've earned (unless I want 493 angry women at my door like the last 3 times they lost their points... been there, done that, it was hell, ain't doin it again). That is the only reason I have not upgraded yet.... losing all that, I'll lose every one of my members. I'm a little irritated that an upgrade would screw up a hack to begin with. I put many hours into my forum, not too mention all the money I've spent (several hundred bucks) and paypal donations from my members to help with the bandwidth cost.

    There must be a way to patch or upgrade from 3.03 to 3.06 without losing the hack, the earned points and my members. Can someone please help me?

    Thanks,
    Artemis
  • Floris
    Senior Member
    • Dec 2001
    • 37767

    #2
    I don't know how the hack is coded, but basicly upgrading requires you to only re-apply the source code changes back into the new 3.0.6 files. The data will remain in the database. If there are any master templates added, those will need to be re-added. Ask the author of the hack for support as we can't give it.

    If you only want to patch, get the private.php and init.php from the 3.0.5 announcement and the functions_bbparse.php file from the 3.0.6 announement and re-apply the hack changes to those files (if any).

    Comment

    • UnknownServices
      New Member
      • Jan 2005
      • 21

      #3
      If I do that will I be safe from whatever the flaw is? Is there an exact changelog so I can go and edit the files my self to where changes were applied?

      Originally posted by Floris
      I don't know how the hack is coded, but basicly upgrading requires you to only re-apply the source code changes back into the new 3.0.6 files. The data will remain in the database. If there are any master templates added, those will need to be re-added. Ask the author of the hack for support as we can't give it.

      If you only want to patch, get the private.php and init.php from the 3.0.5 announcement and the functions_bbparse.php file from the 3.0.6 announement and re-apply the hack changes to those files (if any).

      Comment

      • ArtemisL
        Member
        • Oct 2004
        • 31
        • 3.0.3

        #4
        I added the three files you suggested, and it borked the forum. This is the error I see at the very top of the forum (above where the header graphic would appear)


        Code:
        [size=2]Warning: Invalid argument supplied for foreach() in /includes/functions.php on line 2860
        Warning: Invalid argument supplied for foreach() in /includes/functions.php on line 2860
         
        Warning: Invalid argument supplied for foreach() in /includes/functions.php on line 2860
        [/size]


        And this is what I see when I try to click on a forum

        Code:
        Unable to add cookies, header already sent.
        File: /home/thepixel/public_html/includes/init.php
        Line: 27
        This is my init file, only added three small lines of code (in red) for the shop/bank hack... did not have to edit any of the other 3 files.

        Code:
        <?php
        /*======================================================================*\
        || #################################################################### ||
        || # vBulletin 3.0.5
        || # ---------------------------------------------------------------- # ||
        || # Copyright ©2000–2005 Jelsoft Enterprises Ltd. All Rights Reserved. ||
        || # This file may not be redistributed in whole or significant part. # ||
        || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
        || # [url="http://www.vbulletin.com/"]http://www.vbulletin.com[/url] | [url="http://www.vbulletin.com/license.html"]http://www.vbulletin.com/license.html[/url] # ||
        || #################################################################### ||
        \*======================================================================*/
        error_reporting(E_ALL & ~E_NOTICE);
        function vb_error_handler($errno, $errstr, $errfile, $errline)
        {
        if (!error_reporting())
        {
        return;
        }
        switch ($errno)
        {
        case E_WARNING:
        case E_USER_WARNING:
        $errfile = str_replace(getcwd(), '', $errfile);
        echo "<br /><strong>Warning</strong>: $errstr in <strong>$errfile</strong> on line <strong>$errline</strong><br />";
        break;
        }
        }
        set_error_handler('vb_error_handler');
        $pagestarttime = microtime();
        define('TIMENOW', time());
        if (@ini_get('zlib.output_compression'))
        {
        $nozip = true;
        }
        // #############################################################################
        // set which variables can pass through globals filter
        $_allowedvars = array(
        'GLOBALS',		 // of course :)
        '_GET',			 // }
        '_POST',			// } system variables
        '_COOKIE',		 // }
        '_REQUEST',		 // }
        '_SERVER',		 // }
        '_ENV',			 // |
        '_FILES',		 // }
        'specialtemplates', // special templates from datastore table
        'globaltemplates', // used for template cacheing
        'actiontemplates', // templates for specific script actions
        'phrasegroups',	 // phrase groups (in addition to 'global')
        //'actionphrases', // phrase groups for specific actions
        'noheader',		 // used to suppress the default vB headers
        'nodb',			 // suppress database connection
        'nozip',			// suppress gzipping
        'steptitles',	 // step titles for upgrade scripts
        'pagestarttime',	// microtime() from top of page
        '_allowedvars',	 // this array :-)
        '___db_user', // lycos has special variables
        '___db_host', // lycos has special variables
        );
        // #############################################################################
        // Standardize names of arrays for people not on PHP 4.1
        if (PHP_VERSION < '4.1.0')
        {
        $_GET = &$HTTP_GET_VARS;
        $_POST = &$HTTP_POST_VARS;
        $_COOKIE = &$HTTP_COOKIE_VARS;
        $_SERVER = &$HTTP_SERVER_VARS;
        $_ENV = &$HTTP_ENV_VARS;
        $_FILES = &$HTTP_POST_FILES;
        $_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
        }
        // #############################################################################
        // unset all other variables created by register_globals on
        if (is_array($GLOBALS))
        {
        function deregister_globals($_allowedvars)
        {
        foreach ($GLOBALS AS $_arrykey => $_arryval)
        {
        if (!in_array($_arrykey, $_allowedvars) AND $_arrykey != '_arrykey' AND $_arrykey != '_arryval')
        {
        	unset($GLOBALS["$_arrykey"]);
        }
        }
        }
        deregister_globals($_allowedvars);
        }
        else
        {
        die('<strong>Fatal Error:</strong> Invalid URL.');
        }
        // #############################################################################
        // re-register globals -- this code should not be necessary by final version
        if (!defined('NO_REGISTER_GLOBALS'))
        {
        // define NO_REGISTER_GLOBALS to emulate register_globals as off
        foreach (array('_GET', '_POST', '_COOKIE', '_SERVER', '_ENV') AS $_superglobal)
        {
        if (is_array($$_superglobal))
        {
        foreach ($$_superglobal AS $_arrykey => $_arryval)
        {
        	$$_arrykey = ${$_superglobal}["$_arrykey"];
        }
        }
        }
        if (is_array($_FILES))
        {
        foreach ($_FILES AS $_arrykey => $_arryval)
        {
        foreach($_arryval AS $_k => $_v)
        {
        	$_tmp = "$_arrykey" . "_$_k";
        	$$_tmp = $_v;
        }
        $$_arrykey = $_FILES["$_arrykey"]['tmp_name'];
        }
        }
        }
        // end temporary global re-registration code
        // #############################################################################
        // #############################################################################
        // translate f/t/p/u/a into forumid/threadid/postid/userid/announcementid
        function convert_short_varnames(&$array, $add_to_REQUEST = false)
        {
        foreach (array(
        'f' => 'forumid',
        't' => 'threadid',
        'p' => 'postid',
        'u' => 'userid',
        'a' => 'announcementid',
        'c' => 'calendarid',
        'e' => 'eventid',
        'pp' => 'perpage',
        'page' => 'pagenumber',
        'sort' => 'sortfield',
        'order' => 'sortorder',
        ) AS $shortname => $longname)
        {
        if (isset($array["$shortname"]) AND !isset($array["$longname"]))
        {
        $array["$longname"] = $array["$shortname"];
        if ($add_to_REQUEST)
        {
        	$GLOBALS['_REQUEST']["$longname"] = $array["$shortname"];
        }
        }
        }
        }
        convert_short_varnames($_GET, true);
        convert_short_varnames($_POST, true);
        unset($_COOKIE['userid']);
        if (!isset($_GET['userid']) AND !isset($_POST['userid']))
        {
        unset($_REQUEST['userid']);
        }
        else if (isset($_GET['userid']) OR isset($_POST['userid']))
        {
        $_REQUEST['userid'] = isset($_POST['userid']) ? $_POST['userid'] : $_GET['userid'];
        }
        // #############################################################################
        // deal with magic_quotes nastiness in GPC data
        if (get_magic_quotes_gpc())
        {
        function exec_gpc_stripslashes(&$arr)
        {
        if (is_array($arr))
        {
        foreach($arr AS $_arrykey => $_arryval)
        {
        	if (is_string($_arryval))
        	{
        	 $arr["$_arrykey"] = stripslashes($_arryval);
        	}
        	else if (is_array($_arryval))
        	{
        	 $arr["$_arrykey"] = exec_gpc_stripslashes($_arryval);
        	}
        }
        }
        return $arr;
        }
        $_GET = exec_gpc_stripslashes($_GET);
        $_POST = exec_gpc_stripslashes($_POST);
        $_COOKIE = exec_gpc_stripslashes($_COOKIE);
        if (is_array($_FILES))
        {
        foreach ($_FILES AS $key => $val)
        {
        $_FILES[$key]['tmp_name'] = str_replace('\\', '\\\\', $val['tmp_name']);
        }
        }
        $_FILES = exec_gpc_stripslashes($_FILES);
        $_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
        }
        set_magic_quotes_runtime(0);
        // #############################################################################
        // start prep shutdown function - change this to ** true ** if you CAN'T use register_shutdown_function()
        define('NOSHUTDOWNFUNC', false);
        function xss_clean($var)
        {
        static $find, $replace;
        if (empty($find))
        {
        $find = array('"', '<', '>');
        $replace = array('&quot;', '&lt;', '&gt;');
        }
        $var = preg_replace('/javascript/i', 'java script', $var);
        return str_replace($find, $replace, $var);
        }
        // #############################################################################
        // establish client IP address
        define('IPADDRESS', $_SERVER['REMOTE_ADDR']);
        // check several settings for the ip; good for not grabbing proxy IPs, but can still be problematic
        if ($_SERVER['HTTP_CLIENT_IP'])
        {
        define('ALT_IP', $_SERVER['HTTP_CLIENT_IP']);
        }
        else if ($_SERVER['HTTP_X_FORWARDED_FOR'] AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches))
        {
        // make sure we dont pick up an internal IP defined by RFC1918
        foreach ($matches[0] AS $ip)
        {
        if (!preg_match("#^(10|172\.16|192\.168)\.#", $ip))
        {
        define('ALT_IP', $ip);
        break;
        }
        }
        }
        else if ($_SERVER['HTTP_FROM'])
        {
        define('ALT_IP', $_SERVER['HTTP_FROM']);
        }
        else
        {
        define('ALT_IP', $_SERVER['REMOTE_ADDR']);
        }
        // #############################################################################
        // determine URL / referrer of current page
        if ($_ENV['REQUEST_URI'] OR $_SERVER['REQUEST_URI'])
        {
        $scriptpath = $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : $_ENV['REQUEST_URI'];
        }
        else
        {
        if ($_ENV['PATH_INFO'] OR $_SERVER['PATH_INFO'])
        {
        $scriptpath = $_SERVER['PATH_INFO'] ? $_SERVER['PATH_INFO']: $_ENV['PATH_INFO'];
        }
        else if ($_ENV['REDIRECT_URL'] OR $_SERVER['REDIRECT_URL'])
        {
        $scriptpath = $_SERVER['REDIRECT_URL'] ? $_SERVER['REDIRECT_URL']: $_ENV['REDIRECT_URL'];
        }
        else
        {
        $scriptpath = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF'];
        }
        if ($_ENV['QUERY_STRING'] OR $_SERVER['QUERY_STRING'])
        {
        $scriptpath .= '?' . ($_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] : $_ENV['QUERY_STRING']);
        }
        }
        $scriptpath = preg_replace('/(s|sessionhash)=[a-z0-9]{32}?&?/', '', $scriptpath);
        $scriptpath = xss_clean($scriptpath);
        $script = preg_replace('#(\?.*)#', '', $scriptpath);
        $wolpath = $scriptpath;
        if (!defined('THIS_SCRIPT') AND strpos(strtolower($script), 'global.php') !== false)
        {
        die('<p><strong>Critical Error</strong><br />global.php must not be called directly.</p>');
        }
        if ($_SERVER['REQUEST_METHOD'] == 'POST')
        {
        // Tag the variables back on to the filename if we are coming from POST so that WOL can access them.
        foreach ($_POST AS $_var => $_value)
        {
        switch ($_var)
        {
        case 'forumid': case 'f':
        	$_tackon .= ($_tackon ? '&' : '') . "forumid=$_value";
        	break;
        case 'threadid': case 't':
        	$_tackon .= ($_tackon ? '&' : '') . "threadid=$_value";
        	break;
        case 'postid': case 'p':
        	$_tackon .= ($_tackon ? '&' : '') . "postid=$_value";
        	break;
        case 'userid': case 'u':
        	$_tackon .= ($_tackon ? '&' : '') . "userid=$_value";
        	break;
        case 'do':
        case 'eventid': case 'e':
        	$_tackon .= ($_tackon ? '&' : '') . "eventid=$_value";
        	break;
        case 'calendarid': case 'c':
        	$_tackon .= ($_tackon ? '&' : '') . "calendarid=$_value";
        	break;
        case 'method': // postings.php
        case 'dowhat': // private.php
        	$_tackon .= ($_tackon ? '&' : '') . "$_var=$_value";
        	break;
        }
        }
        if ($_tackon)
        {
        $wolpath .= '?' . $_tackon;
        }
        }
        define('WOLPATH', $wolpath);
        define('SCRIPTPATH', $scriptpath);
        define('SCRIPT', $script);
        define('SESSION_IDHASH', md5($_SERVER['HTTP_USER_AGENT'] . ALT_IP )); // this should *never* change during a session
        define('SESSION_HOST', substr(IPADDRESS, 0, 15));
        define('USER_AGENT', $_SERVER['HTTP_USER_AGENT']);
        define('REFERRER', $_SERVER['HTTP_REFERER']);
        define('SAPI_NAME', php_sapi_name());
        if (empty($_REQUEST['url']))
        {
        $url = REFERRER;
        }
        else
        {
        if ($_REQUEST['url'] == REFERRER)
        {
        $url = 'index.php';
        }
        else
        {
        $url = &$_REQUEST['url'];
        }
        }
        if ($url == SCRIPTPATH OR empty($url))
        {
        $url = 'index.php';
        }
        $url = xss_clean($url);
        define ('REFERRER_PASSTHRU', $url);
        // #############################################################################
        // deal with session bypass situation
        if (!defined('SESSION_BYPASS'))
        {
        if (!empty($_REQUEST['bypass']))
        {
        define('SESSION_BYPASS', 1);
        }
        else
        {
        define('SESSION_BYPASS', 0);
        }
        }
        // #############################################################################
        // initialise variables and additional constants
        unset(
        $_allowedvars,
        $_arrykey,
        $_arryval,
        $_superglobal,
        $vboptions,
        $vbtemplate,
        $session,
        $bbuserinfo,
        $forumcache,
        $threadcache,
        $foruminfo,
        $templatecache,
        $postcache,
        $threadidcache,
        $forumidcache,
        $postidcache,
        $useridcache,
        $urlSearchArray,
        $urlReplaceArray,
        $emailSearchArray,
        $emailReplaceArray,
        $iforumcache,
        $ipermcache,
        $iaccesscache,
        $usergroupdef,
        $noperms,
        $usergroupcache,
        $vars,
        $usercache,
        $forumarraycache,
        $permscache,
        $bb_cache_thread_lastview,
        $bb_cache_thread_rate,
        $bb_cache_poll_voted,
        $bb_cache_forum_lastview,
        $parsed_postcache
        );
        // standard defs
        define('HTML_SELECTED', 'selected="selected"');
        define('HTML_CHECKED', 'checked="checked"');
        // this variable is used for template conditionals
        $show = array();
        // #############################################################################
        // trim the $_POST['do'] string
        if (isset($_POST['do']))
        {
        $_POST['do'] = trim($_POST['do']);
        }
        // #############################################################################
        // initialize database
        if (empty($nodb))
        {
        unset($vblocalurl, $vblocalopen, $debug); // Not needed with register_globals off but oh well :)
        // load config
        if (!file_exists('./includes/config.php'))
        {
        echo "includes/config.php does not exist. Cannot continue.";
        exit;
        }
        require('./includes/config.php');
        define('TABLE_PREFIX', $tableprefix);
        define('COOKIE_PREFIX', (empty($cookieprefix)) ? 'bb' : $cookieprefix);
        define('DEBUG', !empty($debug));
        $debug = !empty($debug);
        if ($debug)
        {
        if ($_GET['explain'] OR $_POST['explain'])
        {
        define('DB_EXPLAIN', true);
        define('DB_QUERIES', true);
        }
        elseif ($_GET['showqueries'] OR $_POST['showqueries'])
        {
        define('DB_EXPLAIN', false);
        define('DB_QUERIES', true);
        }
        else
        {
        define('DB_EXPLAIN', false);
        define('DB_QUERIES', false);
        }
        }
        else
        {
        define('DB_EXPLAIN', false);
        define('DB_QUERIES', false);
        }
        if (DB_QUERIES)
        {
        echo '<pre>';
        }
        // load db class -- supports only mysql at the moment
        require_once('./includes/db_mysql.php');
        $DB_site = new DB_Sql_vb;
        $DB_site->appname = 'vBulletin';
        $DB_site->appshortname = 'vBulletin (' . VB_AREA . ')';
        $DB_site->database = $dbname;
        $DB_site->connect($servername, $dbusername, $dbpassword, $usepconnect);
        // demo mode stuff
        if (defined('DEMO_MODE') AND DEMO_MODE AND function_exists('vbulletin_demo_init'))
        {
        vbulletin_demo_init();
        }
        unset($servername, $dbusername, $dbpassword, $usepconnect);
        // end init db
        // load options, special templates and default language
        $optionsfound = false;
        if (defined('VB3UPGRADE'))
        {
        // ###################### Load vB2 Style Options #######################
        $DB_site->reporterror = 0;
        $optionstemp = $DB_site->query_first("SELECT template FROM template WHERE title = 'options'");
        $DB_site->reporterror = 1;
        if ($optionstemp)
        {
        eval($optionstemp['template']);
        $versionnumber = $templateversion;
        $optionsfound = true;
        }
        // work out the absolute path to vBulletin
        $_var = @strpos($bburl, '/', 8);
        }
        if (!defined('VB3INSTALL') AND $optionsfound === false)
        {
        // initialise
        $datastore = array();
        $vboptions = array();
        $forumcache = array();
        $usergroupcache = array();
        $stylechoosercache = array();
        if (!is_array($specialtemplates))
        {
        $specialtemplates = array();
        }
        // add default special templates
        if (!CACHE_DATASTORE_FILE OR !defined('CACHE_DATASTORE_FILE'))
        {
        $specialtemplates = array_merge(array(
        	'options',
        	'cron',
        	'forumcache',
        	'usergroupcache',
        	[color=red]// ## <ucs>
        		'stylecache',
        		'utt_store_act'
        		// ## </ucs>
        [/color]), $specialtemplates);
        }
        else
        {
        require_once('./includes/datastore_cache.php');
        $optionsfound = !empty($vboptions);
        $specialtemplates = array_merge(array(
        	'cron'
        ), $specialtemplates);
        }
        if (!empty($specialtemplates))
        {
        $datastoretemp = $DB_site->query("
        	SELECT title, data
        	FROM " . TABLE_PREFIX . "datastore
        	WHERE title IN ('" . implode("', '", array_map('addslashes', $specialtemplates)) . "')
        ");
        unset($specials, $specialtemplates);
        while ($storeitem = $DB_site->fetch_array($datastoretemp))
        {
        	switch($storeitem['title'])
        	{
        	 // get $vboptions array
        	 case 'options':
        	 {
        	 $vboptions = unserialize($storeitem['data']);
        	 if (is_array($vboptions) AND isset($vboptions['languageid']))
        	 {
        	 $optionsfound = true;
        	 }
        	 if ($url == 'index.php')
        	 {
        	 $url = "$vboptions[forumhome].php";
        	 }
        	 $versionnumber = &$vboptions['templateversion'];
        	 }
        	 break;
        	 // get $forumcache array
        	 case 'forumcache':
        	 {
        	 $forumcache = unserialize($storeitem['data']);
        	 }
        	 break;
        	 // get $usergroupcache array
        	 case 'usergroupcache':
        	 {
        	 $usergroupcache = unserialize($storeitem['data']);
        	 }
        	 break;
        	 // Wol Spider information
        	 case 'wol_spiders':
        	 {
        	 $datastore['wol_spiders'] = unserialize($storeitem['data']);
        	 }
        	 break;
        	 // smiliecache information
        	 case 'smiliecache':
        	 {
        	 $smiliecache = unserialize($storeitem['data']);
        	 }
        	 break;
        	 case 'stylecache':
        	 {
        	 $stylechoosercache = unserialize($storeitem['data']);
        	 }
        	 break;
        	 // stuff the data into the $datastore array
        	 default:
        	 {
        	 $datastore["$storeitem[title]"] = $storeitem['data'];
        	 }
        	 break;
        	}
        }
        // Fatal Error
        if (!$optionsfound)
        {
        	require_once('./includes/adminfunctions.php');
        	require_once('./includes/functions.php');
        	$vboptions = build_options();
        	if ($url == 'index.php')
        	{
        	 $url = "$vboptions[forumhome].php";
        	}
        	$versionnumber = &$vboptions['templateversion'];
        }
        unset($storeitem);
        $DB_site->free_result($datastoretemp);
        }
        }
        }
        // referrer check for POSTs
        if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' AND !defined('SKIP_REFERRER_CHECK'))
        {
        if ($_SERVER['HTTP_HOST'] OR $_ENV['HTTP_HOST'])
        {
        $http_host = ($_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : $_ENV['HTTP_HOST']);
        }
        else if ($_SERVER['SERVER_NAME'] OR $_ENV['SERVER_NAME'])
        {
        $http_host = ($_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : $_ENV['SERVER_NAME']);
        }
        if ($http_host AND $_SERVER['HTTP_REFERER'])
        {
        $referrer_parts = parse_url($_SERVER['HTTP_REFERER']);
        $http_host = preg_replace('#^www\.#i', '', $http_host);
        $http_port = intval($referrer_parts['port']);
        $refhost = $referrer_parts['host'] . (!empty($http_port) ? ":$http_port" : '');
        if (!preg_match('#' . preg_quote($http_host, '#') . '$#siU', $refhost))
        {
        die('POST requests from foreign hosts are not allowed.');
        }
        }
        }
        // #############################################################################
        // do a callback to modify any variables that might need modifying based on HTTP input
        // eg: doing a conditional redirect based on a $goto value, and $noheader must be set
        if (function_exists('exec_postvar_call_back'))
        {
        exec_postvar_call_back();
        }
        // #############################################################################
        // initialize bitfield values for permissions and options
        // note: only permissions that are included in the usergroup table
        // should be added as entries within the $_bitfield array.
        $_BITFIELD = array();
        // field names for forum permissions
        $_BITFIELD['usergroup']['forumpermissions'] = array(
        'canview'		 => 1,
        'canviewothers'	 => 2,
        'cansearch'		 => 4,
        'canemail'		 => 8,
        'canpostnew'		=> 16,
        'canreplyown'	 => 32,
        'canreplyothers'	=> 64,
        'caneditpost'	 => 128,
        'candeletepost'	 => 256,
        'candeletethread' => 512,
        'canopenclose'	 => 1024,
        'canmove'		 => 2048,
        'cangetattachment' => 4096,
        'canpostattachment' => 8192,
        'canpostpoll'	 => 16384,
        'canvote'		 => 32768,
        'canthreadrate'	 => 65536,
        'isalwaysmoderated' => 131072,
        'canseedelnotice' => 262144,
        );
        // field names for private message permissions
        $_BITFIELD['usergroup']['pmpermissions'] = array(
        'cantrackpm'		=> 1,
        'candenypmreceipts' => 2
        );
        // field names for calendar permissions
        $_BITFIELD['usergroup']['calendarpermissions'] = array(
        'canviewcalendar'	=> 1,
        'canpostevent'	 => 2,
        'caneditevent'	 => 4,
        'candeleteevent'	 => 8,
        'canviewothersevent' => 16, // Set to no to make a "Private Calendar"
        );
        // field names for who's online permissions
        $_BITFIELD['usergroup']['wolpermissions'] = array(
        'canwhosonline'		 => 1,
        'canwhosonlineip'	 => 2,
        'canwhosonlinefull'	 => 4,
        'canwhosonlinebad'	 => 8,
        'canwhosonlinelocation' => 16,
        );
        // field names for administrative permissions
        $_BITFIELD['usergroup']['adminpermissions'] = array(
        'ismoderator'		 => 1,
        'cancontrolpanel'	 => 2,
        'canadminsettings'	 => 4,
        'canadminstyles'		=> 8,
        'canadminlanguages'	 => 16,
        'canadminforums'		=> 32,
        'canadminthreads'	 => 64,
        'canadmincalendars'	 => 128,
        'canadminusers'		 => 256,
        'canadminpermissions' => 512,
        'canadminfaq'		 => 1024,
        'canadminimages'		=> 2048,
        'canadminbbcodes'	 => 4096,
        'canadmincron'		 => 8192,
        'canadminmaintain'	 => 16384,
        'canadminupgrade'	 => 32768
        );
        // field names for general permissions
        $_BITFIELD['usergroup']['genericpermissions'] = array(
        'canviewmembers'		 => 1,
        'canmodifyprofile'		 => 2,
        'caninvisible'			 => 4,
        'canviewothersusernotes' => 8,
        'canmanageownusernotes'	=> 16,
        'canseehidden'			 => 32,
        'canbeusernoted'		 => 64,
        'canprofilepic'			=> 128,
        'canseeraters'			 => 256, // Permission removed in 3.0.2 ## Maintain backwards compatibility with 3.0.0 and 3.0.1
        'canuseavatar'			 => 512,
        'canusesignature'		 => 1024,
        'canusecustomtitle'		=> 2048,
        'canseeprofilepic'		 => 4096,
        'canviewownusernotes'	=> 8192,
        'canmanageothersusernotes' => 16384,
        'canpostownusernotes'	 => 32768,
        'canpostothersusernotes' => 65536,
        'caneditownusernotes'	 => 131072,
        'canseehiddencustomfields' => 262144,
        // Reputation
        'canseeownrep'			 => 256,
        'canuserep'				=> 524288,
        'canhiderep'			 => 1048576,
        'cannegativerep'		 => 2097152,
        'canseeothersrep'		 => 4194304,
        'canhaverepleft'		 => 8388608,
        );
        // field names for usergroup display options
        $_BITFIELD['usergroup']['genericoptions'] = array(
        'showgroup'			 => 1,
        'showbirthday'		 => 2,
        'showmemberlist'		=> 4,
        'showeditedby'		 => 8,
        'allowmembergroups'	 => 16,
        'isbannedgroup'		 => 32
        );
        // ### INSERT PLUGIN USERGROUP PERMISSIONS BITFIELDS HERE ###
        // ----------------------------------------------------------
        // ----------------------------------------------------------
        // ### END PLUGIN USERGROUP PERMISSIONS BITFIELDS HERE ###
        // now take all the usergroup bitfields and define constants for spot permission checks
        foreach($_BITFIELD['usergroup'] AS $_permgroup)
        {
        foreach($_permgroup AS $_constname => $_constval)
        {
        define(strtoupper($_constname), $_constval);
        }
        }
        unset($_constname, $_constval, $_permgroup);
        // Calendar Moderator permissions
        $_BITFIELD['calmoderatorpermissions'] = array(
        'caneditevents'		 => 1,
        'candeleteevents'	 => 2,
        'canmoderateevents'	 => 4,
        'canviewips'			=> 8,
        'canmoveevents'		 => 16
        );
        // Forum Moderator permissions
        $_BITFIELD['moderatorpermissions'] = array(
        'caneditposts'		 => 1,
        'candeleteposts'		 => 2,
        'canopenclose'		 => 4,
        'caneditthreads'		 => 8,
        'canmanagethreads'	 => 16,
        'canannounce'			=> 32,
        'canmoderateposts'	 => 64,
        'canmoderateattachments' => 128,
        'canmassmove'			=> 256,
        'canmassprune'		 => 512,
        'canviewips'			 => 1024,
        'canviewprofile'		 => 2048,
        'canbanusers'			=> 4096,
        'canunbanusers'		 => 8192,
        'newthreademail'		 => 16384,
        'newpostemail'		 => 32768,
        'cansetpassword'		 => 65536,
        'canremoveposts'		 => 131072,
        'caneditsigs'			=> 262144,
        'caneditavatar'		 => 524288,
        'caneditpoll'			=> 1048576,
        'caneditprofilepic'	 => 2097152,
        'caneditreputation'	 => 4194304
        );
        // Language options bitfields (not really needed at this time; here for expansion purposes)
        $_BITFIELD['languageoptions'] = array(
        'direction' => 1 // on = left-to-right, off = right-to-left
        );
        // inheritable non-bitfield permissions:
        // 0 => indicates that a 0 value does not take precedence over greater values, ex "0 disables this option"
        // 1 => indicates that a 0 values takes precedence over greater values, ex "Set to 0 for unlimited"
        $_INTPERMS = array(
        'pmquota'			 => 0,
        'pmsendmax'			 => 0,
        'attachlimit'		 => 1,
        'avatarmaxwidth'		=> 1,
        'avatarmaxheight'	 => 1,
        'avatarmaxsize'		 => 1,
        'profilepicmaxwidth'	=> 1,
        'profilepicmaxheight' => 1,
        'profilepicmaxsize'	 => 1
        );
        // Defined constants used for user field.
        $_USEROPTIONS = array(
        'showsignatures'	=> 1,
        'showavatars'	 => 2,
        'showimages'		=> 4,
        'coppauser'		 => 8,
        'adminemail'		=> 16,
        'showvcard'		 => 32,
        'dstauto'		 => 64,
        'dstonoff'		 => 128,
        'showemail'		 => 256,
        'invisible'		 => 512,
        'showreputation'	=> 1024,
        'receivepm'		 => 2048,
        'emailonpm'		 => 4096,
        'hasaccessmask'	 => 8192,
        //'emailnotification' => 16384, // this value is now handled by the user.autosubscribe field
        'postorder'		 => 32768,
        );
        // Defined contants used for forum field.
        $_FORUMOPTIONS = array(
        'active' => 1,
        'allowposting'	 => 2,
        'cancontainthreads' => 4,
        'moderatenewpost' => 8,
        'moderatenewthread' => 16,
        'moderateattach'	=> 32,
        'allowbbcode'	 => 64,
        'allowimages'	 => 128,
        'allowhtml'		 => 256,
        'allowsmilies'	 => 512,
        'allowicons'		=> 1024,
        'allowratings'	 => 2048,
        'countposts'		=> 4096,
        'canhavepassword' => 8192,
        'indexposts'		=> 16384,
        'styleoverride'	 => 32768,
        'showonforumjump' => 65536,
        'warnall'		 => 131072
        );
        /*======================================================================*\
        || ####################################################################
        || # Downloaded from vBulletin 3.0.5 release announcement thread
        || # CVS: $RCSfile: init.php,v $ - $Revision: 1.239.2.14 $
        || ####################################################################
        \*======================================================================*/
        ?>
        Please help!
        Artemis

        Comment

        • ArtemisL
          Member
          • Oct 2004
          • 31
          • 3.0.3

          #5
          Disregard, my apologies. Eternity just fixed whatever it was. I'm going to submit a support request to see if I can have her added to my license... this way she can post here when there are problems (she does the major coding for my forum) and I won't stress so much lol.


          Thanks,
          Artemis

          Comment

          • weirdpixels
            Senior Member
            • Aug 2003
            • 401
            • 3.0.7

            #6
            no need to ask support to do this, just go here http://www.vbulletin.com/members/mem...t_priority.php and fill in the email address they use for this forum
            http://www.weirdpixels.com/images/buttons/button.gif

            Comment

            widgetinstance 262 (Related Topics) skipped due to lack of content & hide_module_if_empty option.
            Working...
            😀
            😂
            🥰
            😘
            🤢
            😎
            😞
            😡
            👍
            👎