예제 #1
0
/**
* Marks a issue as read using the appropriate method.
*
* @param	array	Array of data for the issue being marked
* @param	integer	Unix timestamp that the issue is being marked read
*/
function mark_issue_read($issueinfo, $time)
{
    global $vbulletin, $db;
    $userid = $vbulletin->userinfo['userid'];
    $time = intval($time);
    if ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) {
        $db->query_write("\r\n\t\t\tREPLACE INTO " . TABLE_PREFIX . "pt_issueread\r\n\t\t\t\t(issueid, userid, readtime)\r\n\t\t\tVALUES\r\n\t\t\t\t({$issueinfo['issueid']}, " . $vbulletin->userinfo['userid'] . ", {$time})\r\n\t\t");
        // in case of automatic project marking
        if ($vbulletin->options['threadmarking'] == 2) {
            $perms_sql = build_issue_permissions_sql($vbulletin->userinfo);
            if (!empty($perms_sql["{$issueinfo['projectid']}"]["{$issueinfo['issuetypeid']}"])) {
                // TODO: be aware of private replies
                $unread = $db->query_first("\r\n\t\t\t\t\tSELECT COUNT(*) AS count\r\n\t\t\t\t\tFROM " . TABLE_PREFIX . "pt_issue AS issue\r\n\t\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "pt_issueread AS issueread ON (issueread.issueid = issue.issueid AND issueread.userid = " . $vbulletin->userinfo['userid'] . ")\r\n\t\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "pt_projectread AS projectread ON (projectread.projectid = issue.projectid AND projectread.userid = " . $vbulletin->userinfo['userid'] . " AND projectread.issuetypeid = issue.issuetypeid)\r\n\t\t\t\t\tWHERE issue.projectid = {$issueinfo['projectid']}\r\n\t\t\t\t\t\tAND " . $perms_sql["{$issueinfo['projectid']}"]["{$issueinfo['issuetypeid']}"] . "\r\n\t\t\t\t\t\tAND issue.lastpost > " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . "\r\n\t\t\t\t\t\tAND issue.lastpost > IF(issueread.readtime IS NOT NULL, issueread.readtime, " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . ")\r\n\t\t\t\t\t\tAND issue.lastpost > IF(projectread.readtime IS NOT NULL, projectread.readtime, " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . ")\r\n\t\t\t\t");
                if ($unread['count'] == 0) {
                    mark_project_read($issueinfo['projectid'], $issueinfo['issuetypeid'], TIMENOW);
                }
            }
        }
    } else {
        set_bbarray_cookie('issue_lastview', $issueinfo['issueid'], $time);
    }
}
예제 #2
0
파일: project.php 프로젝트: holandacz/nb4
     $issuelastposttime = current($issueoldcount);
     $marking = ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']);
     if ($marking) {
         $projectview = max($projectread["{$issuetypeid}"], TIMENOW - $vbulletin->options['markinglimit'] * 86400);
     } else {
         $projectview = intval(fetch_bbarray_cookie('project_lastview', $project['projectid'] . $issuetypeid));
         if (!$projectview) {
             $projectview = $vbulletin->userinfo['lastvisit'];
         }
     }
     $perms_sql = build_issue_permissions_sql($vbulletin->userinfo);
     if ($issuelastposttime >= $projectview and $perms_sql["{$project['projectid']}"]["{$issuetypeid}"]) {
         // TODO: may need to change this to take into account private replies
         $unread = $db->query_first("\r\n\t\t\t\tSELECT COUNT(*) AS count\r\n\t\t\t\tFROM " . TABLE_PREFIX . "pt_issue AS issue\r\n\t\t\t\t" . ($marking ? "\r\n\t\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "pt_issueread AS issueread ON (issueread.issueid = issue.issueid AND issueread.userid = " . $vbulletin->userinfo['userid'] . ")\r\n\t\t\t\t" : '') . "\r\n\t\t\t\tWHERE issue.projectid = {$project['projectid']}\r\n\t\t\t\t\tAND " . $perms_sql["{$project['projectid']}"]["{$issuetypeid}"] . "\r\n\t\t\t\t\tAND issue.lastpost > " . intval($projectview) . "\r\n\t\t\t\t\t" . ($marking ? "\r\n\t\t\t\t\t\tAND issue.lastpost > IF(issueread.readtime IS NOT NULL, issueread.readtime, " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . ")\r\n\t\t\t\t\t" : '') . "\r\n\t\t\t");
         if ($unread['count'] == 0) {
             mark_project_read($project['projectid'], $issuetypeid, TIMENOW);
         }
     }
 }
 // issue type selection options
 $issuetype_options = build_issuetype_select($projectperms, array_keys($vbulletin->pt_projects["{$project['projectid']}"]['types']), $vbulletin->GPC['issuetypeid']);
 $any_issuetype_selected = !$vbulletin->GPC['issuetypeid'] ? ' selected="selected"' : '';
 // version options
 $version_cache = array();
 foreach ($vbulletin->pt_versions as $version) {
     if ($version['projectid'] != $project['projectid']) {
         continue;
     }
     $version_cache["{$version['projectversiongroupid']}"][] = $version;
 }
 $appliesversion_options = '';