print "<tr>" . NEWLINE; print "<td class=form-lbl-r nowrap>" . lang_get('req_area') . "</td>" . NEWLINE; print "<td class=form-data-l>" . NEWLINE; print "<select name=req_area size=1>" . NEWLINE; $list_box = array(); $rows_areas = project_get_req_areas_covered($project_id); foreach ($rows_areas as $row_area) { $list_box[$row_area[REQ_AREA_COVERAGE_ID]] = $row_area[REQ_AREA_COVERAGE]; } $list_box[""] = ""; html_print_list_box_from_key_array($list_box, session_validate_form_get_field('req_area', $req_area_covered_id)); print "</select>" . NEWLINE; print "</td>" . NEWLINE; print "</tr>" . NEWLINE; # FUNCTIONALITY $rows_functions = requirement_get_functionality($project_id, $s_req_id); $function_ids = array(); foreach ($rows_functions as $key => $value) { $function_ids[] = $key; } print "<tr>" . NEWLINE; print "<td class=form-lbl-r nowrap>" . lang_get('functionality') . "</td>" . NEWLINE; print "<td class=form-data-l>" . NEWLINE; print "<select name='req_functionality[]' size=5 multiple>" . NEWLINE; $list_box = array(); $rows = project_get_req_functionality($project_id); foreach ($rows as $row) { $list_box[$row[REQ_FUNCT_ID]] = $row[REQ_FUNCT_NAME]; } html_print_list_box_from_key_array($list_box, session_validate_form_get_field('req_functionality', $function_ids)); print "</select>" . NEWLINE;
include "./api/include_api.php"; auth_authenticate_user(); $project_properties = session_get_project_properties(); $project_name = $project_properties['project_name']; $project_id = $project_properties['project_id']; $csv = ""; switch ($_GET['table']) { case "requirements": # columns to be included from the recordset and the # name to use in the header row $headers = array(REQ_ID => lang_get('req_id'), REQ_FILENAME => lang_get('req_name'), REQ_VERS_FILENAME => lang_get('file_name'), REQ_VERS_DETAIL => lang_get('req_detail'), REQ_DOC_TYPE_NAME => lang_get('req_type'), REQ_AREA_COVERAGE => lang_get('req_area'), REQ_PRIORITY => lang_get('req_priority'), REQ_VERS_STATUS => lang_get('status'), REQ_VERS_VERSION => lang_get('version'), REQ_LOCKED_BY => lang_get('req_locked_by'), REQ_LOCKED_DATE => lang_get('req_locked_date'), RELEASE_NAME => lang_get('release_name'), REQ_FUNCT_NAME => lang_get('functionality')); $display_options = session_get_display_options("requirements"); $rows = requirement_get_for_export($project_id, $page_number = 0, $display_options['order_by'], $display_options['order_dir'], $display_options['filter']['doc_type'], $display_options['filter']['status'], $display_options['filter']['area_covered'], $display_options['filter']['functionality'], $display_options['filter']['assign_release'], $display_options['filter']['show_versions'], $per_page = "", $display_options['filter']['requirement_search'], $display_options['filter']['priority']); # add functionality information of each requirement foreach ($rows as $row => $fields) { $rows_functions = requirement_get_functionality($project_id, $fields[REQ_ID]); $functionality = ""; foreach ($rows_functions as $key => $value) { $functionality .= $value . ": "; } $rows[$row][REQ_FUNCT_NAME] = $functionality; } break; case "tests": $headers = array(TEST_ID => lang_get('test_id'), TEST_NAME => lang_get('test_name'), TEST_MANUAL => lang_get('manual'), TEST_AUTOMATED => lang_get('automated'), TEST_BA_OWNER => lang_get('ba_owner'), TEST_QA_OWNER => lang_get('qa_owner'), TEST_TESTER => lang_get('tester'), TEST_TESTTYPE => lang_get('testtype'), TEST_AREA_TESTED => lang_get('area_tested'), TEST_PRIORITY => lang_get('priority'), TEST_STATUS => lang_get('test_status'), TEST_AUTO_PASS => lang_get('autopass')); $display_options = session_get_display_options("test"); $rows = test_filter_rows($project_id, $display_options['filter']['manual_auto'], $display_options['filter']['ba_owner'], $display_options['filter']['qa_owner'], $display_options['filter']['tester'], $display_options['filter']['test_type'], $display_options['filter']['area_tested'], $display_options['filter']['test_status'], $display_options['filter']['priority'], $display_options['filter']['per_page'], $display_options['filter']['test_search'], $display_options['order_by'], $display_options['order_dir'], $page_number = 0); break; case "test_workflow": $headers = array(TEST_ID => lang_get('test_id'), TEST_NAME => lang_get('test_name'), TEST_MANUAL => lang_get('manual'), TEST_AUTOMATED => lang_get('automated'), TEST_BA_OWNER => lang_get('ba_owner'), TEST_QA_OWNER => lang_get('qa_owner'), TEST_TESTER => lang_get('tester'), TEST_TESTTYPE => lang_get('testtype'), TEST_AREA_TESTED => lang_get('area_tested'), TEST_PRIORITY => lang_get('priority'), TEST_STATUS => lang_get('test_status'), TEST_AUTO_PASS => lang_get('autopass'), TEST_DATE_ASSIGNED => lang_get('date_assigned'), TEST_DATE_EXPECTED => lang_get('date_expected'), TEST_DATE_COMPLETE => lang_get('date_complete'), TEST_BA_SIGNOFF => lang_get('ba_signoff_date'), TEST_COMMENTS => lang_get('info')); $display_options = session_get_display_options("test_workflow");
html_tbl_print_sortable_header(lang_get('req_area'), REQ_AREA_COVERAGE_TBL . "." . REQ_AREA_COVERAGE, $order_by, $order_dir); html_tbl_print_sortable_header(lang_get('functionality')); html_tbl_print_sortable_header(lang_get('req_locked_by'), REQ_TBL . "." . REQ_LOCKED_BY, $order_by, $order_dir); html_tbl_print_sortable_header(lang_get('req_locked_date'), REQ_TBL . "." . REQ_LOCKED_DATE, $order_by, $order_dir); print "</tr>" . NEWLINE; foreach ($rows_requirement as $row_requirement) { $req_id = $row_requirement[REQ_ID]; $req_version_id = $row_requirement[REQ_VERS_UNIQUE_ID]; # Name of the % covered text input $pc_covered_input_name = "percent_covered_" . $req_id; # Get the % covered from db $percent_covered = test_requirement_get_pc_covered($s_test_id, $req_id); # Save and get the % covered from the session $percent_covered = session_validate_form_get_field($pc_covered_input_name, $percent_covered); $row_style = html_tbl_alternate_bgcolor($row_style); $rows_functions = requirement_get_functionality($s_project_id, $row_requirement[REQ_ID]); if (session_records_ischecked("test_req_assoc", $req_id)) { $checked = "checked"; } else { $checked = ""; } # Build list of records if (empty($records)) { $records = $req_id . " => ''"; } else { $records .= ", " . $req_id . " => ''"; } # Rows print "<tr class='{$row_style}'>" . NEWLINE; print "<td><input type='checkbox' name='row_{$req_id}' {$checked}></td>"; print "<td><input type=text name={$pc_covered_input_name} size=3 maxlength=3 value='{$percent_covered}'></td>";
function html_print_requirements_filter($project_id, $filter_doc_type, $filter_status, $filter_area_covered, $filter_functionality, $filter_assign_release, $filter_per_page = null, $filter_show_versions = null, $filter_search, $filter_priority) { print "<table class=width100>" . NEWLINE; print "<tr>" . NEWLINE; print "<td>" . NEWLINE; print "<table class=inner rules=none border=0>" . NEWLINE; # TITLES FOR FIRST ROW OF FORM print "<tr class=left>" . NEWLINE; print "<td class=form-header-c>" . lang_get('req_type') . "</td>" . NEWLINE; print "<td class=form-header-c>" . lang_get('status') . "</td>" . NEWLINE; print "<td class=form-header-c>" . lang_get('req_area') . "</td>" . NEWLINE; # if show versions or per page is displayed if (!is_null($filter_show_versions) || !is_null($filter_per_page)) { print "<td class=form-header-c>" . lang_get('show') . "</td>" . NEWLINE; } else { print "<td class='form-header-c'></td>" . NEWLINE; } if (!is_null($filter_show_versions)) { # SHOW VERSIONS print "<td class='left' rowspan=4>" . NEWLINE; print "<input id=all_versions type='radio' name='show_versions' value='all' " . ($filter_show_versions == "all" ? "checked" : "") . ">"; print "<label for=all_versions>" . lang_get("all_versions") . "</label><br>" . NEWLINE; print "<input id=latest_version type='radio' name='show_versions' value='latest' " . ($filter_show_versions == "latest" ? "checked" : "") . ">"; print "<label for=latest_version>" . lang_get("latest_version") . "</label>" . NEWLINE; print "</td>" . NEWLINE; //print"<td> </td>". NEWLINE; } print "<td align='center' rowspan=4><input type='submit' value='Filter'></td>" . NEWLINE; print "</tr>" . NEWLINE; # LIST BOXES FOR FIRST ROW print "<tr>" . NEWLINE; # DOC TYPE print "<td align='center'>" . NEWLINE; print "<select name='doc_type'>" . NEWLINE; html_print_list_box_from_key_array(requirement_get_types($project_id, $blank = true), $selected = $filter_doc_type); print "</select>" . NEWLINE; print "</td>" . NEWLINE; # STATUS print "<td align='center'>" . NEWLINE; print "<select name='status'>" . NEWLINE; html_print_list_box_from_array(requirement_get_distinct_field($project_id, REQ_VERS_STATUS, $blank = true), $selected = $filter_status); print "</select>" . NEWLINE; print "</td>" . NEWLINE; # AREA COVERED print "<td align='center'>" . NEWLINE; print "<select name='area_covered'>" . NEWLINE; html_print_list_box_from_key_array(requirement_get_areas($project_id, $blank = true), $selected = $filter_area_covered); print "</select>" . NEWLINE; print "</td>" . NEWLINE; if (!is_null($filter_per_page)) { # PER PAGE print "<td align='center'>" . NEWLINE; print "<input type='text' size='3' maxlength='3' name='per_page' value='{$filter_per_page}'>" . NEWLINE; print "</td>" . NEWLINE; } print "</tr>"; # TITLES FOR HEADER DIALOG - second row print "<tr>"; print "<td class=form-header-c>" . lang_get('functionality') . "</td>" . NEWLINE; print "<td class=form-header-c>" . lang_get('req_assign_release') . "</td>" . NEWLINE; print "<td class=form-header-c>" . lang_get('req_priority') . "</td>" . NEWLINE; print "<td class=form-header-c>" . lang_get('search') . "</td>" . NEWLINE; /* if( !is_null($filter_show_versions) ) { # SHOW VERSIONS print"<td class='left' rowspan=4>". NEWLINE; print"<input id=all_versions type='radio' name='show_versions' value='all' ".($filter_show_versions=="all"?"checked":"").">"; print"<label for=all_versions>".lang_get("all_versions")."</label><br>". NEWLINE; print"<input id=latest_version type='radio' name='show_versions' value='latest' ".($filter_show_versions=="latest"?"checked":"").">"; print"<label for=latest_version>".lang_get("latest_version")."</label>". NEWLINE; print"</td>". NEWLINE; //print"<td> </td>". NEWLINE; } */ print "</tr>"; # FUNCTIONALITY print "<tr>"; $functions = requirement_get_functionality($project_id); $functions[""] = ""; print "<td align='center'>" . NEWLINE; print "<select name='functionality'>" . NEWLINE; html_print_list_box_from_key_array($functions, $selected = $filter_functionality); print "</select>" . NEWLINE; print "</td>" . NEWLINE; # ASSIGNED TO RELEASE print "<td align='center'>" . NEWLINE; print "<select name='assign_release'>" . NEWLINE; $rows_releases = requirement_get_all_assoc_releases($project_id, $blank = true); html_print_list_box_from_key_array($rows_releases, $selected = $filter_assign_release); print "</select>" . NEWLINE; print "</td>" . NEWLINE; # PRIORITY print "<td align='center'>" . NEWLINE; print "<select name='priority'>" . NEWLINE; $rows_priority = requirement_get_priority(); html_print_list_box_from_array($rows_priority, $selected = $filter_priority); print "</select>" . NEWLINE; print "</td>" . NEWLINE; # SEARCH print "<td align='center'>" . NEWLINE; print "<input type='text' size='15' maxlength='25' name='requirement_search' value='" . $filter_search . "'>" . NEWLINE; print "</td>" . NEWLINE; print "</tr>"; print "</table>" . NEWLINE; print "</td>" . NEWLINE; print "</tr>" . NEWLINE; print "</table>" . NEWLINE; }
function requirement_email($project_id, $req_id, $recipients, $action, $discussion_id = null) { $display_generic_info = true; $display_generic_url = true; # Link to the req detail page $generic_url = RTH_URL . "login.php?project_id={$project_id}&page=requirement_detail_page.php&req_id={$req_id}"; $username = session_get_username(); $project_name = session_get_project_name(); $req_id = util_pad_id($req_id); $user_details = user_get_name_by_username($username); $first_name = $user_details[USER_FNAME]; $last_name = $user_details[USER_LNAME]; $rows_requirement = requirement_get_detail($project_id, $req_id); $row_requirement = $rows_requirement[0]; $req_version_id = $row_requirement[REQ_VERS_UNIQUE_ID]; $req_rec_or_file = $row_requirement[REQ_REC_FILE]; $req_name = $row_requirement[REQ_FILENAME]; $req_detail = $row_requirement[REQ_VERS_DETAIL]; $req_reason_for_change = $row_requirement[REQ_VERS_REASON_CHANGE]; $req_version_status = $row_requirement[REQ_VERS_STATUS]; $req_area_covered = $row_requirement[REQ_AREA_COVERAGE]; $req_doc_type = $row_requirement[REQ_DOC_TYPE_NAME]; $req_version = $row_requirement[REQ_VERS_VERSION]; # REQ FUNCTIONALITY $rows_functions = requirement_get_functionality($project_id, $req_id); $req_functionality = ""; foreach ($rows_functions as $function) { $req_functionality .= $function . ", "; } $req_functionality = trim($req_functionality, ", "); # CREATE EMAIL SUBJECT AND MESSAGE switch ($action) { case "updated": $subject = "RTH: Requirement Updated in {$project_name}"; $message = "Requirement {$req_name} has been updated by {$first_name} {$last_name}\n" . NEWLINE; break; case "new_version": $subject = "RTH: Requirement Updated in {$project_name}"; $message = "A new version of Requirement {$req_name} has been created by {$first_name} {$last_name}\n" . NEWLINE; break; case "delete": $display_generic_info = false; $display_generic_url = false; $url = RTH_URL . "login.php?project_id={$project_id}&page=requirement_page.php"; $subject = "RTH: Requirement Deleted in {$project_name}"; $message = "Requirement {$req_name} has been deleted by {$first_name} {$last_name}\n" . NEWLINE; $message .= "Click the following link to view Requirements in {$project_name}:" . NEWLINE; $message .= "{$url}\n" . NEWLINE; break; case "lock": $subject = "RTH: Requirement Locked in {$project_name}"; $message = "Requirement {$req_name} has been locked by {$first_name} {$last_name}\n" . NEWLINE; break; case "unlock": $subject = "RTH: Requirement Unlocked in {$project_name}"; $message = "Requirement {$req_name} has been unlocked by {$first_name} {$last_name}\n" . NEWLINE; break; case "edit_children": # Get requirement children //$rows_children = requirement_get_children($req_id); $generic_url .= "&tab=1"; $subject = "RTH: Requirement Updated in {$project_name}"; $message = "The children of Requirement {$req_name} have been edited by {$first_name} {$last_name}\n" . NEWLINE; break; case "edit_test_assoc": # Get related tests //$assoc_tests = requirement_get_test_relationships($req_id); $generic_url .= "&tab=2"; $subject = "RTH: Requirement Updated in {$project_name}"; $message = "The Tests related to Requirement {$req_name} have been edited by {$first_name} {$last_name}\n" . NEWLINE; break; case "edit_release_assoc": # Get related releases //requirement_get_assoc_releases($s_req_version_id) $generic_url .= "&tab=4"; $subject = "RTH: Requirement Updated in {$project_name}"; $message = "The Releases related to Requirement {$req_name} have been edited by {$first_name} {$last_name}\n" . NEWLINE; break; case "new_discussion": # GET LAST DISCUSSION $rows_discussion = discussion_get($req_id); foreach ($rows_discussion as $row_discussion) { $discussion_subject = $row_discussion[DISC_SUBJECT]; } $generic_url .= "&tab=3"; $subject = "RTH: New Requirement Discussion in {$project_name}"; $message = "A new discussion has been added to Requirement {$req_name} by {$first_name} {$last_name}\n" . NEWLINE; $message .= "" . lang_get("subject") . ": {$discussion_subject}\n" . NEWLINE; break; case "new_post": # GET DISCUSSION $row_discussion = discussion_get_detail($discussion_id); $discussion_subject = $row_discussion[DISC_SUBJECT]; $url = RTH_URL . "login.php?project_id={$project_id}&page=requirement_discussion_page.php&discussion_id={$discussion_id}"; $subject = "RTH: Discussion {$discussion_subject} in {$project_name}"; $message = "A new post has been added to Discussion {$discussion_subject} by {$first_name} {$last_name}\n" . NEWLINE; $message .= "Click the following link to view the discussion:\n" . NEWLINE; $message .= "{$url}\n" . NEWLINE; break; case "close_discussion": $display_generic_info = false; $display_generic_url = false; # GET DISCUSSION $row_discussion = discussion_get_detail($discussion_id); $discussion_subject = $row_discussion[DISC_SUBJECT]; $url = RTH_URL . "login.php?project_id={$project_id}&page=requirement_discussion_page.php&discussion_id={$discussion_id}"; $subject = "RTH: Discussion {$discussion_subject} in {$project_name}"; $message = "Discussion {$discussion_subject} has been closed by {$first_name} {$last_name}\n" . NEWLINE; $message .= "Click the following link to view the discussion:" . NEWLINE; $message .= "{$url}\n" . NEWLINE; break; } # Generic link to requirement detail page if the $url variable has been set if ($display_generic_url) { $message .= "Click the following link to view the Requirement:" . NEWLINE; $message .= "{$generic_url}\n" . NEWLINE; } if ($display_generic_info) { $message .= "" . lang_get("project_name") . ": {$project_name}" . NEWLINE; $message .= "" . lang_get("req_id") . ": {$req_id}" . NEWLINE; $message .= "" . lang_get("req_version") . ": {$req_version}" . NEWLINE; $message .= "" . lang_get("req_name") . ": {$req_name}" . NEWLINE; $message .= "" . lang_get("req_detail") . ": {$req_detail}" . NEWLINE; $message .= "" . lang_get("req_status") . ": {$req_version_status}" . NEWLINE; $message .= "" . lang_get("req_area_covered") . ": {$req_area_covered}" . NEWLINE; $message .= "" . lang_get("req_functionality") . ": {$req_functionality}" . NEWLINE; $message .= "" . lang_get("req_doc_type") . ": {$req_doc_type}\n" . NEWLINE; } # Convert any html entities stored in the DB back to characters. $message = util_unhtmlentities($message); email_send($recipients, $subject, $message); }