56 lines
1.5 KiB
Diff
56 lines
1.5 KiB
Diff
diff --git a/flag_lists.module b/flag_lists.module
|
|
index d829113..b3c04f0 100644
|
|
--- a/flag_lists.module
|
|
+++ b/flag_lists.module
|
|
@@ -1587,6 +1587,32 @@ function flag_lists_fix_link(&$link, $action) {
|
|
return $fcid;
|
|
}
|
|
|
|
+
|
|
+ /**
|
|
+ * Remove all entries of entity_id and type
|
|
+ *
|
|
+ * @param $entity_id
|
|
+ * Entity id which has been flagged.
|
|
+ * @param $type
|
|
+ * The entity type.
|
|
+ */
|
|
+ function _flag_lists_remove_entity($entity_id, $type) {
|
|
+ $query = db_select('flag_lists_content')
|
|
+ ->condition('entity_id', $entity_id)
|
|
+ ->condition('entity_type', $type);
|
|
+ $query->fields('flag_lists_content', array('fcid', 'fid', 'uid', 'sid'));
|
|
+ $items = $query->execute()->fetchAll();
|
|
+
|
|
+ if ($items) {
|
|
+ foreach ($items as $key => $value) {
|
|
+ db_delete('flag_lists_content')
|
|
+ ->condition('fcid', $value->fcid)
|
|
+ ->execute();
|
|
+ watchdog('flag_lists', t('Deleted entry @fcid from flat_lists_content', array('@fcid' => $value->fcid)));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
/**
|
|
* Updates the flag count for this content
|
|
*/
|
|
@@ -1766,3 +1792,17 @@ function flag_lists_views_form_substitutions() {
|
|
$select_all_placeholder => drupal_render($select_all),
|
|
);
|
|
}
|
|
+
|
|
+
|
|
+/**
|
|
+ * Implements hook_entity_delete
|
|
+ */
|
|
+function flag_lists_entity_delete($entity, $type) {
|
|
+ foreach (flag_get_flags($type) as $flag) {
|
|
+ if (isset($entity->vid)) {
|
|
+ $items = _flag_lists_remove_entity($entity->vid, $type);
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+
|