‪TYPO3CMS  11.5
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  {
271  $this->description = ‪$description;
272  }
273 
277  public function ‪getDescription()
278  {
279  return ‪$this->description;
280  }
281 
286  {
287  $this->extensionKey = ‪$extensionKey;
288  }
289 
293  public function ‪getExtensionKey()
294  {
295  return ‪$this->extensionKey;
296  }
297 
301  public function ‪setLastUpdated(\DateTime ‪$lastUpdated)
302  {
303  $this->lastUpdated = ‪$lastUpdated;
304  }
305 
309  public function ‪getLastUpdated()
310  {
312  }
313 
317  public function ‪setState(‪$state)
318  {
319  $this->state = ‪$state;
320  }
321 
325  public function ‪getState()
326  {
328  }
329 
335  public function ‪getStateString()
336  {
337  $stateString = '';
338  if (isset(self::$defaultStates[$this->‪getState()])) {
339  $stateString = self::$defaultStates[$this->‪getState()];
340  }
341  return $stateString;
342  }
343 
351  public function ‪getDefaultState(‪$state = null)
352  {
353  $defaultState = '';
354  if (‪$state === null) {
355  $defaultState = ‪self::$defaultStates;
356  } else {
357  if (is_string(‪$state)) {
358  $stateIndex = array_search(strtolower(‪$state), self::$defaultStates);
359  if ($stateIndex === false) {
360  // default state
361  $stateIndex = 999;
362  }
363  $defaultState = $stateIndex;
364  } else {
365  if (is_int(‪$state) && ‪$state >= 0) {
366  if (array_key_exists(‪$state, self::$defaultStates)) {
367  $stateTitle = self::$defaultStates[‪$state];
368  } else {
369  // default state
370  $stateTitle = 'n/a';
371  }
372  $defaultState = $stateTitle;
373  }
374  }
375  }
376  return $defaultState;
377  }
378 
382  public function ‪setTitle(‪$title)
383  {
384  $this->title = ‪$title;
385  }
386 
390  public function ‪getTitle()
391  {
392  return ‪$this->title;
393  }
394 
399  {
400  $this->updateComment = ‪$updateComment;
401  }
402 
406  public function ‪getUpdateComment()
407  {
409  }
410 
414  public function ‪setVersion(‪$version)
415  {
416  $this->version = ‪$version;
417  }
418 
422  public function ‪getVersion()
423  {
424  return ‪$this->version;
425  }
426 
431  {
432  $this->currentVersion = ‪$currentVersion;
433  }
434 
438  public function ‪getCurrentVersion()
439  {
441  }
442 
446  public function ‪setMd5hash(‪$md5hash)
447  {
448  $this->md5hash = ‪$md5hash;
449  }
450 
454  public function ‪getMd5hash()
455  {
456  return ‪$this->md5hash;
457  }
458 
465  public static function ‪returnInstallPaths()
466  {
467  $installPaths = [
468  'System' => ‪Environment::getFrameworkBasePath() . '/',
469  'Global' => ‪Environment::getBackendPath() . '/ext/',
470  'Local' => ‪Environment::getExtensionsPath() . '/',
471  ];
472  return $installPaths;
473  }
474 
481  public static function ‪returnAllowedInstallPaths()
482  {
483  $installPaths = ‪self::returnInstallPaths();
484  if (empty(‪$GLOBALS['TYPO3_CONF_VARS']['EXT']['allowGlobalInstall'])) {
485  unset($installPaths['Global']);
486  }
487  if (empty(‪$GLOBALS['TYPO3_CONF_VARS']['EXT']['allowLocalInstall'])) {
488  unset($installPaths['Local']);
489  }
490  return $installPaths;
491  }
492 
499  public static function ‪returnAllowedInstallTypes()
500  {
501  $installPaths = ‪self::returnAllowedInstallPaths();
502  return array_keys($installPaths);
503  }
504 
509  {
510  $this->serializedDependencies = ‪$dependencies;
511  }
512 
517  {
519  }
520 
524  public function ‪setDependencies(‪$dependencies)
525  {
526  $this->dependencies = ‪$dependencies;
527  }
528 
532  public function ‪getDependencies()
533  {
534  if (!is_object($this->dependencies)) {
536  }
538  }
539 
540  public function ‪getTypo3Dependency(): ?‪Dependency
541  {
542  foreach ($this->‪getDependencies() as $dependency) {
543  if ($dependency->getIdentifier() === 'typo3') {
544  return $dependency;
545  }
546  }
547  return null;
548  }
549 
553  public function ‪addDependency(‪Dependency $dependency)
554  {
555  $this->dependencies->attach($dependency);
556  }
557 
562  {
563  $this->integerVersion = ‪$integerVersion;
564  }
565 
569  public function ‪getIntegerVersion()
570  {
572  }
573 
578  {
579  $this->reviewState = ‪$reviewState;
580  }
581 
585  public function ‪getReviewState()
586  {
587  return ‪$this->reviewState;
588  }
589 
593  public function ‪setPosition(‪$position)
594  {
595  $this->position = ‪$position;
596  }
597 
601  public function ‪getPosition()
602  {
603  return ‪$this->position;
604  }
605 
610  {
611  $this->alldownloadcounter = ‪$alldownloadcounter;
612  }
613 
617  public function ‪getAlldownloadcounter()
618  {
620  }
621 
625  public function ‪getDocumentationLink(): string
626  {
628  }
629 
633  public function ‪setDocumentationLink(string ‪$documentationLink): void
634  {
635  $this->documentationLink = ‪$documentationLink;
636  }
637 
638  public function ‪getRemoteIdentifier(): string
639  {
640  return ‪$this->remote;
641  }
642 
649  public static function ‪createFromExtensionArray(array $extensionArray): self
650  {
651  $extension = GeneralUtility::makeInstance(self::class);
652  $extension->setExtensionKey($extensionArray['key']);
653  if (isset($extensionArray['version'])) {
654  $extension->setVersion($extensionArray['version']);
655  }
656  $extension->remote = $extensionArray['remote'] ?? 'ter';
657  if (isset($extensionArray['constraints'])) {
658  $extension->setDependencies($extension->convertDependenciesToObjects(is_array($extensionArray['constraints']) ? serialize($extensionArray['constraints']) : $extensionArray['constraints']));
659  }
660  return $extension;
661  }
662 
669  protected function ‪convertDependenciesToObjects(string ‪$dependencies): \SplObjectStorage
670  {
671  $dependenciesObject = new \SplObjectStorage();
672  $unserializedDependencies = unserialize(‪$dependencies, ['allowed_classes' => false]);
673  if (!is_array($unserializedDependencies)) {
674  return $dependenciesObject;
675  }
676  foreach ($unserializedDependencies as $dependencyType => $dependencyValues) {
677  // Dependencies might be given as empty string, e.g. conflicts => ''
678  if (!is_array($dependencyValues)) {
679  continue;
680  }
681  if (!$dependencyType) {
682  continue;
683  }
684  foreach ($dependencyValues as $dependency => $versionConstraint) {
685  if ($dependency) {
686  $dependencyObject = ‪Dependency::createFromEmConf((string)$dependency, $versionConstraint, (string)$dependencyType);
687  $dependenciesObject->attach($dependencyObject);
688  }
689  }
690  }
691  return $dependenciesObject;
692  }
693 
694  public function ‪setDistributionImage(string $imageUrl): void
695  {
696  $this->distributionImage = $imageUrl;
697  }
698 
699  public function ‪getDistributionImage(): string
700  {
702  }
703 
704  public function ‪setDistributionWelcomeImage(string $imageUrl): void
705  {
706  $this->distributionWelcomeImage = $imageUrl;
707  }
708 
709  public function ‪getDistributionWelcomeImage(): string
710  {
712  }
713 }
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setIntegerVersion
‪setIntegerVersion($integerVersion)
Definition: Extension.php:537
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\returnAllowedInstallPaths
‪static array returnAllowedInstallPaths()
Definition: Extension.php:457
‪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:577
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getRemoteIdentifier
‪getRemoteIdentifier()
Definition: Extension.php:614
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getIntegerVersion
‪int getIntegerVersion()
Definition: Extension.php:545
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\convertDependenciesToObjects
‪SplObjectStorage< Dependency > convertDependenciesToObjects(string $dependencies)
Definition: Extension.php:645
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setVersion
‪setVersion($version)
Definition: Extension.php:390
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDependencies
‪setDependencies($dependencies)
Definition: Extension.php:500
‪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:680
‪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:301
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCurrentVersion
‪bool getCurrentVersion()
Definition: Extension.php:414
‪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:561
‪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\Dependency\createFromEmConf
‪static self createFromEmConf(string $identifier, string $versionConstraint='', string $dependencyType='depends')
Definition: Dependency.php:77
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setMd5hash
‪setMd5hash($md5hash)
Definition: Extension.php:422
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setAlldownloadcounter
‪setAlldownloadcounter($alldownloadcounter)
Definition: Extension.php:585
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\createFromExtensionArray
‪static Extension createFromExtensionArray(array $extensionArray)
Definition: Extension.php:625
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setCategory
‪setCategory($category)
Definition: Extension.php:191
‪TYPO3\CMS\Extbase\DomainObject\AbstractEntity
Definition: AbstractEntity.php:22
‪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:293
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setCurrentVersion
‪setCurrentVersion($currentVersion)
Definition: Extension.php:406
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getLastUpdated
‪DateTime getLastUpdated()
Definition: Extension.php:285
‪TYPO3\CMS\Core\Core\Environment\getFrameworkBasePath
‪static string getFrameworkBasePath()
Definition: Environment.php:287
‪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:670
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDefaultState
‪mixed getDefaultState($state=null)
Definition: Extension.php:327
‪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:675
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setTitle
‪setTitle($title)
Definition: Extension.php:358
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getMd5hash
‪string getMd5hash()
Definition: Extension.php:430
‪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:382
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDependencies
‪SplObjectStorage< Dependency > getDependencies()
Definition: Extension.php:508
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDocumentationLink
‪string getDocumentationLink()
Definition: Extension.php:601
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getVersion
‪string getVersion()
Definition: Extension.php:398
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getExtensionKey
‪string getExtensionKey()
Definition: Extension.php:269
‪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\Core\Core\Environment\getBackendPath
‪static string getBackendPath()
Definition: Environment.php:276
‪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:374
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setLastUpdated
‪setLastUpdated(\DateTime $lastUpdated)
Definition: Extension.php:277
‪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\Extensionmanager\Domain\Model\Extension\addDependency
‪addDependency(Dependency $dependency)
Definition: Extension.php:529
‪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:492
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setReviewState
‪setReviewState($reviewState)
Definition: Extension.php:553
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setDocumentationLink
‪setDocumentationLink(string $documentationLink)
Definition: Extension.php:609
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setPosition
‪setPosition($position)
Definition: Extension.php:569
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getDistributionWelcomeImage
‪getDistributionWelcomeImage()
Definition: Extension.php:685
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getTitle
‪string getTitle()
Definition: Extension.php:366
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:43
‪TYPO3\CMS\Extensionmanager\Domain\Model
Definition: Dependency.php:18
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setSerializedDependencies
‪setSerializedDependencies($dependencies)
Definition: Extension.php:484
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getAlldownloadcounter
‪int getAlldownloadcounter()
Definition: Extension.php:593
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\setAuthorEmail
‪setAuthorEmail($authorEmail)
Definition: Extension.php:159
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getTypo3Dependency
‪getTypo3Dependency()
Definition: Extension.php:516
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getStateString
‪string getStateString()
Definition: Extension.php:311
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪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:441
‪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:475
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getCategoryString
‪string getCategoryString()
Definition: Extension.php:209
‪TYPO3\CMS\Core\Core\Environment\getExtensionsPath
‪static string getExtensionsPath()
Definition: Environment.php:297