/** * Generate a document id * * @param \ServerGrove\KbBundle\Document\Article $document * @param object $parent * * @return string */ public function generateId($document, $parent = null) { /** @var $session \PHPCR\SessionInterface */ $session = $this->getDocumentManager()->getPhpcrSession(); $root = $session->getNode('/'); if (!$root->hasNode('articles')) { $root->addNode('articles'); } return '/articles/' . $document->getSlug(); }
private function getModificationVars(Document\Article $article) { $latestVersion = null; $previousVersion = null; $locale = ''; foreach ($article->getTranslations() as $translation) { $versions = $translation->getVersions(); foreach ($versions as $version) { if (is_null($latestVersion) || $version->getCreatedAt() > $latestVersion->getCreatedAt()) { $latestVersion = $version; $locale = $translation->getLocale(); if (($aux = $translation->getActiveVersion()) instanceof Document\Version) { $previousVersion = $aux; } } } } return array('article' => $article, 'locale' => $locale, 'previous' => $previousVersion, 'current' => $latestVersion); }
private function addArticle($manager, $title, $content, array $categories, array $keywords, $url = null, array $metadata = array()) { $article = new \ServerGrove\KbBundle\Document\Article(); $article->setTitle($title)->setContent($content)->setContentType('markdown')->setIsActive(true); if (!is_null($url)) { $article->addUrl($url); } foreach ($categories as $category) { $article->addCategory($category); } foreach ($keywords as $keyword) { $article->addKeyword($keyword); } foreach ($metadata as $meta) { $article->setMetadata($meta['key'], $meta['value']); } $manager->persist($article); $manager->bindTranslation($article, 'en'); return $article; }
private function createDeleteForm(Article $article) { return $this->createFormBuilder(array('slug' => $article->getSlug()))->add('slug', 'hidden')->getForm(); }
/** * @param \ServerGrove\KbBundle\Document\Article $article * @param array $locales * @return array */ private function getActiveLocales(Article $article, array $locales) { $activeLocales = array(); foreach ($locales as $locale) { try { $articleTranslation = $this->getDocumentManager()->findTranslation('ServerGrove\\KbBundle\\Document\\Article', $article->getId(), $locale, false); if ($articleTranslation->getIsActive()) { $activeLocales[] = $locale; } } catch (\InvalidArgumentException $e) { } } return $activeLocales; }