/**
  * {@inheritdoc}
  */
 public function validate($value, Constraint $constraint)
 {
     if (!$value instanceof PageInterface) {
         $this->context->addViolation('The page is not valid, expected a PageInterface');
         return;
     }
     if (!$value->getSite() instanceof SiteInterface) {
         $this->context->addViolation('The page is not linked to a Site');
         return;
     }
     // do not validated error page
     if ($value->isError()) {
         return;
     }
     $this->manager->fixUrl($value);
     $pages = $this->manager->findBy(array('site' => $value->getSite(), 'url' => $value->getUrl()));
     foreach ($pages as $page) {
         if ($page->isError() || $page->isInternal()) {
             continue;
         }
         if ($page->getUrl() == $value->getUrl() && $page != $value) {
             $this->context->addViolation('error.uniq_url', array('%url%' => $value->getUrl()));
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function prePersist($object)
 {
     $object->setEdited(true);
     foreach ($object->getTranslations() as $t) {
         $t->setObject($object);
     }
     $this->pageManager->fixUrl($object);
 }