/**
  * doExecute
  *
  * @return  mixed
  */
 public function doExecute()
 {
     // Load SQL file.
     @($installFile = file_get_contents($this->config['dir.src'] . '/sql/install.sql'));
     @($uninstallFile = file_get_contents($this->config['dir.src'] . '/sql/uninstall.sql'));
     $installSql = StringHelper::parseVariable($installFile, $this->config['replace']);
     $uninstallSql = StringHelper::parseVariable($uninstallFile, $this->config['replace']);
     // Prevent import twice
     $table = '#__' . $this->config['name'] . '_' . $this->config['replace.controller.list.name.lower'];
     $db = Container::getInstance()->get('db');
     try {
         $db->getTableColumns($table);
     } catch (\RuntimeException $e) {
         // Import sql
         $this->controller->out('Importing SQL to table: ' . $table);
         $this->executeSql($installSql);
         $this->controller->out('Imported');
     }
     if (!strpos($installSql, $table)) {
         // Write SQL file to project.
         @($fp = fopen($this->config['dir.dest'] . '/sql/install.sql', 'a+'));
         @fputs($fp, "\n\n\n" . $installSql);
         @fclose($fp);
         @($fp = fopen($this->config['dir.dest'] . '/sql/uninstall.sql', 'a+'));
         @fputs($fp, "\n\n" . $uninstallSql);
         @fclose($fp);
     }
 }
 /**
  * Do this execute.
  *
  * @return  mixed
  */
 protected function doExecute()
 {
     $tmpl = file_get_contents(GENERATOR_BUNDLE_PATH . '/Template/test/testClass.php');
     $file = StringHelper::parseVariable($tmpl, $this->replace);
     Folder::create(dirname($this->config['replace.test.class.file']));
     file_put_contents($this->config['replace.test.class.file'], $file);
 }
 /**
  * copyFile
  *
  * @param string $src
  * @param string $dest
  * @param array  $replace
  *
  * @return  void
  */
 protected function copyFile($src, $dest, $replace = array())
 {
     // Replace dest file name.
     $dest = StringHelper::parseVariable($dest, $replace);
     if (is_file($dest)) {
         $this->io->out('File exists: ' . $dest);
     } else {
         $content = StringHelper::parseVariable(file_get_contents($src), $replace);
         if (File::write($dest, $content)) {
             $this->io->out('File created: ' . $dest);
         }
     }
 }
Exemplo n.º 4
0
 /**
  * convertPath
  *
  * @param string $path
  *
  * @return  string
  */
 protected function convertPath($path)
 {
     $user = Container::getInstance()->get('user');
     $date = DateHelper::getDate();
     $replace = array('username' => $user->username, 'name' => $user->name, 'session' => \JFactory::getSession()->getId(), 'year' => $date->year, 'month' => $date->month, 'day' => $date->day);
     return StringHelper::parseVariable($path, $replace);
 }
 /**
  * Execute the controller.
  *
  * @return  boolean  True if controller finished execution, false if the controller did not
  *                   finish execution. A controller might return false if some precondition for
  *                   the controller to run has not been satisfied.
  *
  * @throws  \LogicException
  * @throws  \RuntimeException
  */
 public function execute()
 {
     $package = $this->io->getArgument(0, new ValidatePrompter('Enter package name: '));
     $class = $this->io->getArgument(1, new ValidatePrompter('Enter class name: '));
     $class = StringNormalise::toClassNamespace($class);
     $target = $this->io->getArgument(2, $package . '\\' . $class . 'Test');
     $target = StringNormalise::toClassNamespace($target);
     $package = ucfirst($package);
     if (!class_exists($class)) {
         $class = 'Windwalker\\' . $package . '\\' . $class;
     }
     if (!class_exists($class)) {
         $this->out('Class not exists: ' . $class);
         exit;
     }
     $replace = $this->replace;
     $ref = new \ReflectionClass($class);
     $replace['origin.class.dir'] = dirname($ref->getFileName());
     $replace['origin.class.file'] = $ref->getFileName();
     $replace['origin.class.name'] = $ref->getName();
     $replace['origin.class.shortname'] = $ref->getShortName();
     $replace['origin.class.namespace'] = $ref->getNamespaceName();
     $replace['test.dir'] = WINDWALKER_ROOT . DIRECTORY_SEPARATOR . 'test';
     $replace['test.class.name'] = 'Windwalker\\Test\\' . $target;
     $replace['test.class.file'] = Path::clean($replace['test.dir'] . DIRECTORY_SEPARATOR . $target . '.php');
     $replace['test.class.dir'] = dirname($replace['test.class.file']);
     $replace['test.class.shortname'] = $this->getShortname(StringNormalise::toClassNamespace($replace['test.class.name']));
     $replace['test.class.namespace'] = $this->getNamespace($replace['test.class.name']);
     $this->replace = $replace;
     $config = new Registry();
     // Set replace to config.
     foreach ($this->replace as $key => $val) {
         $config->set('replace.' . $key, $val);
     }
     $methods = $ref->getMethods(\ReflectionMethod::IS_PUBLIC);
     $methodTmpl = file_get_contents(GENERATOR_BUNDLE_PATH . '/Template/test/testMethod.php');
     $methodCodes = array();
     foreach ($methods as $method) {
         $config['replace.origin.method'] = $method->getName();
         $config['replace.test.method'] = ucfirst($method->getName());
         $methodCodes[] = StringHelper::parseVariable($methodTmpl, $config->get('replace'));
     }
     $config['replace.test.methods'] = implode("", $methodCodes);
     $this->replace = $config->get('replace');
     $this->config = $config;
     $this->doAction(new GenClassAction());
     $this->out('Generate test class: ' . $replace['test.class.name'] . ' to file: ' . $replace['test.class.file'])->out();
     return true;
 }
 /**
  * getSubsystemText
  *
  * @param \SplFileinfo $file
  *
  * @return  string
  */
 protected function getSubsystemText(\SplFileinfo $file)
 {
     $text = file_get_contents($file);
     $text = substr($text, strpos($text, '; {{controller.item.name.cap}}') - strlen($text));
     return StringHelper::parseVariable($text, $this->config['replace']);
 }
 /**
  * Method to test parseVariable().
  *
  * @return void
  *
  * @covers Windwalker\String\StringHelper::parseVariable
  */
 public function testParseVariable()
 {
     $data['foo']['bar']['baz'] = 'Flower';
     $this->assertEquals('This is Flower', StringHelper::parseVariable('This is {{ foo.bar.baz }}', $data));
     $this->assertEquals('This is ', StringHelper::parseVariable('This is {{ foo.yoo }}', $data));
     $this->assertEquals('This is Flower', StringHelper::parseVariable('This is [ foo.bar.baz ]', $data, array('[', ']')));
 }