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); } }
/** * 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())); }
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; }