<?php
namespace Meramo\mrm_be\Hooks\PageLayoutView;

/*
 * This file is part of the TYPO3 CMS project.
 *
 * It is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License, either version 2
 * of the License, or any later version.
 *
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 * The TYPO3 project - inspiring people to share!
 */

use \TYPO3\CMS\Core\Utility\GeneralUtility;
use \TYPO3\CMS\Core\Service\FlexFormService;
use \TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface;
use \TYPO3\CMS\Backend\View\PageLayoutView;

/**
 * Contains a preview rendering for the page module of CType="mrm_be_cm_topthemen"
 */
class MrmBeCmTopthemenPreviewRenderer implements PageLayoutViewDrawItemHookInterface
{

  /**
  * Preprocesses the preview rendering of a content element of type "My new content element"
  *
  * @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
  * @param bool $drawItem Whether to draw the item using the default functionality
  * @param string $headerContent Header content
  * @param string $itemContent Item content
  * @param array $row Record row of tt_content
  *
  * @return void
  */
  public function preProcess(
    PageLayoutView &$parentObject,
    &$drawItem,
    &$headerContent,
    &$itemContent,
    array &$row
  )
  {
    if ($row['CType'] === 'mrm_be_cm_topthemen') {

      $headerContent = '<b>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').'</b>';
      $ffs = GeneralUtility::makeInstance(FlexFormService::class);
      $flex = $ffs->convertFlexFormContentToArray($row['pi_flexform']);

      $sections = '';
      $sections .= 'Mo–Mi Woche 1: '.($flex["section1"] != '' ? '&check;' : '&times;').'<br />';
      $sections .= 'Do–Sa Woche 1: '.($flex["section2"] != '' ? '&check;' : '&times;').'<br />';
      $sections .= 'So–Di Woche 1/2: '.($flex["section3"] != '' ? '&check;' : '&times;').'<br />';
      $sections .= 'Mi–Fr Woche 2: '.($flex["section4"] != '' ? '&check;' : '&times;').'<br />';
      $sections .= 'Sa–So Woche 2: '.($flex["section5"] != '' ? '&check;' : '&times;');

      $sectionStart = new \DateTime();
      $sectionStart->setTimestamp($flex['starttime']);
      $sectionStart = $sectionStart->format('W');

      $sectionEnd = new \DateTime();
      $sectionEnd->setTimestamp($flex['starttime']);
      $sectionEnd->modify('+ 13 days');
      $sectionEnd = $sectionEnd->format('W');

      $itemContent .= '<div style="display: flex; flex-direction: row; justify-content: flex-start;"><img src="/typo3conf/ext/mrm_be/Resources/Public/Icons/'.$row['CType'].'.svg" style="width: 32px; height: 32px; margin-right: 6px;"><div style="display: flex; flex-direction: column; min-width: 0;"><strong>'.\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('LLL:EXT:mrm_be/Resources/Private/Language/locallang_ttc.xlf:'.$row['CType'].'.title', '').' (Kalenderwochen '.$sectionStart.' und '.$sectionEnd.'):</strong> '.$flex['key'].'<br /><em style="white-space:nowrap; overflow:hidden;text-overflow: ellipsis;">'.$sections.'</em></div></div>';

      $drawItem = false;
    }
  }
}
