Ran into a situation today where I had to delete content from a group programmatically. Basically I have a setup where a group can only have one of a specific type of content posted to their group at any one time. I have it set up so a user can control which one is posted into the group but it needs to restrict them to only allow one.
Here is how I was able to delete all posts of a specific content type in a specific group:
$content_type = 'my_content_type'; $group_id = 25; $query = db_select('og_membership', 'ogm'); $query ->condition('ogm.group_type', 'node', '=') ->condition('ogm.entity_type', 'node', '=') ->condition('ogm.gid', $group_id, '=') ->fields('ogm', array('id')) ->join('node', 'n', "ogm.etid = n.nid AND n.type = :ctype", array(':ctype' => $content_type)); $results = $query->execute(); $ids = array(); foreach ($results AS $result) { $ids[] = $result->id; } if (!empty($ids)) { og_membership_delete_multiple($ids); }
No comments:
Post a Comment
Thanks for your comment.