summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar grunfink2025-07-25 18:44:04 +0200
committerGravatar grunfink2025-07-25 18:44:04 +0200
commit92f44e07cf24a2a25421a0ee28b5dece10f6511a (patch)
treed0c32365982a5292d9cd30081e96c327446097e8 /data.c
parentUpdated RELEASE_NOTES. (diff)
downloadsnac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.tar.gz
snac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.tar.xz
snac2-92f44e07cf24a2a25421a0ee28b5dece10f6511a.zip
New function delete_purged_posts().
Diffstat (limited to '')
-rw-r--r--data.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/data.c b/data.c
index f26da49..e6b7333 100644
--- a/data.c
+++ b/data.c
@@ -3840,6 +3840,43 @@ void purge_server(void)
3840} 3840}
3841 3841
3842 3842
3843void delete_purged_posts(snac *user, int days)
3844/* enqueues Delete activities for local purged messages */
3845{
3846 if (days == 0)
3847 return;
3848
3849 time_t mt = time(NULL) - days * 24 * 3600;
3850 xs *spec = xs_fmt("%s/public/" "*.json", user->basedir);
3851 xs *list = xs_glob(spec, 0, 0);
3852 const char *v;
3853
3854 xs_list_foreach(list, v) {
3855 if (mtime(v) < mt) {
3856 /* to be purged; is it a Note by us? */
3857 FILE *f;
3858
3859 if ((f = fopen(v, "r")) != NULL) {
3860 xs *msg = xs_json_load(f);
3861 fclose(f);
3862
3863 if (xs_is_dict(msg)) {
3864 const char *id = xs_dict_get(msg, "id");
3865
3866 if (xs_is_string(id) && xs_startswith(id, user->actor)) {
3867 xs *d_msg = msg_delete(user, id);
3868
3869 enqueue_message(user, d_msg);
3870
3871 snac_log(user, xs_fmt("enqueued Delete for purged message %s", id));
3872 }
3873 }
3874 }
3875 }
3876 }
3877}
3878
3879
3843void purge_user(snac *snac) 3880void purge_user(snac *snac)
3844/* do the purge for this user */ 3881/* do the purge for this user */
3845{ 3882{
@@ -3863,6 +3900,8 @@ void purge_user(snac *snac)
3863 pub_days = user_days; 3900 pub_days = user_days;
3864 } 3901 }
3865 3902
3903 delete_purged_posts(snac, pub_days);
3904
3866 _purge_user_subdir(snac, "hidden", priv_days); 3905 _purge_user_subdir(snac, "hidden", priv_days);
3867 _purge_user_subdir(snac, "private", priv_days); 3906 _purge_user_subdir(snac, "private", priv_days);
3868 3907