Пример #1
0
 /**
  * Upload action.
  *
  * @access public
  * @param Application $app Silex application
  * @param Request $request Request object
  * @return string Output
  */
 public function upload(Application $app, Request $request)
 {
     $adId = (int) $request->get('id', 0);
     $adsModel = new AdsModel($app);
     $ad = $adsModel->getAd($adId);
     $usersModel = new UsersModel($app);
     $idLoggedUser = $usersModel->getIdCurrentUser($app);
     $flag = false;
     if ($flag == false) {
         // if (!$app['security']->isGranted('ROLE_ADMIN')) {
         // if ((int)$ad['user_id'] !== (int)$idLoggedUser) {
         // $app['session']->getFlashBag()->add(
         // 'message',
         // array(
         // 'type' => 'danger',
         // 'content' => 'This is not your ad - you can not adddd photo to it.'
         // )
         // );
         // return $app['twig']->render(
         // 'errors/403.twig'
         // );
         // }
         // }
     }
     $form = $app['form.factory']->createBuilder(new FilesForm(), array('ad_id' => $adId))->getForm();
     if ($request->isMethod('post')) {
         $form->handleRequest($request);
         if ($form->isValid()) {
             try {
                 $data = $form->getData();
                 $files = $request->files->get($form->getName());
                 $path = dirname(dirname(dirname(__FILE__))) . '/web/media';
                 $photosModel = new PhotosModel($app);
                 $originalFilename = $files['image']->getClientOriginalName();
                 $newFilename = $photosModel->createName($originalFilename);
                 $files['image']->move($path, $newFilename);
                 $adId = $data['ad_id'];
                 $photo = $photosModel->getPhoto($adId);
                 if ($photo == null) {
                     $photosModel->saveFile($newFilename, $adId);
                 } else {
                     $photosModel->updateFile($newFilename, $data);
                 }
                 $app['session']->getFlashBag()->add('message', array('type' => 'success', 'content' => 'File successfully uploaded.'));
                 return $app->redirect($app['url_generator']->generate('/ads/view', array('id' => $data['ad_id'])), 301);
                 $flag = true;
             } catch (Exception $e) {
                 $app['session']->getFlashBag()->add('message', array('type' => 'error', 'content' => 'Can not upload file.'));
             }
         } else {
             var_dump($form);
             $app['session']->getFlashBag()->add('message', array('type' => 'error', 'content' => 'Form contains invalid data.'));
         }
     }
     return $app['twig']->render('photos/upload.twig', array('form' => $form->createView(), 'id' => $adId));
 }