Issues (11)

src/Http/Controllers/ColumnController.php (2 issues)

Labels
Severity
1
<?php
2
3
namespace DavideCasiraghi\LaravelColumns\Http\Controllers;
4
5
use DavideCasiraghi\LaravelColumns\Facades\LaravelColumns;
6
use DavideCasiraghi\LaravelColumns\Models\Column;
7
use DavideCasiraghi\LaravelColumns\Models\ColumnGroup;
8
use DavideCasiraghi\LaravelFormPartials\Facades\LaravelFormPartials;
9
use Illuminate\Http\Request;
10
use Illuminate\Support\Facades\App;
11
use Intervention\Image\ImageManagerStatic as Image;
12
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
13
use Validator;
14
15
class ColumnController extends Controller
16
{
17
    /* Restrict the access to this resource just to logged in users */
18 11
    public function __construct()
19
    {
20 11
        $this->middleware('auth', ['except' => ['show']]);
21 11
    }
22
23
    /**
24
     * Display the specified resource.
25
     *
26
     * @param  \Illuminate\Http\Request  $request
27
     * @return \Illuminate\Http\Response
28
     */
29 5
    public function index(Request $request)
30
    {
31 5
        $searchKeywords = $request->input('keywords');
32
        //$searchCategory = $request->input('category_id');
33 5
        $countriesAvailableForTranslations = LaravelLocalization::getSupportedLocales();
34
35 5
        if ($searchKeywords) {
36
            $columns = Column::
37
                        select('column_translations.column_id AS id', 'title', 'body', 'button_text', 'image_file_name', 'button_url', 'locale')
38
                        ->join('column_translations', 'columns.id', '=', 'column_translations.column_id')
39
                        ->orderBy('title')
40
                        ->where('title', 'like', '%'.$searchKeywords.'%')
41
                        ->where('locale', 'en')
42
                        ->paginate(20);
43
        } else {
44
            $columns = Column::
45 5
                        select('column_translations.column_id AS id', 'title', 'body', 'button_text', 'image_file_name', 'button_url', 'locale')
46 5
                        ->join('column_translations', 'columns.id', '=', 'column_translations.column_id')
47 5
                        ->where('locale', 'en')
48 5
                        ->orderBy('title')
49 5
                        ->paginate(20);
50
        }
51
52 5
        return view('laravel-columns::columns.index', compact('columns'))
53 5
                     ->with('i', (request()->input('page', 1) - 1) * 20)
54 5
                     ->with('searchKeywords', $searchKeywords)
55 5
                     ->with('countriesAvailableForTranslations', $countriesAvailableForTranslations);
56
    }
57
58
    /***************************************************************************/
59
60
    /**
61
     * Show the form for creating a new resource.
62
     *
63
     * @return \Illuminate\Http\Response
64
     */
65 1
    public function create()
66
    {
67 1
        return view('laravel-columns::columns.create')
68 1
                    ->with('columnGroupsArray', $this->getColumnGroupsArray());
69
    }
70
71
    /***************************************************************************/
72
73
    /**
74
     * Store a newly created resource in storage.
75
     *
76
     * @param  \Illuminate\Http\Request  $request
77
     * @return \Illuminate\Http\Response
78
     */
79 2
    public function store(Request $request)
80
    {
81
        // Validate form datas
82 2
        $validator = Validator::make($request->all(), [
83 2
            'title' => 'required',
84
        ]);
85 2
        if ($validator->fails()) {
86 1
            return back()->withErrors($validator)->withInput();
87
        }
88
89 1
        $column = new Column();
90
91
        // Set the default language to edit the quote in English
92 1
        App::setLocale('en');
93
94 1
        $this->saveOnDb($request, $column);
95
96 1
        return redirect()->route('columns.index')
97 1
                            ->with('success', 'Column image added succesfully');
98
    }
99
100
    /***************************************************************************/
101
102
    /**
103
     * Display the specified resource.
104
     *
105
     * @param  int $columnId
106
     * @return \Illuminate\Http\Response
107
     */
108 1
    public function show($columnId = null)
109
    {
110
        //$column = Column::find($columnId);
111 1
        $column = Laravelcolumns::getColumn($columnId);
0 ignored issues
show
The method getColumn() does not exist on DavideCasiraghi\LaravelC...\Facades\LaravelColumns. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

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

111
        /** @scrutinizer ignore-call */ 
112
        $column = Laravelcolumns::getColumn($columnId);
Loading history...
112 1
        $columnParameters = ($column) ? (Laravelcolumns::getParametersArray($column)) : null;
0 ignored issues
show
The method getParametersArray() does not exist on DavideCasiraghi\LaravelC...\Facades\LaravelColumns. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

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

112
        $columnParameters = ($column) ? (Laravelcolumns::/** @scrutinizer ignore-call */ getParametersArray($column)) : null;
Loading history...
113
114 1
        return view('laravel-columns::columns.show', compact('column'))
115 1
                ->with('columnParameters', $columnParameters);
116
    }
117
118
    /***************************************************************************/
119
120
    /**
121
     * Show the form for editing the specified resource.
122
     *
123
     * @param  int $columnId
124
     * @return \Illuminate\Http\Response
125
     */
126 1
    public function edit($columnId = null)
127
    {
128 1
        $column = Column::find($columnId);
129
130 1
        return view('laravel-columns::columns.edit', compact('column'))
131 1
                    ->with('columnGroupsArray', $this->getColumnGroupsArray());
132
    }
133
134
    /***************************************************************************/
135
136
    /**
137
     * Update the specified resource in storage.
138
     *
139
     * @param  \Illuminate\Http\Request  $request
140
     * @param  int  $columnId
141
     * @return \Illuminate\Http\Response
142
     */
143 2
    public function update(Request $request, $columnId)
144
    {
145
        // Validate form datas
146 2
        $validator = Validator::make($request->all(), [
147 2
            'title' => 'required',
148
        ]);
149 2
        if ($validator->fails()) {
150 1
            return back()->withErrors($validator)->withInput();
151
        }
152
153 1
        $column = Column::find($columnId);
154
155
        // Set the default language to update the quote in English
156 1
        App::setLocale('en');
157
158 1
        $this->saveOnDb($request, $column);
159
160 1
        return redirect()->route('columns.index')
161 1
                            ->with('success', 'Column image updated succesfully');
162
    }
163
164
    /***************************************************************************/
165
166
    /**
167
     * Remove the specified resource from storage.
168
     *
169
     * @param  int  $columnId
170
     * @return \Illuminate\Http\Response
171
     */
172 1
    public function destroy($columnId)
173
    {
174 1
        $column = Column::find($columnId);
175 1
        $column->delete();
176
177 1
        return redirect()->route('columns.index')
178 1
                            ->with('success', 'Column image deleted succesfully');
179
    }
180
181
    /***************************************************************************/
182
183
    /**
184
     * Save the record on DB.
185
     * @param  \Illuminate\Http\Request  $request
186
     * @param  \DavideCasiraghi\Laravelcolumns\Models\Column  $column
187
     * @return void
188
     */
189 2
    public function saveOnDb($request, $column)
190
    {
191 2
        $column->translateOrNew('en')->title = $request->get('title');
192 2
        $column->translateOrNew('en')->body = $request->get('body');
193 2
        $column->translateOrNew('en')->button_text = $request->get('button_text');
194 2
        $column->translateOrNew('en')->image_alt = $request->get('image_alt');
195
196 2
        $column->columns_group = $request->get('columns_group');
197 2
        $column->column_flex = $request->get('column_flex');
198 2
        $column->separator_color = $request->get('separator_color');
199 2
        $column->image_file_name = $request->get('image_file_name');
200 2
        $column->fontawesome_icon_class = $request->get('fontawesome_icon_class');
201 2
        $column->icon_color = $request->get('icon_color');
202 2
        $column->button_url = $request->get('button_url');
203
204
        // Column image upload
205 2
        $imageSubdir = 'columns';
206 2
        $imageWidth = '1067';
207 2
        $thumbWidth = '690';
208 2
        $column->image_file_name = LaravelFormPartials::uploadImageOnServer($request->file('image_file_name'), $request->image_file_name, $imageSubdir, $imageWidth, $thumbWidth);
209
210 2
        $column->save();
211 2
    }
212
213
    /***************************************************************************/
214
215
    /**
216
     * Return and array with the column groups.
217
     *
218
     * @return array
219
     */
220 2
    public static function getColumnGroupsArray()
221
    {
222 2
        $ret = ColumnGroup::listsTranslations('title')->orderBy('title')->pluck('title', 'id');
223
224 2
        return $ret;
225
    }
226
}
227