/** * Gets all tags for the given taggable resource * * @param BaseTaggable $resource Taggable resource * @return array */ public function getTagging(BaseTaggable $resource) { $em = $this->em; $config = $em->getConfiguration(); if (is_null($config->getCustomHydrationMode(self::TAGGING_HYDRATOR))) { $config->addCustomHydrationMode(self::TAGGING_HYDRATOR, 'Doctrine\\ORM\\Internal\\Hydration\\ObjectHydrator'); } return $em->createQueryBuilder()->select('t')->from($this->tagClass, 't')->innerJoin('t.tagging', 't2', Expr\Join::WITH, 't2.resourceId = :id AND t2.resourceType = :type')->setParameter('id', $resource->getTaggableId())->setParameter('type', $resource->getTaggableType())->getQuery()->getResult(self::TAGGING_HYDRATOR); }
/** * Returns an array of tag names for the given Taggable resource. * * @param Taggable $resource Taggable resource */ public function getTagNames(Taggable $resource) { $names = array(); if (sizeof($resource->getTags()) > 0) { foreach ($resource->getTags() as $tag) { $names[] = $tag->getName(); } } return $names; }
/** * Sets the resource * * @param Taggable $resource Resource to set */ public function setResource(Taggable $resource) { $this->resourceType = $resource->getTaggableType(); $this->resourceId = $resource->getTaggableId(); }