ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
StyleRepo.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
28
30{
31 protected ilDBInterface $db;
33
34 public function __construct(
37 protected IRSSWrapper $irss
38 ) {
39 $this->db = $db;
40 $this->factory = $factory;
41 }
42
43 public function readRid(int $style_id): string
44 {
45 $set = $this->db->queryF(
46 "SELECT rid FROM style_data " .
47 " WHERE id = %s ",
48 ["integer"],
49 [$style_id]
50 );
51 while ($rec = $this->db->fetchAssoc($set)) {
52 return (string) $rec["rid"];
53 }
54 return "";
55 }
56
57 protected function createRid(
58 int $style_id,
59 ResourceStakeholder $stakeholder
60 ): string {
61 $rid = $this->irss->createContainer($stakeholder);
62 $this->db->update(
63 "style_data",
64 [
65 "rid" => ["string", $rid]
66 ],
67 [ // where
68 "id" => ["integer", $style_id]
69 ]
70 );
71 return $rid;
72 }
73
75 int $style_id,
76 string $local_zip_path,
77 ResourceStakeholder $stakeholder
78 ): string {
79 $rid = $this->irss->createContainerFromLocalZip($local_zip_path, $stakeholder);
80 $this->db->update(
81 "style_data",
82 [
83 "rid" => ["string", $rid]
84 ],
85 [ // where
86 "id" => ["integer", $style_id]
87 ]
88 );
89 return $rid;
90 }
91
93 int $style_id,
94 string $local_dir_path,
95 ResourceStakeholder $stakeholder,
96 string $container_path = "",
97 bool $recursive = true
98 ): string {
99 $rid = $this->irss->createContainerFromLocalDir($local_dir_path, $stakeholder, $container_path, $recursive);
100 $this->db->update(
101 "style_data",
102 [
103 "rid" => ["string", $rid]
104 ],
105 [ // where
106 "id" => ["integer", $style_id]
107 ]
108 );
109 return $rid;
110 }
111
112 public function getOrCreateRid(
113 int $style_id,
114 ResourceStakeholder $stakeholder
115 ): string {
116 $rid = $this->readRid($style_id);
117 if ($rid === "") {
118 $rid = $this->createRid(
119 $style_id,
120 $stakeholder
121 );
122 }
123 return $rid;
124 }
125
126 public function writeCss(
127 int $style_id,
128 string $css,
129 ResourceStakeholder $stakeholder
130 ): void {
131 $rid = $this->getOrCreateRid($style_id, $stakeholder);
132 $this->irss->addStringToContainer($rid, $css, "style.css");
133 }
134
135 public function getPath(
136 int $style_id,
137 bool $add_random = true,
138 bool $add_token = true
139 ): string {
140 $rid = $this->readRid($style_id);
141
142 if ($rid !== "") {
143 $path = $this->irss->getContainerUri(
144 $rid,
145 "style.css"
146 );
147 if ($add_random) {
148 $random = new \Random\Randomizer();
149 $rand = $random->getInt(1, 999999);
150 $path .= "?dummy=$rand";
151 }
152 } else {
153 $path = \ilFileUtils::getWebspaceDir("output") . "/css/style_" . $style_id . ".css";
154 if ($add_random) {
155 $random = new \Random\Randomizer();
156 $rand = $random->getInt(1, 999999);
157 $path .= "?dummy=$rand";
158 }
159 if ($add_token) {
161 }
162 }
163 return $path;
164 }
165
166 public function getResourceIdentification(int $style_id): ?ResourceIdentification
167 {
168 $rid = $this->readRid($style_id);
169 if ($rid !== "") {
170 return $this->irss->getResourceIdForIdString($rid);
171 }
172 return null;
173 }
174
175 public function cloneResourceContainer(
176 int $from_style_id,
177 int $to_style_id
178 ): void {
179 $from_rid = $this->readRid($from_style_id);
180 $to_rid = $this->irss->cloneContainer($from_rid);
181 if ($to_rid !== "") {
182 $this->db->update(
183 "style_data",
184 [
185 "rid" => ["string", $to_rid]
186 ],
187 [ // where
188 "id" => ["integer", $to_style_id]
189 ]
190 );
191 }
192 }
193
194}
factory()
createContainerFromLocalZip(int $style_id, string $local_zip_path, ResourceStakeholder $stakeholder)
Definition: StyleRepo.php:74
InternalDataService $factory
Definition: StyleRepo.php:32
createRid(int $style_id, ResourceStakeholder $stakeholder)
Definition: StyleRepo.php:57
cloneResourceContainer(int $from_style_id, int $to_style_id)
Definition: StyleRepo.php:175
createContainerFromLocalDir(int $style_id, string $local_dir_path, ResourceStakeholder $stakeholder, string $container_path="", bool $recursive=true)
Definition: StyleRepo.php:92
getResourceIdentification(int $style_id)
Definition: StyleRepo.php:166
writeCss(int $style_id, string $css, ResourceStakeholder $stakeholder)
Definition: StyleRepo.php:126
getPath(int $style_id, bool $add_random=true, bool $add_token=true)
Definition: StyleRepo.php:135
__construct(ilDBInterface $db, InternalDataService $factory, protected IRSSWrapper $irss)
Definition: StyleRepo.php:34
getOrCreateRid(int $style_id, ResourceStakeholder $stakeholder)
Definition: StyleRepo.php:112
static getWebspaceDir(string $mode="filesystem")
get webspace directory
static signFile(string $path_to_file)
Interface ilDBInterface.
$path
Definition: ltiservices.php:30