/** * Adds milestone ID criteria. Only allows one milestone to be specified. * * @param string * @param integer */ function add_milestoneid($name, $value) { $id = intval($value); if (!$id) { return PT_SEARCHGEN_CRITERIA_UNNECESSARY; } $milestone = $this->registry->db->query_first("\r\n\t\t\tSELECT *\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_milestone\r\n\t\t\tWHERE milestoneid = {$id}\r\n\t\t"); if (!$milestone) { return PT_SEARCHGEN_CRITERIA_UNNECESSARY; } require_once DIR . '/includes/functions_pt_milestone.php'; $projectperms = fetch_project_permissions($this->registry->userinfo, $milestone['projectid']); $milestone_types = fetch_viewable_milestone_types($projectperms); if (!$milestone_types) { // no permission, give a condition with no matches $this->where['milestoneid'] = "1=0"; } else { $this->where['milestoneid'] = "\r\n\t\t\t\tissue.milestoneid = {$id}\r\n\t\t\t\tAND issue.projectid = {$milestone['projectid']}\r\n\t\t\t\tAND issue.issuetypeid IN ('" . implode("','", $milestone_types) . "')\r\n\t\t\t"; } return PT_SEARCHGEN_CRITERIA_ADDED; }
} if ($show['search_options']) { $assignable_users = fetch_assignable_users_select($project['projectid']); $search_status_options = fetch_issue_status_search_select($projectperms); } // navbar and output $navbits = construct_navbits(array('project.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['projects'], "project.php?" . $vbulletin->session->vars['sessionurl'] . "projectid={$project['projectid']}" => $project['title_clean'], "projectmilestone.php?" . $vbulletin->session->vars['sessionurl'] . "projectid={$project['projectid']}" => $vbphrase['milestones'], '' => $milestone['title_clean'])); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('pt_milestone') . '");'); } // ####################################################################### if ($_REQUEST['do'] == 'project') { $vbulletin->input->clean_array_gpc('r', array('projectid' => TYPE_UINT, 'viewall' => TYPE_BOOL)); $project = verify_project($vbulletin->GPC['projectid']); $projectperms = fetch_project_permissions($vbulletin->userinfo, $project['projectid']); $milestone_types = fetch_viewable_milestone_types($projectperms); if (!$milestone_types) { print_no_permission(); } $milestone_data = $vbulletin->db->query_read("\r\n\t\tSELECT *\r\n\t\tFROM " . TABLE_PREFIX . "pt_milestone\r\n\t\tWHERE projectid = {$project['projectid']}\r\n\t\tORDER BY completeddate DESC, targetdate\r\n\t"); if (!$db->num_rows($milestone_data)) { standard_error(fetch_error('invalidid', $vbphrase['project'], $vbulletin->options['contactuslink'])); } $counts = fetch_milestone_count_data("\r\n\t\tmilestone.projectid = {$project['projectid']}\r\n\t\tAND milestonetypecount.issuetypeid IN ('" . implode("','", $milestone_types) . "')\r\n\t"); $active_milestones = ''; $no_target_milestones = ''; $completed_milestones = ''; $count_completed = 0; while ($milestone = $db->fetch_array($milestone_data)) { if ($milestone['completeddate'] and !$vbulletin->GPC['viewall']) { $count_completed++;
($hook = vBulletinHook::fetch_hook('project_timeline_complete')) ? eval($hook) : false; eval('print_output("' . fetch_template('pt_timeline_page') . '");'); } // ####################################################################### if ($_REQUEST['do'] == 'project') { $vbulletin->input->clean_array_gpc('r', array('projectid' => TYPE_UINT)); $project = verify_project($vbulletin->GPC['projectid']); $projectperms = fetch_project_permissions($vbulletin->userinfo, $project['projectid']); $perms_query = build_issue_permissions_query($vbulletin->userinfo); if (empty($perms_query["{$project['projectid']}"])) { print_no_permission(); } ($hook = vBulletinHook::fetch_hook('project_project_start')) ? eval($hook) : false; // milestones require_once DIR . '/includes/functions_pt_milestone.php'; if ($project['milestonecount'] and fetch_viewable_milestone_types($projectperms)) { $show['milestones'] = true; $project['milestonecount_formatted'] = vb_number_format($project['milestonecount']); } // activity list $timeline = ''; if ($vbulletin->options['pt_project_timelineentries']) { require_once DIR . '/includes/functions_pt_timeline.php'; $note_perms = build_issuenote_permissions_query($vbulletin->userinfo); $activity_results = fetch_activity_list('(' . $perms_query["{$project['projectid']}"] . ') AND (' . $note_perms["{$project['projectid']}"] . ')', $vbulletin->options['pt_project_timelineentries'], 0, false); $activity_groups = prepare_activity_list($activity_results); $activitybits = ''; foreach ($activity_groups as $groupid => $groupbits) { $group_date = make_group_date($groupid); ($hook = vBulletinHook::fetch_hook('project_timeline_group')) ? eval($hook) : false; eval('$activitybits .= "' . fetch_template('pt_timeline_group') . '";');