コード例 #1
0
ファイル: Controller.php プロジェクト: ulrikkold/cal
 /**
  * Returns a array with fields/parameters that can be used for link rendering in typoscript.
  * It's based on the link functions from \TYPO3\CMS\Frontend\Plugin\AbstractPlugin.
  *
  * @param
  *        	array			Referenced array in which the parameters get merged into
  * @param
  *        	array			Array with parameter=>value pairs of piVars that should override present piVars
  * @param
  *        	boolean		Flag that indicates if the linktarget is allowed to be cached (takes care of cacheHash and no_cache parameter)
  * @param
  *        	boolean		Flag that's clearing all present piVars, thus only piVars defined in $overrulePIvars are kept
  * @param
  *        	integer		Alternative ID of a page that should be used as link target. If empty or 0, current page is used
  * @return nothing
  *
  */
 public function getParametersForTyposcriptLink(&$parameterArray, $overrulePIvars = array(), $cache = false, $clearAnyway = false, $altPageId = 0)
 {
     // copied from function 'pi_linkTP_keepPIvars'
     if (is_array($this->piVars) && is_array($overrulePIvars) && !$clearAnyway) {
         $piVars = $this->piVars;
         unset($piVars['DATA']);
         if (\TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger(TYPO3_version) < '6002000') {
             $piVars = GeneralUtility::array_merge_recursive_overrule($piVars, $overrulePIvars);
         } else {
             \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($piVars, $overrulePIvars);
         }
         $overrulePIvars = $piVars;
         if ($this->pi_autoCacheEn) {
             $cache = $this->pi_autoCache($overrulePIvars);
         }
     }
     $piVars = array($this->prefixId => $overrulePIvars);
     /* TEST */
     if ($piVars[$this->prefixId]['getdate']) {
         $date = new \TYPO3\CMS\Cal\Model\CalDate($piVars[$this->prefixId]['getdate']);
         $sessionVars = array();
         switch ($piVars[$this->prefixId]['view']) {
             case 'week':
                 $piVars[$this->prefixId]['year'] = $date->getYear();
                 $piVars[$this->prefixId]['week'] = $date->getWeekOfYear();
                 $piVars[$this->prefixId]['weekday'] = $date->getDayOfWeek();
                 $sessionVars['month'] = substr($piVars[$this->prefixId]['getdate'], 4, 2);
                 $sessionVars['day'] = substr($piVars[$this->prefixId]['getdate'], 6, 2);
                 if ($date->getMonth() == 12 && $piVars[$this->prefixId]['week'] == 1) {
                     $piVars[$this->prefixId]['year']++;
                 }
                 unset($piVars[$this->prefixId]['view']);
                 unset($piVars[$this->prefixId]['getdate']);
                 break;
             case 'event':
             case 'todo':
                 $piVars[$this->prefixId]['year'] = substr($piVars[$this->prefixId]['getdate'], 0, 4);
                 $piVars[$this->prefixId]['month'] = substr($piVars[$this->prefixId]['getdate'], 4, 2);
                 $piVars[$this->prefixId]['day'] = substr($piVars[$this->prefixId]['getdate'], 6, 2);
                 unset($piVars[$this->prefixId]['getdate']);
                 break;
             case 'day':
                 $piVars[$this->prefixId]['year'] = substr($piVars[$this->prefixId]['getdate'], 0, 4);
                 $piVars[$this->prefixId]['month'] = substr($piVars[$this->prefixId]['getdate'], 4, 2);
                 $piVars[$this->prefixId]['day'] = substr($piVars[$this->prefixId]['getdate'], 6, 2);
             case 'month':
                 $piVars[$this->prefixId]['year'] = substr($piVars[$this->prefixId]['getdate'], 0, 4);
                 $piVars[$this->prefixId]['month'] = substr($piVars[$this->prefixId]['getdate'], 4, 2);
                 $sessionVars['day'] = substr($piVars[$this->prefixId]['getdate'], 6, 2);
             case 'year':
                 $piVars[$this->prefixId]['year'] = substr($piVars[$this->prefixId]['getdate'], 0, 4);
                 $sessionVars['month'] = substr($piVars[$this->prefixId]['getdate'], 4, 2);
                 $sessionVars['day'] = substr($piVars[$this->prefixId]['getdate'], 6, 2);
                 unset($piVars[$this->prefixId]['view']);
                 unset($piVars[$this->prefixId]['getdate']);
         }
         foreach ($sessionVars as $key => $value) {
             //$_SESSION[$this->prefixId][$key] = $value;
         }
     }
     /* TEST */
     // use internal method for cleaning up piVars
     $this->cleanupUrlParameter($piVars);
     // copied and modified logic of function 'pi_linkTP'
     # once useCacheHash property in typolinks has stdWrap, we can use this flag - until then it's unfortunately useless :(
     #$parameterArray['link_useCacheHash'] = $this->pi_USER_INT_obj ? 0 : $cache;
     $parameterArray['link_no_cache'] = $this->pi_USER_INT_obj ? 0 : !$cache;
     $parameterArray['link_parameter'] = $altPageId ? $altPageId : ($this->pi_tmpPageId ? $this->pi_tmpPageId : $GLOBALS['TSFE']->id);
     $parameterArray['link_additionalParams'] = $this->conf['parent.']['addParams'] . GeneralUtility::implodeArrayForUrl('', $piVars, '', true) . $this->pi_moreParams;
     $parameterArray['link_ATagParams'] = 'class="url"';
     # add time/date related parameters to all link objects, so that they can use them e.g. to display the monthname etc.
     $parameterArray['getdate'] = $this->conf['getdate'];
     if ($overrulePIvars['getdate'] && is_object($date)) {
         $parameterArray['link_timestamp'] = $date->getTime();
         $parameterArray['link_getdate'] = $overrulePIvars['getdate'];
     }
 }
