/** * TODO: In future models will have more relations which might not delete automatically. It should be tested properly * TODO: Files should be deleted too * Deletes all boards, threads and posts with 'is_deleted = 1', handles relation between them. * @return array with deleted rows */ public static function clean() { $itemsToDelete = ['boardsIds' => [], 'threadsIds' => [], 'postsIds' => [], 'postDataIds' => [], 'postMessageIds' => []]; Post::getDeletedRows($itemsToDelete); Thread::getDeletedRows($itemsToDelete); Board::getDeletedRows($itemsToDelete); self::getPostDataIds($itemsToDelete); self::getPostMessageIds($itemsToDelete); /** * Deletes post_message's related to threads and posts */ $deleted['post_messages'] = PostMessage::deleteAll(['in', 'id', array_unique($itemsToDelete['postMessageIds'])]); /** * Deletes threads and posts because of FK */ $deleted['threads'] = Thread::deleteAll(['in', 'id', array_unique($itemsToDelete['threadsIds'])]); /** * Deleted posts and threads related to post_data */ $deleted['post_data'] = PostData::deleteAll(['in', 'id', array_unique($itemsToDelete['postDataIds'])]); /** * Deleted boards */ $deleted['boards'] = Board::deleteAll(['in', 'id', array_unique($itemsToDelete['boardsIds'])]); $deleted['posts'] = $deleted['post_data'] - $deleted['threads']; $deleted['total'] = $deleted['boards'] + $deleted['threads'] + $deleted['posts'] + $deleted['post_data'] + $deleted['post_messages']; return $deleted; }