/**
  * Create a default email layout.
  *
  * @param string          $directory
  * @param OutputInterface $output
  * 
  * @return $this
  */
 protected function createEmailLayout($directory, $output)
 {
     File::copyIfNone(dirname(__FILE__) . '/../stubs/app/views/emails/layouts/default.blade.stub', $directory . '/app/views/emails/layouts/default.blade.php');
     $output->writeln('default email layout created');
     return $this;
 }
 /**
  * Create a custom model class for other models to extend.
  *
  * @param string          $directory
  * @param OutputInterface $output
  * 
  * @return $this
  */
 protected function createCustomModel($directory, $output)
 {
     File::copyIfNone(dirname(__FILE__) . '/../stubs/app/models/Model.stub', $directory . '/app/models/Model.php');
     $output->writeln('custom model installed');
     return $this;
 }
 /**
  * Install ACL functionality.
  *
  * @param string          $directory
  * @param OutputInterface $output
  * 
  * @return $this
  */
 protected function installAcl($directory, $output)
 {
     if (!File::has($directory . '/composer.json', 'zendframework/zend-permissions-acl')) {
         $output->writeln('<info>Installing zendframework/zend-permissions-acl...</info>');
         exec('composer require zendframework/zend-permissions-acl:2.2.6', $out);
         echo implode("\n", $out) . "\n";
     }
     File::copyIfNone(dirname(__FILE__) . '/../stubs/app/classes/Acl.stub', $directory . '/app/classes/Acl.php');
     File::copyIfNone(dirname(__FILE__) . '/../stubs/app/config/acl.stub', $directory . '/app/config/acl.php');
     File::appendOnce($directory . '/app/start/global.php', File::get(dirname(__FILE__) . '/../stubs/app/start/global.acl.partial'));
     File::appendOnce($directory . '/app/filters.php', File::get(dirname(__FILE__) . '/../stubs/app/filters.acl.partial'));
     $output->writeln('acl installed');
     return $this;
 }