/** * @param $key * @param array $options * @throws ResourceFactoryException * @return Resource */ public function create($key, array $options = array()) { $project = $this->getProject($key); $name = $options['name']; $extension = $options['extension']; $filename = $name . ($extension !== false ? '.' . $extension : ''); $resource = $this->em->getRepository('CDNServerCore:Resource')->findOneByProjectAndName($project->getId(), $name); if ($resource && !$options['update']) { throw new ResourceFactoryException("The resource " . $name . " already exists, either use another name or set the 'update' option to true.", 1); } else { if (!$resource) { $resource = new Resource($name, $filename, $project); } else { if ($resource->getFilename() !== $filename) { $this->writer->remove($resource); $resource->setFilename($filename); } } } $this->em->persist($resource); $this->em->flush($resource); return $resource; }
protected function markForRefresh(Resource $resource, $status = true) { $resource->setRefresh($status); $this->em->persist($resource); $this->em->flush($resource); }