Completed
Push — master ( 91fdab...75a7b9 )
by
unknown
13:37
created

MediaBundle/Controller/FolderController.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\MediaBundle\Controller;
4
5
use Doctrine\ORM\EntityManager;
6
use Kunstmaan\AdminBundle\FlashMessages\FlashTypes;
7
use Kunstmaan\MediaBundle\AdminList\MediaAdminListConfigurator;
8
use Kunstmaan\MediaBundle\Entity\Folder;
9
use Kunstmaan\MediaBundle\Form\EmptyType;
10
use Kunstmaan\MediaBundle\Form\FolderType;
11
use Kunstmaan\MediaBundle\Helper\MediaManager;
12
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
13
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
14
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
15
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
16
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
17
use Symfony\Component\HttpFoundation\JsonResponse;
18
use Symfony\Component\HttpFoundation\RedirectResponse;
19
use Symfony\Component\HttpFoundation\Request;
20
use Symfony\Component\HttpFoundation\Response;
21
22
/**
23
 * FolderController.
24
 */
25
class FolderController extends Controller
26
{
27
    /**
28
     * @param Request $request
29
     * @param int     $folderId The folder id
30
     *
31
     * @Route("/{folderId}", requirements={"folderId" = "\d+"}, name="KunstmaanMediaBundle_folder_show")
32
     * @Template("@KunstmaanMedia/Folder/show.html.twig")
33
     *
34
     * @return array
0 ignored issues
show
Should the return type not be RedirectResponse|array?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
35
     */
36
    public function showAction(Request $request, $folderId)
37
    {
38
        /** @var EntityManager $em */
39
        $em      = $this->getDoctrine()->getManager();
40
        $session = $request->getSession();
41
42
        // Check when user switches between thumb -and list view
43
        $viewMode = $request->query->get('viewMode');
44 View Code Duplication
        if ($viewMode && $viewMode == 'list-view') {
45
            $session->set('media-list-view', true);
46
        } elseif ($viewMode && $viewMode == 'thumb-view') {
47
            $session->remove('media-list-view');
48
        }
49
50
        /* @var MediaManager $mediaManager */
51
        $mediaManager = $this->get('kunstmaan_media.media_manager');
52
53
        /* @var Folder $folder */
54
        $folder = $em->getRepository('KunstmaanMediaBundle:Folder')->getFolder($folderId);
55
56
        $adminListConfigurator = new MediaAdminListConfigurator($em, $mediaManager, $folder, $request);
57
        $adminList             = $this->get('kunstmaan_adminlist.factory')->createList($adminListConfigurator);
58
        $adminList->bindRequest($request);
59
60
        $sub = new Folder();
61
        $sub->setParent($folder);
62
        $subForm  = $this->createForm(FolderType::class, $sub, array('folder' => $sub));
63
64
        $emptyForm = $this->createEmptyForm();
65
66
        $editForm = $this->createForm(FolderType::class, $folder, array('folder' => $folder));
67
68
        if ($request->isMethod('POST')) {
69
            $editForm->handleRequest($request);
70
            if ($editForm->isValid()) {
71
                $em->getRepository('KunstmaanMediaBundle:Folder')->save($folder);
72
73
                $this->addFlash(
74
                    FlashTypes::SUCCESS,
75
                    $this->get('translator')->trans('media.folder.show.success.text', array(
76
                        '%folder%' => $folder->getName()
77
                    ))
78
                );
79
80
                return new RedirectResponse(
81
                    $this->generateUrl(
82
                        'KunstmaanMediaBundle_folder_show',
83
                        array('folderId' => $folderId)
84
                    )
85
                );
86
            }
87
        }
88
89
        return array(
90
            'foldermanager' => $this->get('kunstmaan_media.folder_manager'),
91
            'mediamanager'  => $this->get('kunstmaan_media.media_manager'),
92
            'subform'       => $subForm->createView(),
93
            'emptyform'     => $emptyForm->createView(),
94
            'editform'      => $editForm->createView(),
95
            'folder'        => $folder,
96
            'adminlist'     => $adminList,
97
            'type'          => null,
98
        );
99
    }
100
101
    /**
102
     * @param Request $request
103
     * @param int     $folderId
104
     *
105
     * @Route("/delete/{folderId}", requirements={"folderId" = "\d+"}, name="KunstmaanMediaBundle_folder_delete")
106
     *
107
     * @return RedirectResponse
108
     */
109
    public function deleteAction(Request $request, $folderId)
110
    {
111
        /** @var EntityManager $em */
112
        $em = $this->getDoctrine()->getManager();
113
114
        /* @var Folder $folder */
115
        $folder       = $em->getRepository('KunstmaanMediaBundle:Folder')->getFolder($folderId);
116
        $folderName   = $folder->getName();
117
        $parentFolder = $folder->getParent();
118
119
        if (is_null($parentFolder)) {
120
            $this->addFlash(
121
                FlashTypes::ERROR,
122
                $this->get('translator')->trans('media.folder.delete.failure.text', array(
123
                    '%folder%' => $folderName
124
                ))
125
            );
126
        } else {
127
            $em->getRepository('KunstmaanMediaBundle:Folder')->delete($folder);
128
            $this->addFlash(
129
                FlashTypes::SUCCESS,
130
                $this->get('translator')->trans('media.folder.delete.success.text', array(
131
                    '%folder%' => $folderName
132
                ))
133
            );
134
            $folderId = $parentFolder->getId();
135
        }
136
        if (strpos($request->server->get('HTTP_REFERER', ''),'chooser')) {
137
            $redirect = 'KunstmaanMediaBundle_chooser_show_folder';
138
        } else $redirect = 'KunstmaanMediaBundle_folder_show';
139
140
        $type = $this->get('request_stack')->getCurrentRequest()->get('type');
141
142
        return new RedirectResponse(
143
            $this->generateUrl($redirect,
144
                array(
145
                    'folderId' => $folderId,
146
                    'type' => $type,
147
                )
148
            )
149
        );
150
    }
151
152
    /**
153
     * @param Request $request
154
     * @param int     $folderId
155
     *
156
     * @Route("/subcreate/{folderId}", requirements={"folderId" = "\d+"}, name="KunstmaanMediaBundle_folder_sub_create")
157
     * @Method({"GET", "POST"})
158
     *
159
     * @return Response
160
     */
161
    public function subCreateAction(Request $request, $folderId)
162
    {
163
        /** @var EntityManager $em */
164
        $em = $this->getDoctrine()->getManager();
165
166
        /* @var Folder $parent */
167
        $parent = $em->getRepository('KunstmaanMediaBundle:Folder')->getFolder($folderId);
168
        $folder = new Folder();
169
        $folder->setParent($parent);
170
        $form = $this->createForm(FolderType::class, $folder);
171 View Code Duplication
        if ($request->isMethod('POST')) {
172
            $form->handleRequest($request);
173
            if ($form->isSubmitted() && $form->isValid()) {
174
                $em->getRepository('KunstmaanMediaBundle:Folder')->save($folder);
175
                $this->addFlash(
176
                    FlashTypes::SUCCESS,
177
                    $this->get('translator')->trans('media.folder.addsub.success.text', array(
178
                        '%folder%' => $folder->getName()
179
                    ))
180
                );
181
                if (strpos($request->server->get('HTTP_REFERER', ''),'chooser') !== false) {
182
                    $redirect = 'KunstmaanMediaBundle_chooser_show_folder';
183
                } else $redirect = 'KunstmaanMediaBundle_folder_show';
184
185
                $type = $request->get('type');
186
187
                return new RedirectResponse(
188
                    $this->generateUrl( $redirect,
189
                        array(
190
                            'folderId' => $folder->getId(),
191
                            'type' => $type,
192
                        )
193
                    )
194
                );
195
            }
196
        }
197
198
        $galleries = $em->getRepository('KunstmaanMediaBundle:Folder')->getAllFolders();
199
200
        return $this->render(
201
            'KunstmaanMediaBundle:Folder:addsub-modal.html.twig',
202
            array(
203
                'subform'   => $form->createView(),
204
                'galleries' => $galleries,
205
                'folder'    => $folder,
206
                'parent'    => $parent
207
            )
208
        );
209
    }
210
211
    /**
212
     * @param Request $request
213
     * @param int     $folderId
214
     *
215
     * @Route("/empty/{folderId}", requirements={"folderId" = "\d+"}, name="KunstmaanMediaBundle_folder_empty")
216
     * @Method({"GET", "POST"})
217
     *
218
     * @return Response
219
     */
220
    public function emptyAction(Request $request, $folderId)
221
    {
222
        /** @var EntityManager $em */
223
        $em = $this->getDoctrine()->getManager();
224
225
        /* @var Folder $folder */
226
        $folder = $em->getRepository('KunstmaanMediaBundle:Folder')->getFolder($folderId);
227
228
        $form = $this->createEmptyForm();
229
230
        if ($request->isMethod('POST')) {
231
            $form->handleRequest($request);
232 View Code Duplication
            if ($form->isSubmitted() && $form->isValid()) {
233
234
                $data = $form->getData();
235
                $alsoDeleteFolders = $data['checked'];
236
237
                $em->getRepository('KunstmaanMediaBundle:Folder')->emptyFolder($folder, $alsoDeleteFolders);
238
239
                $this->addFlash(
240
                    FlashTypes::SUCCESS,
241
                    $this->get('translator')->trans('media.folder.empty.success.text', array(
242
                        '%folder%' => $folder->getName()
243
                    ))
244
                );
245
                if (strpos($request->server->get('HTTP_REFERER', ''),'chooser') !== false) {
246
                    $redirect = 'KunstmaanMediaBundle_chooser_show_folder';
247
                } else $redirect = 'KunstmaanMediaBundle_folder_show';
248
249
                return new RedirectResponse(
250
                    $this->generateUrl( $redirect,
251
                        array(
252
                            'folderId' => $folder->getId(),
253
                            'folder' => $folder
254
                        )
255
                    )
256
                );
257
258
            }
259
        }
260
261
        return $this->render(
262
            'KunstmaanMediaBundle:Folder:empty-modal.html.twig',
263
            array(
264
                'form'   => $form->createView(),
265
            )
266
        );
267
    }
268
269
    /**
270
     * @Route("/reorder", name="KunstmaanMediaBundle_folder_reorder")
271
     *
272
     * @param Request $request
273
     * @return JsonResponse
274
     */
275
    public function reorderAction(Request $request)
276
    {
277
        $folders         = array();
278
        $nodeIds       = $request->get('nodes');
279
280
        $em              = $this->getDoctrine()->getManager();
281
        $repository = $em->getRepository('KunstmaanMediaBundle:Folder');
282
283
        foreach ($nodeIds as $id) {
284
            /* @var Folder $folder */
285
            $folder = $repository->find($id);
286
            $folders[] = $folder;
287
        }
288
289
        foreach ($folders as $id => $folder) {
290
            $repository->moveDown($folder, true);
291
        }
292
293
        $em->flush();
294
295
        return new JsonResponse(
296
            array(
297
                'Success' => 'The node-translations for have got new weight values'
298
            )
299
        );
300
    }
301
302
    private function createEmptyForm()
303
    {
304
        $defaultData = array('checked' => false);
305
        $form = $this->createFormBuilder($defaultData)
306
            ->add('checked', CheckboxType::class, array('required' => false, 'label' => 'media.folder.empty.modal.checkbox'))
307
            ->getForm();
308
        return $form;
309
    }
310
}
311