/** * URL for Subject * * @param Subject $subject * @return string url */ public function linkSubject(Subject $subject) { $arrParams = $this->lateralLink(); $arrParams['field'] = 'subject'; $arrParams['query'] = $subject->value; return $this->request->url_for($arrParams); }
/** * Redirect to a new URL * * @param array|string $location location to redirect to * * @return RedirectResponse */ protected function redirectTo($location) { $url = $location; if (is_array($location)) { $url = $this->request->url_for($location, true); } return new RedirectResponse($url); }
/** * Add links for Category, Database, and Librarian * * @param mixed $object array|Category|Database * @param bool $deep whether to go deep if a Category is supplied */ public function injectDataLinks($object, $deep = true) { if ($object == null) { return null; } // array if (is_array($object) || $object instanceof \ArrayIterator) { foreach ($object as $item) { $this->injectDataLinks($item, $deep); } return null; } // not an object and not an array, so what is it? if (!is_object($object)) { throw new \DomainException('Param must be of type array, Category or Database'); } // Database if ($object instanceof Database) { // record url $params = array('controller' => $this->request->getParam('controller'), 'action' => 'database', 'id' => $object->getId()); $object->url = $this->request->url_for($params, true); // proxy url $params['action'] = 'proxy'; $object->url_proxy = $this->request->url_for($params, true); } elseif ($object instanceof Category) { // category link $params = array('controller' => 'databases', 'action' => 'subject', 'subject' => $object->getNormalized()); $object->url = $this->request->url_for($params, true); // embed link $params = array('controller' => 'embed', 'action' => 'gen-subject', 'subject' => $object->getNormalized()); $object->url_embed = $this->request->url_for($params, true); // embed link $params = array('controller' => 'embed', 'action' => 'gen-subject', 'subject' => $object->getNormalized()); $object->url_embed = $this->request->url_for($params); // only continue if we are going deep if ($deep == true) { // Librarian foreach ($object->getLibrarians() as $librarian) { $params = array('controller' => 'databases', 'action' => 'librarian', 'id' => $librarian->getId()); } // Databases foreach ($object->getSubcategories() as $subcategory) { foreach ($subcategory->getDatabases() as $database_sequence) { $this->injectDataLinks($database_sequence->getDatabase(), $deep); } } } } }