‪TYPO3CMS  ‪main
Extension.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
22 
28 {
32  public const ‪DISTRIBUTION_CATEGORY = 10;
33 
39  protected static ‪$defaultCategories = [
40  0 => 'be',
41  1 => 'module',
42  2 => 'fe',
43  3 => 'plugin',
44  4 => 'misc',
45  5 => 'services',
46  6 => 'templates',
47  8 => 'doc',
48  9 => 'example',
49  self::DISTRIBUTION_CATEGORY => 'distribution',
50  ];
51 
57  protected static ‪$defaultStates = [
58  0 => 'alpha',
59  1 => 'beta',
60  2 => 'stable',
61  3 => 'experimental',
62  4 => 'test',
63  5 => 'obsolete',
64  6 => 'excludeFromUpdates',
65  7 => 'deprecated',
66  999 => 'n/a',
67  ];
68 
72  protected ‪$extensionKey = '';
73 
77  protected ‪$version = '';
78 
82  protected ‪$integerVersion = 0;
83 
87  protected ‪$title = '';
88 
92  protected ‪$description = '';
93 
97  protected ‪$state = 0;
98 
102  protected ‪$category = 0;
103 
107  protected ‪$lastUpdated;
108 
112  protected ‪$updateComment = '';
113 
117  protected ‪$authorName = '';
118 
122  protected ‪$authorEmail = '';
123 
127  protected ‪$currentVersion = false;
128 
132  protected ‪$md5hash = '';
133 
137  protected ‪$reviewState;
138 
142  protected ‪$alldownloadcounter;
143 
147  protected ‪$serializedDependencies = '';
148 
152  protected ‪$dependencies;
153 
157  protected ‪$documentationLink = '';
158 
162  protected ‪$distributionImage = '';
163 
168 
172  protected ‪$remote;
173 
178  protected ‪$position = 0;
179 
184  {
185  $this->authorEmail = ‪$authorEmail;
186  }
187 
191  public function ‪getAuthorEmail()
192  {
193  return ‪$this->authorEmail;
194  }
195 
200  {
201  $this->authorName = ‪$authorName;
202  }
203 
207  public function ‪getAuthorName()
208  {
210  }
211 
215  public function ‪setCategory(‪$category)
216  {
217  $this->category = ‪$category;
218  }
219 
223  public function ‪getCategory()
224  {
226  }
227 
233  public function ‪getCategoryString()
234  {
235  $categoryString = '';
236  if (isset(self::$defaultCategories[$this->‪getCategory()])) {
237  $categoryString = self::$defaultCategories[$this->‪getCategory()];
238  }
239  return $categoryString;
240  }
241 
250  {
251  $categoryIndex = 4;
253  $categoryIndex = (int)‪$category;
254  if ($categoryIndex < 0 || $categoryIndex > 10) {
255  $categoryIndex = 4;
256  }
257  } elseif (is_string(‪$category)) {
258  $categoryIndex = array_search(‪$category, self::$defaultCategories);
259  if ($categoryIndex === false) {
260  $categoryIndex = 4;
261  }
262  }
263  return (int)$categoryIndex;
264  }
265 
270  {
272  }
273 
277  public function ‪getDescription()
278  {
279  return ‪$this->description;
280  }
281 
285  public function ‪setExtensionKey(‪$extensionKey)
286  {
287  $this->extensionKey = ‪$extensionKey;
288  }
289 
293  public function ‪getExtensionKey()
294  {
295  return ‪$this->extensionKey;
296  }
297 
298  public function ‪setLastUpdated(\DateTime ‪$lastUpdated)
299  {
300  $this->lastUpdated = ‪$lastUpdated;
301  }
302 
306  public function ‪getLastUpdated()
307  {
309  }
310 
314  public function ‪setState(‪$state)
315  {
316  $this->state = ‪$state;
317  }
318 
322  public function ‪getState()
323  {
325  }
326 
332  public function ‪getStateString()
333  {
334  $stateString = '';
335  if (isset(self::$defaultStates[$this->‪getState()])) {
336  $stateString = self::$defaultStates[$this->‪getState()];
337  }
338  return $stateString;
339  }
340 
348  public function ‪getDefaultState(‪$state = null)
349  {
350  $defaultState = '';
351  if (‪$state === null) {
352  $defaultState = ‪self::$defaultStates;
353  } else {
354  if (is_string(‪$state)) {
355  $stateIndex = array_search(strtolower(‪$state), self::$defaultStates);
356  if ($stateIndex === false) {
357  // default state
358  $stateIndex = 999;
359  }
360  $defaultState = $stateIndex;
361  } else {
362  if (is_int(‪$state) && ‪$state >= 0) {
363  if (array_key_exists(‪$state, self::$defaultStates)) {
364  $stateTitle = self::$defaultStates[‪$state];
365  } else {
366  // default state
367  $stateTitle = 'n/a';
368  }
369  $defaultState = $stateTitle;
370  }
371  }
372  }
373  return $defaultState;
374  }
375 
379  public function ‪setTitle(‪$title)
380  {
381  $this->title = ‪$title;
382  }
383 
387  public function ‪getTitle()
388  {
389  return ‪$this->title;
390  }
391 
396  {
397  $this->updateComment = ‪$updateComment;
398  }
399 
403  public function ‪getUpdateComment()
404  {
406  }
407 
411  public function ‪setVersion(‪$version)
412  {
413  $this->version = ‪$version;
414  }
415 
419  public function ‪getVersion()
420  {
421  return ‪$this->version;
422  }
423 
428  {
429  $this->currentVersion = ‪$currentVersion;
430  }
431 
435  public function ‪getCurrentVersion()
436  {
438  }
439 
443  public function ‪setMd5hash(‪$md5hash)
444  {
445  $this->md5hash = ‪$md5hash;
446  }
447 
451  public function ‪getMd5hash()
452  {
453  return ‪$this->md5hash;
454  }
455 
462  public static function ‪returnInstallPaths()
463  {
464  return [
465  'System' => ‪Environment::getFrameworkBasePath() . '/',
466  'Local' => ‪Environment::getExtensionsPath() . '/',
467  ];
468  }
469 
476  public static function ‪returnAllowedInstallTypes()
477  {
478  $installPaths = ‪self::returnInstallPaths();
479  return array_keys($installPaths);
480  }
481 
486  {
487  $this->serializedDependencies = ‪$dependencies;
488  }
489 
494  {
496  }
497 
501  public function ‪setDependencies(‪$dependencies)
502  {
503  $this->dependencies = ‪$dependencies;
504  }
505 
509  public function ‪getDependencies()
510  {
511  if (!is_object($this->dependencies)) {
513  }
514  return ‪$this->dependencies;
515  }
516 
517  public function ‪getTypo3Dependency(): ?Dependency
518  {
519  foreach ($this->‪getDependencies() as $dependency) {
520  if ($dependency->getIdentifier() === 'typo3') {
521  return $dependency;
522  }
523  }
524  return null;
525  }
526 
527  public function ‪addDependency(‪Dependency $dependency)
528  {
529  $this->dependencies->attach($dependency);
530  }
531 
536  {
537  $this->integerVersion = ‪$integerVersion;
538  }
539 
543  public function ‪getIntegerVersion()
544  {
546  }
547 
552  {
553  $this->reviewState = ‪$reviewState;
554  }
555 
559  public function ‪getReviewState()
560  {
561  return ‪$this->reviewState;
562  }
563 
567  public function ‪setPosition(‪$position)
568  {
569  $this->position = ‪$position;
570  }
571 
575  public function ‪getPosition()
576  {
578  }
579 
584  {
585  $this->alldownloadcounter = ‪$alldownloadcounter;
586  }
587 
591  public function ‪getAlldownloadcounter()
592  {
594  }
595 
596  public function ‪getDocumentationLink(): string
597  {
599  }
600 
601  public function ‪setDocumentationLink(string ‪$documentationLink): void
602  {
603  $this->documentationLink = ‪$documentationLink;
604  }
605 
606  public function ‪getRemoteIdentifier(): string
607  {
608  return ‪$this->remote;
609  }
610 
614  public static function ‪createFromExtensionArray(array $extensionArray): self
615  {
616  $extension = GeneralUtility::makeInstance(self::class);
617  $extension->setExtensionKey($extensionArray['key']);
618  if (isset($extensionArray['version'])) {
619  $extension->setVersion($extensionArray['version']);
620  }
621  $extension->remote = $extensionArray['remote'] ?? 'ter';
622  if (isset($extensionArray['constraints'])) {
623  $extension->setDependencies($extension->convertDependenciesToObjects(is_array($extensionArray['constraints']) ? serialize($extensionArray['constraints']) : $extensionArray['constraints']));
624  }
625  return $extension;
626  }
627 
633  protected function ‪convertDependenciesToObjects(string ‪$dependencies): \SplObjectStorage
634  {
635  $dependenciesObject = new \SplObjectStorage();
636  $unserializedDependencies = unserialize(‪$dependencies, ['allowed_classes' => false]);
637  if (!is_array($unserializedDependencies)) {
638  return $dependenciesObject;
639  }
640  foreach ($unserializedDependencies as $dependencyType => $dependencyValues) {
641  // Dependencies might be given as empty string, e.g. conflicts => ''
642  if (!is_array($dependencyValues)) {
643  continue;
644  }
645  if (!$dependencyType) {
646  continue;
647  }
648  foreach ($dependencyValues as $dependency => $versionConstraint) {
649  if ($dependency) {
650  $dependencyObject = ‪Dependency::createFromEmConf((string)$dependency, $versionConstraint, (string)$dependencyType);
651  $dependenciesObject->attach($dependencyObject);
652  }
653  }
654  }
655  return $dependenciesObject;
656  }
657 
658  public function ‪setDistributionImage(string $imageUrl): void
659  {
660  $this->distributionImage = $imageUrl;
661  }
662 
663  public function ‪getDistributionImage(): string
664  {
666  }
667 
668  public function ‪setDistributionWelcomeImage(string $imageUrl): void
669  {
670  $this->distributionWelcomeImage = $imageUrl;
671  }
672 
673  public function ‪getDistributionWelcomeImage(): string
674  {
676  }
677 }
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setIntegerVersion
‪setIntegerVersion($integerVersion)
Definition: Extension.php:511
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency
Definition: Dependency.php:28
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$defaultCategories
‪static array $defaultCategories
Definition: Extension.php:38
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$position
‪int $position
Definition: Extension.php:154
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getPosition
‪int getPosition()
Definition: Extension.php:551
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getRemoteIdentifier
‪getRemoteIdentifier()
Definition: Extension.php:582
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getIntegerVersion
‪int getIntegerVersion()
Definition: Extension.php:519
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\convertDependenciesToObjects
‪SplObjectStorage< Dependency > convertDependenciesToObjects(string $dependencies)
Definition: Extension.php:609
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setVersion
‪setVersion($version)
Definition: Extension.php:387
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDependencies
‪setDependencies($dependencies)
Definition: Extension.php:477
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDescription
‪string getDescription()
Definition: Extension.php:253
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension
Definition: Extension.php:28
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$updateComment
‪string $updateComment
Definition: Extension.php:101
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDistributionWelcomeImage
‪setDistributionWelcomeImage(string $imageUrl)
Definition: Extension.php:644
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$integerVersion
‪int $integerVersion
Definition: Extension.php:77
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\DISTRIBUTION_CATEGORY
‪const DISTRIBUTION_CATEGORY
Definition: Extension.php:32
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getState
‪int getState()
Definition: Extension.php:298
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCurrentVersion
‪bool getCurrentVersion()
Definition: Extension.php:411
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDocumentationLink
‪getDocumentationLink()
Definition: Extension.php:572
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$description
‪string $description
Definition: Extension.php:85
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$documentationLink
‪string $documentationLink
Definition: Extension.php:137
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$distributionWelcomeImage
‪string $distributionWelcomeImage
Definition: Extension.php:145
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getReviewState
‪int getReviewState()
Definition: Extension.php:535
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$dependencies
‪SplObjectStorage< Dependency > $dependencies
Definition: Extension.php:133
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$lastUpdated
‪DateTime $lastUpdated
Definition: Extension.php:97
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setMd5hash
‪setMd5hash($md5hash)
Definition: Extension.php:419
‪TYPO3\CMS\Core\Core\Environment\getExtensionsPath
‪static getExtensionsPath()
Definition: Environment.php:253
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setAlldownloadcounter
‪setAlldownloadcounter($alldownloadcounter)
Definition: Extension.php:559
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setCategory
‪setCategory($category)
Definition: Extension.php:191
‪TYPO3\CMS\Extbase\DomainObject\AbstractEntity
Definition: AbstractEntity.php:23
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$authorEmail
‪string $authorEmail
Definition: Extension.php:109
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setState
‪setState($state)
Definition: Extension.php:290
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setCurrentVersion
‪setCurrentVersion($currentVersion)
Definition: Extension.php:403
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getLastUpdated
‪DateTime getLastUpdated()
Definition: Extension.php:282
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\createFromExtensionArray
‪static createFromExtensionArray(array $extensionArray)
Definition: Extension.php:590
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCategory
‪int getCategory()
Definition: Extension.php:199
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDistributionImage
‪setDistributionImage(string $imageUrl)
Definition: Extension.php:634
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger(mixed $var)
Definition: MathUtility.php:69
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDefaultState
‪mixed getDefaultState($state=null)
Definition: Extension.php:324
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCategoryIndexFromStringOrNumber
‪int getCategoryIndexFromStringOrNumber($category)
Definition: Extension.php:225
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDistributionImage
‪getDistributionImage()
Definition: Extension.php:639
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setTitle
‪setTitle($title)
Definition: Extension.php:355
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getMd5hash
‪string getMd5hash()
Definition: Extension.php:427
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$category
‪int $category
Definition: Extension.php:93
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDescription
‪setDescription($description)
Definition: Extension.php:245
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$defaultStates
‪static array $defaultStates
Definition: Extension.php:55
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$state
‪int $state
Definition: Extension.php:89
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$reviewState
‪int $reviewState
Definition: Extension.php:121
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getUpdateComment
‪string getUpdateComment()
Definition: Extension.php:379
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDependencies
‪SplObjectStorage< Dependency > getDependencies()
Definition: Extension.php:485
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getVersion
‪string getVersion()
Definition: Extension.php:395
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getExtensionKey
‪string getExtensionKey()
Definition: Extension.php:269
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\createFromEmConf
‪static createFromEmConf(string $identifier, string $versionConstraint='', string $dependencyType='depends')
Definition: Dependency.php:76
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$remote
‪string $remote
Definition: Extension.php:149
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$version
‪string $version
Definition: Extension.php:73
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$currentVersion
‪bool $currentVersion
Definition: Extension.php:113
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$alldownloadcounter
‪int $alldownloadcounter
Definition: Extension.php:125
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$title
‪string $title
Definition: Extension.php:81
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$serializedDependencies
‪string $serializedDependencies
Definition: Extension.php:129
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setUpdateComment
‪setUpdateComment($updateComment)
Definition: Extension.php:371
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setLastUpdated
‪setLastUpdated(\DateTime $lastUpdated)
Definition: Extension.php:274
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getAuthorName
‪string getAuthorName()
Definition: Extension.php:183
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$extensionKey
‪string $extensionKey
Definition: Extension.php:69
‪TYPO3\CMS\Core\Core\Environment\getFrameworkBasePath
‪static getFrameworkBasePath()
Definition: Environment.php:245
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\addDependency
‪addDependency(Dependency $dependency)
Definition: Extension.php:503
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getAuthorEmail
‪string getAuthorEmail()
Definition: Extension.php:167
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getSerializedDependencies
‪string getSerializedDependencies()
Definition: Extension.php:469
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setReviewState
‪setReviewState($reviewState)
Definition: Extension.php:527
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDocumentationLink
‪setDocumentationLink(string $documentationLink)
Definition: Extension.php:577
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setPosition
‪setPosition($position)
Definition: Extension.php:543
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDistributionWelcomeImage
‪getDistributionWelcomeImage()
Definition: Extension.php:649
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getTitle
‪string getTitle()
Definition: Extension.php:363
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Extensionmanager\Domain\Model
Definition: Dependency.php:18
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setSerializedDependencies
‪setSerializedDependencies($dependencies)
Definition: Extension.php:461
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:24
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getAlldownloadcounter
‪int getAlldownloadcounter()
Definition: Extension.php:567
‪TYPO3\CMS\Redirects\Message\description
‪identifier description
Definition: RedirectWasHitMessage.php:32
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setAuthorEmail
‪setAuthorEmail($authorEmail)
Definition: Extension.php:159
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getTypo3Dependency
‪getTypo3Dependency()
Definition: Extension.php:493
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getStateString
‪string getStateString()
Definition: Extension.php:308
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setAuthorName
‪setAuthorName($authorName)
Definition: Extension.php:175
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setExtensionKey
‪setExtensionKey($extensionKey)
Definition: Extension.php:261
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$md5hash
‪string $md5hash
Definition: Extension.php:117
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$distributionImage
‪string $distributionImage
Definition: Extension.php:141
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\returnInstallPaths
‪static array returnInstallPaths()
Definition: Extension.php:438
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\$authorName
‪string $authorName
Definition: Extension.php:105
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\returnAllowedInstallTypes
‪static array returnAllowedInstallTypes()
Definition: Extension.php:452
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCategoryString
‪string getCategoryString()
Definition: Extension.php:209