/**
 * Find all broken posts that have no matching category
 */
function dbm_find_broken_posts()
{
    global $DB, $Messages;
    // select broken items
    $sql = 'SELECT * FROM T_items__item
				WHERE post_canonical_slug_ID NOT IN (
					SELECT slug_ID FROM T_slug )';
    $broken_items = $DB->get_results($sql, OBJECT, 'Find broken posts');
    $num_deleted = 0;
    foreach ($broken_items as $row) {
        // delete broken items
        $broken_Item = new Item($row);
        if ($broken_Item->dbdelete()) {
            $num_deleted++;
        }
    }
    $Messages->add(sprintf(T_('Deleted %d posts.'), $num_deleted), 'success');
}
/**
 * Delete all broken posts that have no matching category
 */
function dbm_delete_broken_posts()
{
    global $DB, $Messages, $current_User;
    $num_deleted = 0;
    echo T_('Removing broken posts that have no matching category... ');
    evo_flush();
    // Delete the posts only by these IDs
    $post_IDs = trim(param('posts', '/^[\\d,]+$/', true), ',');
    $post_IDs = preg_replace('/(,){2,}/', ',', $post_IDs);
    if (!empty($post_IDs)) {
        // select broken items
        $SQL = new SQL();
        $SQL->SELECT('*');
        $SQL->FROM('T_items__item');
        $SQL->WHERE('post_main_cat_ID NOT IN ( SELECT cat_ID FROM T_categories )');
        $SQL->WHERE_and('post_ID IN ( ' . $post_IDs . ' )');
        $broken_items = $DB->get_results($SQL->get(), OBJECT, 'Find broken posts');
        foreach ($broken_items as $r => $row) {
            // delete broken items
            $broken_Item = new Item($row);
            if ($broken_Item->dbdelete()) {
                // Post was deleted successfully
                $num_deleted++;
            } else {
                // Post was NOT deleted
                echo '<p class="red">' . sprintf(T_('Cannot delete post with ID %s'), $broken_Item->ID) . '</p>';
            }
            if ($r % 100 == 0) {
                // Display a log dot after each 100 processed posts
                echo '. ';
                evo_flush();
            }
        }
    }
    echo '<p>' . sprintf(T_('Deleted %d posts.'), $num_deleted) . '</p>';
}