mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 09:34:04 +00:00 
			
		
		
		
	Can update the content of the posts
This commit is contained in:
		@@ -248,3 +248,15 @@ pub fn set_visibility_level(r: &mut HttpRequestHandler) -> RequestResult {
 | 
			
		||||
 | 
			
		||||
    r.success("Visibility level updated")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Update the content of a post
 | 
			
		||||
pub fn update_content(r: &mut HttpRequestHandler) -> RequestResult {
 | 
			
		||||
    let post = r.post_post_with_access("postID", PostAccessLevel::FULL_ACCESS)?;
 | 
			
		||||
    let new_content = r.post_content("new_content", 2, true)?;
 | 
			
		||||
 | 
			
		||||
    posts_helper::set_content(post.id, &new_content)?;
 | 
			
		||||
 | 
			
		||||
    // TODO : Delete the notifications targeting the current user about this post
 | 
			
		||||
 | 
			
		||||
    r.success("Content updated")
 | 
			
		||||
}
 | 
			
		||||
@@ -210,6 +210,8 @@ pub fn get_routes() -> Vec<Route> {
 | 
			
		||||
 | 
			
		||||
        Route::post("/posts/set_visibility_level", Box::new(posts_controller::set_visibility_level)),
 | 
			
		||||
 | 
			
		||||
        Route::post("/posts/update_content", Box::new(posts_controller::update_content)),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // Movies controller
 | 
			
		||||
        Route::post("/movies/get_list", Box::new(movies_controller::get_list)),
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ use crate::data::user::UserID;
 | 
			
		||||
use crate::helpers::{account_helper, api_helper, conversations_helper, friends_helper, groups_helper, movies_helper, posts_helper, user_helper, virtual_directory_helper};
 | 
			
		||||
use crate::helpers::virtual_directory_helper::VirtualDirType;
 | 
			
		||||
use crate::utils::pdf_utils::is_valid_pdf;
 | 
			
		||||
use crate::utils::string_utils::{check_url, remove_html_nodes};
 | 
			
		||||
use crate::utils::string_utils::{check_string_before_insert, check_url, remove_html_nodes};
 | 
			
		||||
use crate::utils::user_data_utils::{generate_new_user_data_file_name, prepare_file_creation, user_data_path};
 | 
			
		||||
use crate::utils::virtual_directories_utils::check_virtual_directory;
 | 
			
		||||
 | 
			
		||||
@@ -595,4 +595,19 @@ impl HttpRequestHandler {
 | 
			
		||||
 | 
			
		||||
        Ok(movie_id)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Get a content of a post and satinize it
 | 
			
		||||
    pub fn post_content(&mut self, name: &str, min_len: usize, required: bool) -> ResultBoxError<String> {
 | 
			
		||||
        let content = self.post_string_opt(name, min_len, required)?;
 | 
			
		||||
 | 
			
		||||
        if content.contains("data:image") {
 | 
			
		||||
            self.forbidden("Please do not include inline images!".to_string())?;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if !check_string_before_insert(&content) {
 | 
			
		||||
            self.forbidden(format!("The content inside {} was rejected!", name))?;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Ok(remove_html_nodes(&content))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -391,6 +391,14 @@ pub fn set_level(post_id: u64, level: PostVisibilityLevel) -> ResultBoxError {
 | 
			
		||||
        .exec()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Set a new content to the post
 | 
			
		||||
pub fn set_content(post_id: u64, new_content: &str) -> ResultBoxError {
 | 
			
		||||
    database::UpdateInfo::new(POSTS_TABLE)
 | 
			
		||||
        .cond_u64("ID", post_id)
 | 
			
		||||
        .set_str("texte", new_content)
 | 
			
		||||
        .exec()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Turn a post into a database entry
 | 
			
		||||
fn db_to_post(res: &database::RowResult) -> ResultBoxError<Post> {
 | 
			
		||||
    let user_id = if res.get_u64("ID_amis")? == 0 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user