Загрузка...

Баг на форуме

Тема в разделе Рассмотренные предложения создана пользователем SeWeR_inactive 23 фев 2015. 983 просмотра

  1. SeWeR_inactive
    SeWeR_inactive Автор темы 23 фев 2015 0 10 фев 2015
    Не знал куда написать. Так что создал тему.


    http://lolzteam.org/usercp.php - По данному адресу идет бесконечная перезагрузка страницы и пока не остановишь ее "насильно", не возможно редактировать профиль.


    Браузер Chrome.
     
  2. unit07
    unit07 23 фев 2015 6 3 июл 2014
    такая же фигня. ругается адблок
     
  3. Ремикс_inactive25789
    Код
    <?php/*======================================================================*\

    || #################################################################### ||

    || # vBulletin 4.2.0 Patch Level 3

    || # ---------------------------------------------------------------- # ||

    || # Copyright ©2000-2012 vBulletin Solutions Inc. All Rights Reserved. ||

    || # This file may not be redistributed in whole or significant part. # ||

    || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||

    || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||

    || #################################################################### ||

    \*======================================================================*/



    // ####################### SET PHP ENVIRONMENT ###########################

    error_reporting(E_ALL & ~E_NOTICE);



    // #################### DEFINE IMPORTANT CONSTANTS #######################

    define('THIS_SCRIPT', 'usercp');

    define('CSRF_PROTECTION', true);

    define('CONTENT_PAGE', false);



    // ################### PRE-CACHE TEMPLATES AND DATA ######################

    // get special phrase groups

    $phrasegroups = array('user', 'infractionlevel');



    // get special data templates from the datastore

    $specialtemplates = array(

    'iconcache',

    'noavatarperms',

    'smiliecache',

    'bbcodecache',

    );



    // pre-cache templates used by all actions

    $globaltemplates = array(

    'USERCP_SHELL',

    'USERCP',

    'usercp_nav_folderbit',

    // subscribed threads templates

    'threadbit',

    // subscribed forums templates

    'forumhome_subforums',

    'forumhome_forumbit_level1_post',

    'forumhome_forumbit_level1_nopost',

    'forumhome_forumbit_level2_post',

    'forumhome_forumbit_level2_nopost',

    'forumhome_lastpostby',

    // private messages templates

    'pm_messagelistbit',

    'pm_messagelistbit_ignore',

    // group templates

    'usercp_newvisitormessagebit',

    'socialgroups_discussion',

    'socialgroups_grouplist_bit',

    'socialgroups_groupmodlist_bit'

    );



    // pre-cache templates used by specific actions

    $actiontemplates = array();



    // ######################### REQUIRE BACK-END ############################

    require_once('./global.php');

    require_once(DIR . '/includes/functions_forumlist.php');

    require_once(DIR . '/includes/functions_user.php');



    // #######################################################################

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

    // #######################################################################



    if (!$vbulletin->userinfo['userid'] OR !($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview']))

    {

    print_no_permission();

    }



    // main page:

    $includecss = array();

    $includeiecss = array();

    ($hook = vBulletinHook::fetch_hook('usercp_start')) ? eval($hook) : false;



    // ############################### start reputation ###############################



    $repreceived = $repgiven = array();

    $show['reputation'] = $show['reputation_given'] = false;



    if ($vbulletin->options['reputationenable'])

    {

    require_once(DIR . '/includes/class_bbcode.php');

    $bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list());



    $vbulletin->options['showuserrates'] = intval($vbulletin->options['showuserrates']);

    $vbulletin->options['showuserraters'] = $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseeownrep'];



    $reputations = $db->query_read_slave("

    SELECT

    reputation.whoadded, reputation.postid, reputation.reputation, reputation.reason, reputation.dateline,

    user.userid, user.username, post.threadid, thread.title, thread.threadid, thread.forumid

    FROM " . TABLE_PREFIX . "reputation AS reputation

    LEFT JOIN " . TABLE_PREFIX . "post AS post ON (reputation.postid = post.postid AND post.visible = 1)

    LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid AND thread.visible = 1)

    LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = reputation.whoadded)

    WHERE reputation.userid = " . $vbulletin->userinfo['userid'] . "

    " . iif($vbulletin->options['showuserraters'] AND trim($vbulletin->userinfo['ignorelist']), " AND reputation.whoadded NOT IN (0," . str_replace(' ', ',', trim($vbulletin->userinfo['ignorelist'])). ")") . "

    ORDER BY reputation.dateline DESC

    LIMIT 0, " . $vbulletin->options['showuserrates']

    );



    $templater = vB_Template::create('usercp_reputationbits');

    while ($reputation = $db->fetch_array($reputations))

    {

    $forumperms = fetch_permissions($reputation['forumid']);

    if ((($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']))

    AND (($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) OR ($reputation['postuserid'] == $vbulletin->userinfo['userid'])))

    {

    if ($reputation['reputation'] > 0)

    {

    $posneg = 'pos';

    }

    else if ($reputation['reputation'] < 0)

    {

    $posneg = 'neg';

    }

    else

    {

    $posneg = 'balance';

    }



    $reputation['timeline'] = vbdate($vbulletin->options['timeformat'], $reputation['dateline']);

    $reputation['dateline'] = vbdate($vbulletin->options['dateformat'], $reputation['dateline']);

    $reputation['reason'] = $bbcode_parser->parse($reputation['reason']);



    if (empty($reputation['reason']))

    {

    $reputation['reason'] = $vbphrase['no_comment'];

    }



    $threadinfo = array(

    'threadid' => $reputation['threadid'],

    'title' => $reputation['title']

    );



    $show['reputation'] = true;

    $pageinfo = array(

    'p' => $reputation['postid']

    );



    ($hook = vBulletinHook::fetch_hook('usercp_reputationbit')) ? eval($hook) : false;



    $reputation['posneg'] = $posneg;

    $reputation['threadinfo'] = $threadinfo;

    $reputation['pageinfo'] = $pageinfo;



    $repreceived[] = $reputation;

    }

    }



    $reputations = $db->query_read_slave("

    SELECT user.username, reputation.userid, reputationid, reputation.postid, thread.postuserid,

    reason, post.threadid, reputation.dateline, thread.title, thread.forumid, reputation.reputation

    FROM " . TABLE_PREFIX . "reputation AS reputation

    LEFT JOIN " . TABLE_PREFIX . "post AS post ON(reputation.postid = post.postid)

    LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON(post.threadid = thread.threadid)

    LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = reputation.userid)

    WHERE reputation.whoadded = ".$vbulletin->userinfo['userid']."

    ORDER BY reputation.dateline DESC

    LIMIT 0, " . $vbulletin->options['showuserrates']

    );



    $templater = vB_Template::create('usercp_reputationbits_given');

    while ($reputation=$db->fetch_array($reputations))

    {

    $forumperms = fetch_permissions($reputation['forumid']);

    if ((($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']))

    AND (($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) OR ($reputation['postuserid'] == $vbulletin->userinfo['userid'])))

    {

    if ($reputation['reputation'] > 0)

    {

    $posneg = 'pos';

    }

    else if ($reputation['reputation'] < 0)

    {

    $posneg = 'neg';

    }

    else

    {

    $posneg = 'balance';

    }



    $show['reputation_given'] = true;

    $postinfo = array(

    'p' => $reputation['postid'],

    );



    $threadinfo = array(

    'title' => $reputation['title'],

    'threadid' => $reputation['threadid'],

    );



    $reputation['timestamp'] = $reputation['dateline'];

    $reputation['timeline'] = vbdate($vbulletin->options['timeformat'], $reputation['dateline']);

    $reputation['dateline'] = vbdate($vbulletin->options['dateformat'], $reputation['dateline']);

    $reputation['reason'] = $bbcode_parser->parse($reputation['reason']);



    if (empty($reputation['reason']))

    {

    $reputation['reason'] = $vbphrase['no_comment'];

    }



    $reputation['posneg'] = $posneg;

    $reputation['threadinfo'] = $threadinfo;

    $reputation['pageinfo'] = $pageinfo;



    ($hook = vBulletinHook::fetch_hook('usercp_reputationgivenbit')) ? eval($hook) : false;



    $repgiven[] = $reputation;

    }

    }



    if ($show['reputation_given'])

    {

    require_once(DIR . '/includes/functions_reputation.php');

    $vbulletin->userinfo['reppower'] = fetch_reppower($vbulletin->userinfo, $permissions);

    }



    if ($show['reputation'] AND $vbulletin->userinfo['newrepcount'])

    {

    $vbulletin->db->query_write("

    UPDATE " . TABLE_PREFIX . "user

    SET newrepcount = 0

    WHERE userid = ".$vbulletin->userinfo['userid']."

    ");

    }

    }



    // ############################### start pending friends ###############################



    $show['pendingfriendrequests'] = false;

    if ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_friends'])

    {

    $pending = $vbulletin->db->query_read("

    SELECT user.*

    FROM " . TABLE_PREFIX . "userlist AS userlist

    LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist_ignore

    ON (userlist_ignore.userid = " . $vbulletin->userinfo['userid'] . "

    AND userlist_ignore.relationid = userlist.userid AND userlist_ignore.type = 'ignore')

    INNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = userlist.userid)

    WHERE userlist.relationid = " . $vbulletin->userinfo['userid'] . "

    AND userlist.friend = 'pending' AND userlist_ignore.type IS NULL

    ");



    $pendingfriends = array();

    $pendingfriendrequests = 0;



    while ($pendingfriend = $vbulletin->db->fetch_array($pending))

    {

    $pendingfriendrequests++;

    if ($pendingfriendrequests <= 5)

    {

    fetch_musername($pendingfriend);

    $pendingfriend['comma'] = $vbphrase['comma_space'];

    $pendingfriends[$pendingfriendrequests] = $pendingfriend;

    }

    $show['pendingfriendrequests'] = true;

    }



    if ($pendingfriendrequests > 5)

    {

    $pendingfriends[5]['comma'] = '';

    $pendingfriendstext = construct_phrase($vbphrase['and_x_others'], vb_number_format($pendingfriendrequests - 5));

    }

    else

    {

    $pendingfriends[$pendingfriendrequests]['comma'] = '';

    $pendingfriendstext = '';

    }



    $pendingfriendrequests = vb_number_format($pendingfriendrequests);

    }



    // ############################### start visitor messages ###############################



    $show['newvisitormessages'] = false;

    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']

    )

    {

    list($newvisitormessages) = $vbulletin->db->query_first("

    SELECT COUNT(*)

    FROM " . TABLE_PREFIX . "visitormessage

    WHERE userid = " . $vbulletin->userinfo['userid'] . "

    AND state = 'visible'

    AND postuserid <> " . $vbulletin->userinfo['userid'] . "

    AND messageread = 0

    GROUP BY userid

    ", DBARRAY_NUM);



    $show['newvisitormessages'] = ($newvisitormessages ? true : false);



    if ($show['newvisitormessages'])

    {

    $visitormessages = $db->query_read("

    SELECT user.username, user.userid, visitormessage.vmid, visitormessage.dateline, visitormessage.pagetext

    FROM " . TABLE_PREFIX . "user AS user

    LEFT JOIN " . TABLE_PREFIX . "visitormessage AS visitormessage ON (user.userid = visitormessage.postuserid)

    WHERE visitormessage.userid = " . $vbulletin->userinfo['userid'] . "

    AND visitormessage.state = 'visible'

    AND visitormessage.messageread = 0

    ORDER BY visitormessage.dateline DESC

    LIMIT " . min($newvisitormessages, 5)

    );



    $pageinfo_vm = array(

    'tab' => 'visitor_messaging',

    );



    $newvisitormessagebits = '';

    while ($visitormessage = $db->fetch_array($visitormessages))

    {

    $visitormessage['formatteddate'] = vbdate($vbulletin->options['dateformat'], $visitormessage['dateline'], true);

    $visitormessage['formattedtime'] = vbdate($vbulletin->options['timeformat'], $visitormessage['dateline'], true);

    $visitormessage['summary'] = htmlspecialchars_uni(fetch_word_wrapped_string(fetch_censored_text(fetch_trimmed_title(strip_bbcode($visitormessage['pagetext'], true, true), 50))));



    $templater = vB_Template::create('usercp_newvisitormessagebit');

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

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

    $newvisitormessagebits .= $templater->render();

    }



    $newpublicmessages = vb_number_format($newpublicmessages);

    }

    }



    // ############################### start social groups ###############################



    $show['invitedgroups'] = false;

    $show['groupattention'] = false;



    if ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_groups'])

    {

    $groups = $db->query_read_slave("

    SELECT *

    FROM " . TABLE_PREFIX . "socialgroup

    WHERE creatoruserid = " . $vbulletin->userinfo['userid'] . "

    AND moderatedmembers > 0

    ORDER by dateline ASC

    ");



    $groupsneedattention = 0;

    $groupswaiting = array();



    while ($group = $db->fetch_array($groups))

    {

    $groupsneedattention++;

    if ($groupsneedattention <= 5)

    {

    $group['comma'] = $vbphrase['comma_space'];

    $group['moderatedmembers'] = vb_number_format($group['moderatedmembers']);

    $groupswaiting[$groupsneedattention] = $group;

    }

    }



    // Last element

    if ($groupsneedattention)

    {

    $clc = sizeof($groupswaiting);

    $groupswaiting[$clc]['comma'] = '';

    }



    if ($groupsneedattention > 5)

    {

    $show['moregroups'] = true;

    }



    $show['groupattention'] = ($groupsneedattention ? true : false);

    $groupsleft = vb_number_format($groupsneedattention - 5);

    $groupsneedattention = vb_number_format($groupsneedattention);



    if ($vbulletin->userinfo['socgroupinvitecount'] > 0)

    {

    $show['invitedgroups'] = true;



    $groups = $db->query_read_slave("

    SELECT socialgroup.* FROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember

    INNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup

    ON (socialgroupmember.groupid = socialgroup.groupid)

    WHERE socialgroupmember.userid = " . $vbulletin->userinfo['userid'] . "

    AND socialgroupmember.type = 'invited'

    ORDER BY socialgroupmember.dateline ASC

    LIMIT " . min($vbulletin->userinfo['socgroupinvitecount'], 5) . "

    ");



    $clc = 0;

    $pendinginvites = array();

    while($group = $db->fetch_array($groups))

    {

    $clc++;

    $group['comma'] = $vbphrase['comma_space'];

    $pendinginvites[$clc] = $group;

    }



    // Last element

    if ($clc)

    {

    $pendinginvites[$clc]['comma'] = '';

    }



    if ($vbulletin->userinfo['socgroupinvitecount'] > 5)

    {

    $show['moreinvites'] = true;

    }



    $invitesleft = vb_number_format($vbulletin->userinfo['socgroupinvitecount'] - 5);

    $vbulletin->userinfo['socgroupinvitecount'] = vb_number_format($vbulletin->userinfo['socgroupinvitecount']);

    }

    }



    // ############################### start picture comments ###############################

    $show['picture_comment_block'] = false;



    if ($vbulletin->options['pc_enabled']

    AND $vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_albums']

    AND $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']

    AND $permissions['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canviewalbum']

    AND $permissions['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canalbum']

    )

    {

    $show['picture_comment_block'] = ($show['picture_comment_block'] OR $vbulletin->userinfo['pcunreadcount']);

    $show['picture_comment_unread'] = ($vbulletin->userinfo['pcunreadcount'] != 0);



    $vbulletin->userinfo['pcunreadcount'] = vb_number_format($vbulletin->userinfo['pcunreadcount']);



    if ($permissions['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canmanagepiccomment'])

    {

    $show['picture_comment_block'] = ($show['picture_comment_block'] OR $vbulletin->userinfo['pcmoderatedcount']);

    $show['picture_comment_moderated'] = ($vbulletin->userinfo['pcmoderatedcount'] != 0);



    $vbulletin->userinfo['pcmoderatedcount'] = vb_number_format($vbulletin->userinfo['pcmoderatedcount']);

    }

    }



    // ############################### start private messages ###############################



    $show['privatemessages'] = false;

    if ($vbulletin->options['enablepms'] AND ($permissions['pmquota'] > 0 OR $vbulletin->userinfo['pmtotal']))

    {

    $pms = $db->query_read_slave("

    SELECT pm.*, pmtext.*, userlist_ignore.userid AS ignored

    " . iif($vbulletin->options['privallowicons'], ',icon.iconpath, icon.title AS icontitle') . "

    FROM " . TABLE_PREFIX . "pm AS pm

    INNER JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON(pmtext.pmtextid = pm.pmtextid)

    LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist_ignore ON

    (userlist_ignore.userid = " . $vbulletin->userinfo['userid'] . " AND userlist_ignore.relationid = pmtext.fromuserid AND userlist_ignore.type = 'ignore')

    " . iif($vbulletin->options['privallowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = pmtext.iconid)") . "

    WHERE pm.userid = " . $vbulletin->userinfo['userid'] . "

    AND pm.messageread = 0

    ORDER BY pmtext.dateline DESC

    LIMIT 5

    ");

    if ($db->num_rows($pms))

    {

    $messagelistbits = '';

    $show['pmcheckbox'] = false;

    $shown_unread_pms = 0;



    require_once(DIR . '/includes/functions_bigthree.php');

    while ($pm = $db->fetch_array($pms))

    {

    ($hook = vBulletinHook::fetch_hook('usercp_pmbit')) ? eval($hook) : false;



    if (in_coventry($pm['fromuserid']))

    {

    if (!can_moderate())

    {

    continue;

    }

    else

    {

    $templater = vB_Template::create('pm_messagelistbit_ignore');

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

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

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

    $messagelistbits .= $templater->render();



    $shown_unread_pms++;

    $show['privatemessages'] = true;

    }

    }

    else if ($pm['ignored'])

    {

    $templater = vB_Template::create('pm_messagelistbit_ignore');

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

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

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

    $messagelistbits .= $templater->render();



    $shown_unread_pms++;

    $show['privatemessages'] = true;

    }

    else

    {

    $pm['senddate'] = vbdate($vbulletin->options['dateformat'], $pm['dateline'], 1);

    $pm['sendtime'] = vbdate($vbulletin->options['timeformat'], $pm['dateline']);

    $pm['statusicon'] = 'new';



    $userinfo = array(

    'userid' => $pm['fromuserid'],

    'username' => $pm['fromusername'],

    );



    $show['pmicon'] = iif($pm['iconpath'], true, false);

    $show['unread'] = iif(!$pm['messageread'], true, false);



    $templater = vB_Template::create('pm_messagelistbit');

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

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

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

    $templater->register('userbit', array($userinfo));

    $messagelistbits .= $templater->render();



    $shown_unread_pms++;

    $show['privatemessages'] = true;

    }

    }



    $numpms = max($shown_unread_pms, $vbulletin->userinfo['pmunread']);

    $show['more_pms_link'] = ($numpms > 5);



    if ($messagelistbits)

    {

    $includecss['postbit-lite'] = 'private.css';

    $includeiecss['postbit-lite'] = 'private-ie.css';

    }

    }

    }





    // ############################### start subscribed forums ###############################



    // get only subscribed forums

    cache_ordered_forums(1, 0, $vbulletin->userinfo['userid']);

    $show['forums'] = false;

    foreach ($vbulletin->forumcache AS $forumid => $forum)

    {

    if ($forum['subscribeforumid'] != '')

    {

    $show['forums'] = true;

    }

    }

    if ($show['forums'])

    {

    if ($vbulletin->options['showmoderatorcolumn'])

    {

    cache_moderators();

    }

    else

    {

    cache_moderators($vbulletin->userinfo['userid']);

    }

    fetch_last_post_array();



    $show['collapsable_forums'] = true;

    $forumbits = construct_forum_bit(-1, 0, 1);



    if ($forumshown == 1)

    {

    $show['forums'] = true;

    }

    else

    {

    $show['forums'] = false;

    }

    }



    // ############################### start new subscribed to threads ###############################



    $show['threads'] = false;

    $numthreads = 0;



    // query thread ids

    if (!$vbulletin->options['threadmarking'])

    {

    if ($vbulletin->userinfo['userid'] AND in_coventry($vbulletin->userinfo['userid'], true))

    {

    $lastpost_info = ", IF(tachythreadpost.userid IS NULL, thread.lastpost, tachythreadpost.lastpost) AS lastposts";



    $tachyjoin = "LEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON " .

    "(tachythreadpost.threadid = subscribethread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ')';



    $lastpost_having = "HAVING lastposts > " . $vbulletin->userinfo['lastvisit'];

    }

    else

    {

    $lastpost_info = '';

    $tachyjoin = '';

    $lastpost_having = "AND lastpost > " . $vbulletin->userinfo['lastvisit'];

    }



    $getthreads = $db->query_read_slave("

    SELECT thread.threadid, thread.forumid, thread.postuserid, subscribethread.subscribethreadid

    $lastpost_info

    FROM " . TABLE_PREFIX . "subscribethread AS subscribethread

    INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid)

    $tachyjoin

    WHERE subscribethread.threadid = thread.threadid

    AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . "

    AND thread.visible = 1

    AND subscribethread.canview = 1

    $lastpost_having

    ");

    }

    else

    {

    $readtimeout = TIMENOW - ($vbulletin->options['markinglimit'] * 86400);



    if ($vbulletin->userinfo['userid'] AND in_coventry($vbulletin->userinfo['userid'], true))

    {

    $lastpost_info = ", IF(tachythreadpost.userid IS NULL, thread.lastpost, tachythreadpost.lastpost) AS lastposts";



    $tachyjoin = "LEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON " .

    "(tachythreadpost.threadid = subscribethread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ')';

    }

    else

    {

    $lastpost_info = ', thread.lastpost AS lastposts';

    $tachyjoin = '';

    }



    $getthreads = $db->query_read_slave("

    SELECT thread.threadid, thread.forumid, thread.postuserid,

    IF(threadread.readtime IS NULL, $readtimeout, IF(threadread.readtime < $readtimeout, $readtimeout, threadread.readtime)) AS threadread,

    IF(forumread.readtime IS NULL, $readtimeout, IF(forumread.readtime < $readtimeout, $readtimeout, forumread.readtime)) AS forumread,

    subscribethread.subscribethreadid

    $lastpost_info

    FROM " . TABLE_PREFIX . "subscribethread AS subscribethread

    INNER JOIN " . TABLE_PREFIX . "thread AS thread ON (subscribethread.threadid = thread.threadid)

    LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")

    LEFT JOIN " . TABLE_PREFIX . "forumread AS forumread ON (forumread.forumid = thread.forumid AND forumread.userid = " . $vbulletin->userinfo['userid'] . ")

    $tachyjoin

    WHERE subscribethread.userid = " . $vbulletin->userinfo['userid'] . "

    AND thread.visible = 1

    AND subscribethread.canview = 1

    HAVING lastposts > IF(threadread > forumread, threadread, forumread)

    ");

    }



    if ($totalthreads = $db->num_rows($getthreads))

    {

    $forumids = array();

    $threadids = array();

    $killthreads = array();

    while ($getthread = $db->fetch_array($getthreads))

    {

    $forumperms = fetch_permissions($getthread['forumid']);

    if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR ($getthread['postuserid'] != $vbulletin->userinfo['userid'] AND !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers'])))

    {

    $killthreads[] = $getthread['subscribethreadid'];

    continue;

    }

    $forumids["$getthread[forumid]"] = true;

    $threadids[] = $getthread['threadid'];

    }

    $threadids = implode(',', $threadids);

    }

    unset($getthread);

    $db->free_result($getthreads);



    if (!empty($killthreads))

    {

    // Update thread subscriptions

    $vbulletin->db->query_write("

    UPDATE " . TABLE_PREFIX . "subscribethread

    SET canview = 0

    WHERE subscribethreadid IN (" . implode(', ', $killthreads) . ")

    ");

    }



    // if there are some results to show, query the data

    if (!empty($threadids))

    {

    // get last read info for each thread

    $lastread = array();

    foreach (array_keys($forumids) AS $forumid)

    {

    if ($vbulletin->options['threadmarking'])

    {

    $lastread["$forumid"] = max($vbulletin->forumcache["$forumid"]['forumread'], TIMENOW - ($vbulletin->options['markinglimit'] * 86400));

    }

    else

    {

    $lastread["$forumid"] = max(intval(fetch_bbarray_cookie('forum_view', $forumid)), $vbulletin->userinfo['lastvisit']);

    }

    }



    // get thread preview?

    if ($vbulletin->options['threadpreview'] > 0)

    {

    $previewfield = 'post.pagetext AS preview,'

    Сравните, может поможет
     
  4. RaysMorgan
    RaysMorgan 23 фев 2015 Гойда 52 377 7 мар 2013
     
  5. renameduser_25121
    renameduser_25121 24 фев 2015 Заблокирован(а) 1 28 дек 2014
Загрузка...
Top