diff --git a/flag.rules.inc b/flag.rules.inc
index 75c5d37..2dc1d00 100644
--- a/flag.rules.inc
+++ b/flag.rules.inc
@@ -181,6 +181,29 @@ function flag_rules_action_info() {
       'group' => t('Flag'),
       'access callback' => 'flag_rules_integration_access',
     ),
+    'flag_fetch_entity_by_user' => array(
+      'label' => t('Fetch content flagged by user'),
+      'base' => 'flag_rules_action_fetch_entity_by_user',
+      'parameter' => array(
+        'flag' => array(
+          'type' => 'flag',
+          'label' => t('Flag'),
+        ),
+        'flagging_user' => array(
+          'type' => 'user',
+          'label' => t('User who flagged the content'),
+          'description' => t('For non-global flags, this is the user who flagged the content. (For global flags, this argument is ignored.)'),
+        ),
+      ),
+      'provides' => array(
+        'content_flagged_by_user' => array(
+          'label' => t('Content flagged by user'),
+          'type' => 'list<node>',
+        ),
+      ),
+      'group' => t('Flag'),
+      'access callback' => 'flag_rules_integration_access',
+    ),
   );
   $param_defaults = array(
     'flagging_user' => array(
@@ -301,6 +324,21 @@ function flag_rules_action_fetch_users($flag, $entity) {
 }
 
 /**
+ * Base action implementation: Fetch entities who were flagged a user.
+ */
+function flag_rules_action_fetch_entity_by_user($flag, $user) {
+  $result = db_select('flag_content', 'fc')
+    ->fields('fc', array('content_id'))
+    ->condition('content_type', $flag->content_type)
+    ->condition('uid', $user->uid)
+    ->condition('fid', $flag->fid)
+    ->execute();
+
+  $flagged = $result->fetchCol();
+  return array('content_flagged_by_user' => $flagged);
+}
+
+/**
  * Implements hook_rules_condition_info().
  */
 function flag_rules_condition_info() {
