Пример #1
0
 /**
  * Constructor, does all this beautiful magic, loads all libs
  * registers all sorts of funky hooks, checks stuff and so on.
  */
 public function __construct()
 {
     // nette, nope, we're not going without you brother
     if (!defined('NETTE')) {
         require_once 'libs/Nette/Nette.min.php';
     }
     // If debugging is the process of removing bugs, then programming must be the process of putting them in. - Edsger W. Dijkstra
     //\Nette\Diagnostics\Debugger::$productionMode = FALSE;
     //\Nette\Diagnostics\Debugger::enable();
     // required libs
     $robotLoader = new \Nette\Loaders\RobotLoader();
     $robotLoader->addDirectory(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'libs' . DIRECTORY_SEPARATOR);
     $robotLoader->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
     $robotLoader->register();
     // cosntants define
     define('SUBSCRIBE_KEY', 'simpleSubscribe');
     define('SUBSCRIBE_CRON', 'simple_subscribe_cron');
     define('SUBSCRIBE_HOME_URL', get_option('siteurl'));
     define('SUBSCRIBE_FOLDER', plugins_url(NULL, __FILE__));
     define('SUBSCRIBE_ASSETS', SUBSCRIBE_FOLDER . '/assets/');
     define('SUBSCRIBE_TEMPLATES', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR);
     define('SUBSCRIBE_API_URL', SUBSCRIBE_HOME_URL . '/' . '?' . SUBSCRIBE_KEY);
     // init
     add_action('init', array($this, 'init'));
     //add_action('admin_init', array($this, 'on_plugin_activated_redirect') );
     // widgets + shortcodes
     \SimpleSubscribe\Widgets::register();
     \SimpleSubscribe\Shortcodes::register();
     // settings
     $this->settings = new \SimpleSubscribe\Settings(SUBSCRIBE_KEY);
     $this->settingsAll = $this->settings->getSettings();
 }
Пример #2
0
 /**
  * Find test suits to run
  * 
  * @param string $folder Where to look
  * @return string[]
  */
 protected function findSuits($folder)
 {
     $suits = [];
     $robot = new \Nette\Loaders\RobotLoader();
     $robot->setCacheStorage(new \Nette\Caching\Storages\DevNullStorage());
     $robot->addDirectory($folder);
     $robot->acceptFiles = "*.phpt";
     $robot->rebuild();
     $robot->register();
     $classes = $robot->getIndexedClasses();
     foreach ($classes as $class => $file) {
         $rc = new \Nette\Reflection\ClassType($class);
         if (!$rc->isAbstract() and $rc->isSubclassOf(TestCase::class)) {
             $suits[] = [$rc->getName(), $file];
         }
     }
     return $suits;
 }
Пример #3
0
 /**
  * Load Nette, Doctrine2, project classes and return Nette container
  * @return \SystemContainer Nette 2.2.X container
  */
 private function getNetteContainer()
 {
     $netteContainer = (require static::$netteDirectory . '/bootstrap.php');
     $loader = new \Nette\Loaders\RobotLoader();
     $loader->setCacheStorage(new \Nette\Caching\Storages\DevNullStorage());
     $loader->addDirectory(__DIR__);
     $loader->addDirectory(__DIR__ . '/../../../doctrine/annotations/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/cache/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/common/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/dbal/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/inflector/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/lexer/lib');
     $loader->addDirectory(__DIR__ . '/../../../doctrine/orm/lib');
     $loader->register();
     return $netteContainer;
 }
Пример #4
0
<?php

namespace ActiveMapperTests;

require_once __DIR__ . "/../libs/Nette/loader.php";
\Nette\Debug::enable(\Nette\Debug::DEVELOPMENT);
\Nette\Environment::setVariable("tempDir", __DIR__ . "/_temp");
$loader = new \Nette\Loaders\RobotLoader();
$loader->addDirectory(__DIR__ . "/../libs");
$loader->addDirectory(__DIR__ . "/../ActiveMapper");
$loader->addDirectory(__DIR__ . "/../examples/Models");
$loader->register();
\dibi::connect(array('driver' => "sqlite3", 'database' => ":memory:", 'formatDateTime' => "'Y-m-d H:i:s'", 'lazy' => TRUE, 'profiler' => TRUE));
\dibi::loadFile(__DIR__ . "/db.structure.sql");
\dibi::loadFile(__DIR__ . "/db.data.sql");
 /**
  * @return Nette\Loaders\RobotLoader
  */
 public function createServiceRobotLoader()
 {
     $service = new Nette\Loaders\RobotLoader();
     $service->setCacheStorage($this->getService('cacheStorage'));
     $service->addDirectory('/home/fuca/Projects/www/sportsclub/tests/../vendor/others');
     $service->addDirectory('/home/fuca/Projects/www/sportsclub/tests');
     $service->register();
     return $service;
 }
