/** * 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>'; }