public function createFile(Project $project, $fileName, $program = false) { // Check that fileName does not exist already $file = $this->getProjectFile($project, $fileName, $program); if ($file) { // fileName exists: check that file is deleted if (!$file->getDeleted()) { // file is not deleted: return false return false; } // reuse previously deleted file $file->setVersion($file->getVersion() + 1); } else { // Create file $file = new File(); } $file->setProject($project); $file->setName($fileName); $file->setProgram($program); $file->setDeleted(false); // create storage file $storage = $this->getNewStorageName($project); $file->setStorageName($storage); $this->em->persist($file); // Update log $entry = new Log(); $entry->setProject($project); $entry->setOperation("create"); $entry->setData(json_encode(array('name' => $file->getName(), 'program' => $program))); $entry->setUser($this->user); $this->em->persist($entry); $this->em->flush(); return $file; }