/** * Creates a link to a given page with a given link text with the current * tx_solr parameters appended to the URL * * @param array Array of arguments, [0] is the link text, [1] is the (optional) page Id to link to (otherwise TSFE->id), [2] are additional URL parameters, [3] use cache, defaults to FALSE * @return string complete anchor tag with URL and link text */ public function execute(array $arguments = array()) { $linkText = $arguments[0]; $pageId = $arguments[1] ? intval($arguments[1]) : $GLOBALS['TSFE']->id; $additionalParameters = $arguments[2] ? $arguments[2] : ''; $useCache = $arguments[3] ? TRUE : FALSE; $query = $this->search->getQuery(); $prefix = 'tx_solr'; $getParameters = t3lib_div::_GET($prefix); $piVars = is_array($getParameters) ? $getParameters : array(); $queryParameters = array_merge($piVars, array('q' => $query->getKeywords())); $queryParameters = $query->removeUnwantedUrlParameters($queryParameters); $linkConfiguration = array('useCacheHash' => $useCache, 'no_cache' => FALSE, 'parameter' => $pageId, 'additionalParams' => t3lib_div::implodeArrayForUrl('', array($prefix => $queryParameters), '', TRUE) . $additionalParameters); return $this->contentObject->typoLink($linkText, $linkConfiguration); }
/** * Creates a link to a given page with a given link text * * @param array Array of arguments, [0] is the link text, [1] is the (optional) page Id to link to (otherwise TSFE->id), [2] are additional URL parameters, [3] use cache, defaults to FALSE, [4] additional A tag parameters * @return string complete anchor tag with URL and link text */ public function execute(array $arguments = array()) { $linkText = $arguments[0]; $additionalParameters = $arguments[2] ? $arguments[2] : ''; $useCache = $arguments[3] ? TRUE : FALSE; $ATagParams = $arguments[4] ? $arguments[4] : ''; // by default or if no link target is set, link to the current page $linkTarget = $GLOBALS['TSFE']->id; // if the link target is a number, interprete it as a page ID $linkArgument = trim($arguments[1]); if (is_numeric($linkArgument)) { $linkTarget = intval($linkArgument); } elseif (!empty($linkArgument) && is_string($linkArgument)) { if (Tx_Solr_Util::isValidTypoScriptPath($linkArgument)) { try { $typoscript = Tx_Solr_Util::getTypoScriptObject($linkArgument); $pathExploded = explode('.', $linkArgument); $lastPathSegment = array_pop($pathExploded); $linkTarget = intval($typoscript[$lastPathSegment]); } catch (InvalidArgumentException $e) { // ignore exceptions caused by markers, but accept the exception for wrong TS paths if (substr($linkArgument, 0, 3) != '###') { throw $e; } } } elseif (\TYPO3\CMS\Core\Utility\GeneralUtility::isValidUrl($linkArgument) || \TYPO3\CMS\Core\Utility\GeneralUtility::isValidUrl(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST') . '/' . $linkArgument)) { // $linkTarget is an URL $linkTarget = filter_var($linkArgument, FILTER_SANITIZE_URL); } } $linkConfiguration = array('useCacheHash' => $useCache, 'no_cache' => FALSE, 'parameter' => $linkTarget, 'additionalParams' => $additionalParameters, 'ATagParams' => $ATagParams); return $this->contentObject->typoLink($linkText, $linkConfiguration); }
/** * generate the link for normal textlinks * * @param string $filterUid * @param string $option * @return string The complete link as A-Tag */ public function generateLink($filterUid, $option) { $filters = $this->pObj->filters->getFilters(); $params = array(); $params[] = '[page]=1'; $params[] = '[filter][' . $filterUid . '][' . $option['uid'] . ']=' . $option['tag']; $excludes = array(); $excludes[] = 'id'; $excludes[] = 'tx_kesearch_pi1[multi]'; // hook: modifyParamsForTextlinks // This is useful if you want to define special sortings for each textlink if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ke_search']['modifyParamsForTextlinks'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ke_search']['modifyParamsForTextlinks'] as $_classRef) { $_procObj =& TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($_classRef); $_procObj->modifyParamsForTextlinks($params, $excludes, $option, $this->conf, $this->pObj); } } foreach ($params as $key => $value) { $params[$key] = $this->cObj->wrap($value, $this->pObj->prefixId . '|'); } $conf = array(); $conf['parameter'] = $this->conf['resultPage']; $conf['addQueryString'] = '1'; $conf['addQueryString.']['exclude'] = implode(',', $excludes); $conf['additionalParams'] = '&' . implode('&', $params); $number_of_results = $this->pObj->renderNumberOfResultsString($option['results'], $filters[$filterUid]); return $this->cObj->typoLink($option['title'] . $number_of_results, $conf); }
/** * Creates a link to a given page with a given link text * * @param array Array of arguments, [0] is the link text, [1] is the (optional) page Id to link to (otherwise TSFE->id), [2] are additional URL parameters, [3] use cache, defaults to FALSE * @return string complete anchor tag with URL and link text */ public function execute(array $arguments = array()) { $linkText = $arguments[0]; $additionalParameters = $arguments[2] ? $arguments[2] : ''; $useCache = $arguments[3] ? TRUE : FALSE; // by default or if no link target is set, link to the current page $linkTarget = $GLOBALS['TSFE']->id; // if the link target is a number, interprete it as a page ID if (is_numeric($arguments[1])) { $linkTarget = intval($arguments[1]); } // treat everything else as an URL if (filter_var($arguments[1], FILTER_VALIDATE_URL)) { $linkTarget = filter_var($arguments[1], FILTER_SANITIZE_URL); } $linkConfiguration = array('useCacheHash' => $useCache, 'no_cache' => FALSE, 'parameter' => $linkTarget, 'additionalParams' => $additionalParameters); return $this->contentObject->typoLink($linkText, $linkConfiguration); }
/** * get result url (not) linked * @return string The results URL */ public function getResultUrl($linked = false) { $linkText = $this->cObj->typoLink_URL($this->getResultLinkConfiguration()); $linkText = htmlspecialchars($linkText); if ($linked) { return $this->cObj->typoLink($linkText, $this->getResultLinkConfiguration()); } return $linkText; }
/** * Get link of language menu entry * * @param $uid * @return string */ protected function getLanguageUrl($uid) { $getValues = t3lib_div::_GET(); $getValues['L'] = $uid; $currentPage = $GLOBALS['TSFE']->id; unset($getValues['id']); unset($getValues['cHash']); $addParams = http_build_query($getValues); $config = array('parameter' => $currentPage, 'returnLast' => 'url', 'additionalParams' => '&' . $addParams, 'useCacheHash' => $this->arguments['useCHash']); return $this->cObj->typoLink('', $config); }
/** * Generates a html link - an anchor tag. * * TODO currently everything in $additionalQueryParameters is prefixed with tx_solr, * allow arbitrary parameters, too (either filter them out or introduce a new 4th parameter) * * @param string $linkText Link Text * @param array $additionalQueryParameters Additional query parameters * @param array $typolinkOptions Typolink Options * @return string A html link */ public function getQueryLink($linkText, array $additionalQueryParameters = array(), array $typolinkOptions = array()) { $queryParameters = array_merge($this->getPluginParameters(), $additionalQueryParameters); $queryParameters = $this->removeUnwantedUrlParameters($queryParameters); $queryGetParameter = ''; $keywords = $this->query->getKeywords(); if (!empty($keywords)) { $queryGetParameter = '&q=' . $keywords; } $linkConfiguration = array('useCacheHash' => FALSE, 'no_cache' => FALSE, 'parameter' => $this->linkTargetPageId, 'additionalParams' => \TYPO3\CMS\Core\Utility\GeneralUtility::implodeArrayForUrl('', array($this->prefix => $queryParameters), '', TRUE) . $this->getUrlParameters() . $queryGetParameter); // merge linkConfiguration with typolinkOptions $linkConfiguration = array_merge($linkConfiguration, $typolinkOptions); return $this->contentObject->typoLink($linkText, $linkConfiguration); }
/** * generate the link for the given sorting value * * @param string $field * @param string $sortByDir * @return string The complete link as A-Tag */ public function generateSortingLink($field, $sortByDir) { $params = array(); $params['sortByField'] = $field; $params['sortByDir'] = $sortByDir; foreach ($params as $key => $value) { $params[$key] = $this->cObj->wrap($value, $this->pObj->prefixId . '[' . $key . ']=|'); } $conf = array(); $conf['parameter'] = $GLOBALS['TSFE']->id; $conf['addQueryString'] = '1'; $conf['addQueryString.']['exclude'] = 'id,tx_kesearch_pi1[multi],cHash'; $conf['additionalParams'] = '&' . implode('&', $params); return $this->cObj->typoLink($this->pObj->pi_getLL('orderlink_' . $field, $field), $conf); }
/** * Link string to the current page. * Returns the $str wrapped in <a>-tags with a link to the CURRENT page, but with $urlParameters set as extra parameters for the page. * * @param string The content string to wrap in <a> tags * @param array Array with URL parameters as key/value pairs. They will be "imploded" and added to the list of parameters defined in the plugins TypoScript property "parent.addParams" plus $this->pi_moreParams. * @param boolean If $cache is set (0/1), the page is asked to be cached by a &cHash value (unless the current plugin using this class is a USER_INT). Otherwise the no_cache-parameter will be a part of the link. * @param integer Alternative page ID for the link. (By default this function links to the SAME page!) * @return string The input string wrapped in <a> tags * @see pi_linkTP_keepPIvars(), tslib_cObj::typoLink() */ function pi_linkTP($str, $urlParameters = array(), $cache = 0, $altPageId = 0) { $conf = array(); $conf['useCacheHash'] = $this->pi_USER_INT_obj ? 0 : $cache; $conf['no_cache'] = $this->pi_USER_INT_obj ? 0 : !$cache; $conf['parameter'] = $altPageId ? $altPageId : ($this->pi_tmpPageId ? $this->pi_tmpPageId : $GLOBALS['TSFE']->id); $conf['additionalParams'] = $this->conf['parent.']['addParams'] . t3lib_div::implodeArrayForUrl('', $urlParameters, '', true) . $this->pi_moreParams; return $this->cObj->typoLink($str, $conf); }
/** * Calls typolink to create menu item links. * * @param array $page Page record (uid points where to link to) * @param string $oTarget Target frame/window * @param boolean $no_cache true if caching should be disabled * @param string $script Alternative script name * @param array $overrideArray Array to override values in $page * @param string $addParams Parameters to add to URL * @param array $typeOverride "type" value * @return array See linkData */ function menuTypoLink($page, $oTarget, $no_cache, $script, $overrideArray = '', $addParams = '', $typeOverride = '') { $conf = array('parameter' => is_array($overrideArray) && $overrideArray['uid'] ? $overrideArray['uid'] : $page['uid']); if ($typeOverride && t3lib_div::testInt($typeOverride)) { $conf['parameter'] .= ',' . $typeOverride; } if ($addParams) { $conf['additionalParams'] = $addParams; } if ($no_cache) { $conf['no_cache'] = true; } if ($oTarget) { $conf['target'] = $oTarget; } if ($page['sectionIndex_uid']) { $conf['section'] = $page['sectionIndex_uid']; } $this->parent_cObj->typoLink('|', $conf); $LD = $this->parent_cObj->lastTypoLinkLD; $LD['totalURL'] = $this->parent_cObj->lastTypoLinkUrl; return $LD; }