Skip to content
Snippets Groups Projects
Commit b9a43507 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

Merge branch 'feature_entry_registration' into 'master'

Feature entry registration

See merge request !9
parents e5b102b6 2f639ab3
No related branches found
No related tags found
1 merge request!9Feature entry registration
<?php
namespace SGalinski\SgJobs\SignalSlot;
/***************************************************************
* Copyright notice
*
* (c) sgalinski Internet Services (https://www.sgalinski.de)
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
/**
* Signal functions regarding sg_seo sitemap generation
*/
class SitemapSignalSlot {
const PLUGIN_NAME = 'sgjobs_jobapplication';
/**
* @var UriBuilder
*/
protected $uriBuilder;
/**
* Before the sitemap is generated
*
* @param array $pageList
* @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
*/
public function beforeSitemapGeneration(array &$pageList) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$request = $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Request::class);
$request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
$request->setBaseUri(GeneralUtility::getIndpEnv('TYPO3_SITE_URL'));
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$contentObjectRenderer = $objectManager->get(ContentObjectRenderer::class);
$configurationManager = $objectManager->get(ConfigurationManager::class);
$configurationManager->setContentObject($contentObjectRenderer);
$this->uriBuilder = $objectManager->get(UriBuilder::class);
$this->uriBuilder->injectConfigurationManager($configurationManager);
// find sites where job detail plugin is added
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('pid', 'pages')
->from('tt_content')
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('list')),
$queryBuilder->expr()->eq('list_type', $queryBuilder->createNamedParameter(self::PLUGIN_NAME))
)
)
->execute();
$rows = $databaseResource->fetchAll();
foreach ($rows as $row) {
$jobs = $this->getJobsByPid($row['pages']);
foreach ($jobs as $job) {
$url = $this->uriBuilder->reset()->setTargetPageUid($row['pid'])->setArguments(
['tx_sgjobs_jobapplication' => ['jobId' => $job['uid']]]
)->setCreateAbsoluteUri(TRUE)->buildFrontendUri();
$pageList[] = [
'url' => $url,
'title' => ''
];
}
}
}
/**
* Get all jobs stored on specific page ids
*
* @param string $pageList
* @return array|null
*/
private function getJobsByPid($pageList) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$databaseResource = $queryBuilder->select('*')
->from('tx_sgjobs_domain_model_job')
->where($queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pageList)))
->execute();
return $databaseResource->fetchAll();
}
}
......@@ -59,3 +59,15 @@ if (TYPO3_MODE === 'BE') {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(file_get_contents($tsPath . 'setup.ts'));
}
// signal slot for sg_seo integration
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class
);
$signalSlotDispatcher->connect(
\SGalinski\SgSeo\Generator\PagesSitemapGenerator::class,
'accessPageList',
\SGalinski\SgJobs\SignalSlot\SitemapSignalSlot::class,
'beforeSitemapGeneration'
);
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