Skip to content

Instantly share code, notes, and snippets.

View derhansen's full-sized avatar

Torben Hansen derhansen

View GitHub Profile
@derhansen
derhansen / AdditionalRegistrationsViewHelper.php
Created March 26, 2024 18:16
sf_event_mgt_multireg - AdditionalRegistrationsViewHelper
<?php
namespace Derhansen\SfEventMgtMultireg\ViewHelpers\Registration;
use DERHANSEN\SfEventMgt\Domain\Model\Registration;
use DERHANSEN\SfEventMgt\Domain\Repository\RegistrationRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
/**
@derhansen
derhansen / gist:e0751d896ba0d48917dccd44bd4e4d1e
Created January 20, 2024 13:59
TYPO3 GeneralUtility::intExplode() performance test
<?php
// Current intExplode function in v13
function intExplodeOld($delimiter, $string, $removeEmptyValues = false)
{
$result = explode($delimiter, $string);
foreach ($result as $key => &$value) {
if ($removeEmptyValues && trim($value) === '') {
unset($result[$key]);
} else {
@derhansen
derhansen / CropVariantUtility.php
Created December 24, 2021 12:10
TYPO3 CMS CropVariantUtility to manually calculate the default crop variant string for a given image
<?php
declare(strict_types=1);
namespace Derhansen\Typo3Dev\Utility;
use TYPO3\CMS\Core\Imaging\ImageManipulation\Area;
use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection;
use TYPO3\CMS\Core\Imaging\ImageManipulation\InvalidConfigurationException;
use TYPO3\CMS\Core\Resource\File;
<?php
phpinfo();
@derhansen
derhansen / SwitchableControllerActionsPluginUpdater.php
Created March 20, 2021 11:23
SwitchableControllerActionsPluginUpdater for TYPO3 extension "Plain FAQ"
<?php
declare(strict_types=1);
/*
* This file is part of the Extension "plain_faq" for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*/
@derhansen
derhansen / gist:c56ff4df72d6b83121bea99bd83271cd
Created March 9, 2019 06:39
TYPO3 - Extbase stream file from resourceStorage using streamFile PSR-7 Response
public function downloadAction()
{
$storage = $this->resourceFactory->getDefaultStorage();
$file = $storage->getFile('test.jpg');
$response = $storage->streamFile($file, true, 'test-filename.jpg');
$this->sendResponse($response);
exit();
}
protected function sendResponse($response)
@derhansen
derhansen / InlineReadOnly
Last active July 24, 2019 17:13
TYPO3 InlineReadOnly FormDataProvider
<?php
namespace Vendor\Extension\Backend\Form\FormDataProvider;
use TYPO3\CMS\Backend\Form\FormDataProviderInterface;
/**
* Disables all IRRE Controls and sets fields of IRRE records to readonly
*
* Note: Depending on the TYPO3 backend user permissions, a user may still be able to edit record content
* (e.g. if table is available in record list and user has sufficient rights to edit data). But for inline integration,
@derhansen
derhansen / gist:1eee357e472be595692bf655a28a1557
Created February 4, 2018 18:48
Extended LocalizationUtility for TYPO3
<?php
namespace Vendor\Namespace\Utility;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility as LocalizationUtilityExtbase;
/**
* Class LocalizationUtility
*/
class LocalizationUtility extends LocalizationUtilityExtbase
{
### Keybase proof
I hereby claim:
* I am derhansen on github.
* I am derhansen (https://keybase.io/derhansen) on keybase.
* I have a public key ASC1s3gh8BEHLu7mPaudKjFkQNCPbDlV4u0ty5tpMyf9lwo
To claim this, I am signing this object:
protected function getRootPage($uid)
{
/** @var PageRepository $pageRepository */
$pageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(PageRepository::class);
$rootLinePages = $pageRepository->getRootLine($uid);
$rootPage = null;
foreach ($rootLinePages as $page) {
if ($page['is_siteroot'] === '1') {
$rootPage = $page;
break;