Skip to content
Snippets Groups Projects
Commit 42311d5c authored by Matthias Adrowski's avatar Matthias Adrowski
Browse files

[TASK] ECS run

parent f8ea489d
No related branches found
No related tags found
1 merge request!38Feature upgrade to typo3 11
Showing
with 150 additions and 105 deletions
......@@ -76,7 +76,8 @@ class PreviewRenderer implements PreviewRendererInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$templateData = [
......@@ -101,7 +102,8 @@ class PreviewRenderer implements PreviewRendererInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$categories = $pluginConfiguration['settings.categories']['vDEF'];
......@@ -109,10 +111,12 @@ class PreviewRenderer implements PreviewRendererInterface {
$templateData = [
'limit' => $pluginConfiguration['settings.limit']['vDEF'],
'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList(
'pages', $categories
'pages',
$categories
) : '',
'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList(
'sys_category', $tags
'sys_category',
$tags
) : '',
'starttime' => $pluginConfiguration['settings.starttime']['vDEF'],
'endtime' => $pluginConfiguration['settings.endtime']['vDEF'],
......@@ -130,7 +134,8 @@ class PreviewRenderer implements PreviewRendererInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$categories = $pluginConfiguration['settings.categories']['vDEF'];
......@@ -138,7 +143,8 @@ class PreviewRenderer implements PreviewRendererInterface {
$templateData = [
'newsLimitPerPage' => $pluginConfiguration['settings.newsLimitPerPage']['vDEF'],
'categories' => is_string($categories) ? $this->addFieldContentsToRecordIdList(
'pages', $categories
'pages',
$categories
) : '',
'tags' => is_string($tags) ? $this->addFieldContentsToRecordIdList('sys_category', $tags) : '',
'starttime' => $pluginConfiguration['settings.starttime']['vDEF'],
......@@ -158,26 +164,33 @@ class PreviewRenderer implements PreviewRendererInterface {
// Get available plugin settings and their values from flexform
$pluginConfiguration = GeneralUtility::xml2array(
$row['pi_flexform'], 'T3DataStructure'
$row['pi_flexform'],
'T3DataStructure'
)['data']['main']['lDEF'];
$newsAuthors = $pluginConfiguration['settings.newsAuthors']['vDEF'];
$templateData = [
'showDetails' => $pluginConfiguration['settings.showDetails']['vDEF'],
'newsAuthors' => is_string($newsAuthors) ? $this->addFieldContentsToRecordIdList(
'tx_sgnews_domain_model_author',$newsAuthors,'name'
'tx_sgnews_domain_model_author',
$newsAuthors,
'name'
) : ''
];
// Not using addFieldContentsToRecordIdList to avoid repetitive imploding and exploding.
$excludedNewsIds = GeneralUtility::intExplode(
',', $pluginConfiguration['settings.excludedNews']['vDEF'], TRUE
',',
$pluginConfiguration['settings.excludedNews']['vDEF'],
TRUE
);
$excludedNewsListWithTitles = [];
foreach ($excludedNewsIds as $excludedNewsId) {
$excludedNewsListWithTitles[] = BackendUtility::getRecord(
'pages', $excludedNewsId, 'title'
)['title'] . ' [' . $excludedNewsId . ']';
'pages',
$excludedNewsId,
'title'
)['title'] . ' [' . $excludedNewsId . ']';
}
$templateData['excludedNews'] = $excludedNewsListWithTitles;
......@@ -251,8 +264,10 @@ class PreviewRenderer implements PreviewRendererInterface {
foreach ($recordIdsArray as $recordId) {
$recordsWithTitlesArray[] = BackendUtility::getRecord(
$table, $recordId, $field
)[$field] . ' [' . $recordId . ']';
$table,
$recordId,
$field
)[$field] . ' [' . $recordId . ']';
}
return implode(', ', $recordsWithTitlesArray);
}
......
......@@ -36,7 +36,6 @@ use TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException;
* This service provides helper function for dealing with plugin configuration
*/
class ConfigurationService implements SingletonInterface {
/**
* @var array
*/
......
......@@ -61,7 +61,10 @@ class ImageService implements SingletonInterface {
* @throws \InvalidArgumentException
*/
public function cropFirstMediaImage(
FileReference $image, array $coordinates, $path = 'typo3temp/sg_news/', $prefix = ''
FileReference $image,
array $coordinates,
$path = 'typo3temp/sg_news/',
$prefix = ''
): string {
$originalResource = $image->getOriginalResource();
$extension = strtolower($originalResource->getExtension());
......
......@@ -35,7 +35,6 @@ use TYPO3\CMS\Extbase\Object\ObjectManager;
* This class contains methods for usage within the TCA forms.
*/
class TcaProvider implements SingletonInterface {
/**
* @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
*/
......@@ -84,8 +83,8 @@ class TcaProvider implements SingletonInterface {
$workspaceOriginalId = (int) $row['t3ver_oid'];
if ($workspaceOriginalId > 0) {
$row = $queryBuilder->where(
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($workspaceOriginalId, \PDO::PARAM_INT))
)->execute()->fetch();
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($workspaceOriginalId, \PDO::PARAM_INT))
)->execute()->fetch();
}
// only articles
......
......@@ -153,7 +153,7 @@ class MigrateSchedulerTasks implements UpgradeWizardInterface {
*/
protected function cleanArrayKeys(array $array) {
$newArray = [];
foreach($array as $key => $value) {
foreach ($array as $key => $value) {
$newArray[str_replace("\0", '', $key)] = $value;
}
return $newArray;
......
......@@ -70,8 +70,7 @@ class AddAdditionalMailRecipients implements SingletonInterface {
return $authorEmail;
}
public function setContentObjectRenderer(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj): void
{
public function setContentObjectRenderer(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj): void {
$this->cObj = $cObj;
}
}
......@@ -50,7 +50,6 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
* Class Utility
*/
class BackendNewsUtility {
/**
* @var int The category page doktype
*/
......@@ -92,7 +91,12 @@ class BackendNewsUtility {
$andWhere = ' AND sys_language_uid IN (0,-1)';
/** @var array $rootOptionRows */
$rootOptionRows = self::getRecordsByField(
'pages', 'is_siteroot', 1, $andWhere, '', 'sorting'
'pages',
'is_siteroot',
1,
$andWhere,
'',
'sorting'
);
if ($rootOptionRows) {
foreach ($rootOptionRows as $row) {
......@@ -106,7 +110,8 @@ class BackendNewsUtility {
foreach ($categories as $categoryUid => $categoryTitle) {
if ((int) $pageInfo['uid'] !== $categoryUid) {
$categoryPageInfo = BackendUtility::readPageAccess(
$categoryUid, $GLOBALS['BE_USER']->getPagePermsClause(1)
$categoryUid,
$GLOBALS['BE_USER']->getPagePermsClause(1)
);
if ($categoryPageInfo) {
$options[] = self::getOptionPageInfo($categoryPageInfo);
......@@ -154,7 +159,10 @@ class BackendNewsUtility {
// get all pageids below the given siteroot
$queryGenerator = GeneralUtility::makeInstance(QueryGenerator::class);
$childPids = $queryGenerator->getTreeList(
$siteRootUid, PHP_INT_MAX, 0, $GLOBALS['BE_USER']->getPagePermsClause(1)
$siteRootUid,
PHP_INT_MAX,
0,
$GLOBALS['BE_USER']->getPagePermsClause(1)
);
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
......@@ -171,7 +179,8 @@ class BackendNewsUtility {
$categories = [];
foreach ($result as $page) {
$categoryPageInfo = BackendUtility::readPageAccess(
(int) $page['uid'], $GLOBALS['BE_USER']->getPagePermsClause(1)
(int) $page['uid'],
$GLOBALS['BE_USER']->getPagePermsClause(1)
);
if ($categoryPageInfo) {
$categories[(int) $page['uid']] = $page['title'];
......@@ -317,7 +326,8 @@ class BackendNewsUtility {
$filterCategories = $filters['categories'];
foreach ($filterCategories as $categoryUid) {
$categoryPageInfo = BackendUtility::readPageAccess(
(int) $categoryUid, $GLOBALS['BE_USER']->getPagePermsClause(1)
(int) $categoryUid,
$GLOBALS['BE_USER']->getPagePermsClause(1)
);
if ($categoryPageInfo) {
$categories[] = (int) $categoryUid;
......@@ -333,9 +343,14 @@ class BackendNewsUtility {
$allowedUids = [];
foreach ($categories as $categoryUid) {
$allowedUidsTemp = GeneralUtility::intExplode(
',', $queryGenerator->getTreeList(
$categoryUid, 1, 0, $GLOBALS['BE_USER']->getPagePermsClause(1)
), TRUE
',',
$queryGenerator->getTreeList(
$categoryUid,
1,
0,
$GLOBALS['BE_USER']->getPagePermsClause(1)
),
TRUE
);
$allowedUids = array_unique(array_merge($allowedUids, $allowedUidsTemp));
}
......@@ -348,13 +363,14 @@ class BackendNewsUtility {
$deletedRestriction = GeneralUtility::makeInstance(DeletedRestriction::class);
$queryBuilder = $connectionPool->getQueryBuilderForTable('pages');
$queryBuilder->getRestrictions()->removeAll()->add($deletedRestriction);
$queryBuilder->select('p.uid',
'p.pid',
'p.hidden',
'p.sorting',
'p.doktype',
'p.title'
)->from('pages', 'p')
$queryBuilder->select(
'p.uid',
'p.pid',
'p.hidden',
'p.sorting',
'p.doktype',
'p.title'
)->from('pages', 'p')
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->in('p.uid', $queryBuilder->createNamedParameter($allowedUids, Connection::PARAM_INT_ARRAY)),
......@@ -364,7 +380,10 @@ class BackendNewsUtility {
->groupBy('p.uid')
->orderBy('p.sorting');
if ($languageUid) {
$queryBuilder->leftJoin('p', 'pages', 'translation',
$queryBuilder->leftJoin(
'p',
'pages',
'translation',
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('translation.l10n_parent', 'p.uid'),
$queryBuilder->expr()->eq('translation.sys_language_uid', $queryBuilder->createNamedParameter($languageUid, \PDO::PARAM_INT))
......@@ -373,7 +392,10 @@ class BackendNewsUtility {
}
if (isset($filters['tags']) && is_array($filters['tags']) && count($filters['tags'])) {
$queryBuilder->innerJoin('p', 'sys_category_record_mm', 'tag',
$queryBuilder->innerJoin(
'p',
'sys_category_record_mm',
'tag',
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('tag.tablenames', $queryBuilder->createNamedParameter('pages')),
$queryBuilder->expr()->eq('tag.fieldname', $queryBuilder->createNamedParameter('tx_sgnews_tags')),
......@@ -484,12 +506,19 @@ class BackendNewsUtility {
* @return mixed Multidimensional array with selected records (if any is selected)
*/
public static function getRecordsByField(
$theTable, $theField, $theValue, $whereClause = '', $groupBy = '', $orderBy = '', $limit = '',
$theTable,
$theField,
$theValue,
$whereClause = '',
$groupBy = '',
$orderBy = '',
$limit = '',
$useDeleteClause = TRUE
) {
if (is_array($GLOBALS['TCA'][$theTable])) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($theTable);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));;
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
;
if ($useDeleteClause) {
$queryBuilder->getRestrictions()
->add(GeneralUtility::makeInstance(DeletedRestriction::class));
......
......@@ -32,7 +32,6 @@ use TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper;
* Abstract view helper
*/
class AbstractViewHelper extends AbstractBackendViewHelper {
/**
* @var boolean
*/
......
......@@ -39,7 +39,6 @@ use TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList;
* Class ControlViewHelper
**/
class ControlViewHelper extends AbstractViewHelper {
/**
* Initialize the ViewHelper arguments
*/
......
......@@ -35,7 +35,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* Class IconViewHelper
**/
class IconViewHelper extends AbstractViewHelper {
/**
* Initialize the ViewHelper arguments
*/
......@@ -58,13 +57,13 @@ class IconViewHelper extends AbstractViewHelper {
$size = trim($this->arguments['size']);
$overlayId = $this->arguments['overlayId'];
switch ($size) {
case 'small' :
case 'small':
$size = Icon::SIZE_SMALL;
break;
case 'large' :
case 'large':
$size = Icon::SIZE_LARGE;
break;
default :
default:
$size = Icon::SIZE_DEFAULT;
break;
}
......
......@@ -78,45 +78,42 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
*
* <be:link.newRecord table="a_table" returnUrl="{f:be.uri(route: 'web_MyextensionList')}" pid="17">
*/
class NewRecordViewHelper extends AbstractTagBasedViewHelper
{
/**
* @var string
*/
protected $tagName = 'a';
class NewRecordViewHelper extends AbstractTagBasedViewHelper {
/**
* @var string
*/
protected $tagName = 'a';
public function initializeArguments()
{
parent::initializeArguments();
$this->registerUniversalTagAttributes();
$this->registerArgument('uid', 'int', 'uid < 0 will insert the record after the given uid', false);
$this->registerArgument('pid', 'int', 'the page id where the record will be created', false);
$this->registerArgument('table', 'string', 'target database table', true);
$this->registerArgument('type', 'string', 'The type of the news', true);
$this->registerArgument('returnUrl', 'string', 'return to this URL after closing the edit dialog', false, '');
}
public function initializeArguments() {
parent::initializeArguments();
$this->registerUniversalTagAttributes();
$this->registerArgument('uid', 'int', 'uid < 0 will insert the record after the given uid', FALSE);
$this->registerArgument('pid', 'int', 'the page id where the record will be created', FALSE);
$this->registerArgument('table', 'string', 'target database table', TRUE);
$this->registerArgument('type', 'string', 'The type of the news', TRUE);
$this->registerArgument('returnUrl', 'string', 'return to this URL after closing the edit dialog', FALSE, '');
}
/**
* @return string
* @throws \TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException
*/
public function render(): string
{
if ($this->arguments['uid'] && $this->arguments['pid']) {
throw new \InvalidArgumentException('Can\'t handle both uid and pid for new records', 1526129969);
}
if (isset($this->arguments['uid']) && $this->arguments['uid'] >= 0) {
throw new \InvalidArgumentException('Uid must be negative integer, ' . $this->arguments['uid'] . ' given', 1526134901);
}
/**
* @return string
* @throws \TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException
*/
public function render(): string {
if ($this->arguments['uid'] && $this->arguments['pid']) {
throw new \InvalidArgumentException('Can\'t handle both uid and pid for new records', 1526129969);
}
if (isset($this->arguments['uid']) && $this->arguments['uid'] >= 0) {
throw new \InvalidArgumentException('Uid must be negative integer, ' . $this->arguments['uid'] . ' given', 1526134901);
}
if (empty($this->arguments['returnUrl'])) {
$this->arguments['returnUrl'] = GeneralUtility::getIndpEnv('REQUEST_URI');
}
if (empty($this->arguments['returnUrl'])) {
$this->arguments['returnUrl'] = GeneralUtility::getIndpEnv('REQUEST_URI');
}
$params = [
'edit' => [$this->arguments['table'] => [$this->arguments['uid'] ?? $this->arguments['pid'] ?? 0 => 'new']],
'returnUrl' => $this->arguments['returnUrl']
];
$params = [
'edit' => [$this->arguments['table'] => [$this->arguments['uid'] ?? $this->arguments['pid'] ?? 0 => 'new']],
'returnUrl' => $this->arguments['returnUrl']
];
if ($this->arguments['table'] === 'pages' && in_array($this->arguments['type'], ['news', 'category'], TRUE)) {
$params['overrideVals'] = [
'pages' => [
......@@ -125,11 +122,11 @@ class NewRecordViewHelper extends AbstractTagBasedViewHelper
];
}
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
$uri = (string)$uriBuilder->buildUriFromRoute('record_edit', $params);
$this->tag->addAttribute('href', $uri);
$this->tag->setContent($this->renderChildren());
$this->tag->forceClosingTag(true);
return $this->tag->render();
}
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
$uri = (string)$uriBuilder->buildUriFromRoute('record_edit', $params);
$this->tag->addAttribute('href', $uri);
$this->tag->setContent($this->renderChildren());
$this->tag->forceClosingTag(TRUE);
return $this->tag->render();
}
}
......@@ -33,7 +33,6 @@ use SGalinski\SgNews\ViewHelpers\AbstractViewHelper;
* Class EditOnClickViewHelper
**/
class NewsItemTagsViewHelper extends AbstractViewHelper {
/**
* Initialize the ViewHelper arguments
*/
......
......@@ -36,7 +36,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
* Class IconViewHelper
**/
class RecordIconViewHelper extends AbstractViewHelper {
/**
* Initialize the ViewHelper arguments
*/
......
......@@ -40,7 +40,6 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
* Class EditOnClickViewHelper
**/
class TranslationLinksViewHelper extends AbstractViewHelper {
/**
* Register the ViewHelp0er arguments
*/
......@@ -115,13 +114,14 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
'returnUrl' => (string) $returnUrl
]);
$out .= ' <a href="' . $link . '" title="'. $language['title'] . ' [' . $editLabel . ']" >'
$out .= ' <a href="' . $link . '" title="' . $language['title'] . ' [' . $editLabel . ']" >'
. $iconFactory->getIcon($language['flag'], Icon::SIZE_SMALL)->render()
. '</a>';
} else {
$out .= ' <a href="'
. BackendUtility::getLinkToDataHandlerAction(
sprintf($translationParameters, $languageUid), $returnUrl
sprintf($translationParameters, $languageUid),
$returnUrl
)
. '" title="' . $language['title'] . ' [' . $newLabel . ']" >'
. $iconFactory->getIcon(
......
......@@ -33,7 +33,6 @@ use TYPO3\CMS\Fluid\ViewHelpers\Be\Widget\Controller\PaginateController as Fluid
* Class PaginateController
*/
class PaginateController extends FluidPaginateController {
/**
* @var mixed
*/
......@@ -79,7 +78,8 @@ class PaginateController extends FluidPaginateController {
}
}
$this->view->assign(
'contentArguments', [
'contentArguments',
[
$this->widgetConfiguration['as'] => $modifiedObjects
]
);
......
......@@ -36,7 +36,6 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
* <sg:getReadingTime content="" />
*/
class GetReadingTimeViewHelper extends AbstractViewHelper {
/**
* Register the ViewHelper arguments
*/
......
......@@ -58,7 +58,9 @@ class PageRenderer extends \TYPO3\CMS\Core\Page\PageRenderer {
if (is_array($this->headerDataRegex)) {
foreach ($this->headerDataRegex as $regex) {
$this->headerData = preg_replace(
'/' . $regex['pattern'] . '/is', $regex['replacement'], $this->headerData
'/' . $regex['pattern'] . '/is',
$regex['replacement'],
$this->headerData
);
}
}
......@@ -72,7 +74,9 @@ class PageRenderer extends \TYPO3\CMS\Core\Page\PageRenderer {
* @param string $substituteHash
* @return string
*/
public function renderJavaScriptAndCssForProcessingOfUncachedContentObjects($cachedPageContent, $substituteHash
public function renderJavaScriptAndCssForProcessingOfUncachedContentObjects(
$cachedPageContent,
$substituteHash
): string {
$this->executeHeaderRegularExpressions();
return parent::renderJavaScriptAndCssForProcessingOfUncachedContentObjects($cachedPageContent, $substituteHash);
......
<?php
return [
'sg_news:migrateNews' => [
'class' => \SGalinski\SgNews\Command\MigrateNewsCommandController::class
......
<?php
declare(strict_types=1);
// if you need to change this, keep in mind the changes need to be done in
......
......@@ -174,11 +174,13 @@ if (version_compare(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExten
'tx_sgnews_teaser1_image' => [
'exclude' => TRUE,
'label' => $localLangDbPath . 'pages.tx_sgnews_teaser1_image',
'description' => (version_compare(
'description' => (
version_compare(
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sg_seo'),
'5.0.0',
'>=')
) ? 'LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:teaser_description' : null,
'>='
)
) ? 'LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:teaser_description' : NULL,
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'tx_sgnews_teaser1_image',
[
......@@ -228,11 +230,13 @@ if (version_compare(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExten
'tx_sgnews_teaser2_image' => [
'exclude' => TRUE,
'label' => $localLangDbPath . 'pages.tx_sgnews_teaser2_image',
'description' => (version_compare(
'description' => (
version_compare(
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sg_seo'),
'5.0.0',
'>=')
) ? 'LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:teaser_description' : null,
'>='
)
) ? 'LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:teaser_description' : NULL,
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'tx_sgnews_teaser2_image',
[
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment