/**
  * 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);
 }
示例#3
0
 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;
 }