Beispiel #1
0
/**
* 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;
}
Beispiel #3
0
/**
* 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;
}
Beispiel #4
0
 // 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']) {