. /** * Retrieves all tags, unless the users * * @param string $p_username The user's username * @param string $p_password The user's password * @param int $p_page_number The page number to return data for * @param string $p_per_page The number of issues to return per page * @return array The tag data */ function mc_tag_get_all( $p_username, $p_password, $p_page_number, $p_per_page) { $t_user_id = mci_check_login( $p_username, $p_password ); if ( $t_user_id === false ) { return mci_soap_fault_login_failed(); } if ( !access_has_global_level( config_get( 'tag_view_threshold' ) ) ) return mci_soap_fault_access_denied( $t_user_id , 'No rights to view tags'); if ( $p_per_page == 0 ) $p_per_page = 1; $t_results = array(); $t_total_results = tag_count( '' ); $t_tags = tag_get_all('', $p_per_page, $p_per_page * ( $p_page_number - 1 ) ); while( $t_tag = db_fetch_array( $t_tags ) ) { $t_tag['user_id'] = mci_account_get_array_by_id ( $t_tag['user_id'] ); $t_tag['date_created'] = SoapObjectsFactory::newDateTimeVar($t_tag['date_created']); $t_tag['date_updated'] = SoapObjectsFactory::newDateTimeVar($t_tag['date_updated']); $t_results[] = $t_tag; } return array( 'results' => $t_results, 'total_results' => $t_total_results ); } /** * Creates a tag * * @param string $p_username The user's username * @param string $p_password The user's password * @param array $p_tag The tag to create * @return soap_fault|integer */ function mc_tag_add( $p_username, $p_password, $p_tag ) { $t_user_id = mci_check_login( $p_username, $p_password ); if ( $t_user_id === false ) { return mci_soap_fault_login_failed(); } if ( !access_has_global_level( config_get( 'tag_create_threshold' ) ) ) return mci_soap_fault_access_denied( $t_user_id ); $t_valid_matches = array(); $p_tag = SoapObjectsFactory::unwrapObject( $p_tag ); $t_tag_name = $p_tag['name']; $t_tag_description = array_key_exists('description', $p_tag) ? $p_tag['description'] : ''; if ( !tag_name_is_valid($t_tag_name, $t_valid_matches)) return SoapObjectsFactory::newSoapFault('Client', 'Invalid tag name : "' . $t_tag_name .'"' ); $t_matching_by_name = tag_get_by_name( $t_tag_name); if ( $t_matching_by_name != false ) return SoapObjectsFactory::newSoapFault('Client', 'A tag with the same name already exists , id: ' . $t_matching_by_name['id']); return tag_create($t_tag_name, $t_user_id, $t_tag_description); } /** * * Deletes a tag * * @param string $p_username The user's username * @param string $p_password The user's password * @param unknown_type $p_tag_id * @param int $p_tag_id The id of the tag * @return soap_fault|boolean */ function mc_tag_delete( $p_username, $p_password, $p_tag_id ) { $t_user_id = mci_check_login( $p_username, $p_password ); if ( $t_user_id === false ) { return mci_soap_fault_login_failed(); } if ( !access_has_global_level( config_get( 'tag_edit_threshold' ) ) ) return mci_soap_fault_access_denied( $t_user_id ); if ( ! tag_exists( $p_tag_id ) ) return SoapObjectsFactory::newSoapFault('Client', 'No tag with id ' . $p_tag_id); return tag_delete( $p_tag_id ); } function mci_tag_set_for_issue ( $p_issue_id, $p_tags, $p_user_id ) { $t_tag_ids_to_attach = array(); $t_tag_ids_to_detach = array(); $t_submitted_tag_ids = array(); $t_attached_tags = tag_bug_get_attached( $p_issue_id ); $t_attached_tag_ids = array(); foreach ( $t_attached_tags as $t_attached_tag ) $t_attached_tag_ids[] = $t_attached_tag['id']; foreach ( $p_tags as $t_tag ) { $t_tag = SoapObjectsFactory::unwrapObject( $t_tag ); $t_submitted_tag_ids[] = $t_tag['id']; if ( in_array( $t_tag['id'], $t_attached_tag_ids) ) { continue; } else { $t_tag_ids_to_attach[] = $t_tag['id']; } } foreach ( $t_attached_tag_ids as $t_attached_tag_id ) { if ( in_array ( $t_attached_tag_id, $t_submitted_tag_ids) ) { continue; } else { $t_tag_ids_to_detach[] = $t_attached_tag_id; } } foreach ( $t_tag_ids_to_detach as $t_tag_id ) { if ( access_has_bug_level ( config_get('tag_detach_threshold'), $p_issue_id, $p_user_id ) ) { tag_bug_detach( $t_tag_id, $p_issue_id); } } foreach ( $t_tag_ids_to_attach as $t_tag_id ) { if ( access_has_bug_level ( config_get('tag_attach_threshold'), $p_issue_id, $p_user_id ) ) { tag_bug_attach( $t_tag_id, $p_issue_id); } } }