Passed
Push — master ( a78120...637245 )
by Yassine
04:32
created

MailablesController::createMailable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Qoraiche\MailEclipse\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Routing\Controller;
7
use Illuminate\Support\Facades\App;
8
use Qoraiche\MailEclipse\MailEclipse;
9
10
class MailablesController extends Controller
11
{
12
    public function __construct()
13
    {
14
        abort_unless(
15
            App::environment(config('maileclipse.allowed_environments', ['local'])),
0 ignored issues
show
Bug introduced by
It seems like Illuminate\Support\Facad...ents', array('local'))) can also be of type string; however, parameter $boolean of abort_unless() does only seem to accept boolean, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

15
            /** @scrutinizer ignore-type */ App::environment(config('maileclipse.allowed_environments', ['local'])),
Loading history...
16
            403
17
      );
18
    }
19
20
    public function toMailablesList()
21
    {
22
        return redirect()->route('mailableList');
23
    }
24
25
    public function index()
26
    {
27
        $mailables = MailEclipse::getMailables();
28
29
        $mailables = (null !== $mailables) ? $mailables->sortBy('name') : collect([]);
0 ignored issues
show
introduced by
The condition null !== $mailables is always true.
Loading history...
30
31
        return view(MailEclipse::$view_namespace.'::sections.mailables', compact('mailables'));
32
    }
33
34
    public function generateMailable(Request $request)
35
    {
36
        return MailEclipse::generateMailable($request);
37
    }
38
39
    public function viewMailable($name)
40
    {
41
        $mailable = MailEclipse::getMailable('name', $name);
42
43
        if ($mailable->isEmpty()) {
44
            return redirect()->route('mailableList');
45
        }
46
47
        $resource = $mailable->first();
48
49
        return view(MailEclipse::$view_namespace.'::sections.view-mailable')->with(compact('resource'));
50
    }
51
52
    public function editMailable($name)
53
    {
54
        $templateData = MailEclipse::getMailableTemplateData($name);
55
56
        if (! $templateData) {
57
            return redirect()->route('viewMailable', ['name' => $name]);
58
        }
59
60
        return view(MailEclipse::$view_namespace.'::sections.edit-mailable-template', compact('templateData', 'name'));
61
    }
62
63
    public function templatePreviewError()
64
    {
65
        return view(MailEclipse::$view_namespace.'::previewerror');
66
    }
67
68
    public function parseTemplate(Request $request)
69
    {
70
        $template = $request->has('template') ? $request->template : false;
71
72
        $viewPath = $request->has('template') ? $request->viewpath : base64_decode($request->viewpath);
73
74
        // ref https://regexr.com/4dflu
75
        $bladeRenderable = preg_replace('/((?!{{.*?-)(&gt;)(?=.*?}}))/', '>', $request->markdown);
76
77
        if (MailEclipse::markdownedTemplateToView(true, $bladeRenderable, $viewPath, $template)) {
78
            return response()->json([
79
                'status' => 'ok',
80
            ]);
81
        }
82
83
        return response()->json([
84
            'status' => 'error',
85
        ]);
86
    }
87
88
    public function previewMarkdownView(Request $request)
89
    {
90
        return MailEclipse::previewMarkdownViewContent(false, $request->markdown, $request->name, false, $request->namespace);
91
    }
92
93
    public function previewMailable($name)
94
    {
95
        return MailEclipse::renderMailable($name);
96
    }
97
98
    public function delete(Request $request)
99
    {
100
        $mailableFile = config('maileclipse.mailables_dir').'/'.$request->mailablename.'.php';
101
102
        if (file_exists($mailableFile)) {
103
            unlink($mailableFile);
104
105
            return response()->json([
106
                'status' => 'ok',
107
            ]);
108
        }
109
110
        return response()->json([
111
            'status' => 'error',
112
        ]);
113
    }
114
115
    public function sendTest(Request $request)
116
    {
117
        $validatedData = $request->validate([
0 ignored issues
show
Unused Code introduced by
The assignment to $validatedData is dead and can be removed.
Loading history...
118
            'email' => 'email|nullable',
119
            'name' => 'string|required',
120
        ]);
121
122
        $email = $request->get('email') ?? config('maileclipse.test_mail');
123
124
        MailEclipse::sendTest($request->get('name'), $email);
0 ignored issues
show
Bug introduced by
It seems like $request->get('name') can also be of type null; however, parameter $name of Qoraiche\MailEclipse\MailEclipse::sendTest() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

124
        MailEclipse::sendTest(/** @scrutinizer ignore-type */ $request->get('name'), $email);
Loading history...
125
    }
126
}
127