X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Fsrc%2FPlugin%2FDMU%2FConverter%2FFunctions%2FEntityLoad.php;fp=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Fsrc%2FPlugin%2FDMU%2FConverter%2FFunctions%2FEntityLoad.php;h=f58c951e825b6909a83a3a8d3d068f1cd5ccd5ee;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Converter/Functions/EntityLoad.php b/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Converter/Functions/EntityLoad.php new file mode 100644 index 000000000..f58c951e8 --- /dev/null +++ b/web/modules/contrib/drupalmoduleupgrader/src/Plugin/DMU/Converter/Functions/EntityLoad.php @@ -0,0 +1,55 @@ +getArguments(); + + // If there were three arguments, the call is affecting the internal + // entity cache. Unfortunately, it's pretty much impossible to reliably + // determine whether or not they wanted to reset the cache, so let's just + // leave a FIXME. + if (sizeof($arguments) == 3) { + $this->buildFixMe('To reset the entity cache, use EntityStorageInterface::resetCache().')->insertBefore($call); + } + + $rewritten = ClassMethodCallNode::create('\Drupal', 'entityManager') + ->appendMethodCall('getStorage') + ->appendArgument(clone $arguments[0]); + + // If there's a third argument, conditions were passed. Not a recommended + // practice, but certain modules might have done it anyway. If we detect + // conditions, use loadByProperties(). + if (sizeof($arguments) > 2) { + return $rewritten + ->appendMethodCall('loadByProperties') + ->appendArgument(clone $arguments[2]); + } + else { + $rewritten->appendMethodCall('load'); + + if (sizeof($arguments) > 1 && $arguments[1] instanceof ArrayNode) { + $rewritten->appendArgument(clone $arguments[1]); + } + + return $rewritten; + } + } + +}