/** * Get the attachments that belong to the specified project. * * @param string $p_username The name of the user trying to access the versions. * @param string $p_password The password of the user. * @param integer $p_project_id The id of the project to retrieve the attachments for. * @return Array representing a ProjectAttachmentDataArray structure. */ function mc_project_get_attachments($p_username, $p_password, $p_project_id) { $t_user_id = mci_check_login($p_username, $p_password); if ($t_user_id === false) { return mci_soap_fault_login_failed(); } # Check if project documentation feature is enabled. if (OFF == config_get('enable_project_documentation') || !file_is_uploading_enabled()) { return mci_soap_fault_access_denied($t_user_id); } if (!project_exists($p_project_id)) { return new soap_fault('Client', '', "Project '{$p_project_id}' does not exist."); } if (!mci_has_readonly_access($t_user_id, $p_project_id)) { return mci_soap_fault_access_denied($t_user_id); } $t_project_file_table = db_get_table('project_file'); $t_project_table = db_get_table('project'); $t_project_user_list_table = db_get_table('project_user_list'); $t_user_table = db_get_table('user'); $t_pub = VS_PUBLIC; $t_priv = VS_PRIVATE; $t_admin = config_get_global('admin_site_threshold'); if ($p_project_id == ALL_PROJECTS) { # Select all the projects that the user has access to $t_projects = user_get_accessible_projects($t_user_id); } else { # Select the specific project $t_projects = array($p_project_id); } $t_projects[] = ALL_PROJECTS; # add ALL_PROJECTS to the list of projects to fetch $t_reqd_access = config_get('view_proj_doc_threshold'); if (is_array($t_reqd_access)) { if (1 == count($t_reqd_access)) { $t_access_clause = "= " . array_shift($t_reqd_access) . " "; } else { $t_access_clause = "IN (" . implode(',', $t_reqd_access) . ")"; } } else { $t_access_clause = ">= {$t_reqd_access} "; } $query = "SELECT pft.id, pft.project_id, pft.filename, pft.file_type, pft.filesize, pft.title, pft.description, pft.date_added\n\t\tFROM {$t_project_file_table} pft\n\t\tLEFT JOIN {$t_project_table} pt ON pft.project_id = pt.id\n\t\tLEFT JOIN {$t_project_user_list_table} pult\n\t\tON pft.project_id = pult.project_id AND pult.user_id = {$t_user_id}\n\t\tLEFT JOIN {$t_user_table} ut ON ut.id = {$t_user_id}\n\t\tWHERE pft.project_id in (" . implode(',', $t_projects) . ") AND\n\t\t( ( ( pt.view_state = {$t_pub} OR pt.view_state is null ) AND pult.user_id is null AND ut.access_level {$t_access_clause} ) OR\n\t\t( ( pult.user_id = {$t_user_id} ) AND ( pult.access_level {$t_access_clause} ) ) OR\n\t\t( ut.access_level = {$t_admin} ) )\n\t\tORDER BY pt.name ASC, pft.title ASC"; $result = db_query($query); $num_files = db_num_rows($result); $t_result = array(); for ($i = 0; $i < $num_files; $i++) { $row = db_fetch_array($result); $t_attachment = array(); $t_attachment['id'] = $row['id']; $t_attachment['filename'] = $row['filename']; $t_attachment['title'] = $row['title']; $t_attachment['description'] = $row['description']; $t_attachment['size'] = $row['filesize']; $t_attachment['content_type'] = $row['file_type']; $t_attachment['date_submitted'] = timestamp_to_iso8601($row['date_added']); $t_attachment['download_url'] = mci_get_mantis_path() . 'file_download.php?file_id=' . $row['id'] . '&type=doc'; $t_result[] = $t_attachment; } return $t_result; }
/** * Get the attachments that belong to the specified project. * * @param string $p_username The name of the user trying to access the versions. * @param string $p_password The password of the user. * @param integer $p_project_id The id of the project to retrieve the attachments for. * @return array representing a ProjectAttachmentDataArray structure. */ function mc_project_get_attachments($p_username, $p_password, $p_project_id) { global $g_project_override; $t_user_id = mci_check_login($p_username, $p_password); if ($t_user_id === false) { return mci_soap_fault_login_failed(); } $g_project_override = $p_project_id; # Check if project documentation feature is enabled. if (OFF == config_get('enable_project_documentation') || !file_is_uploading_enabled()) { return mci_soap_fault_access_denied($t_user_id); } if (!project_exists($p_project_id)) { return SoapObjectsFactory::newSoapFault('Client', 'Project \'' . $p_project_id . '\' does not exist.'); } if (!mci_has_readonly_access($t_user_id, $p_project_id)) { return mci_soap_fault_access_denied($t_user_id); } $t_pub = VS_PUBLIC; $t_priv = VS_PRIVATE; $t_admin = config_get_global('admin_site_threshold'); if ($p_project_id == ALL_PROJECTS) { # Select all the projects that the user has access to $t_projects = user_get_accessible_projects($t_user_id); } else { # Select the specific project $t_projects = array($p_project_id); } $t_projects[] = ALL_PROJECTS; # add ALL_PROJECTS to the list of projects to fetch $t_reqd_access = config_get('view_proj_doc_threshold'); if (is_array($t_reqd_access)) { if (1 == count($t_reqd_access)) { $t_access_clause = '= ' . array_shift($t_reqd_access) . ' '; } else { $t_access_clause = 'IN (' . implode(',', $t_reqd_access) . ')'; } } else { $t_access_clause = '>= ' . $t_reqd_access; } $t_query = 'SELECT pft.id, pft.project_id, pft.filename, pft.file_type, pft.filesize, pft.title, pft.description, pft.date_added, pft.user_id FROM {project_file} pft LEFT JOIN {project} pt ON pft.project_id = pt.id LEFT JOIN {project_user_list} pult ON pft.project_id = pult.project_id AND pult.user_id = ' . db_param() . ' LEFT JOIN {user} ut ON ut.id = ' . db_param() . ' WHERE pft.project_id in (' . implode(',', $t_projects) . ') AND ( ( ( pt.view_state = ' . db_param() . ' OR pt.view_state is null ) AND pult.user_id is null AND ut.access_level ' . $t_access_clause . ' ) OR ( ( pult.user_id = ' . db_param() . ' ) AND ( pult.access_level ' . $t_access_clause . ' ) ) OR ( ut.access_level = ' . db_param() . ' ) ) ORDER BY pt.name ASC, pft.title ASC'; $t_result = db_query($t_query, array($t_user_id, $t_user_id, $t_pub, $t_user_id, $t_admin)); $t_num_files = db_num_rows($t_result); $t_attachments = array(); for ($i = 0; $i < $t_num_files; $i++) { $t_row = db_fetch_array($t_result); $t_attachment = array(); $t_attachment['id'] = $t_row['id']; $t_attachment['filename'] = $t_row['filename']; $t_attachment['title'] = $t_row['title']; $t_attachment['description'] = $t_row['description']; $t_attachment['size'] = $t_row['filesize']; $t_attachment['content_type'] = $t_row['file_type']; $t_attachment['date_submitted'] = SoapObjectsFactory::newDateTimeVar($t_row['date_added']); $t_attachment['download_url'] = mci_get_mantis_path() . 'file_download.php?file_id=' . $t_row['id'] . '&type=doc'; $t_attachment['user_id'] = $t_row['user_id']; $t_attachments[] = $t_attachment; } return $t_attachments; }
/** * Get the attachments of an issue. * * @param integer $p_issue_id The id of the issue to retrieve the attachments for. * @return array that represents an AttachmentData structure */ function mci_issue_get_attachments($p_issue_id) { $t_attachment_rows = bug_get_attachments($p_issue_id); if ($t_attachment_rows == null) { return array(); } $t_result = array(); foreach ($t_attachment_rows as $t_attachment_row) { if (!file_can_view_bug_attachments($p_issue_id, (int) $t_attachment_row['user_id'])) { continue; } $t_attachment = array(); $t_attachment['id'] = $t_attachment_row['id']; $t_attachment['filename'] = $t_attachment_row['filename']; $t_attachment['size'] = $t_attachment_row['filesize']; $t_attachment['content_type'] = $t_attachment_row['file_type']; $t_attachment['date_submitted'] = SoapObjectsFactory::newDateTimeVar($t_attachment_row['date_added']); $t_attachment['download_url'] = mci_get_mantis_path() . 'file_download.php?file_id=' . $t_attachment_row['id'] . '&type=bug'; $t_attachment['user_id'] = $t_attachment_row['user_id']; $t_result[] = $t_attachment; } return $t_result; }
/** * Get the attachments of an issue. * * @param integer $p_issue_id The id of the issue to retrieve the attachments for * @return Array that represents an AttachmentData structure */ function mci_issue_get_attachments($p_issue_id) { $t_attachment_rows = bug_get_attachments($p_issue_id); $t_result = array(); foreach ($t_attachment_rows as $t_attachment_row) { $t_attachment = array(); $t_attachment['id'] = $t_attachment_row['id']; $t_attachment['filename'] = $t_attachment_row['filename']; $t_attachment['size'] = $t_attachment_row['filesize']; $t_attachment['content_type'] = $t_attachment_row['file_type']; $t_attachment['date_submitted'] = timestamp_to_iso8601(db_unixtimestamp($t_attachment_row['date_added'])); $t_attachment['download_url'] = mci_get_mantis_path() . 'file_download.php?file_id=' . $t_attachment_row['id'] . '&type=bug'; $t_result[] = $t_attachment; } return $t_result; }