/**
  * Add the news uid to a global variable to be able to exclude it later
  *
  * @param Tx_News_Domain_Model_News $newsItem current news item
  * @return void
  */
 public function render(Tx_News_Domain_Model_News $newsItem)
 {
     $uid = $newsItem->getUid();
     if (empty($GLOBALS['EXT']['news']['alreadyDisplayed'])) {
         $GLOBALS['EXT']['news']['alreadyDisplayed'] = array();
     }
     $GLOBALS['EXT']['news']['alreadyDisplayed'][$uid] = $uid;
 }
 public function render(Tx_News_Domain_Model_News $newsItem)
 {
     $vars = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_news_pi1');
     if (isset($vars['news']) && (int) $newsItem->getUid() === (int) $vars['news']) {
         return $this->renderThenChild();
     } else {
         return $this->renderElseChild();
     }
 }
 /**
  * Add the news uid to a global variable to be able to exclude it later
  *
  * @param Tx_News_Domain_Model_News $newsItem current news item
  * @return void
  */
 public function render(Tx_News_Domain_Model_News $newsItem)
 {
     $uid = $newsItem->getUid();
     if (empty($GLOBALS['EXT']['news']['alreadyDisplayed'])) {
         $GLOBALS['EXT']['news']['alreadyDisplayed'] = array();
     }
     $GLOBALS['EXT']['news']['alreadyDisplayed'][$uid] = $uid;
     // Add localized uid as well
     $originalUid = (int) $newsItem->_getProperty('_localizedUid');
     if ($originalUid > 0) {
         $GLOBALS['EXT']['news']['alreadyDisplayed'][$originalUid] = $originalUid;
     }
 }
 /**
  * Output different objects
  *
  * @param Tx_News_Domain_Model_News $newsItem current newsitem
  * @param string $as output variable
  * @param string $className custom class which handles the new objects
  * @param string $extendedTable table which is extended
  * @return string output
  */
 public function render(Tx_News_Domain_Model_News $newsItem, $as, $className, $extendedTable = 'tx_news_domain_model_news')
 {
     $rawRecord = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', $extendedTable, 'uid=' . (int) $newsItem->getUid());
     $rawRecord = $GLOBALS['TSFE']->sys_page->getRecordOverlay($extendedTable, $rawRecord, $GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL);
     $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     /* @var $dataMapper \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper */
     $dataMapper = $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Mapper\\DataMapper');
     $records = $dataMapper->map($className, array($rawRecord));
     $record = array_shift($records);
     $this->templateVariableContainer->add($as, $record);
     $output = $this->renderChildren();
     $this->templateVariableContainer->remove($as);
     return $output;
 }
    /**
     * Render disqus thread
     *
     * @param Tx_News_Domain_Model_News $newsItem news item
     * @param string $shortName shortname
     * @param string $link link
     * @return string
     */
    public function render(Tx_News_Domain_Model_News $newsItem, $shortName, $link)
    {
        $tsSettings = $this->pluginSettingsService->getSettings();
        $code = '<script type="text/javascript">
					var disqus_shortname = ' . t3lib_div::quoteJSvalue($shortName, TRUE) . ';
					var disqus_identifier = \'news_' . $newsItem->getUid() . '\';
					var disqus_url = ' . t3lib_div::quoteJSvalue($link, TRUE) . ';
					var disqus_title = ' . t3lib_div::quoteJSvalue($newsItem->getTitle(), TRUE) . ';
					var disqus_config = function () {
						this.language = ' . t3lib_div::quoteJSvalue($tsSettings['disqusLang']) . ';
					};

					(function() {
						var dsq = document.createElement("script"); dsq.type = "text/javascript"; dsq.async = true;
						dsq.src = "http://" + disqus_shortname + ".disqus.com/embed.js";
						(document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]).appendChild(dsq);
					})();
				</script>';
        return $code;
    }
    /**
     * @param Tx_News_Domain_Model_News $news
     * @param $pidList
     * @param $sortField
     * @return array
     */
    protected function getNeighbours(Tx_News_Domain_Model_News $news, $pidList, $sortField)
    {
        $pidList = empty($pidList) ? $news->getPid() : $pidList;
        $select = 'SELECT tx_news_domain_model_news.uid,tx_news_domain_model_news.title ';
        $from = 'FROM tx_news_domain_model_news';
        $whereClause = 'tx_news_domain_model_news.pid IN(' . $this->databaseConnection->cleanIntList($pidList) . ') ' . $this->getEnableFieldsWhereClauseForTable();
        $query = $select . $from . '
					WHERE ' . $whereClause . ' && ' . $sortField . ' >= (SELECT MAX(' . $sortField . ')
						' . $from . '
					WHERE ' . $whereClause . ' AND ' . $sortField . ' < (SELECT ' . $sortField . '
						FROM tx_news_domain_model_news
						WHERE tx_news_domain_model_news.uid = ' . $news->getUid() . '))
					ORDER BY ' . $sortField . ' ASC
					LIMIT 3';
        $query2 = $select . $from . '
			WHERE ' . $whereClause . ' AND ' . $sortField . '= (SELECT MIN(' . $sortField . ')
				FROM tx_news_domain_model_news
				WHERE ' . $whereClause . ' AND ' . $sortField . ' >
					(SELECT ' . $sortField . '
					FROM tx_news_domain_model_news
					WHERE tx_news_domain_model_news.uid = ' . $news->getUid() . '))
			';
        $res = $this->databaseConnection->sql_query($query);
        $out = array();
        while ($row = $this->databaseConnection->sql_fetch_assoc($res)) {
            $out[] = $row;
        }
        $this->databaseConnection->sql_free_result($res);
        if (count($out) === 0) {
            $res = $this->databaseConnection->sql_query($query2);
            while ($row = $this->databaseConnection->sql_fetch_assoc($res)) {
                $out[] = $row;
            }
            $this->databaseConnection->sql_free_result($res);
            return $out;
        }
        return $out;
    }