Пример #6
0
 protected function execute(InputInterface $input, OutputInterface $output) : int
 {
     $rootDir = realpath(__DIR__ . '/../..');
     $tmpDir = $rootDir . '/tmp';
     $confDir = $rootDir . '/conf';
     $configurator = new Configurator();
     $configurator->defaultExtensions = [];
     $configurator->setDebugMode(true);
     $configurator->setTempDirectory($tmpDir);
     $projectConfigFile = $input->getOption('configuration');
     $levelOption = $input->getOption(self::OPTION_LEVEL);
     $defaultLevelUsed = false;
     if ($projectConfigFile === null && $levelOption === null) {
         $levelOption = self::DEFAULT_LEVEL;
         $defaultLevelUsed = true;
     }
     $configFiles = [$confDir . '/config.neon'];
     if ($levelOption !== null) {
         $levelConfigFile = sprintf('%s/config.level%s.neon', $confDir, $levelOption);
         if (!is_file($levelConfigFile)) {
             $output->writeln(sprintf('Level config file %s was not found.', $levelConfigFile));
             return 1;
         }
         $configFiles[] = $levelConfigFile;
     }
     if ($projectConfigFile !== null) {
         $projectConfigRealFilePath = realpath($projectConfigFile);
         if (!is_file($projectConfigFile)) {
             $output->writeln(sprintf('Project config file at path %s does not exist.', $projectConfigRealFilePath !== false ? $projectConfigRealFilePath : $projectConfigFile));
             return 1;
         }
         $configFiles[] = $projectConfigRealFilePath;
     }
     foreach ($configFiles as $configFile) {
         $configurator->addConfig($configFile);
     }
     $configurator->addParameters(['rootDir' => $rootDir, 'tmpDir' => $tmpDir]);
     $container = $configurator->createContainer();
     $consoleStyle = new ErrorsConsoleStyle($input, $output);
     $memoryLimitFile = $container->parameters['memoryLimitFile'];
     if (file_exists($memoryLimitFile)) {
         $consoleStyle->note(sprintf("PHPStan crashed in the previous run probably because of excessive memory consumption.\nIt consumed around %s of memory.\n\nTo avoid this issue, increase the memory_limit directive in your php.ini file here:\n%s\n\nIf you can't or don't want to change the system-wide memory limit, run PHPStan like this:\n%s", file_get_contents($memoryLimitFile), php_ini_loaded_file(), sprintf('php -d memory_limit=XX %s', implode(' ', $_SERVER['argv']))));
         unlink($memoryLimitFile);
     }
     if (PHP_VERSION_ID >= 70100 && !property_exists(Catch_::class, 'types')) {
         $consoleStyle->note('You\'re running PHP >= 7.1, but you still have PHP-Parser version 2.x. This will lead to parse errors in case you use PHP 7.1 syntax like nullable parameters, iterable and void typehints, union exception types, or class constant visibility. Update to PHP-Parser 3.x to dismiss this message.');
     }
     $this->setUpSignalHandler($consoleStyle, $memoryLimitFile);
     if (!isset($container->parameters['customRulesetUsed'])) {
         $output->writeln('');
         $output->writeln('<comment>No rules detected</comment>');
         $output->writeln('');
         $output->writeln('You have the following choices:');
         $output->writeln('');
         $output->writeln('* while running the analyse option, use the <info>--level</info> option to adjust your rule level - the higher the stricter');
         $output->writeln('');
         $output->writeln(sprintf('* create your own <info>custom ruleset</info> by selecting which rules you want to check by copying the service definitions from the built-in config level files in <options=bold>%s</>.', realpath(__DIR__ . '/../../conf')));
         $output->writeln('  * in this case, don\'t forget to define parameter <options=bold>customRulesetUsed</> in your config file.');
         $output->writeln('');
         return $this->handleReturn(1, $memoryLimitFile);
     } elseif ($container->parameters['customRulesetUsed']) {
         $defaultLevelUsed = false;
     }
     foreach ($container->parameters['autoload_files'] as $autoloadFile) {
         require_once $autoloadFile;
     }
     if (count($container->parameters['autoload_directories']) > 0) {
         $robotLoader = new \Nette\Loaders\RobotLoader();
         $robotLoader->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
         foreach ($container->parameters['autoload_directories'] as $directory) {
             $robotLoader->addDirectory($directory);
         }
         $robotLoader->register();
     }
     $application = $container->getByType(AnalyseApplication::class);
     return $this->handleReturn($application->analyse($input->getArgument('paths'), $consoleStyle, $defaultLevelUsed), $memoryLimitFile);
 }