コード例 #2
0
ファイル: NewWeekView.php プロジェクト: ulrikkold/cal
 public function addEvent(&$event)
 {
     $eventStart = new \TYPO3\CMS\Cal\Model\CalDate();
     $eventStart->copy($event->getStart());
     $eventStartFormatted = $eventStart->format('%Y%m%d');
     $eventStartYear = $eventStart->year;
     $eventEndFormatted = $event->getEnd()->format('%Y%m%d');
     $eventEndYear = $event->getEnd()->year;
     $eventStartWeek = $event->getStart()->getWeekOfYear();
     $eventEndWeek = $event->getEnd()->getWeekOfYear();
     if (($eventStartWeek == 52 || $eventStartWeek == 53) && $event->getStart()->month == 1) {
         $eventStartYear--;
     }
     if (($eventEndWeek == 52 || $eventEndWeek == 53) && $event->getEnd()->month == 1) {
         $eventEndYear--;
     }
     if ($eventStartWeek == 1 && $event->getStart()->month == 12) {
         $eventStartYear++;
     }
     if ($eventEndWeek == 1 && $event->getEnd()->month == 12) {
         $eventEndYear++;
     }
     if ($event->isAllday() || $eventStartFormatted != $eventEndFormatted) {
         $eventYearEnd = $event->getEnd()->year;
         if ($event->getEnd()->month == 12 && $event->getEnd()->getWeekOfYear() == 1) {
             $eventYearEnd++;
         }
         if (!($eventStartYear == $this->year && $eventStart->getWeekOfYear() == $this->week) && $eventStart->year . sprintf("%02d", $eventStart->getWeekOfYear()) < $this->year . sprintf("%02d", $this->week) && $eventYearEnd . sprintf("%02d", $event->getEnd()->getWeekOfYear()) >= $this->year . sprintf("%02d", $this->week)) {
             do {
                 $eventStart->addSeconds(86400);
                 $eventStartYear = $eventStart->year;
                 $eventWeek = $eventStart->getWeekOfYear();
                 if ($eventStart->month == 1 && $eventWeek > 50) {
                     $eventStartYear--;
                 }
             } while ($eventStartYear . sprintf("%02d", $eventWeek) < $this->year . sprintf("%02d", $this->week));
             $eventStartFormatted = $eventStart->format('%Y%m%d');
         }
         if ($eventStartYear == $this->year && $eventStart->getWeekOfYear() == $this->week) {
             $this->alldays[$eventStartFormatted][] = $event;
             $this->weekHasEvent = true;
             $first = true;
             do {
                 $this->dayHasEvent[$eventStart->getDayOfWeek()] = true;
                 if (is_object($this->days[$eventStart->format('%Y%m%d')])) {
                     $this->days[$eventStart->format('%Y%m%d')]->hasAlldayEvents = true;
                     if ($first) {
                         $this->days[$eventStart->format('%Y%m%d')]->addEvent($event);
                         $first = false;
                     }
                 }
                 $eventStart->addSeconds(86400);
                 $eventStartYear = $eventStart->year;
                 $eventWeek = $eventStart->getWeekOfYear();
                 if ($eventStart->month == 1 && $eventWeek > 50) {
                     $eventStartYear--;
                 }
             } while ($eventStart->format('%Y%m%d') <= $eventEndFormatted && $eventStartYear . sprintf("%02d", $eventStart->getWeekOfYear()) <= $this->year . sprintf("%02d", $this->week));
         }
     } else {
         do {
             if ($eventStartYear == $this->year && $eventStartWeek == $this->week) {
                 $this->dayHasEvent[$eventStart->getDayOfWeek()] = true;
                 if (is_object($this->days[$eventStart->format('%Y%m%d')])) {
                     $this->days[$eventStart->format('%Y%m%d')]->addEvent($event);
                 }
                 $this->weekHasEvent = true;
             }
             $eventStart->addSeconds(86400);
             $eventStartYear = $eventStart->year;
             if ($eventStart->month == 1 && $eventWeek > 50) {
                 $eventStartYear--;
             }
             $eventStartWeek = $eventStart->getWeekOfYear();
         } while ($eventStart->format('%Y%m%d') <= $eventEndFormatted && $eventStartWeek <= $this->week);
     }
 }