Example #1
0
 /**
  * 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;
 }