ربط كليجا عن طريق API مع vBulletin 4.2.0

لدعم سكربت التحميل كليجا .. kleeja
أضف رد جديد
alaufi
عضو جديد
مشاركات: 5
اشترك في: 16 يوليو 2012, 15:19

ربط كليجا عن طريق API مع vBulletin 4.2.0

مشاركة بواسطة alaufi »

السلام عليكم اوجة مشكلة بربط السكربتين مع بعض بواسطة  API المشكلة في kleeja_vb_api  حيث يعطي الخطأ 0  kleeja_vb_api :

كود: تحديد الكل

<?php
[/color]

كود: تحديد الكل

////File for remote vb//This file must be exists in VB  folder script. //copyright 2007-2009 Kleeja.com ..//$Author: phpfalcon $ , $Rev: 817 $,  $Date:: 2009-08-12 14:43:06 +0300#$//// ####################### SET PHP ENVIRONMENT ###########################error_reporting(E_ALL & ~E_NOTICE);// #################### DEFINE IMPORTANT CONSTANTS #######################define('THIS_SCRIPT', 'sendmessage');//call vb global filerequire_once('./global.php');//change this$script_api_key = 'تم حذفه';//error_reporting(E_ALL & ~E_NOTICE);if(!isset($_GET['api_key']) || (isset($_GET['api_key']) &&  base64_decode($_GET['api_key']) != $script_api_key) || (!isset($_GET['userid']) && !isset($_GET['username']))){print_output('0');exit;}#hashed ? $hashed = isset($_GET['userid']) ? true : false;$pass = isset($_GET['pass']) ? stripslashes(htmlspecialchars_decode(base64_decode($_GET['pass']))) : '';$username = isset($_GET['username']) ? strip_blank_ascii($_GET['username'], ' ') : '';//print_output($username);$userid = isset($_GET['userid']) ? $_GET['userid'] : '';$c = array(    'pass' => isset($_GET['pass']) ?  htmlspecialchars($pass) : '',    'username' => isset($_GET['username']) ? $username : '',    'userid' => isset($_GET['userid']) ? intval($userid) : 0,);$q_where = $hashed ? "userid=" . $c['userid'] . " AND password='" . mysql_escape_string($c['pass']) . "' AND usergroupid != '8'" :  "username='" . $vbulletin->db->escape_string(htmlspecialchars_uni($c['username'])) . "' AND usergroupid != '8'";if(isset($_GET['return_username'])){$q_where = "userid=" . $c['userid'];}$rqr = mysql_query("SELECT " . ($hashed ? '*' : (isset($_GET['return_username']) ? 'username' : 'salt')) . " FROM " . $config['Database']['tableprefix'] . "user WHERE " . $q_where);if (mysql_num_rows($rqr)){while ($user = mysql_fetch_array($rqr)){//if return_username, no password just userid , and return usernameif(isset($_GET['return_username'])){print_output(base64_encode('1%|%' . $user['username']));exit;}$is_admin_or_no = ($row['usergroupid'] == 6) ? '1' : '0';if($hashed){print_output(base64_encode('1%|%' . $user['userid'] . '%|%' . $user['username'] . '%|%' . $user['email'] . '%|%' . $user['password'] . '%|%' . $is_admin_or_no));exit;}else{$pass = md5(md5($c['pass']) . $user['salt']);  // without normal md5$rqr2 = mysql_query("SELECT *FROM " . $config['Database']['tableprefix'] . "userWHERE username='" . mysql_escape_string($c['username']) . "' AND password='" . mysql_escape_string($pass) . "' AND usergroupid != '8'");if (!mysql_num_rows($rqr)){print_output('0');exit;}else{while ($user2 = mysql_fetch_array($rqr2)){print_output(base64_encode('1%|%' . $user2['userid'] . '%|%' . $user2['username'] . '%|%' . $user2['email'] . '%|%' . $user2['password'] . '%|%' . $is_admin_or_no));exit;}//it's bad situationprint_output('0');exit;}}//break break;}}else{print_output('0');exit;}//<--- EOF?>
ملف المنتدى  global:

كود: تحديد الكل

<?phperror_reporting(E_ALL & ~E_NOTICE);require_once('./includes/class_bootstrap.php');define('VB_AREA', 'Forum');$bootstrap = new vB_Bootstrap_Forum();$bootstrap->datastore_entries = $specialtemplates;$bootstrap->cache_templates = vB_Bootstrap::fetch_required_template_list(empty($_REQUEST['do']) ? '' : $_REQUEST['do'],$actiontemplates, $globaltemplates);$bootstrap->bootstrap();// Deprecated as of release 4.0.2, replaced by global_bootstrap_init_start($hook = vBulletinHook::fetch_hook('global_start')) ? eval($hook) : false;$bootstrap->load_style();// legacy code needs this$permissions = $vbulletin->userinfo['permissions'];// Deprecated as of release 4.0.2, replaced by global_bootstrap_complete($hook = vBulletinHook::fetch_hook('global_setup_complete')) ? eval($hook) : false;if (!empty($db->explain)){$aftertime = microtime(true) - TIMESTART;echo "End call of global.php: $aftertime\n";echo "\n<hr />\n\n";}
class_bootstrap.php ملف المنتدى :

كود: تحديد الكل

