/** * Shows the new subscribed PT issues in the user CP * * @return string Printable issue bits */ function process_new_subscribed_issues() { global $vbulletin, $show, $stylevar, $vbphrase, $template_hook, $vbcollapse; if (!($vbulletin->userinfo['permissions']['ptpermissions'] & $vbulletin->bf_ugp_ptpermissions['canviewprojecttools'])) { return ''; } $perms_query = build_issue_permissions_query($vbulletin->userinfo); if (!$perms_query) { return ''; } $marking = ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']); if ($marking) { $issueview_sql = "IF(issueread IS NOT NULL, issueread, " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . ")"; $issueview_sql2 = "IF(projectread IS NOT NULL, projectread, " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . ")"; } else { $issueview = max(intval(fetch_bbarray_cookie('issue_lastview', $issue['issueid'])), intval(fetch_bbarray_cookie('issue_lastview', $issue['projectid'] . $issue['issuetypeid']))); if (!$issueview) { $issueview = $vbulletin->userinfo['lastvisit']; } $issueview_sql = intval($issueview); $issueview_sql2 = ''; } build_issue_private_lastpost_sql_all($vbulletin->userinfo, $private_lastpost_join, $private_lastpost_fields); $replycount_clause = fetch_private_replycount_clause($vbulletin->userinfo); $subscriptions = $vbulletin->db->query_read("\r\n\t\tSELECT issue.*, issuesubscribe.subscribetype,\r\n\t\t\tproject.title_clean\r\n\t\t\t" . ($marking ? ", issueread.readtime AS issueread, projectread.readtime AS projectread" : '') . "\r\n\t\t\t" . ($private_lastpost_fields ? ", {$private_lastpost_fields}" : '') . "\r\n\t\t\t" . ($replycount_clause ? ", {$replycount_clause} AS replycount" : '') . "\r\n\t\tFROM " . TABLE_PREFIX . "pt_issuesubscribe AS issuesubscribe\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuesubscribe.issueid)\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_project AS project ON (project.projectid = issue.projectid)\r\n\t\t" . ($marking ? "\r\n\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\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" : '') . "\r\n\t\t{$private_lastpost_join}\r\n\t\tWHERE issuesubscribe.userid = " . $vbulletin->userinfo['userid'] . "\r\n\t\t\tAND (" . implode(' OR ', $perms_query) . ")\r\n\t\tHAVING lastpost > " . intval(TIMENOW - $vbulletin->options['markinglimit'] * 86400) . "\r\n\t\t\tAND lastpost > " . $issueview_sql . "\r\n\t\t\t" . (!empty($issueview_sql2) ? " AND lastpost > " . $issueview_sql2 : '') . "\r\n\t\tORDER BY lastpost DESC\r\n\t"); $show['issuebit_project_title'] = true; $subscriptionbits = ''; while ($issue = $vbulletin->db->fetch_array($subscriptions)) { $issue = prepare_issue($issue); eval('$subscriptionbits .= "' . fetch_template('pt_issuebit') . '";'); } if (!$subscriptionbits) { return ''; } eval('$return = "' . fetch_template('pt_usercp_subscriptions') . '";'); return $return; }
/** * Builds an issue bit for an issue list * * @param array Issue information * @param array Project information * @param array Array of issue permissions * * @return string Issue bit HTML */ function build_issue_bit($issue, $project, $issueperms) { global $vbulletin, $vbphrase, $stylevar, $show, $template_hook; $posting_perms = prepare_issue_posting_pemissions($issue, $issueperms); $show['edit_issue'] = $posting_perms['issue_edit']; $show['status_edit'] = $posting_perms['status_edit']; $issue = prepare_issue($issue); $template_name = $issue['visible'] == 'deleted' ? 'pt_issuebit_deleted' : 'pt_issuebit'; ($hook = vBulletinHook::fetch_hook('project_issuebit')) ? eval($hook) : false; eval('$return = "' . fetch_template($template_name) . '";'); return $return; }
/** * Builds a search result bit * * @param array Issue info * * @return string Search result bit HTML */ function build_pt_search_resultbit($issue) { global $vbulletin, $db, $show, $stylevar, $vbphrase, $template_hook; static $projectperms = array(); if (!isset($projectperms["{$issue['projectid']}"])) { $projectperms["{$issue['projectid']}"] = fetch_project_permissions($vbulletin->userinfo, $issue['projectid']); } $project = $vbulletin->pt_projects["{$issue['projectid']}"]; $issueperms = $projectperms["{$issue['projectid']}"]["{$issue['issuetypeid']}"]; $posting_perms = prepare_issue_posting_pemissions($issue, $issueperms); $show['edit_issue'] = $posting_perms['issue_edit']; $show['status_edit'] = $posting_perms['status_edit']; $issue = prepare_issue($issue); ($hook = vBulletinHook::fetch_hook('projectsearch_results_bit')) ? eval($hook) : false; eval('$resultbits .= "' . fetch_template('pt_searchresultbit') . '";'); return $resultbits; }
// that's too high and take them back to the last page seamlessly do { if (!$vbulletin->GPC['pagenumber']) { $vbulletin->GPC['pagenumber'] = 1; } $start = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->options['pt_issuesperpage']; $subscriptions = $db->query_read("\r\n\t\t\tSELECT SQL_CALC_FOUND_ROWS issue.*, issuesubscribe.subscribetype\r\n\t\t\t\t" . ($marking ? ", issueread.readtime AS issueread, projectread.readtime AS projectread" : '') . "\r\n\t\t\t\t" . ($private_lastpost_fields ? ", {$private_lastpost_fields}" : '') . "\r\n\t\t\t\t" . ($replycount_clause ? ", {$replycount_clause} AS replycount" : '') . "\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuesubscribe AS issuesubscribe\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuesubscribe.issueid)\r\n\t\t\t" . ($marking ? "\r\n\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\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" : '') . "\r\n\t\t\t{$private_lastpost_join}\r\n\t\t\tWHERE issuesubscribe.userid = " . $vbulletin->userinfo['userid'] . "\r\n\t\t\t\tAND (" . implode(' OR ', $perms_query) . ")\r\n\t\t\tORDER BY lastpost DESC\r\n\t\t\tLIMIT {$start}, " . $vbulletin->options['pt_issuesperpage']); list($issue_count) = $db->query_first("SELECT FOUND_ROWS()", DBARRAY_NUM); if ($start >= $issue_count) { $vbulletin->GPC['pagenumber'] = ceil($issue_count / $vbulletin->options['pt_issuesperpage']); } } while ($start >= $issue_count and $issue_count); $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->options['pt_issuesperpage'], $issue_count, 'projectpost.php?' . $vbulletin->session->vars['sessionurl'] . "do=managesubscriptions", ''); $subscriptionbits = ''; while ($issue = $db->fetch_array($subscriptions)) { $issue = prepare_issue($issue); $issue['notification'] = $vbphrase["{$issue['subscribetype']}"]; ($hook = vBulletinHook::fetch_hook('projectpost_subscription_bit')) ? eval($hook) : false; eval('$subscriptionbits .= "' . fetch_template('pt_subscriptionbit') . '";'); } // project subscriptions build_project_private_lastpost_sql_all($vbulletin->userinfo, $private_lastpost_join, $private_lastpost_fields); $projecttype_subscriptions = $db->query_read("\r\n\t\tSELECT project.*, projecttype.*\r\n\t\t\t" . ($private_lastpost_fields ? ", {$private_lastpost_fields}" : '') . "\r\n\t\t\t, projecttypesubscribe.subscribetype\r\n\t\tFROM " . TABLE_PREFIX . "pt_projecttypesubscribe AS projecttypesubscribe\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_projecttype AS projecttype ON\r\n\t\t\t(projecttype.projectid = projecttypesubscribe.projectid AND projecttype.issuetypeid = projecttypesubscribe.issuetypeid)\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_project AS project ON (project.projectid = projecttypesubscribe.projectid)\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_issuetype AS issuetype ON (issuetype.issuetypeid = projecttypesubscribe.issuetypeid)\r\n\t\t{$private_lastpost_join}\r\n\t\tWHERE projecttypesubscribe.userid = " . $vbulletin->userinfo['userid'] . "\r\n\t\tORDER BY project.displayorder, issuetype.displayorder\r\n\t"); $project_subscriptionbits = ''; while ($projecttype = $db->fetch_array($projecttype_subscriptions)) { $issueperms = fetch_project_permissions($vbulletin->userinfo, $projecttype['projectid'], $projecttype['issuetypeid']); if (!($issueperms['generalpermissions'] & $vbulletin->pt_bitfields['general']['canview'])) { continue; } $projecttype['issuetype'] = $vbphrase["issuetype_{$projecttype['issuetypeid']}_plural"]; if ($typeicon = $vbulletin->pt_issuetype["{$projecttype['issuetypeid']}"]['iconfile']) {