/** * Add tags from rules defined by the user. * * @param Entry $entry Entry to tag */ public function tag(Entry $entry) { $rules = $this->getRulesForUser($entry->getUser()); foreach ($rules as $rule) { if (!$this->rulerz->satisfies($entry, $rule->getRule())) { continue; } foreach ($rule->getTags() as $label) { $tag = $this->getTag($label); $entry->addTag($tag); } } }
/** * Permanently remove one tag for an entry. * * @ApiDoc( * requirements={ * {"name"="tag", "dataType"="integer", "requirement"="\w+", "description"="The tag ID"}, * {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"} * } * ) * * @return JsonResponse */ public function deleteEntriesTagsAction(Entry $entry, Tag $tag) { $this->validateAuthentication(); $this->validateUserAccess($entry->getUser()->getId()); $entry->removeTag($tag); $em = $this->getDoctrine()->getManager(); $em->persist($entry); $em->flush(); $json = $this->get('serializer')->serialize($entry, 'json'); return (new JsonResponse())->setJson($json); }
/** * Check if the logged user can manage the given entry. * * @param Entry $entry */ private function checkUserAction(Entry $entry) { if (null === $this->getUser() || $this->getUser()->getId() != $entry->getUser()->getId()) { throw $this->createAccessDeniedException('You can not access this entry.'); } }