WorkbenchController.php 2.58 KB
Newer Older
1 2 3 4 5 6 7 8
<?php namespace Modules\Workshop\Http\Controllers;

use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
use Laracasts\Flash\Flash;
use Modules\Core\Http\Controllers\Admin\AdminBaseController;
use Modules\Workshop\Http\Requests\GenerateModuleRequest;
9
use Modules\Workshop\Http\Requests\InstallModuleRequest;
Nicolas Widart's avatar
Nicolas Widart committed
10
use Modules\Workshop\Http\Requests\MigrateModuleRequest;
11
use Modules\Workshop\Http\Requests\SeedModuleRequest;
12 13 14 15
use Symfony\Component\Console\Output\BufferedOutput;

class WorkbenchController extends AdminBaseController
{
16 17 18 19 20
    public function __construct()
    {
        parent::__construct();
    }

Nicolas Widart's avatar
Nicolas Widart committed
21 22 23 24
    /**
     * Show the index view
     * @return mixed
     */
25 26 27 28 29
    public function index()
    {
        return View::make('workshop::admin.workbench.index');
    }

Nicolas Widart's avatar
Nicolas Widart committed
30 31 32 33 34
    /**
     * Generate a module given its name
     * @param GenerateModuleRequest $request
     * @return mixed
     */
35 36 37 38 39 40 41 42
    public function generate(GenerateModuleRequest $request)
    {
        $output = new BufferedOutput;
        Artisan::call('module:make', ['name' => $request->name], $output);

        Flash::message($output->fetch());
        return Redirect::route('dashboard.workbench.index');
    }
Nicolas Widart's avatar
Nicolas Widart committed
43

Nicolas Widart's avatar
Nicolas Widart committed
44 45 46 47 48
    /**
     * Run the migration for the given module
     * @param MigrateModuleRequest $request
     * @return mixed
     */
Nicolas Widart's avatar
Nicolas Widart committed
49 50 51
    public function migrate(MigrateModuleRequest $request)
    {
        $output = new BufferedOutput;
52
        Artisan::call('module:migrate', ['module' => $request->module], $output);
Nicolas Widart's avatar
Nicolas Widart committed
53 54 55 56

        Flash::message($output->fetch());
        return Redirect::route('dashboard.workbench.index');
    }
57

Nicolas Widart's avatar
Nicolas Widart committed
58 59 60 61 62
    /**
     * Run the install command for the given vendor/module
     * @param InstallModuleRequest $request
     * @return mixed
     */
63 64 65 66 67 68 69 70 71 72 73 74
    public function install(InstallModuleRequest $request)
    {
        $output = new BufferedOutput;
        $arguments['name'] = $request->vendorName;
        if ($request->subtree) {
            $arguments['--tree'] = '';
        }
        Artisan::call('module:install', $arguments, $output);

        Flash::message($output->fetch());
        return Redirect::route('dashboard.workbench.index');
    }
75

Nicolas Widart's avatar
Nicolas Widart committed
76 77 78 79 80
    /**
     * Run the seed command for the given module
     * @param SeedModuleRequest $request
     * @return mixed
     */
81 82 83 84 85 86 87 88
    public function seed(SeedModuleRequest $request)
    {
        $output = new BufferedOutput;
        Artisan::call('module:seed', ['module' => $request->module], $output);

        Flash::message($output->fetch());
        return Redirect::route('dashboard.workbench.index');
    }
89
}