/** * @param RokSprocket_Item $item * @param bool|string $default_field * @param bool|string $defaults_custom_field * @param bool|string $per_item_field * * @return bool|null|RokSprocket_Item_Link */ protected function setupLink(RokSprocket_Item &$item, $default_field = false, $defaults_custom_field = false, $per_item_field = false) { $link = false; $deflink = false; if (!$default_field) { $deflink = false; } else { switch ($this->parameters->get($default_field, 'primary')) { case 'none': $deflink = false; break; case 'primary': $deflink = $item->getPrimaryLink(); break; case 'custom': if ($defaults_custom_field) { $deflink = $this->parameters->get($defaults_custom_field, false) ? new RokSprocket_Item_Link(htmlspecialchars(htmlspecialchars_decode($this->parameters->get($defaults_custom_field)))) : false; break; } default: $deflink = $item->getLink($this->parameters->get($default_field)); } } if (!$per_item_field) { $link = $deflink; } else { switch (trim($item->getParam($per_item_field, '-default-'))) { case '-none-': $link = false; break; case '-article-': $link = $item->getPrimaryLink(); break; case '-default-': $link = $deflink; break; default: $link = $item->getParam($per_item_field, ''); if (!empty($link)) { $link = new RokSprocket_Item_Link(htmlspecialchars(htmlspecialchars_decode($item->getParam($per_item_field, '')))); } else { $link = $deflink; } } } return $link; }