‪TYPO3CMS  ‪main
TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter Class Reference
Inheritance diagram for TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter:

Public Member Functions

 __construct (ExtensionRepository $repository, Extension $extension, ConnectionPool $connectionPool, ExtensionXmlParser $parser)
 
 import (string $localExtensionListFile, string $remoteIdentifier)
 
 update (\SplSubject $subject)
 

Protected Member Functions

 loadIntoDatabase (ExtensionXmlParser $subject)
 
 markExtensionWithMaximumVersionAsCurrent (string $remoteIdentifier)
 
 fetchMaximalVersionsForAllExtensions (string $remoteIdentifier)
 

Protected Attributes

ExtensionXmlParser $parser
 
int $sumRecords = 0
 
array $arrRows = array( )
 
int $maxRowsPerChunk = 50
 
string $remoteIdentifier
 
ExtensionRepository $extensionRepository
 
Extension $extensionModel
 
ConnectionPool $connectionPool
 
int $minimumDateToImport
 

Static Protected Attributes

static array $fieldNames
 

Private Attributes

const TABLE_NAME = 'tx_extensionmanager_domain_model_extension'
 

Detailed Description

Importer object for extension list, which handles the XML parser and writes directly into the database.

This class is a specific domain repository implementation and is not part of the Public TYPO3 API.

Definition at line 33 of file BulkExtensionRepositoryWriter.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::__construct ( ExtensionRepository  $repository,
Extension  $extension,
ConnectionPool  $connectionPool,
ExtensionXmlParser  $parser 
)

Member Function Documentation

◆ fetchMaximalVersionsForAllExtensions()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::fetchMaximalVersionsForAllExtensions ( string  $remoteIdentifier)
protected

Fetches the UIDs of all maximal versions for all extensions. This is done by doing a LEFT JOIN to itself ("a" and "b") and comparing both integer_version fields.

Definition at line 289 of file BulkExtensionRepositoryWriter.php.

References TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\$remoteIdentifier.

Referenced by TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\markExtensionWithMaximumVersionAsCurrent().

◆ import()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::import ( string  $localExtensionListFile,
string  $remoteIdentifier 
)

Method initializes parsing of extension.xml.gz file.

Parameters
string$localExtensionListFile‪absolute path to extension list xml.gz
string$remoteIdentifier‪identifier of the remote when inserting records into DB

Definition at line 161 of file BulkExtensionRepositoryWriter.php.

References TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\$remoteIdentifier, TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\markExtensionWithMaximumVersionAsCurrent(), and TYPO3\CMS\Core\Database\Connection\PARAM_STR.

◆ loadIntoDatabase()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::loadIntoDatabase ( ExtensionXmlParser  $subject)
protected

Method collects and stores extension version details into the database.

Parameters
ExtensionXmlParser$subject‪a subject notifying this observer

Definition at line 193 of file BulkExtensionRepositoryWriter.php.

References TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\$remoteIdentifier, TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\$sumRecords, TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getAlldownloadcounter(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getAuthorcompany(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getAuthoremail(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getAuthorname(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getCategory(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDependencies(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDescription(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDistributionImage(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDistributionWelcomeImage(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDocumentationLink(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getDownloadcounter(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getExtkey(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getLastuploaddate(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getOwnerusername(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getReviewstate(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getState(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getT3xfilemd5(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getTitle(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getUploadcomment(), TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\getVersion(), and TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser\isValidVersionNumber().

Referenced by TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\update().

◆ markExtensionWithMaximumVersionAsCurrent()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::markExtensionWithMaximumVersionAsCurrent ( string  $remoteIdentifier)
protected

Sets current_version = 1 for all extensions where the extension version is maximal.

For performance reasons, the "native" database connection is used here directly.

Parameters
string$remoteIdentifier

Definition at line 261 of file BulkExtensionRepositoryWriter.php.

References TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\fetchMaximalVersionsForAllExtensions(), TYPO3\CMS\Core\Database\Platform\PlatformInformation\getMaxBindParameters(), and TYPO3\CMS\Core\Database\Connection\PARAM_INT_ARRAY.

Referenced by TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\import().

◆ update()

TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::update ( \SplSubject  $subject)

Method receives an update from a subject.

Parameters
\SplSubject$subject‪a subject notifying this observer

Definition at line 245 of file BulkExtensionRepositoryWriter.php.

References TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\loadIntoDatabase().

Member Data Documentation

◆ $arrRows

array TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$arrRows = array( )
protected

Keeps record values to be inserted into database.

Definition at line 52 of file BulkExtensionRepositoryWriter.php.

◆ $connectionPool

ConnectionPool TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$connectionPool
protected

◆ $extensionModel

Extension TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$extensionModel
protected

Definition at line 103 of file BulkExtensionRepositoryWriter.php.

◆ $extensionRepository

ExtensionRepository TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$extensionRepository
protected

Definition at line 99 of file BulkExtensionRepositoryWriter.php.

◆ $fieldNames

array TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$fieldNames
staticprotected
Initial value:
= array(
'extension_key',
'version',
'integer_version',
'current_version',
'alldownloadcounter',
'downloadcounter',
'title',
'ownerusername',
'author_name',
'author_email',
'authorcompany',
'last_updated',
'md5hash',
'remote',
'state',
'review_state',
'category',
'description',
'serialized_dependencies',
'update_comment',
'documentation_link',
'distribution_image',
'distribution_welcome_image',
)

Keeps fieldnames of tx_extensionmanager_domain_model_extension table.

Definition at line 58 of file BulkExtensionRepositoryWriter.php.

◆ $maxRowsPerChunk

int TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$maxRowsPerChunk = 50
protected

Maximum of rows that can be used in a bulk insert for the current database platform.

Definition at line 89 of file BulkExtensionRepositoryWriter.php.

◆ $minimumDateToImport

int TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$minimumDateToImport
protected

Only import extensions newer than this date (timestamp), see constructor

Definition at line 114 of file BulkExtensionRepositoryWriter.php.

◆ $parser

ExtensionXmlParser TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$parser
protected

◆ $remoteIdentifier

string TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$remoteIdentifier
protected

◆ $sumRecords

int TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::$sumRecords = 0
protected

Keeps number of processed version records.

Definition at line 46 of file BulkExtensionRepositoryWriter.php.

Referenced by TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter\loadIntoDatabase().

◆ TABLE_NAME

const TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter::TABLE_NAME = 'tx_extensionmanager_domain_model_extension'
private

Definition at line 38 of file BulkExtensionRepositoryWriter.php.