Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AronNovak/28c7ea79823db3da7cf3ee77c4799577 to your computer and use it in GitHub Desktop.
Save AronNovak/28c7ea79823db3da7cf3ee77c4799577 to your computer and use it in GitHub Desktop.
Drupal 7 EntityReference Devel Generate speedup
diff --git a/entityreference.devel_generate.inc b/entityreference.devel_generate.inc
index fab46dd..d6d7d78 100644
--- a/entityreference.devel_generate.inc
+++ b/entityreference.devel_generate.inc
@@ -15,18 +15,20 @@ function entityreference_devel_generate($object, $field, $instance, $bundle) {
}
function _entityreference_devel_generate($object, $field, $instance, $bundle) {
- $object_field = array();
- // Get all the entity that are referencable here.
- $referencable_entity = entityreference_get_selection_handler($field, $instance)->getReferencableEntities();
- if (is_array($referencable_entity) && !empty($referencable_entity)) {
- // $referencable_entity is keyed by bundle type.
- $random_bundle = array_rand($referencable_entity);
- if (!empty($random_bundle)) {
- $target_id = array_rand($referencable_entity[$random_bundle]);
- if (!empty($referencable_entity[$random_bundle][$target_id])) {
- $object_field['target_id'] = $target_id;
- }
+ $object_field = [];
+ $map = &drupal_static(__FUNCTION__, []);
+ if (empty($map)) {
+ $result = db_query("SELECT type, nid from {node}");
+ foreach ($result as $item) {
+ $map[$item->type][] = $item->nid;
}
}
+ $target_bundle = array_rand($field['settings']['handler_settings']['target_bundles']);
+ if (!isset($map[$target_bundle])) {
+ return $object_field;
+ }
+
+ $object_field['target_id'] = array_rand($map[$target_bundle]);
+
return $object_field;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment