/** */ public function updateMessageIfNewest(Project $project, $bundle, $key, $language, $catalog, $lastModification, $message) { if (!$bundle || !$language || !$key || !$lastModification || !$message) { return $this->exception('Validation exceptions, missing parameters'); } /** @var Key $keyRecord */ $keyRecord = $this->getKeyRepository()->findOneBy(array('project' => $project, 'bundle' => $bundle, 'key' => $key, 'catalog' => $catalog)); if (!$keyRecord) { $keyRecord = new Key(); $keyRecord->setProject($project); $keyRecord->setKey($key); $keyRecord->setBundle($bundle); $keyRecord->setCatalog($catalog); $this->em->persist($keyRecord); $this->em->flush(); } /** @var Message $messageRecord */ $messageRecord = $this->getMessageRepository()->findOneBy(array('key' => $keyRecord, 'language' => $language)); if (!$messageRecord) { $messageRecord = new Message(); $messageRecord->setKey($keyRecord); $messageRecord->setLanguage($language); } else { if ($messageRecord->getUpdatedAt() >= $lastModification) { return $this->resultOk(array('updated' => false, 'message' => $messageRecord->getMessage(), 'updatedAt' => $messageRecord->getUpdatedAt()->format('c'))); } } $messageRecord->setMessage($message); $messageRecord->setUpdatedAt($lastModification); $this->em->persist($messageRecord); $this->em->flush($messageRecord); return $this->resultOk(array('updated' => true, 'message' => $messageRecord->getMessage(), 'updatedAt' => $messageRecord->getUpdatedAt()->format('c'))); }
/** * @Route("/update/message/if-newest/{projectId}/{bundle}/{key}/{language}/{catalog}") * @Method("POST") * @ParamConverter("project", class="TranslationsBundle:Project", options={"id" = "projectId"}) */ public function updateMessageIfNewest(Request $request, $project, $bundle, $key, $language, $catalog = self::DEFAULT_CATALOG) { $this->init(); $key = urldecode($key); $param = json_decode($request->getContent(), true); $lastModification = new \DateTime($param['last_modification']); $message = $param['message']; if (!$bundle || !$language || !$key || !$lastModification || !$message) { return $this->exception('Validation exceptions, missing parameters'); } /** @var Key $keyRecord */ $keyRecord = $this->getKeyRepository()->findOneBy(array('project' => $project, 'bundle' => $bundle, 'key' => $key, 'catalog' => $catalog)); if (!$keyRecord) { $keyRecord = new Key(); $keyRecord->setProject($project); $keyRecord->setKey($key); $keyRecord->setBundle($bundle); $keyRecord->setCatalog($catalog); $this->em->persist($keyRecord); $this->em->flush(); } /** @var Message $messageRecord */ $messageRecord = $this->getMessageRepository()->findOneBy(array('key' => $keyRecord, 'language' => $language)); if (!$messageRecord) { $messageRecord = new Message(); $messageRecord->setKey($keyRecord); $messageRecord->setLanguage($language); } else { if ($messageRecord->getUpdatedAt() >= $lastModification) { return $this->resultOk(array('updated' => false, 'message' => $messageRecord->getMessage(), 'updatedAt' => $messageRecord->getUpdatedAt()->format('c'))); } } $messageRecord->setMessage($message); $messageRecord->setUpdatedAt($lastModification); $this->em->persist($messageRecord); $this->em->flush(); return $this->resultOk(array('updated' => true)); }