isDir()) { // Skip directories continue; } $source = str_replace($base, '', $file->getRealPath()); if ($file->getExtension() == 'php') { check_php($file->getRealPath(), $source); } elseif ($file->getExtension() == 'tpl') { check_smarty($file->getRealPath(), $source); } } function check_php($file, $source) { static $deprecated_php_functions = [ '->simpleQuerySingle', '->queryFetchAssocKey', '->queryFetchAssoc', '->queryFetch', '->simpleStatementFetchAssocKey', '->simpleStatementFetchAssoc', '->simpleStatementFetch', '->simpleStatement', '->escapeString', '->simpleExec', '->simpleUpdate', '->simpleInsert', 'utils::get(', 'utils::post(', 'utils::CRSF', ]; $content = file_get_contents($file); foreach ($deprecated_php_functions as $func) { if (stripos($content, $func) !== false) { fputs(STDERR, sprintf('ERROR: %s: la fonction %s a été supprimée de Garradin.', $source, $func) . PHP_EOL); } } } function check_smarty($file, $source) { $content = file_get_contents($file); if (preg_match('/\{.*`.*\}/sU', $content)) { fputs(STDERR, sprintf('ERROR: %s: la syntaxe `$variable` est invalide dans Smartyer, utiliser le modifieur |args:$variable', $source) . PHP_EOL); } if (preg_match('/\{\s*(section|php|switch|insert|capture)/', $content, $match)) { fputs(STDERR, sprintf('ERROR: %s: le bloc "%s" est absent dans Smartyer', $source, $match[1]) . PHP_EOL); } if (preg_match('/(\$smarty\.|\$tpl\.|\$templatelite\.)/', $content, $match)) { fputs(STDERR, sprintf('ERROR: %s: les variables "%s" sont absentes dans Smartyer', $source, $match[1]) . PHP_EOL); } if (preg_match('/\{.*\|escape/sU', $content)) { fputs(STDERR, sprintf('SUGGESTION: %s: le modifieur |escape n\'est plus nécessaire (escaping automatique)', $source) . PHP_EOL); } }