44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Based entirely off of dereuromark's plugins as I was having trouble getting fixtures to load
 | 
						|
 * after moving the plugins outside of an existing cakephp app's plugins folder
 | 
						|
 *
 | 
						|
 * @link https://github.com/dereuromark/cakephp-tools/blob/master/tests/schema.php
 | 
						|
 */
 | 
						|
use Cake\Utility\Inflector;
 | 
						|
 | 
						|
$tables = [];
 | 
						|
 | 
						|
/**
 | 
						|
 * @var \DirectoryIterator<\DirectoryIterator> $iterator
 | 
						|
 */
 | 
						|
$iterator = new DirectoryIterator(__DIR__ . DS . 'Fixture');
 | 
						|
foreach ($iterator as $file) {
 | 
						|
	if (!preg_match('/(\w+)Fixture.php$/', (string)$file, $matches)) {
 | 
						|
		continue;
 | 
						|
	}
 | 
						|
 | 
						|
	$name = $matches[1];
 | 
						|
	$tableName = Inflector::underscore($name);
 | 
						|
	$class = 'CakeProducts\\Test\\Fixture\\' . $name . 'Fixture';
 | 
						|
	try {
 | 
						|
		$object = (new ReflectionClass($class))->getProperty('fields');
 | 
						|
	} catch (ReflectionException $e) {
 | 
						|
		continue;
 | 
						|
	}
 | 
						|
 | 
						|
	$array = $object->getDefaultValue();
 | 
						|
	$constraints = $array['_constraints'] ?? [];
 | 
						|
	$indexes = $array['_indexes'] ?? [];
 | 
						|
	unset($array['_constraints'], $array['_indexes'], $array['_options']);
 | 
						|
	$table = [
 | 
						|
		'table' => $tableName,
 | 
						|
		'columns' => $array,
 | 
						|
		'constraints' => $constraints,
 | 
						|
		'indexes' => $indexes,
 | 
						|
	];
 | 
						|
	$tables[$tableName] = $table;
 | 
						|
}
 | 
						|
 | 
						|
return $tables;
 |