123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Rule for searching DB dependency
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\TestFramework\Dependency;
- class DbRule implements \Magento\TestFramework\Dependency\RuleInterface
- {
- /**
- * Map of tables and modules
- *
- * @var array
- */
- protected $_moduleTableMap;
- /**
- * Constructor
- *
- * @param array $tables
- */
- public function __construct(array $tables)
- {
- $this->_moduleTableMap = $tables;
- }
- /**
- * Gets alien dependencies information for current module by analyzing file's contents
- *
- * @param string $currentModule
- * @param string $fileType
- * @param string $file
- * @param string $contents
- * @return array
- */
- public function getDependencyInfo($currentModule, $fileType, $file, &$contents)
- {
- if ('php' != $fileType || !preg_match('#.*/(Setup|Resource)/.*\.php$#', $file)) {
- return [];
- }
- $dependenciesInfo = [];
- $unKnowTables = [];
- if (preg_match_all('#>gettable(name)?\([\'"]([^\'"]+)[\'"]\)#i', $contents, $matches)) {
- $tables = array_pop($matches);
- foreach ($tables as $table) {
- if (!isset($this->_moduleTableMap[$table])) {
- $unKnowTables[$file][$table] = $table;
- continue;
- }
- if (strtolower($currentModule) !== strtolower($this->_moduleTableMap[$table])) {
- $dependenciesInfo[] = [
- 'module' => $this->_moduleTableMap[$table],
- 'type' => \Magento\TestFramework\Dependency\RuleInterface::TYPE_HARD,
- 'source' => $table,
- ];
- }
- }
- }
- foreach ($unKnowTables as $tables) {
- foreach ($tables as $table) {
- $dependenciesInfo[] = ['module' => 'Unknown', 'source' => $table];
- }
- }
- return $dependenciesInfo;
- }
- }
|