Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace WOW\Service;
- use Nette\Object;
- use Nette\DI\Container;
- use Nette\Utils\Finder;
- use Nette\Loaders\RobotLoader;
- use Nette\InvalidArgumentException;
- use Nette\FatalErrorException;
- use Nette\IOException;
- class ComponentInstaller extends Object
- {
- public $fileTypes = array();
- private $container;
- private $files;
- private $template;
- // komentáře se mi doplňovat nechce ...
- public function __construct(Container $container)
- {
- $this->container = new Container();
- $this->container->params['wwwDir'] = $container->params['wwwDir'];
- $this->container->params['appDir'] = $container->params['appDir'];
- $this->container->params['productionMode'] = $container->params['productionMode'];
- $this->container->freeze();
- $this->addFileType('jpg', '/images');
- $this->addFileType('png', '/images');
- $this->addFileType('gif', '/images');
- $this->addFileType('css', '/css');
- $this->addFileType('js', '/js');
- $this->setTemplate('/app/templates/@layout.latte');
- }
- public function addFileType($type, $relativePath)
- {
- array_push($this->fileTypes, $type);
- $this->container->params[$type] = $this->container->params['wwwDir'] . $relativePath;
- }
- public function setTemplate($templatePath)
- {
- // tohle je dost WTF
- $template = dirname($this->container->params['wwwDir']) . '/' . $templatePath;
- if (!is_file($template)) {
- throw new IOException("$template not found.");
- }
- $this->template = $template;
- }
- public function install(IComponent $class)
- {
- if ($this->isProduction()) {
- return;
- } // zbytečně uzavíráš velký kus kódu do závorek a odsazuješ ho
- $className = $class->reflection->name;
- $classes = $this->getClasses();
- // na určení, kde je třída definována ti stačí reflexe, nemuší obtěžovat robotloader
- $this->container->params['sourcePath'] = $this->getPath($classes[$className]);
- $this->files = $this->findFiles();
- // tohle použití nedává moc smysl
- $this->fileCopy();
- $this->createTemplateLink();
- }
- private function isProduction()
- {
- return $this->container->params['productionMode'];
- }
- private function findFiles()
- {
- $files = array();
- foreach ($this->fileTypes as $key => $type) {
- $fileTypes[$key] = '*.' . $type;
- }
- foreach (Finder::findFiles($fileTypes)->from($this->container->params['sourcePath']) as $file) {
- $files[] = $file->getRealPath();
- } // zbytečně definované proměnné
- foreach($this->fileTypes as $type) {
- $reg = "/\.$type$/";
- foreach($files as $file) {
- if(preg_match($reg, $file)) {
- $sortedFiles[$type][] = $file;
- }
- }
- }
- return $sortedFiles;
- }
- private function fileCopy()
- {
- foreach ($this->files as $fileType => $files) {
- foreach ($files as $source) {
- $target = $this->container->params[$fileType];
- copy($source, $target . '/' . basename($source));
- } // zbytečně definované proměnné
- }
- }
- private function createTemplateLink()
- {
- //todo
- $template = file_get_contents($this->template);
- }
- private function getPath($path)
- {
- $path = explode('\\', $path);
- end($path);
- unset($path[key($path)]);
- return implode('\\', $path); // zbytečně definované proměnné
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment