X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Fsrc%2FUtility%2FFilter%2FContainsLogicFilter.php;fp=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Fsrc%2FUtility%2FFilter%2FContainsLogicFilter.php;h=82535df7e4634fc2ddf3694611aca145cabc17c4;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 diff --git a/web/modules/contrib/drupalmoduleupgrader/src/Utility/Filter/ContainsLogicFilter.php b/web/modules/contrib/drupalmoduleupgrader/src/Utility/Filter/ContainsLogicFilter.php new file mode 100644 index 000000000..82535df7e --- /dev/null +++ b/web/modules/contrib/drupalmoduleupgrader/src/Utility/Filter/ContainsLogicFilter.php @@ -0,0 +1,68 @@ +whitelist = array_unique(array_merge($this->whitelist, func_get_args())); + } + + /** + * Tests if a function contains logic: any branching operator, function + * call, or object instantiation. + * + * @param \Pharborist\ParentNode $node + * The node to test. + * + * @return boolean + */ + public function __invoke(ParentNode $node) { + $function_calls = $node + ->find(Filter::isInstanceOf('\Pharborist\Functions\FunctionCallNode')) + ->not(function(FunctionCallNode $call) { + return in_array($call->getName()->getText(), $this->whitelist); + }); + + if ($function_calls->isEmpty()) { + $filter = call_user_func_array('\Pharborist\Filter::isInstanceOf', static::$logic); + return (boolean) $node->find($filter)->count(); + } + else { + return TRUE; + } + } + +}