/*** General frontend bootstrapping class. As this is designed to be as backwards* compatible as possible, there are loads of global variables. Beware!** @package vBulletin*/class vB_Bootstrap{/*** A particular style ID to force. If specified, it will be used even if disabled.** @var int*/protected $force_styleid = 0;/*** Determines the called actions** @var array*/protected $called = array('style'    => false,'template' => false);/*** A list of datastore entries to cache.** @var array*/public $datastore_entries = array();/*** A list of templates (names) that should be cached. Does not include* globally cached templates.** @var array*/public $cache_templates = array();/*** A list of templates groups to be cached e.g. vbcms.section will * cache all templates that start with vbcms_ and contain 'section'** @var array*/public $group_templates = array();// ============ MAIN BOOTSTRAPPING FUNCTIONS ===============/*** General bootstrap wrapper. This can be used to do virtually all of the* work that you'd usually want to do at the beginning. Style and template* setup are deferred until first usage.*/public function bootstrap(){global $VB_API_REQUESTS;$this->init();$this->load_language();$this->load_permissions();$this->read_input_context();$this->load_show_variables();if (!defined('NOCHECKSTATE') AND (!VB_API OR $VB_API_REQUESTS['api_m'] != 'api_init')){$this->check_state();}$this->load_facebook();($hook = vBulletinHook::fetch_hook('global_bootstrap_complete')) ? eval($hook) : false;}/*** Basic initialization of things like DB, session, etc.*/public function init(){global $vbulletin, $db, $show;$specialtemplates = $this->datastore_entries;define('CWD', (($getcwd = getcwd()) ? $getcwd : '.'));require_once(CWD . '/includes/init.php');($hook = vBulletinHook::fetch_hook('global_bootstrap_init_start')) ? eval($hook) : false;// Set Display of Ads to true - Set to false on non content pagesif (!defined('CONTENT_PAGE')){define('CONTENT_PAGE', true);}global $template_hook;$template_hook = array();global $ad_location;$ad_location = array();($hook = vBulletinHook::fetch_hook('global_bootstrap_init_complete')) ? eval($hook) : false;}/*** Reads some context based on general input information*/public function read_input_context(){global $vbulletin;$vbulletin->input->clean_array_gpc('r', array('referrerid' => TYPE_UINT,'a'          => TYPE_STR,'nojs'       => TYPE_BOOL));$vbulletin->input->clean_array_gpc('p', array('ajax' => TYPE_BOOL,));// #############################################################################// set the referrer cookie if URI contains a referreridif ($vbulletin->GPC['referrerid'] AND !$vbulletin->GPC[COOKIE_PREFIX . 'referrerid'] AND !$vbulletin->userinfo['userid'] AND $vbulletin->options['usereferrer']){if ($referrerid = verify_id('user', $vbulletin->GPC['referrerid'], 0)){vbsetcookie('referrerid', $referrerid);}}}/*** Loads permissions for the currently logged-in user.*/public function load_permissions(){global $vbulletin;cache_permissions($vbulletin->userinfo);}/*** Loads the language information for the logged-in user.*/public function load_language(){global $vbulletin;fetch_options_overrides($vbulletin->userinfo);fetch_time_data();global $vbphrase, $vbphrasegroup;if (!VB_API OR (defined('VB_API_LOADLANG') AND VB_API_LOADLANG === true)){$vbphrase = init_language();// Disable "Directional Markup Fix" from language options. API doesn't need it.if (defined(VB_API) AND VB_API === true){$vbulletin->userinfo['lang_options'] -= $vbulletin->bf_misc_languageoptions['dirmark'];}}else{$vbphrase = array();}// set a default usernameif ($vbulletin->userinfo['username'] == ''){$vbulletin->userinfo['username'] = $vbphrase['unregistered'];}}/*** Loads style information (selected style and style vars)*/public function load_style(){if ($this->called('style') AND !(defined('UNIT_TESTING') AND UNIT_TESTING === true)){return;}$this->called['style'] = true;global $style, $vbulletin;$style = $this->fetch_style_record($this->force_styleid);define('STYLEID', $style['styleid']);define('STYLE_TYPE', $style['type']);define('IS_MOBILE_STYLE', isset($vbulletin->stylecache['mobile'][$style['styleid']]) ? 1 : 0);$vbulletin->stylevars = unserialize($style['newstylevars']);fetch_stylevars($style, $vbulletin->userinfo);}/*** Check if facebook is enabled, and perform appropriate action based on* authentication state (fb and vb) of the user*/public function load_facebook(){global $vbulletin, $show;$vbulletin->input->clean_array_gpc('r', array('dofbredirect' => TYPE_BOOL));$dofbredirect = ($vbulletin->GPC_exists['dofbredirect'] AND $vbulletin->GPC['dofbredirect'] == 1);// check if facebook and session is enabledif (is_facebookenabled()){// is user is logged into facebook?if ($show['facebookuser'] = vB_Facebook::instance()->userIsLoggedIn()){// is user logged into vB?if (!empty($vbulletin->userinfo['userid'])){// if vb user is not associated with the current facebook account (or no facebook account at all),// redirect to the register association page, if doing facebook redirectif ($vbulletin->userinfo['fbuserid'] != vB_Facebook::instance()->getLoggedInFbUserId()){if (do_facebook_redirect()){exec_header_redirect('register.php' . $vbulletin->session->vars['sessionurl_q']);}// if not doing facebook redirect and not on the reg page,// pretend the user is not logged into facebook at all so user can browseelse if (THIS_SCRIPT != 'register'){$show['facebookuser'] = false;if ($dofbredirect){standard_error(fetch_error('facebook_connect_fail'));}}}}// user is not logged into vb, but logged into facebookelse{// check if there is an associated vb account, if so attempt to log that user inif (vB_Facebook::instance()->getVbUseridFromFbUserid()){// make sure user is trying to loginif (do_facebook_redirect()){// need to load the style here to display// the login welcome message properly$this->load_style();require_once(DIR . '/includes/functions_login.php');if (verify_facebook_authentication()){// create new sessionprocess_new_login('fbauto', false, '');// do redirectdo_login_redirect();}}// if user is not trying to login with FB connect,// pretend like the user is not logged in to FBelse if (THIS_SCRIPT != 'register'){$show['facebookuser'] = false;if ($dofbredirect){standard_error(fetch_error('facebook_connect_fail'));}}}// otherwise, fb account is not associated with any vb userelse{// redirect to the registration page to create a vb accountif (do_facebook_redirect()){exec_header_redirect('register.php' . $vbulletin->session->vars['sessionurl_q']);}// if not doing redirect and not trying to register,// pretend user is not logged into facebook so they can still browse the siteelse if (THIS_SCRIPT != 'register'){$show['facebookuser'] = false;if ($dofbredirect){standard_error(fetch_error('facebook_connect_fail'));}}}}}}}/*** Processes the global templates (header, footer, etc) and the variables they need.*/public function process_templates(){if ($this->called('template')){return;}$this->called['template'] = true;global $vbulletin, $show, $vbphrase, $style, $template_hook;$this->load_style();$this->cache_templates($style['templatelist']);// #############################################################################// turn off popups if they are not available to this browserif ($vbulletin->options['usepopups']){if ((is_browser('ie', 5) AND !is_browser('mac')) OR is_browser('mozilla') OR is_browser('firebird') OR is_browser('opera', 7) OR is_browser('webkit') OR is_browser('konqueror', 3.2)){// use popups}else{// don't use popups$vbulletin->options['usepopups'] = 0;}}global $vbcollapse;$vbcollapse = self::build_vbcollapse($vbulletin->GPC['vbulletin_collapse']);// #############################################################################// set up the vars for the private message area of the navbarglobal $pmbox;$pmbox = array('lastvisitdate' => vbdate($vbulletin->options['dateformat'], $vbulletin->userinfo['lastvisit'], 1),'lastvisittime' => vbdate($vbulletin->options['timeformat'], $vbulletin->userinfo['lastvisit']));if ($vbulletin->userinfo['userid']){$pmunread_html = construct_phrase(($vbulletin->userinfo['pmunread'] ? $vbphrase['numeric_value_emphasized'] : $vbphrase['numeric_value']), $vbulletin->userinfo['pmunread']);$vbphrase['unread_x_nav_compiled'] = construct_phrase($vbphrase['unread_x_nav'], $pmunread_html);$vbphrase['total_x_nav_compiled'] = construct_phrase($vbphrase['total_x_nav'], $vbulletin->userinfo['pmtotal']);}// #############################################################################// Generate Language/Style Chooser Dropdownsif (!VB_API){if (empty($_POST['do'])){$languagecount = 0;$languagechooserbits = construct_language_options('--', true, $languagecount);$show['languagechooser'] = ($languagecount > 1 ? true : false);}else{$show['languagechooser'] = false;}if (empty($_POST['do'])){$stylecount = 0;$quickchooserbits1 = construct_style_options(-1, '--', true, true, $stylecount);$quickchooserbits2 = construct_style_options(-2, '--', true, true, $stylecount);$show['quickchooser'] = ($stylecount > 1 ? true : false);}else{$show['quickchooser'] = false;}}// #############################################################################// do cron stuff - goes into footerif ($vbulletin->cron <= TIMENOW){$cronimage = '<img src="' . create_full_url('cron.php?' . $vbulletin->session->vars['sessionurl'] . 'rand=' .  TIMENOW) . '" alt="" width="1" height="1" border="0" />';}else{$cronimage = '';}global $ad_location;// parse some global templatesglobal $gobutton, $spacer_open, $spacer_close;$gobutton = vB_Template::create('gobutton')->render();$spacer_open = vB_Template::create('spacer_open')->render();$spacer_close = vB_Template::create('spacer_close')->render();// facebook templatesif (is_facebookenabled()){$templater = vB_Template::create('facebook_opengraph');$templater->register('opengrapharray', get_fbopengrapharray());$facebook_opengraph = $templater->render();$templater = vB_Template::create('facebook_header');$templater->register('profileurl', get_fbprofileurl());$templater->register('squarepicurl', get_fbprofilepicurl());$facebook_header = $templater->render();$templater = vB_Template::create('facebook_footer');$templater->register('connected', (is_userfbconnected() ? 1 : 0));$templater->register('active', (is_userfbactive() ? 1 : 0));$facebook_footer = $templater->render();}($hook = vBulletinHook::fetch_hook('parse_templates')) ? eval($hook) : false;// parse headinclude, header & footer$admincpdir = $vbulletin->config['Misc']['admincpdir'];$modcpdir = $vbulletin->config['Misc']['modcpdir'];// advertising location setup$template = vB_Template::create('ad_navbar_below');$template->register('adsense_pub_id', $vbulletin->adsense_pub_id);$template->register('adsense_host_id', $vbulletin->adsense_host_id);$ad_location['ad_navbar_below'] = $template->render();$ad_location['global_header1'] = vB_Template::create('ad_global_header1')->render();$ad_location['global_header2'] = vB_Template::create('ad_global_header2')->render();$ad_location['global_below_navbar'] = vB_Template::create('ad_global_below_navbar')->render();$ad_location['global_above_footer'] = vB_Template::create('ad_global_above_footer')->render();$template = vB_Template::create('ad_footer_start');$template->register('adsense_pub_id', $vbulletin->adsense_pub_id);$template->register('adsense_host_id', $vbulletin->adsense_host_id);$ad_location['ad_footer_start'] = $template->render();$template = vB_Template::create('ad_footer_end');$template->register('adsense_pub_id', $vbulletin->adsense_pub_id);$template->register('adsense_host_id', $vbulletin->adsense_host_id);$ad_location['ad_footer_end'] = $template->render();// #############################################################################// handle noticesglobal $notices;$notices = $this->build_notices();$show['notices'] = ($notices !== '');// #############################################################################// set up user notifications$notifications = $this->build_notifications();if ($notifications){$show['notifications'] = true;global $notifications_menubits, $notifications_total;$notifications_menubits = $notifications['bits'];$notifications_total = $notifications['total'];}else{$notifications_menubits = '';$notifications_total = '';$show['notifications'] = false;}$newpm = $this->check_new_pm();// #############################################################################// page number is used in meta tags (sometimes)global $pagenumber, $headinclude, $headinclude_bottom, $header, $footer;global $threadinfo, $foruminfo;if ($pagenumber === NULL){$pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT);}$templater = vB_Template::create('headinclude');$templater->register('foruminfo', $foruminfo);$templater->register('pagenumber', $pagenumber);//$templater->register('style', $style);$templater->register('basepath', $vbulletin->input->fetch_basepath());$templater->register('this_script', THIS_SCRIPT);$templater->register('user_default_style_type', USER_DEFAULT_STYLE_TYPE);$templater->register('facebook_opengraph', $facebook_opengraph);$templater->register('ajaxbaseurl', VB_URL_BASE_PATH);$headinclude = $templater->render();$templater = vB_Template::create('headinclude_bottom');$templater->register('foruminfo', $foruminfo);$templater->register('pagenumber', $pagenumber);//$templater->register('style', $style);$templater->register('basepath', $vbulletin->input->fetch_basepath());$headinclude_bottom = $templater->render();$templater = vB_Template::create('header');$templater->register('ad_location', $ad_location);$templater->register('pmbox', $pmbox);$templater->register('notifications_menubits', $notifications_menubits);$templater->register('notifications_total', $notifications_total);$templater->register('notices', $notices);$templater->register('facebook_header', $facebook_header);$header = $templater->render();$templater = vB_Template::create('footer');$templater->register('admincpdir', $admincpdir);$templater->register('ad_location', $ad_location);$templater->register('cronimage', $cronimage);$templater->register('languagechooserbits', $languagechooserbits);$templater->register('modcpdir', $modcpdir);$templater->register('quickchooserbits1', $quickchooserbits1);$templater->register('quickchooserbits2', $quickchooserbits2);$templater->register('template_hook', $template_hook);$templater->register('facebook_footer', $facebook_footer);$footer = $templater->render();// #############################################################################// Check for pm popupif ($newpm){if ($vbulletin->userinfo['pmunread'] == 1){$pmpopupurl = 'private.php?' . $vbulletin->session->vars['sessionurl_js'] . "do=showpm&pmid=$newpm[pmid]";}else if (!empty($vbulletin->session->vars['sessionurl_js'])){$pmpopupurl = 'private.php?' . $vbulletin->session->vars['sessionurl_js'];}else{$pmpopupurl = 'private.php';}$templater = vB_Template::create('pm_popup_script');$templater->register('newpm', $newpm);$templater->register('pmpopupurl', $pmpopupurl);$footer .= $templater->render();}if (!$vbulletin->options['bbactive'] AND($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])){// show the board disabled warning message so that admins don't leave the board turned off by accident$warning = vB_Template::create('board_inactive_warning')->render();$header = $warning . $header;$footer .= $warning;}($hook = vBulletinHook::fetch_hook('process_templates_complete')) ? eval($hook) : false;exec_headers();}/*** Loads assorted show variables. Ideally, these would be used in templates,* but sometimes they're used within code.*/public function load_show_variables(){global $show, $vbulletin, $vbphrase;$show['old_explorer'] = (is_browser('ie') AND !is_browser('ie', 6));$show['rtl'] = (!($vbulletin->userinfo['lang_options'] & $vbulletin->bf_misc_languageoptions['direction']));$show['admincplink'] = ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'] ? true : false);// This generates an extra query for non-admins/supermods on many pages so we have chosen to only display it to supermods & admins// $show['modcplink'] = iif(can_moderate(), true, false);$show['modcplink'] = ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']OR $vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator']);$show['registerbutton'] = (!$show['search_engine']AND $vbulletin->options['allowregistration']AND (!$vbulletin->userinfo['userid'] OR $vbulletin->options['allowmultiregs']));$show['searchbuttons'] = (!$show['search_engine']AND $vbulletin->userinfo['permissions']['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['cansearch']AND $vbulletin->options['enablesearches']);$show['quicksearch'] = (!fetch_require_hvcheck('search'));$show['memberslist'] = ($vbulletin->options['enablememberlist']AND $vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']);$loggedout = false;if (THIS_SCRIPT == 'login' AND $_REQUEST['do'] == 'logout' AND $vbulletin->userinfo['userid'] != 0){$vbulletin->input->clean_gpc('r', 'logouthash', TYPE_STR);if (verify_security_token($vbulletin->GPC['logouthash'], $vbulletin->userinfo['securitytoken_raw'])){$loggedout = true;}}if (!$vbulletin->userinfo['userid'] OR $loggedout){$show['guest'] = true;$show['member'] = false;}else{$show['guest'] = false;$show['member'] = true;}$show['detailedtime'] = ($vbulletin->options['yestoday'] == 2);$show['popups'] = (!$show['search_engine'] AND $vbulletin->options['usepopups'] AND !$vbulletin->GPC['nojs']);if ($show['popups']){// this isn't what $show is for, but it's a variable that's available in many places$show['nojs_link'] = $vbulletin->scriptpath . (strpos($vbulletin->scriptpath, '?') ? '&' : '?') . 'nojs=1';}else{$show['nojs_link'] = '';}if ($vbulletin->options['enablepms'] AND $vbulletin->userinfo['userid'] AND ($vbulletin->userinfo['pmunread'] OR ($vbulletin->userinfo['receivepm'] AND $vbulletin->userinfo['permissions']['pmquota']))){if ($vbulletin->userinfo['pmtotal'] < $vbulletin->userinfo['permissions']['pmquota']){if (($vbphrase['pmpercent_nav_compiled'] = number_format(floor($vbulletin->userinfo['pmtotal'] / $vbulletin->userinfo['permissions']['pmquota'] * 100), 0)) >= 90){$show['pmwarning'] = true;}else{$show['pmwarning'] = false;}}else if ($vbulletin->userinfo['permissions']['pmquota']){$show['pmwarning'] = true;$vbphrase['pmpercent_nav_compiled'] = '100';}else{$show['pmwarning'] = false;}$show['pmstats'] = true;}else{$show['pmstats'] = false;$show['pmwarning'] = false;}$show['pmmainlink'] = ($vbulletin->options['enablepms']AND $vbulletin->userinfo['userid']AND ($vbulletin->userinfo['permissions']['pmquota'] OR $vbulletin->userinfo['pmtotal']));$show['pmtracklink'] = ($vbulletin->userinfo['permissions']['pmpermissions'] & $vbulletin->bf_ugp_pmpermissions['cantrackpm']);$show['pmsendlink'] = ($vbulletin->userinfo['permissions']['pmquota']);$show['siglink'] = ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusesignature']);$show['avatarlink'] = ($vbulletin->options['avatarenabled']);$show['profilepiclink'] = ($vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canprofilepic']AND $vbulletin->options['profilepicenabled']);$show['wollink'] = ($vbulletin->userinfo['permissions']['wolpermissions'] & $vbulletin->bf_ugp_wolpermissions['canwhosonline']);$show['spacer'] = true; // used in postbit template$show['dst_correction'] = (THIS_SCRIPT != 'register' AND $vbulletin->options['bbactive']AND ($vbulletin->session->vars['loggedin'] == 1 OR $vbulletin->session->created OR THIS_SCRIPT == 'usercp')AND $vbulletin->userinfo['dstauto'] == 1AND $vbulletin->userinfo['userid']);$show['contactus'] = ($vbulletin->options['contactuslink']AND ((!$vbulletin->userinfo['userid'] AND $vbulletin->options['contactustype']) OR $vbulletin->userinfo['userid']));// you may define this if you don't want the password in the login box to be zapped onsubmit; good for integration$show['nopasswordempty'] = defined('DISABLE_PASSWORD_CLEARING') ? 1 : 0; // this nees to be an int for the templates// Determine display of certain navbar Quick Links$show['quick_links_groups'] = ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups']AND $vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canviewgroups']);$show['quick_links_albums'] = ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_albums']AND $vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']AND $vbulletin->userinfo['permissions']['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canviewalbum']);$show['friends_and_contacts'] = ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_friends']AND $vbulletin->userinfo['permissions']['genericpermissions2'] & $vbulletin->bf_ugp_genericpermissions2['canusefriends']);$show['communitylink'] = ($show['quick_links_groups'] OR $show['quick_links_albums'] OR $vbulletin->userinfo['userid'] OR $show['memberslist']);$show['canviewforums'] = $vbulletin->userinfo['permissions']['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview'];/*Added as part of VBIV-5313This is a temporary setting to replicate the current behaviour of always showing the calendar link.It is planned to do a proper check of calendar permissions, and only show the link as appropriate, in a future update.*/$show['canviewcalendar'] = true; $show['bbmenu'] = $vbulletin->options['bbmenu']; $show['forumleaders'] = $vbulletin->options['forumleaders']; ;($hook = vBulletinHook::fetch_hook('load_show_variables')) ? eval($hook) : false;// We don't want the number of columns to be more than the total number of smilies to display #36621$vbulletin->options['smcolumns'] = $vbulletin->options['smcolumns'] > $vbulletin->options['smtotal'] ? $vbulletin->options['smtotal'] : $vbulletin->options['smcolumns'];}/*** Checks the state of the request to make sure that it's valid and that* we have the necessary permissions to continue. Checks things like* CSRF and banning.*/public function check_state(){global $vbulletin, $show, $VB_API_REQUESTS;if (defined('CSRF_ERROR')){define('VB_ERROR_LITE', true);$ajaxerror = $vbulletin->GPC['ajax'] ? '_ajax' : '';switch (CSRF_ERROR){case 'missing':standard_error(fetch_error('security_token_missing', $vbulletin->options['contactuslink']));break;case 'guest':standard_error(fetch_error('security_token_guest' . $ajaxerror));break;case 'timeout':standard_error(fetch_error('security_token_timeout' . $ajaxerror, $vbulletin->options['contactuslink']));break;case 'invalid':default:standard_error(fetch_error('security_token_invalid', $vbulletin->options['contactuslink']));}exit;}else if (defined('VB_ERROR_LITE') AND VB_ERROR_LITE === true){standard_error(VB_ERROR_LITE_ERROR);} // #############################################################################// check to see if server is too busy. this is checked at the end of session.phpif (server_overloaded() AND !($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']) AND THIS_SCRIPT != 'login'){$vbulletin->options['useforumjump'] = 0;standard_error(fetch_error('toobusy'));}// #############################################################################// phpinfo display for support purposesif (!empty($_REQUEST['do']) AND $_REQUEST['do'] == 'phpinfo'){if ($vbulletin->options['allowphpinfo'] AND !is_demo_mode()){phpinfo();exit;}else{standard_error(fetch_error('admin_disabled_php_info'));}}// #############################################################################// check that board is active - if not admin, then display errorif (!defined('BYPASS_FORUM_DISABLED')AND!$vbulletin->options['bbactive']AND!in_array(THIS_SCRIPT, array('login', 'css'))AND!($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])){if (defined('DIE_QUIETLY')){exit;}if (defined('VB_API') AND VB_API === true){standard_error(fetch_error('bbclosed', $vbulletin->options['bbclosedreason']));}else{// If this is a post submission from an admin whose session timed out, give them a chance to log back in and save what they were working on. See bug #34258if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' AND !empty($_POST) AND !$vbulletin->userinfo['userid'] AND !empty($_COOKIE[COOKIE_PREFIX . 'cpsession'])){define('VB_ERROR_PERMISSION', true);}unset($vbulletin->db->shutdownqueries['lastvisit']);require_once(DIR . '/includes/functions_misc.php');// If CMS, just flag as closed for now.if (defined('CMS_SCRIPT') AND CMS_SCRIPT == true){define('BB_CLOSED', true);}else{eval('standard_error("' . make_string_interpolation_safe(str_replace("\\'", "'", addslashes($vbulletin->options['bbclosedreason']))) . '");');}}}// #############################################################################// password expiry systemif ($vbulletin->userinfo['userid'] AND $vbulletin->userinfo['permissions']['passwordexpires']){$passworddaysold = floor((TIMENOW - $vbulletin->userinfo['passworddate']) / 86400);if ($passworddaysold >= $vbulletin->userinfo['permissions']['passwordexpires']){if ((THIS_SCRIPT != 'login' AND THIS_SCRIPT != 'profile' AND THIS_SCRIPT != 'ajax')OR (THIS_SCRIPT == 'profile' AND $_REQUEST['do'] != 'editpassword' AND $_POST['do'] != 'updatepassword')OR (THIS_SCRIPT == 'ajax' AND $_REQUEST['do'] != 'imagereg' AND $_REQUEST['do'] != 'securitytoken' AND $_REQUEST['do'] != 'dismissnotice')){standard_error(fetch_error('passwordexpired',$passworddaysold,$vbulletin->session->vars['sessionurl']));}else{$show['passwordexpired'] = true;}}}else{$show['passwordexpired'] = false;}// #############################################################################// password same as username?if (!defined('ALLOW_SAME_USERNAME_PASSWORD') AND $vbulletin->userinfo['userid']){// save the resource on md5'ing if the option is not enabled or guestif ($vbulletin->userinfo['password'] == md5(md5($vbulletin->userinfo['username']) . $vbulletin->userinfo['salt'])){if ((THIS_SCRIPT != 'login' AND THIS_SCRIPT != 'profile') OR (THIS_SCRIPT == 'profile' AND $_REQUEST['do'] != 'editpassword' AND $_POST['do'] != 'updatepassword')){standard_error(fetch_error('username_same_as_password',$vbulletin->session->vars['sessionurl']));}}}// #############################################################################// check required profile fieldsif ($vbulletin->session->vars['profileupdate'] AND THIS_SCRIPT != 'login' AND THIS_SCRIPT != 'profile' AND !VB_API){$vbulletin->options['useforumjump'] = 0;standard_error(fetch_error('updateprofilefields', $vbulletin->session->vars['sessionurl']));}// #############################################################################// check permission to view forumif (!$this->has_global_view_permission()){if (defined('DIE_QUIETLY')){exit;}else{print_no_permission();}}// #############################################################################// check for IP ban on userverify_ip_ban();($hook = vBulletinHook::fetch_hook('global_state_check')) ? eval($hook) : false;}// ============ HELPER FUNCTIONS ===============/*** Determines whether a particular step of the bootstrapping has been called.** @param string Name of the step** @return bool True if called*/public function called($step){return !empty($this->called[$step]);}/*** Determines the style that should be used either by parameter or permissions* and then fetches that information** @param integer A style ID to force (ignoring permissions). 0 to not force any.** @return array Array of style information*/protected function fetch_style_record($force_styleid = 0){global $vbulletin;$userselect = THIS_SCRIPT == 'css' ? true : false;// Ignore forum override if user has chosen a mobile style that is enabled// if this style is not selectable then it must either be an Admin or one of the default mobile styles and the user has to be a mobile userif (isset($vbulletin->stylecache['mobile'][$vbulletin->userinfo['styleid']])AND($vbulletin->stylecache['mobile'][$vbulletin->userinfo['styleid']] == 'selectable'OR$vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']OR($vbulletin->mobile_browser_advanced AND $vbulletin->options['mobilestyleid_advanced'] == $vbulletin->userinfo['styleid'])OR($vbulletin->mobile_browser AND $vbulletin->options['mobilestyleid_basic'] == $vbulletin->userinfo['styleid']) )){$styleid = $vbulletin->userinfo['styleid'];$userselect = true; } // is style in the forum/thread set?else if ($force_styleid > 0){// style specified by forum$styleid = $force_styleid;$vbulletin->userinfo['styleid'] = $styleid;$userselect = true;}// The only disabled mobile styles that can be overriden are those set to advanced/basic and when viewed by a mobile user// Otherwise they behave like the other styleselse if ($vbulletin->userinfo['styleid'] > 0AND(THIS_SCRIPT == 'css'OR$vbulletin->options['allowchangestyles'] == 1OR$vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])){// style specified in user profile$styleid = $vbulletin->userinfo['styleid'];}else{// no style specified - use default$styleid = $vbulletin->options['styleid'];$vbulletin->userinfo['styleid'] = $styleid;}// #############################################################################// if user can control panel, allow selection of any style (for testing purposes)// otherwise only allow styles that are user-selectable$styleid = intval($styleid);$style = NULL;($hook = vBulletinHook::fetch_hook('style_fetch')) ? eval($hook) : false;if (!is_array($style)){$style = $vbulletin->db->query_first_slave("SELECT *FROM " . TABLE_PREFIX . "styleWHERE (styleid = $styleid" . ((!($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']) AND !$userselect) ? " AND userselect = 1" : "") . ")OR styleid = " . $vbulletin->options['styleid'] . "ORDER BY styleid " . ($styleid > $vbulletin->options['styleid'] ? "DESC" : "ASC") . "LIMIT 1");}return $style;}/*** Builds the applicable notice HTML** @return string Applicable notice HTML*/protected function build_notices(){global $vbulletin, $vbphrase, $show;$notices = '';if (!defined('NONOTICES') AND !empty($vbulletin->noticecache) AND is_array($vbulletin->noticecache)){$return_link = $vbulletin->scriptpath;require_once(DIR . '/includes/functions_notice.php');if ($vbulletin->userinfo['userid'] == 0){$vbulletin->userinfo['musername'] = fetch_musername($vbulletin->userinfo);}foreach (fetch_relevant_notice_ids() AS $_noticeid){$show['notices'] = true;if (($vbulletin->noticecache["$_noticeid"]["dismissible"] == 1) AND $vbulletin->userinfo['userid']){// only show the dismiss link for registered users; guest who wants to dismiss?  Register please.$show['dismiss_link'] = true;}else{$show['dismiss_link'] = false;}$notice_html = str_replace(array('{musername}', '{username}', '{userid}', '{sessionurl}', '{sessionurl_q}'),array($vbulletin->userinfo['musername'], $vbulletin->userinfo['username'], $vbulletin->userinfo['userid'], $vbulletin->session->vars['sessionurl'], $vbulletin->session->vars['sessionurl_q']),$vbphrase["notice_{$_noticeid}_html"]);($hook = vBulletinHook::fetch_hook('notices_noticebit')) ? eval($hook) : false;$templater = vB_Template::create('navbar_noticebit');$templater->register('notice_html', $notice_html);$templater->register('_noticeid', $_noticeid);$notices .= $templater->render();}}return $notices;}/*** Builds the applicable notification HTML and count** @return array [bits] => HTML, [total] => formatted count*/protected function build_notifications(){global $vbulletin, $vbphrase, $show;if (!$vbulletin->userinfo['userid']){return false;}$notifications = array();if ($vbulletin->options['enablepms']AND $vbulletin->userinfo['userid']AND($vbulletin->userinfo['pmunread']OR($vbulletin->userinfo['receivepm']AND$vbulletin->userinfo['permissions']['pmquota'])  )AND ($vbulletin->userinfo['permissions']['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'])){$notifications['pmunread'] = array('phrase' => $vbphrase['unread_private_messages'],'link'   => 'private.php' . $vbulletin->session->vars['sessionurl_q'],'order'  => 10);}if ($vbulletin->options['newrepcount']){if ($vbulletin->userinfo['newrepcount'] == 1){$new_reputation = $vbphrase['reputation_comment'];}else{$new_reputation = $vbphrase['reputation_comments'];}$notifications['newrepcount'] = array('phrase' => $new_reputation,'link'   => 'usercp.php?' . $vbulletin->session->vars['sessionurl'] . '#reprecv','order'  => 15);}if ($vbulletin->userinfo['vm_enable']AND$vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_visitor_messaging']AND$vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']){$notifications['vmunreadcount'] = array('phrase' => $vbphrase['unread_profile_visitor_messages'],'link'   => fetch_seo_url('member', $vbulletin->userinfo, array('tab' => 'visitor_messaging')),'order'  => 20);if ($vbulletin->userinfo['permissions']['visitormessagepermissions'] & $vbulletin->bf_ugp_visitormessagepermissions['canmanageownprofile']){$notifications['vmmoderatedcount'] = array('phrase' => $vbphrase['profile_visitor_messages_awaiting_approval'],'link'   => fetch_seo_url('member', $vbulletin->userinfo, array('tab' => 'visitor_messaging')),'order'  => 30);}}// check for incoming friend requests if user has permission to use the friends systemif (($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_friends']) AND ($vbulletin->userinfo['permissions']['genericpermissions2'] & $vbulletin->bf_ugp_genericpermissions2['canusefriends'])){$notifications['friendreqcount'] = array('phrase' => $vbphrase['incoming_friend_requests'],'link'   => 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=buddylist#irc','order'  => 40);}// social group invitations and join requestsif ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups']){// check for requests to join your own social groups, if user has permission to create groupsif ($vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['cancreategroups']){$notifications['socgroupreqcount'] = array('phrase' => $vbphrase['requests_to_join_your_social_groups'],'link'   => fetch_seo_url('grouphome', array(), array('do' => 'requests')),'order'  => 50);}// check for invitations to join social groups, if user has permission to join groupsif ($vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canjoingroups']){$notifications['socgroupinvitecount'] = array('phrase' => $vbphrase['invitations_to_join_social_groups'],'link'   => fetch_seo_url('grouphome', array(), array('do' => 'invitations')),'order'  => 60);}}// picture comment notificationsif ($vbulletin->options['pc_enabled']AND(($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_albums']AND$vbulletin->userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']AND$vbulletin->userinfo['permissions']['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canviewalbum']AND$vbulletin->userinfo['permissions']['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canalbum'])OR($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups']AND$vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canviewgroups']))){$notifications['pcunreadcount'] = array('phrase' => $vbphrase['unread_picture_comments'],'link'   => 'album.php?' . $vbulletin->session->vars['sessionurl'] . 'do=unread','order'  => 70);if ($vbulletin->userinfo['permissions']['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canmanagepiccomment']){$notifications['pcmoderatedcount'] = array('phrase' => $vbphrase['picture_comments_awaiting_approval'],'link'   => 'album.php?' . $vbulletin->session->vars['sessionurl'] . 'do=moderated','order'  => 80);}}if ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups']AND $vbulletin->options['socnet_groups_msg_enabled']AND $vbulletin->userinfo['permissions']['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canmanageowngroups']){$notifications['gmmoderatedcount'] = array('phrase' => $vbphrase['group_messages_awaiting_approval'],'link'   => fetch_seo_url('grouphome', array(), array('do' => 'moderatedgms')),'order'  => 90);}($hook = vBulletinHook::fetch_hook('notifications_list')) ? eval($hook) : false;$notifications_order = array();foreach ($notifications AS $userfield => $notification){$notifications_order["$notification[order]"]["$userfield"] = $userfield;}ksort($notifications_order);$notifications_total = 0;$notifications_menubits = '';foreach ($notifications_order AS $notification_order => $userfields){ksort($notifications_order["$notification_order"]);foreach ($userfields AS $userfield){$notification = $notifications["$userfield"];if (defined("VB_API") AND VB_API === true){$notification['name'] = $userfield;}if ($vbulletin->userinfo["$userfield"] > 0){$show['notifications'] = true;$notifications_total += $vbulletin->userinfo["$userfield"];$notification['total'] = vb_number_format($vbulletin->userinfo["$userfield"]);$templater = vB_Template::create('navbar_notifications_menubit');$templater->register('notification', $notification);$templater->register('notificationid', $userfield);$notifications_menubits .= $templater->render();}}}if (!$notifications_total){return false;}return array('bits'  => $notifications_menubits,'total' => vb_number_format($notifications_total));}/*** Resolves the required templates for a particular action.** @param string The action chosen* @param array Array of action-specific templates (for empty action, key 'none')* @param array List of global templates (always needed)** @return array Array of required templates*/public static function fetch_required_template_list($action, $action_templates, $global_templates = array()){$action = (empty($action) ? 'none' : $action);if (!is_array($global_templates)){$global_templates = array();}if (!empty($action_templates["$action"]) AND is_array($action_templates["$action"])){$global_templates = array_merge($global_templates, $action_templates["$action"]);}return $global_templates;}/*** Caches the generally required templates and the specifically requested templates.** @param string Serialized array of template name => template id pairs*/protected function cache_templates($template_ids){global $vbulletin, $show;$cache = is_array($this->cache_templates) ? $this->cache_templates : array();$this->group_templates = is_array($this->group_templates) ? $this->group_templates : array();// Choose proper human verification templateif ($vbulletin->options['hv_type'] AND in_array('humanverify', $cache)){$cache = 'humanverify_' . strtolower($vbulletin->options['hv_type']);}// templates to be included in every single page...$cache = array_merge($cache, array(// the really important ones'header','footer','headinclude','headinclude_bottom',// ad location templates'ad_header_logo','ad_header_end','ad_navbar_below','ad_footer_start','ad_footer_end','ad_global_header1','ad_global_header2','ad_global_below_navbar','ad_global_above_footer','ad_showthread_firstpost_sig','ad_showthread_firstpost_start','ad_thread_first_post_content',// new private message script'pm_popup_script','memberaction_dropdown',// navbar construction'navbar','navbar_tabs','navbar_link','navbar_noticebit','navbar_notifications_menubit',// forumjump and go button'forumjump','forumjump_link','forumjump_subforum','gobutton','option',// multi-page navigation'pagenav','pagenav_curpage','pagenav_pagelink','pagenav_pagelinkrel','threadbit_pagelink',// misc useful'spacer_open','spacer_close','STANDARD_ERROR','STANDARD_REDIRECT',// facebook templates'facebook_header','facebook_footer','facebook_opengraph'));// if we are in a message editing page then get the editor templates$show['editor_css'] = false;if (defined('GET_EDIT_TEMPLATES')){$_get_edit_templates = explode(',', GET_EDIT_TEMPLATES);if (GET_EDIT_TEMPLATES === true OR in_array($_REQUEST['do'], $_get_edit_templates)){$cache = array_merge($cache, array(// ckeditor'editor_ckeditor','editor_smilie','editor_clientscript','editor_smilie_category','editor_smilie_row',// javascript menu builders'editor_jsoptions_font','editor_jsoptions_size',// smiliebox templates'editor_smiliebox',// needed for thread preview'bbcode_code','bbcode_html','bbcode_php','bbcode_quote','bbcode_video',// misc often used'newpost_threadmanage','newpost_disablesmiliesoption','newpost_preview','newpost_quote','posticonbit','posticons','newpost_usernamecode','newpost_errormessage','newpost_attachment','newpost_attachmentbit','forumrules'));$show['editor_css'] = true;}}($hook = vBulletinHook::fetch_hook('cache_templates')) ? eval($hook) : false;if ($this->group_templates){$wherelist = '';$cachelist = array_unique($this->group_templates);foreach($cachelist AS $group){list($name,$type) = explode('.',$group);$wherelist .= $wherelist ? ' OR ' : 'WHERE '; if($type){if ($name == 'class'){// Whole class e.g. class.vbblog$wherelist .= "title LIKE '{$type}_%'";}else{// Group list e.g. vbcms.grid$wherelist .= "title LIKE '{$name}_%{$type}%'"; } }else{// Single template$wherelist .= "title = '{$name}'"; }}$grouplist = $vbulletin->db->query_read_slave("SELECT titleFROM " . TABLE_PREFIX . "template$wherelist");while ($data = $vbulletin->db->fetch_array($grouplist)){$cache = $data['title'];}}cache_templates($cache, $template_ids);}/*** Builds the collapse array based on a string representing collapse sections.** @param string List of collapsed sections** @return array Array with 3 values set for each collapsed section*/public static function build_vbcollapse($collapse_string){$vbcollapse = array();if (!empty($collapse_string)){$val = preg_split('#\n#', $collapse_string, -1, PREG_SPLIT_NO_EMPTY);foreach ($val AS $key){$vbcollapse["collapseobj_$key"] = 'display:none;';$vbcollapse["collapseimg_$key"] = '_collapsed';$vbcollapse["collapsecel_$key"] = '_collapsed';}unset($val);}return $vbcollapse;}/*** Checks if there's a new PM and returns info about it if there is.** @return array|false Information about the PM or false if there is no new PM*/protected function check_new_pm(){global $vbulletin;if ($vbulletin->userinfo['userid'] AND $vbulletin->userinfo['pmpopup'] == 2 AND $vbulletin->options['checknewpm'] AND !defined('NOPMPOPUP')){$userdm =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT);$userdm->set_existing($vbulletin->userinfo);$userdm->set('pmpopup', 1);$userdm->save(true, 'pmpopup'); // 'pmpopup' tells db_update to issue a shutdownquery of the same nameunset($userdm);if (THIS_SCRIPT != 'private' AND THIS_SCRIPT != 'login'){$newpm = $vbulletin->db->query_first("SELECT pm.pmid, title, fromusernameFROM " . TABLE_PREFIX . "pmtext AS pmtextLEFT JOIN " . TABLE_PREFIX . "pm AS pm USING(pmtextid)WHERE pm.userid = " . $vbulletin->userinfo['userid'] . "AND pm.folderid = 0ORDER BY dateline DESCLIMIT 1");$newpm['username'] = addslashes_js(unhtmlspecialchars($newpm['fromusername']), '"');$newpm['title'] = addslashes_js(unhtmlspecialchars($newpm['title']), '"');return $newpm;}}return false;}/*** Determines if the user has global viewing permissions. There are exceptions* for certain scripts (like login) and actions that will always return true.** @return bool*/protected function has_global_view_permission(){global $vbulletin;if (!($vbulletin->userinfo['permissions']['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview'])){$allowed_scripts = array('register','login','image','sendmessage','subscription','ajax');if (!in_array(THIS_SCRIPT, $allowed_scripts)){return false;}else{$_doArray = array('contactus', 'docontactus', 'register', 'signup', 'requestemail', 'emailcode', 'activate', 'login', 'logout', 'lostpw', 'emailpassword', 'addmember', 'coppaform', 'resetpassword', 'regcheck', 'checkdate', 'removesubscription', 'imagereg', 'verifyusername');if (THIS_SCRIPT == 'sendmessage' AND $_REQUEST['do'] == ''){$_REQUEST['do'] = 'contactus';}if (THIS_SCRIPT == 'register' AND $_REQUEST['do'] == '' AND $vbulletin->GPC['a'] == ''){$_REQUEST['do'] = 'register';}$_aArray = array('act', 'ver', 'pwd');if (!in_array($_REQUEST['do'], $_doArray) AND !in_array($vbulletin->GPC['a'], $_aArray)){return false;}}}return true;}public function force_styleid($styleid){$this->force_styleid = $styleid;}}/*** Bootstrapping for forum-specific actions.** @package vBulletin*/class vB_Bootstrap_Forum extends vB_Bootstrap{/*** Reads some context based on general input information*/public function read_input_context(){global $vbulletin;parent::read_input_context();global $postinfo, $threadinfo, $foruminfo, $pollinfo;global $postid, $threadid, $forumid, $pollid;$vbulletin->input->clean_array_gpc('r', array('postid'     => TYPE_UINT,'threadid'   => TYPE_UINT,'forumid'    => TYPE_INT,'pollid'     => TYPE_UINT,));$codestyleid = 0;// Init post/thread/forum values$postinfo = array();$threadinfo = array();$foruminfo = array();// automatically query $postinfo, $threadinfo & $foruminfo if $threadid existsif ($vbulletin->GPC['postid'] AND $postinfo = verify_id('post', $vbulletin->GPC['postid'], 0, 1)){$postid = $postinfo['postid'];$vbulletin->GPC['threadid'] = $postinfo['threadid'];}// automatically query $threadinfo & $foruminfo if $threadid existsif ($vbulletin->GPC['threadid'] AND $threadinfo = verify_id('thread', $vbulletin->GPC['threadid'], 0, 1)){$threadid = $threadinfo['threadid'];$vbulletin->GPC['forumid'] = $forumid = $threadinfo['forumid'];if ($forumid){$foruminfo = fetch_foruminfo($threadinfo['forumid']);if (($foruminfo['styleoverride'] == 1 OR $vbulletin->userinfo['styleid'] == 0) AND !defined('BYPASS_STYLE_OVERRIDE')){$codestyleid = $foruminfo['styleid'];}}if ($vbulletin->GPC['pollid']){$pollinfo = verify_id('poll', $vbulletin->GPC['pollid'], 0, 1);$pollid = $pollinfo['pollid'];}}// automatically query $foruminfo if $forumid existselse if ($vbulletin->GPC['forumid']){$foruminfo = verify_id('forum', $vbulletin->GPC['forumid'], 0, 1);$forumid = $foruminfo['forumid'];if (($foruminfo['styleoverride'] == 1 OR $vbulletin->userinfo['styleid'] == 0) AND !defined('BYPASS_STYLE_OVERRIDE')){$codestyleid = $foruminfo['styleid'];}}// automatically query forum for style info if $pollid existselse if ($vbulletin->GPC['pollid'] AND THIS_SCRIPT == 'poll'){$pollinfo = verify_id('poll', $vbulletin->GPC['pollid'], 0, 1);$pollid = $pollinfo['pollid'];$threadinfo = fetch_threadinfo($pollinfo['threadid']);$threadid = $threadinfo['threadid'];$foruminfo = fetch_foruminfo($threadinfo['forumid']);$forumid = $foruminfo['forumid'];if (($foruminfo['styleoverride'] == 1 OR $vbulletin->userinfo['styleid'] == 0) AND !defined('BYPASS_STYLE_OVERRIDE')){$codestyleid = $foruminfo['styleid'];}}// #############################################################################// Redirect if this forum has a link// check if this forum is a link to an outside siteif (!empty($foruminfo['link']) AND trim($foruminfo['link']) != '' AND (THIS_SCRIPT != 'subscription' OR $_REQUEST['do'] != 'removesubscription')){// get permission to view forum$_permsgetter_ = 'forumdisplay';$forumperms = fetch_permissions($foruminfo['forumid']);if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])){print_no_permission();}// add session hash to local links if necessaryif (preg_match('#^([a-z0-9_]+\.php)(\?.*$)?#i', $foruminfo['link'], $match)){if ($match[2]){// we have a ?xyz part, put session url at beginning if necessary$query_string = preg_replace('/([^a-z0-9])(s|sessionhash)=[a-z0-9]{32}(&|&;)?/', '\\1', $match[2]);$foruminfo['link'] = $match[1] . '?' . $vbulletin->session->vars['sessionurl_js'] . substr($query_string, 1);}else{$foruminfo['link'] .= $vbulletin->session->vars['sessionurl_q'];}}verify_seo_url('forum', $foruminfo, array('pagenumber' => $_REQUEST['pagenumber']));exec_header_redirect($foruminfo['link'], 301);}$this->force_styleid = $codestyleid; }/*** Loads assorted show variables. Ideally, these would be used in templates,* but sometimes they're used within code.*/public function load_show_variables(){parent::load_show_variables();global $vbulletin, $show, $threadinfo, $foruminfo;$show['foruminfo'] = (THIS_SCRIPT == 'forumdisplay'AND $vbulletin->userinfo['forumpermissions']["$foruminfo[forumid]"] & $vbulletin->bf_ugp_forumpermissions['canview']);if (THIS_SCRIPT == 'showthread' AND $threadinfo['threadid']){if (!($vbulletin->userinfo['forumpermissions']["$foruminfo[forumid]"] & $vbulletin->bf_ugp_forumpermissions['canview'])OR(((!$threadinfo['visible'] AND !can_moderate($foruminfo['forumid'], 'canmoderateposts'))) OR ($threadinfo['isdeleted'] AND !can_moderate($foruminfo['forumid'])))OR(in_coventry($threadinfo['postuserid']) AND !can_moderate($foruminfo['forumid']))OR(!($vbulletin->userinfo['forumpermissions']["$foruminfo[forumid]"] & $vbulletin->bf_ugp_forumpermissions['canviewthreads']))OR(!($vbulletin->userinfo['forumpermissions']["$foruminfo[forumid]"] & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($threadinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))OR!verify_forum_password($foruminfo['forumid'], $foruminfo['password'], false)){$show['threadinfo'] = false;}else{$show['threadinfo'] = true;}}else{$show['threadinfo'] = false;}($hook = vBulletinHook::fetch_hook('load_forum_show_variables')) ? eval($hook) : false;}}
اختياري لهذا الربط بسبب الحماية على قواعد البيانات وبنفس الوقت الامان كما ان مركز التحميل على سيرفر اخرلقلة خبرتي البرمجية ارجو المساعدة  لاستخلاص البيانات وتضمينها ضمن ملف API الخاص بكليجا

خالص الشكر والتقدير مقدما
saanina
عبدالرحمــــن
مشاركات: 3762
اشترك في: 30 أغسطس 2004, 13:54

رد: ربط كليجا عن طريق API مع vBulletin 4.2.0

مشاركة بواسطة saanina »

لم نقم بتجربة النظام هذا على الاصدار 4 !
لذا لا اعتقد انه يعمل !

بالتوفيق
alaufi
عضو جديد
مشاركات: 5
اشترك في: 16 يوليو 2012, 15:19

Ree: ربط كليجا عن طريق API مع vBulletin 4.2.0

مشاركة بواسطة alaufi »

اشكرك على اهتمامك وردك 

برائيك وخبرتك ماهو الحل المقترح  للربط  وحل المشكلة مع جزيل الشكر؟!
7awas.com
عضو جديد
مشاركات: 72
اشترك في: 03 يونيو 2011, 10:45

رد: ربط كليجا عن طريق API مع vBulletin 4.2.0

مشاركة بواسطة 7awas.com »

+ ماهي طريقة الربط مع المنتدى باستخدام api حتى نقوم بالتجربة، ونتبادل الخبرات!

ربما تنجح أحد نسخ الـ vbulletin فيتم توثيق نجاح الربط بتلك النسخة للاخرين الذي يقومون بالبحث لاحقا ..

دمتم بـ ود
مؤيد
MoaYeaD
مشاركات: 3267
اشترك في: 19 يوليو 2010, 14:32

رد: ربط كليجا عن طريق API مع vBulletin 4.2.0

مشاركة بواسطة مؤيد »

أضف رد جديد