Пример #7
0
 /**
  * @param \Venne\Module\IModule $module
  * @return array
  * @throws \Exception
  */
 protected function getAllClasses()
 {
     // find files
     $robotLoader = new \Nette\Loaders\RobotLoader();
     $robotLoader->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
     foreach ($this->context->parameters['modules'] as $name => $item) {
         if ($item[ModuleManager::MODULE_STATUS] === ModuleManager::STATUS_INSTALLED) {
             $path = $this->context->expand($item[ModuleManager::MODULE_PATH]) . '/' . ucfirst($name) . 'Module';
             if (file_exists($path)) {
                 $robotLoader->addDirectory($path);
             }
         }
     }
     $robotLoader->register();
     $entities = $robotLoader->getIndexedClasses();
     // classes
     $classes = array();
     foreach ($entities as $class => $item) {
         if (\Nette\Reflection\ClassType::from('\\' . $class)->hasAnnotation('ORM\\Entity')) {
             $classes[] = $class;
         }
     }
     $robotLoader->unregister();
     return $classes;
 }
Пример #8
0
 protected function execute(InputInterface $input, OutputInterface $output) : int
 {
     $rootDir = realpath(__DIR__ . '/../..');
     $tmpDir = $rootDir . '/tmp';
     $confDir = $rootDir . '/conf';
     $configurator = new Configurator();
     $configurator->defaultExtensions = [];
     $configurator->setDebugMode(true);
     $configurator->setTempDirectory($tmpDir);
     $configurator->enableDebugger($tmpDir . '/log');
     $projectConfigFile = $input->getOption('configuration');
     $levelOption = $input->getOption(self::OPTION_LEVEL);
     if ($projectConfigFile === null && $levelOption === null) {
         $levelOption = self::DEFAULT_LEVEL;
     }
     $configFiles = [$confDir . '/config.neon'];
     if ($levelOption !== null) {
         $levelConfigFile = sprintf('%s/config.level%s.neon', $confDir, $levelOption);
         if (!is_file($levelConfigFile)) {
             $output->writeln(sprintf('Level config file %s was not found.', $levelConfigFile));
             return 1;
         }
         $configFiles[] = $levelConfigFile;
     }
     if ($projectConfigFile !== null) {
         $projectConfigRealFilePath = realpath($projectConfigFile);
         if (!is_file($projectConfigFile)) {
             $output->writeln(sprintf('Project config file at path %s does not exist.', $projectConfigRealFilePath !== false ? $projectConfigRealFilePath : $projectConfigFile));
             return 1;
         }
         $configFiles[] = $projectConfigRealFilePath;
     }
     foreach ($configFiles as $configFile) {
         $configurator->addConfig($configFile);
     }
     $configurator->addParameters(['rootDir' => $rootDir]);
     $container = $configurator->createContainer();
     if (!isset($container->parameters['customRulesetUsed'])) {
         $output->writeln('');
         $output->writeln('<comment>No rules detected</comment>');
         $output->writeln('');
         $output->writeln('You have the following choices:');
         $output->writeln('');
         $output->writeln('* while running the analyse option, use the <info>--level</info> option to adjust your rule level - the higher the stricter');
         $output->writeln('');
         $output->writeln(sprintf('* create your own <info>custom ruleset</info> by selecting which rules you want to check by copying the service definitions from the built-in config level files in <options=bold>%s</>.', realpath(__DIR__ . '/../../conf')));
         $output->writeln('  * in this case, don\'t forget to define parameter <options=bold>customRulesetUsed</> in your config file.');
         $output->writeln('');
         return 1;
     }
     Debugger::$browser = $container->parameters['debug_cli_browser'];
     foreach ($container->parameters['autoload_files'] as $autoloadFile) {
         require_once $autoloadFile;
     }
     if (count($container->parameters['autoload_directories']) > 0) {
         $robotLoader = new \Nette\Loaders\RobotLoader();
         $robotLoader->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
         foreach ($container->parameters['autoload_directories'] as $directory) {
             $robotLoader->addDirectory($directory);
         }
         $robotLoader->register();
     }
     $application = $container->getByType(AnalyseApplication::class);
     return $application->analyse($input->getArgument('paths'), new ErrorsConsoleStyle($input, $output));
 }