/**
  * 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);
 }
Пример #2
0
 /**
  * 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;
 }
Пример #6
0
 /**
  * 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);
 }
Пример #7
0
 /**
  * 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;
 }