ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
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->readRid($style_id);
132 if ($rid !== "") {
133 $this->irss->addStringToContainer($rid, $css, "style.css");
134 }
135 }
136
137 public function getPath(
138 int $style_id,
139 bool $add_random = true,
140 bool $add_token = true
141 ): string {
142 $rid = $this->readRid($style_id);
143
144 if ($rid !== "") {
145 $path = $this->irss->getContainerUri(
146 $rid,
147 "style.css"
148 );
149 if ($add_random) {
150 $random = new \Random\Randomizer();
151 $rand = $random->getInt(1, 999999);
152 $path .= "?dummy=$rand";
153 }
154 } else {
155 $path = \ilFileUtils::getWebspaceDir("output") . "/css/style_" . $style_id . ".css";
156 if ($add_random) {
157 $random = new \Random\Randomizer();
158 $rand = $random->getInt(1, 999999);
159 $path .= "?dummy=$rand";
160 }
161 if ($add_token) {
163 }
164 }
165 return $path;
166 }
167
168 public function getResourceIdentification(int $style_id): ?ResourceIdentification
169 {
170 $rid = $this->readRid($style_id);
171 if ($rid !== "") {
172 return $this->irss->getResourceIdForIdString($rid);
173 }
174 return null;
175 }
176
177 public function cloneResourceContainer(
178 int $from_style_id,
179 int $to_style_id
180 ): void {
181 $from_rid = $this->readRid($from_style_id);
182 $to_rid = $this->irss->cloneContainer($from_rid);
183 if ($to_rid !== "") {
184 $this->db->update(
185 "style_data",
186 [
187 "rid" => ["string", $to_rid]
188 ],
189 [ // where
190 "id" => ["integer", $to_style_id]
191 ]
192 );
193 }
194 }
195
196 public function saveUpToDate(
197 int $style_id,
198 bool $up_to_date
199 ): void {
200 $this->db->update(
201 "style_data",
202 [
203 "uptodate" => ["integer", (int) $up_to_date]
204 ],
205 [
206 "id" => ["integer", $style_id]
207 ]
208 );
209 }
210
211 public function migrateImages(
212 int $style_id
213 ): void {
214 $source_dir = CLIENT_WEB_DIR . '/sty/sty_' . $style_id . "/images";
215 $rid = $this->readRid($style_id);
216 if (is_dir($source_dir) && $rid !== "") {
217 $this->irss->addDirectoryToContainer(
218 $rid,
219 $source_dir,
220 "images"
221 );
222 $style_dir = CLIENT_WEB_DIR . '/sty/sty_' . $style_id;
223 \ilFileUtils::delDir($style_dir);
224 }
225 }
226
227
228}
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:177
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:168
saveUpToDate(int $style_id, bool $up_to_date)
Definition: StyleRepo.php:196
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:137
__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 delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static signFile(string $path_to_file)
const CLIENT_WEB_DIR
Definition: constants.php:47
Interface ilDBInterface.
$path
Definition: ltiservices.php:30