Commit | Line | Data |
---|---|---|
0c7b8679 | 1 | <?php |
a9229942 | 2 | |
0c7b8679 | 3 | namespace wcf\data\package; |
a9229942 | 4 | |
b401cd0d | 5 | use wcf\system\cache\builder\PackageCacheBuilder; |
0c7b8679 MW |
6 | use wcf\system\SingletonFactory; |
7 | ||
8 | /** | |
9 | * Manages the package cache. | |
a9229942 TD |
10 | * |
11 | * @author Marcel Werk | |
12 | * @copyright 2001-2019 WoltLab GmbH | |
13 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> | |
14 | * @package WoltLabSuite\Core\Data\Package | |
0c7b8679 | 15 | */ |
a9229942 TD |
16 | class PackageCache extends SingletonFactory |
17 | { | |
18 | /** | |
19 | * list of cached packages | |
20 | * @var mixed[][] | |
21 | */ | |
22 | protected $packages = []; | |
23 | ||
24 | /** | |
25 | * @inheritDoc | |
26 | */ | |
27 | protected function init() | |
28 | { | |
29 | $this->packages = PackageCacheBuilder::getInstance()->getData(); | |
30 | } | |
31 | ||
32 | /** | |
33 | * Returns a specific package. | |
34 | * | |
35 | * @param int $packageID | |
5227ebc7 | 36 | * @return Package|null |
a9229942 TD |
37 | */ |
38 | public function getPackage($packageID) | |
39 | { | |
813c41ce | 40 | return $this->packages['packages'][$packageID] ?? null; |
a9229942 TD |
41 | } |
42 | ||
43 | /** | |
44 | * Returns the id of a specific package or 'null' if not found. | |
45 | * | |
46 | * @param string $package | |
5227ebc7 | 47 | * @return string|null |
a9229942 TD |
48 | */ |
49 | public function getPackageID($package) | |
50 | { | |
813c41ce | 51 | return $this->packages['packageIDs'][$package] ?? null; |
a9229942 TD |
52 | } |
53 | ||
54 | /** | |
55 | * Returns all packages. | |
56 | * | |
57 | * @return Package[] | |
58 | */ | |
59 | public function getPackages() | |
60 | { | |
61 | return $this->packages['packages']; | |
62 | } | |
63 | ||
64 | /** | |
65 | * Returns a specific package. | |
66 | * | |
67 | * @param string $package | |
68 | * @return Package | |
69 | */ | |
70 | public function getPackageByIdentifier($package) | |
71 | { | |
72 | $packageID = $this->getPackageID($package); | |
73 | if ($packageID === null) { | |
c0b28aa2 | 74 | return null; |
a9229942 TD |
75 | } |
76 | ||
77 | return $this->getPackage($packageID); | |
78 | } | |
0c7b8679 | 79 | } |