Ejemplo n.º 1
0
 /**
  * @Route("/upload-screenshot/{translationId}", name="upload_screenshot")
  * @Method("POST")
  * @ ParamConverter("project", class="TranslationsBundle:Project", options={"id" = "projectId"})
  */
 public function uploadScrenshotAction(Request $request, $translationId)
 {
     $this->init();
     /** @var Translation $translation */
     $translation = $this->getTranslationRepository()->find($translationId);
     if (!$translation) {
         throw $this->createNotFoundException();
     }
     $projectId = $translation->getProjectId();
     $project = $this->getProjectRepository()->find($projectId);
     $permissions = $this->translationsManager->getPermissionForUserAndProject($this->user, $project);
     // if permissions bla bla bla
     $directory = $this->root . "/web/uploads/{$projectId}/";
     $files = $request->files;
     foreach ($files as $uploadedFile) {
         break;
         // I want only the first file, dont allow to upload more than one
     }
     /** @var UploadedFile $uploadedFile */
     $ext = $uploadedFile->getClientOriginalExtension();
     $baseName = uniqid();
     $name = $baseName . '.' . $ext;
     /** @var \Symfony\Component\HttpFoundation\File\File $file */
     $file = $uploadedFile->move($directory, $name);
     $destFile = $baseName . '.jpg';
     $name = $this->normalize($ext, $directory . $baseName, $directory . $destFile);
     $translation->setScreenshot($destFile);
     $this->dm->persist($translation);
     $this->dm->flush($translation);
     die('OK');
 }
Ejemplo n.º 2
0
 /**
  * @Route("/change-user-permissions/{projectId}", name="change_user_permission")
  * @ParamConverter("project", class="TranslationsBundle:Project", options={"id" = "projectId"})
  */
 public function changeUserPermissionsAction(Project $project, Request $request)
 {
     $session = $request->getSession();
     $this->init();
     /** @var Permission $permission */
     $permission = $this->translationsManager->getPermissionForUserAndProject($this->user, $project);
     if (!$permission || $permission->getPermissions(Permission::GENERAL_KEY) != Permission::OWNER) {
         return $this->exception('error.acl.not_enough_permissions_to_manage_this_project');
     }
     $managedLocales = explode(',', $project->getManagedLocales());
     $userId = $request->get('user');
     $locale = $request->get('locale');
     if (!in_array($locale, $managedLocales)) {
         return $this->exception(sprintf('the locale %s is not managed by this project', $locale));
     }
     $newPermission = $request->get('permission');
     if (!in_array($newPermission, Permission::getAllowedLocalePermissions())) {
         return $this->exception(sprintf('the permission %s is not recognized', $newPermission));
     }
     $user = $this->getUserRepository()->find($userId);
     if (!$user) {
         return $this->exception('error.permissions.no_user_found');
     }
     /** @var Permission $permission */
     $permission = $this->getPermissionRepository()->findPermissionForProjectAndUser($project, $user);
     if (!$permission) {
         return $this->exception('error.permissions.no_permissions_for_this_user');
     }
     $permission->addPermission($newPermission, $locale);
     $this->em->persist($permission);
     $this->em->flush($permission);
     return $this->resultOk(array('locale' => $locale, 'user' => $user->getId(), 'permission' => $newPermission));
 }