Source of file DataIntegrityTestYML.php
Size: 15,002 Bytes - Last Modified: 2021-12-23T10:39:18+00:00
/var/www/docs.ssmods.com/process/src/src/DataIntegrityTestYML.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 | <?php namespace Sunnysideup\DataIntegrityTest; use db; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Control\Director; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\BuildTask; use Spyc; class DataIntegrityTestYML extends BuildTask { /** * standard SS variable * @var string */ protected $title = 'Check your config files for rogue entries.'; /** * standard SS variable * @var string */ protected $description = 'Checks a selection of yml files to see if there are any entries that may be incorrect.'; /** * list of files you want to check * @var array */ private static $config_files = ['app/_config/config.yml']; /** * list of classes that do not need to be checked * NB: they are all lowercase, as we test for them only lowercase! * @var array */ private static $classes_to_skip = ['name', 'before', 'only', 'after']; /** * list of variables that do not need checking... * @var array */ private static $variables_to_skip = []; public function run($request) { ini_set('max_execution_time', 3000); /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: require_once ' (case sensitive) * NEW: require_once ' (COMPLEX) * EXP: This should probably be replaced by PSR-4 autoloading! * ### @@@@ STOP REPLACEMENT @@@@ ### */ require_once 'thirdparty/spyc/spyc.php'; $filesArray = Config::inst()->get(DataIntegrityTestYML::class, 'config_files'); $classesToSkip = Config::inst()->get(DataIntegrityTestYML::class, 'classes_to_skip'); $variablesToSkip = Config::inst()->get(DataIntegrityTestYML::class, 'variables_to_skip'); foreach ($filesArray as $folderAndFileLocation) { db::alteration_message("<h2>Checking ${folderAndFileLocation}</h2>"); $fixtureFolderAndFile = Director::baseFolder() . '/' . $folderAndFileLocation; if (! file_exists($fixtureFolderAndFile)) { user_error('No custom configuration has been setup here : "' . $fixtureFolderAndFile . '" set the files here: DataIntegrityTestYML::config_files', E_USER_NOTICE); } $parser = new Spyc(); $arrayOfSettings = $parser->loadFile($fixtureFolderAndFile); /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ foreach ($arrayOfSettings as $className => $variables) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ if (in_array(strtolower($className), $classesToSkip, true)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message("${className} : skipped"); } else { echo '<br /><br />'; /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ if (! class_exists($className)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message("${className} does not exist", 'deleted'); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message("${className}", 'created'); foreach ($variables as $variable => $setting) { if ($variable === 'icon') { $fileLocationForOthers = Director::baseFolder() . '/' . $setting; $fileLocationForSiteTree = Director::baseFolder() . '/' . $setting . '-file.gif'; /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ if ($className::create() instanceof SiteTree) { if (! file_exists($fileLocationForSiteTree)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> icon ${fileLocationForSiteTree} can not be found", 'deleted'); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> icon ${fileLocationForSiteTree} exists", 'created'); } } else { if (! file_exists($fileLocationForOthers)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> icon ${fileLocationForOthers} can not be found", 'deleted'); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> icon ${fileLocationForOthers} exists", 'created'); } } } elseif ($variable === 'extensions') { if (! is_array($setting)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> extensions should be set as an array.", 'deleted'); } else { foreach ($setting as $extensionClassName) { if (! class_exists($extensionClassName)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> extension class <u>${extensionClassName}</u> does not exist", 'deleted'); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> extension class <u>${extensionClassName}</u> found", 'created'); } } } } elseif (in_array($variable, $variablesToSkip, true)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> skipped"); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ if (! property_exists($className, $variable)) { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> does not exist", 'deleted'); } else { /** * ### @@@@ START REPLACEMENT @@@@ ### * WHY: upgrade to SS4 * OLD: $className (case sensitive) * NEW: $className (COMPLEX) * EXP: Check if the class name can still be used as such * ### @@@@ STOP REPLACEMENT @@@@ ### */ db::alteration_message(" <u>${className}.${variable}</u> found", 'created'); } } } } } } } } } |