ContainsLogicFilter.php in Drupal 7 to 8/9 Module Upgrader 8
File
src/Utility/Filter/ContainsLogicFilter.php
View source
<?php
namespace Drupal\drupalmoduleupgrader\Utility\Filter;
use Pharborist\Filter;
use Pharborist\Functions\FunctionCallNode;
use Pharborist\ParentNode;
class ContainsLogicFilter {
protected $whitelist = [];
protected static $logic = [
'\\Pharborist\\ControlStructures\\IfNode',
'\\Pharborist\\ControlStructures\\SwitchNode',
'\\Pharborist\\Objects\\ClassMethodCallNode',
'\\Pharborist\\Objects\\ObjectMethodCallNode',
'\\Pharborist\\Objects\\NewNode',
'\\Pharborist\\Objects\\ClassConstantLookupNode',
];
public function whitelist() {
$this->whitelist = array_unique(array_merge($this->whitelist, func_get_args()));
}
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 (bool) $node
->find($filter)
->count();
}
else {
return TRUE;
}
}
}