コード例 #1
0
ファイル: Calendar.php プロジェクト: Jobu/core
 /**
  * Add an event to the array of active events
  *
  * @param \CalendarEventsModel $objEvent
  * @param integer              $intStart
  * @param integer              $intEnd
  * @param string               $strUrl
  * @param string               $strBase
  */
 protected function addEvent($objEvent, $intStart, $intEnd, $strUrl, $strBase)
 {
     if ($intEnd < time()) {
         return;
     }
     /** @var \PageModel $objPage */
     global $objPage;
     // Called in the back end (see #4026)
     if ($objPage === null) {
         $objPage = new \stdClass();
         $objPage->dateFormat = \Config::get('dateFormat');
         $objPage->datimFormat = \Config::get('datimFormat');
         $objPage->timeFormat = \Config::get('timeFormat');
     }
     $intKey = date('Ymd', $intStart);
     $span = self::calculateSpan($intStart, $intEnd);
     $format = $objEvent->addTime ? 'datimFormat' : 'dateFormat';
     // Add date
     if ($span > 0) {
         $title = \Date::parse($objPage->{$format}, $intStart) . ' – ' . \Date::parse($objPage->{$format}, $intEnd);
     } else {
         $title = \Date::parse($objPage->dateFormat, $intStart) . ($objEvent->addTime ? ' (' . \Date::parse($objPage->timeFormat, $intStart) . ($intStart < $intEnd ? ' – ' . \Date::parse($objPage->timeFormat, $intEnd) : '') . ')' : '');
     }
     // Add title and link
     $title .= ' ' . $objEvent->title;
     $link = '';
     switch ($objEvent->source) {
         case 'external':
             $link = $objEvent->url;
             break;
         case 'internal':
             if (($objTarget = $objEvent->getRelated('jumpTo')) !== null) {
                 $link = $strBase . $this->generateFrontendUrl($objTarget->row());
             }
             break;
         case 'article':
             if (($objArticle = \ArticleModel::findByPk($objEvent->articleId, array('eager' => true))) !== null && ($objPid = $objArticle->getRelated('pid')) !== null) {
                 $link = $strBase . ampersand($this->generateFrontendUrl($objPid->row(), '/articles/' . (!\Config::get('disableAlias') && $objArticle->alias != '' ? $objArticle->alias : $objArticle->id)));
             }
             break;
     }
     // Link to the default page
     if ($link == '') {
         $link = $strBase . sprintf($strUrl, $objEvent->alias != '' && !\Config::get('disableAlias') ? $objEvent->alias : $objEvent->id);
     }
     // Store the whole row (see #5085)
     $arrEvent = $objEvent->row();
     // Override link and title
     $arrEvent['link'] = $link;
     $arrEvent['title'] = $title;
     // Clean the RTE output
     if ($objPage->outputFormat == 'xhtml') {
         $arrEvent['teaser'] = \StringUtil::toXhtml($objEvent->teaser);
     } else {
         $arrEvent['teaser'] = \StringUtil::toHtml5($objEvent->teaser);
     }
     // Reset the enclosures (see #5685)
     $arrEvent['enclosure'] = array();
     // Add the article image as enclosure
     if ($objEvent->addImage) {
         $objFile = \FilesModel::findByUuid($objEvent->singleSRC);
         if ($objFile !== null) {
             $arrEvent['enclosure'][] = $objFile->path;
         }
     }
     // Enclosures
     if ($objEvent->addEnclosure) {
         $arrEnclosure = deserialize($objEvent->enclosure, true);
         if (is_array($arrEnclosure)) {
             $objFile = \FilesModel::findMultipleByUuids($arrEnclosure);
             if ($objFile !== null) {
                 while ($objFile->next()) {
                     $arrEvent['enclosure'][] = $objFile->path;
                 }
             }
         }
     }
     $this->arrEvents[$intKey][$intStart][] = $arrEvent;
 }
コード例 #2
0
ファイル: Events.php プロジェクト: juergen83/contao
 /**
  * Generate a URL and return it as string
  *
  * @param \CalendarEventsModel $objEvent
  * @param string               $strUrl
  *
  * @return string
  */
 protected function generateEventUrl($objEvent, $strUrl)
 {
     switch ($objEvent->source) {
         // Link to an external page
         case 'external':
             if (substr($objEvent->url, 0, 7) == 'mailto:') {
                 return \String::encodeEmail($objEvent->url);
             } else {
                 return ampersand($objEvent->url);
             }
             break;
             // Link to an internal page
         // Link to an internal page
         case 'internal':
             if (($objTarget = $objEvent->getRelated('jumpTo')) !== null) {
                 return ampersand($this->generateFrontendUrl($objTarget->row()));
             }
             break;
             // Link to an article
         // Link to an article
         case 'article':
             if (($objArticle = \ArticleModel::findByPk($objEvent->articleId, array('eager' => true))) !== null && ($objPid = $objArticle->getRelated('pid')) !== null) {
                 return ampersand($this->generateFrontendUrl($objPid->row(), '/articles/' . (!\Config::get('disableAlias') && $objArticle->alias != '' ? $objArticle->alias : $objArticle->id)));
             }
             break;
     }
     // Link to the default page
     return ampersand(sprintf($strUrl, !\Config::get('disableAlias') && $objEvent->alias != '' ? $objEvent->alias : $objEvent->id));
 }
