public function saveChanges()
 {
     $values = $this->getValues();
     $target = $this->targetDao->findTarget($this->target);
     if (!$target) {
         $target = new Brabijan\SeoComponents\Entity\Target();
         $target->targetPresenter = $this->target->presenter;
         $target->targetAction = $this->target->action;
         $target->targetId = $this->target->id;
         $this->targetDao->save($target);
     }
     if (!$target->meta) {
         $meta = new Brabijan\SeoComponents\Entity\Meta();
         $meta->target = $target;
         $target->meta = $meta;
         $this->metaDao->save($meta);
         $this->targetDao->save($target);
     }
     $meta = $target->meta;
     $meta->seoTitle = $values->seoTitle;
     $meta->seoKeywords = $values->seoKeywords;
     $meta->seoDescription = $values->seoDescription;
     $meta->seoRobots = $values->seoRobots;
     $meta->sitemapChangeFreq = $values->sitemapChangeFreq;
     $meta->sitemapPriority = $values->sitemapPriority;
     $this->metaDao->save($meta);
     $currentRoute = $this->routeDao->findCurrentRouteByTarget($this->target);
     if ($values->route && (!$currentRoute || $currentRoute->slug !== $values->route)) {
         $this->routeDao->addRoute($target, $values->route);
     }
 }
Пример #2
0
 /**
  * Maps HTTP request to a Request object.
  *
  * @param Nette\Http\IRequest $httpRequest
  * @return Request|NULL
  */
 public function match(Nette\Http\IRequest $httpRequest)
 {
     $relativeUrl = trim($httpRequest->getUrl()->relativeUrl, "/");
     $path = trim($httpRequest->getUrl()->path, "/");
     if ($relativeUrl == "") {
         $target = $this->defaultRoute;
         $this->currentTarget->setCurrentTarget($this->targetDao->findTarget($target->presenter, $target->action, $target->id));
     } elseif ($relativeUrl == "sitemap.xml") {
         $target = new Target("Seo:Meta", "sitemap");
     } elseif ($relativeUrl == "robots.txt") {
         $target = new Target("Seo:Meta", "robots");
     } elseif (substr($relativeUrl, 0, 6) == "google" && $this->settingsDao->getWebmasterToolsName() == $relativeUrl) {
         $target = new Target("Seo:Meta", "googleWebmasterTools");
     } else {
         $route = $this->routeDao->findRouteBySlug($relativeUrl, TRUE);
         if (!$route) {
             $route = $this->routeDao->findRouteBySlug($path, TRUE);
             if (!$route) {
                 return NULL;
             }
         }
         $this->currentTarget->setCurrentTarget($route->getTarget());
         $target = new Target($route->target->targetPresenter, $route->target->targetAction, $route->target->targetId);
     }
     $params = array();
     $params["action"] = $target->action;
     if ($target->id) {
         $params["id"] = $target->id;
     }
     $params += $httpRequest->getQuery();
     return new Request($target->presenter, $httpRequest->getMethod(), $params, $httpRequest->getPost(), $httpRequest->getFiles(), array(Request::SECURED => $httpRequest->isSecured()));
 }
Пример #3
0
 private function prepareTargetList()
 {
     foreach ($this->allowedTargetList->getSections() as $section) {
         $name = $section->getName();
         $sections[$name] = array();
         foreach ($section->getTargetList() as $targetName => $target) {
             $targetEntity = $this->targetDao->findTarget($target);
             if (!$targetEntity) {
                 $targetEntity = $this->targetDao->createBlankTarget($target);
             }
             $this->preparedTargetList[$targetEntity->id] = $targetEntity;
             $this->preparedTargetSections[$name][$targetName] = $targetEntity;
         }
     }
 }
 public function renderSitemap()
 {
     $this->invalidLinkMode = self::INVALID_LINK_SILENT;
     $targetList = array();
     foreach ($this->allowedTargetList->getSections() as $section) {
         foreach ($section->getTargetList() as $target) {
             $link = $this->link('//:' . $target->presenter . ':' . $target->action, $target->id);
             if ($link == "#") {
                 continue;
             }
             $target = $this->targetDao->findTarget($target);
             $targetList[] = array("url" => $link, "changefreq" => $target && $target->meta ? $target->meta->sitemapChangeFreq : NULL, "priority" => $target && $target->meta ? $target->meta->sitemapPriority : NULL);
         }
     }
     $this->template->targetList = $targetList;
 }