コード例 #3
0
ファイル: Events.php プロジェクト: burguin/test02
 /**
  * Generate a URL and return it as string
  *
  * @param CalendarEventsModel $objEvent
  *
  * @return string
  */
 public static function generateEventUrl($objEvent)
 {
     $strCacheKey = 'id_' . $objEvent->id;
     // Load the URL from cache
     if (isset(self::$arrUrlCache[$strCacheKey])) {
         return self::$arrUrlCache[$strCacheKey];
     }
     // Initialize the cache
     self::$arrUrlCache[$strCacheKey] = null;
     switch ($objEvent->source) {
         // Link to an external page
         case 'external':
             if (substr($objEvent->url, 0, 7) == 'mailto:') {
                 self::$arrUrlCache[$strCacheKey] = \StringUtil::encodeEmail($objEvent->url);
             } else {
                 self::$arrUrlCache[$strCacheKey] = ampersand($objEvent->url);
             }
             break;
             // Link to an internal page
         // Link to an internal page
         case 'internal':
             if (($objTarget = $objEvent->getRelated('jumpTo')) !== null) {
                 self::$arrUrlCache[$strCacheKey] = ampersand(\Controller::generateFrontendUrl($objTarget->row()));
             }
             break;
             // Link to an article
         // Link to an article
         case 'article':
             if (($objArticle = \ArticleModel::findByPk($objEvent->articleId, array('eager' => true))) !== null && ($objPid = $objArticle->getRelated('pid')) !== null) {
                 self::$arrUrlCache[$strCacheKey] = ampersand(\Controller::generateFrontendUrl($objPid->row(), '/articles/' . ($objArticle->alias ?: $objArticle->id)));
             }
             break;
     }
     // Link to the default page
     if (self::$arrUrlCache[$strCacheKey] === null) {
         $objPage = \PageModel::findByPk($objEvent->getRelated('pid')->jumpTo);
         if ($objPage === null) {
             self::$arrUrlCache[$strCacheKey] = ampersand(\Environment::get('request'), true);
         } else {
             self::$arrUrlCache[$strCacheKey] = ampersand(\Controller::generateFrontendUrl($objPage->row(), (\Config::get('useAutoItem') ? '/' : '/events/') . ($objEvent->alias ?: $objEvent->id)));
         }
     }
     return self::$arrUrlCache[$strCacheKey];
 }
コード例 #4
0
ファイル: Calendar.php プロジェクト: contao/calendar-bundle
 /**
  * Add an event to the array of active events
  *
  * @param CalendarEventsModel $objEvent
  * @param integer             $intStart
  * @param integer             $intEnd
  * @param string              $strUrl
  * @param string              $strBase
  */
 protected function addEvent($objEvent, $intStart, $intEnd, $strUrl, $strBase = '')
 {
     if ($intEnd < time()) {
         return;
     }
     /** @var PageModel $objPage */
     global $objPage;
     // Called in the back end (see #4026)
     if ($objPage === null) {
         $objPage = new \stdClass();
         $objPage->dateFormat = \Config::get('dateFormat');
         $objPage->datimFormat = \Config::get('datimFormat');
         $objPage->timeFormat = \Config::get('timeFormat');
     }
     $intKey = date('Ymd', $intStart);
     $span = self::calculateSpan($intStart, $intEnd);
     $format = $objEvent->addTime ? 'datimFormat' : 'dateFormat';
     // Add date
     if ($span > 0) {
         $title = \Date::parse($objPage->{$format}, $intStart) . ' – ' . \Date::parse($objPage->{$format}, $intEnd);
     } else {
         $title = \Date::parse($objPage->dateFormat, $intStart) . ($objEvent->addTime ? ' (' . \Date::parse($objPage->timeFormat, $intStart) . ($intStart < $intEnd ? ' – ' . \Date::parse($objPage->timeFormat, $intEnd) : '') . ')' : '');
     }
     // Add title and link
     $title .= ' ' . $objEvent->title;
     // Backwards compatibility (see #8329)
     if ($strBase != '' && !preg_match('#^https?://#', $strUrl)) {
         $strUrl = $strBase . $strUrl;
     }
     $link = '';
     switch ($objEvent->source) {
         case 'external':
             $link = $objEvent->url;
             break;
         case 'internal':
             if (($objTarget = $objEvent->getRelated('jumpTo')) instanceof PageModel) {
                 /** @var PageModel $objTarget */
                 $link = $objTarget->getAbsoluteUrl();
             }
             break;
         case 'article':
             if (($objArticle = \ArticleModel::findByPk($objEvent->articleId, array('eager' => true))) !== null && ($objPid = $objArticle->getRelated('pid')) instanceof PageModel) {
                 /** @var PageModel $objPid */
                 $link = ampersand($objPid->getAbsoluteUrl('/articles/' . ($objArticle->alias ?: $objArticle->id)));
             }
             break;
         default:
             $link = sprintf($strUrl, $objEvent->alias ?: $objEvent->id);
             break;
     }
     // Store the whole row (see #5085)
     $arrEvent = $objEvent->row();
     // Override link and title
     $arrEvent['link'] = $link;
     $arrEvent['title'] = $title;
     // Clean the RTE output
     $arrEvent['teaser'] = \StringUtil::toHtml5($objEvent->teaser);
     // Reset the enclosures (see #5685)
     $arrEvent['enclosure'] = array();
     // Add the article image as enclosure
     if ($objEvent->addImage) {
         $objFile = \FilesModel::findByUuid($objEvent->singleSRC);
         if ($objFile !== null) {
             $arrEvent['enclosure'][] = $objFile->path;
         }
     }
     // Enclosures
     if ($objEvent->addEnclosure) {
         $arrEnclosure = \StringUtil::deserialize($objEvent->enclosure, true);
         if (is_array($arrEnclosure)) {
             $objFile = \FilesModel::findMultipleByUuids($arrEnclosure);
             if ($objFile !== null) {
                 while ($objFile->next()) {
                     $arrEvent['enclosure'][] = $objFile->path;
                 }
             }
         }
     }
     $this->arrEvents[$intKey][$intStart][] = $arrEvent;
 }