PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.8.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.8.2
4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Backup / Dto / Traits / RemoteUploadTrait.php
wp-staging / Backup / Dto / Traits Last commit date
DateCreatedTrait.php 3 years ago IsExcludingTrait.php 2 years ago IsExportingTrait.php 2 years ago RemoteUploadTrait.php 1 year ago WithPluginsThemesMuPluginsTrait.php 3 years ago
RemoteUploadTrait.php
292 lines
1 <?php
2
3 namespace WPStaging\Backup\Dto\Traits;
4
5 use WPStaging\Backup\Dto\JobDataDto;
6 use WPStaging\Core\WPStaging;
7 use WPStaging\Framework\Facades\Hooks;
8 use WPStaging\Pro\Backup\Dto\Job\JobRemoteUploadDataDto;
9
10 /**
11 * Used for Remote Upload
12 */
13 trait RemoteUploadTrait
14 {
15 /** @var bool */
16 private $isAutomatedBackup = false;
17
18 /** @var int The size of all backup multipart files or single full backup file */
19 private $totalBackupSize = 0;
20
21 /** @var array */
22 private $filesToUpload = [];
23
24 /** @var array */
25 private $uploadedFiles = [];
26
27 /** @var array Selected storages for backup. */
28 private $storages;
29
30 /**
31 * @var array The meta data used by Remote Storages to help uploading.
32 * Stores ResumeURI for Google Drive
33 * Stores UploadId and UploadedParts Meta for Amazon S3
34 */
35 private $remoteStorageMeta;
36
37 /**
38 * True for stand alone upload job action.
39 * Always false when creating backups no matter if the backup is uploaded after that or not.
40 * @var bool
41 */
42 private $isOnlyUpload = false;
43
44 /** @var bool */
45 private $isMultipartBackup = false;
46
47 /** @var int */
48 private $maxMultipartBackupSize = 2147483647; // 2GB - 1 Byte
49
50 /** @var bool True if this backup should be repeated on a schedule, false if it should run only once. */
51 private $repeatBackupOnSchedule;
52
53 /**
54 * @return bool
55 */
56 public function getIsAutomatedBackup(): bool
57 {
58 return $this->isAutomatedBackup;
59 }
60
61 /**
62 * Hydrated dynamically.
63 *
64 * @param bool $isAutomatedBackup
65 * @return void
66 */
67 public function setIsAutomatedBackup(bool $isAutomatedBackup)
68 {
69 $this->isAutomatedBackup = $isAutomatedBackup;
70 }
71
72 /**
73 * @return int
74 */
75 public function getTotalBackupSize(): int
76 {
77 return $this->totalBackupSize;
78 }
79
80 /**
81 * @param int $totalBackupSize
82 * @return void
83 */
84 public function setTotalBackupSize(int $totalBackupSize)
85 {
86 $this->totalBackupSize = $totalBackupSize;
87 }
88
89 /**
90 * @return array
91 */
92 public function getFilesToUpload(): array
93 {
94 return $this->filesToUpload;
95 }
96
97 /**
98 * @param array $filesToUpload
99 * @return void
100 */
101 public function setFilesToUpload(array $filesToUpload = [])
102 {
103 $this->filesToUpload = $filesToUpload;
104 }
105
106 /**
107 * @return array
108 */
109 public function getUploadedFiles(): array
110 {
111 return $this->uploadedFiles;
112 }
113
114 /**
115 * @param array $uploadedFiles
116 * @return void
117 */
118 public function setUploadedFiles(array $uploadedFiles = [])
119 {
120 $this->uploadedFiles = $uploadedFiles;
121 }
122
123 /**
124 * @param string $uploadedFile
125 * @param int $fileSize
126 * @param string $fileHash
127 * @return void
128 */
129 public function setUploadedFile(string $uploadedFile, int $fileSize, string $fileHash = '')
130 {
131 $this->uploadedFiles[$uploadedFile] = [
132 'size' => $fileSize,
133 'hash' => $fileHash,
134 ];
135 }
136
137 /**
138 * @return bool
139 */
140 public function getIsOnlyUpload(): bool
141 {
142 return $this->isOnlyUpload;
143 }
144
145 /**
146 * @param bool isOnlyUpload
147 * @return void
148 */
149 public function setIsOnlyUpload(bool $isOnlyUpload)
150 {
151 $this->isOnlyUpload = $isOnlyUpload;
152 }
153
154 /**
155 * @return array
156 */
157 public function getStorages(): array
158 {
159 return $this->storages;
160 }
161
162 /**
163 * @param array|string $storages
164 */
165 public function setStorages($storages = [])
166 {
167 if (!is_array($storages)) {
168 $storages = json_decode($storages, true);
169 }
170
171 $this->storages = $storages;
172 }
173
174 /**
175 * @return array
176 */
177 public function getRemoteStorageMeta()
178 {
179 return $this->remoteStorageMeta;
180 }
181
182 /**
183 * @param array $remoteStorageMeta
184 * @return void
185 */
186 public function setRemoteStorageMeta($remoteStorageMeta = [])
187 {
188 $this->remoteStorageMeta = $remoteStorageMeta;
189 }
190
191 /** @return bool */
192 public function isLocalBackup(): bool
193 {
194 return in_array('localStorage', $this->getStorages());
195 }
196
197 /** @return bool */
198 public function isUploadToGoogleDrive(): bool
199 {
200 return in_array('googleDrive', $this->getStorages());
201 }
202
203 /** @return bool */
204 public function isUploadToAmazonS3(): bool
205 {
206 return in_array('amazonS3', $this->getStorages());
207 }
208
209 /** @return bool */
210 public function isUploadToSftp(): bool
211 {
212 return in_array('sftp', $this->getStorages());
213 }
214
215 /** @return bool */
216 public function isUploadToWasabi(): bool
217 {
218 return in_array('wasabi-s3', $this->getStorages());
219 }
220
221 /** @return bool */
222 public function isUploadToDigitalOceanSpaces(): bool
223 {
224 return in_array('digitalocean-spaces', $this->getStorages());
225 }
226
227 /** @return bool */
228 public function isUploadToGenericS3(): bool
229 {
230 return in_array('generic-s3', $this->getStorages());
231 }
232
233 /** @return bool */
234 public function isUploadToDropbox(): bool
235 {
236 return in_array('dropbox', $this->getStorages());
237 }
238
239 /**
240 * @param bool $isMultipartBackup
241 */
242 public function setIsMultipartBackup($isMultipartBackup)
243 {
244 $this->isMultipartBackup = $isMultipartBackup;
245 }
246
247 /**
248 * @return bool
249 */
250 public function getIsMultipartBackup(): bool
251 {
252 // Do not remove this check, otherwise the backup process will fail with an error if multipart backup is enabled in the free version.
253 if (!WPStaging::isPro()) {
254 return false;
255 }
256
257 return Hooks::applyFilters(JobDataDto::FILTER_IS_MULTIPART_BACKUP, $this->isMultipartBackup);
258 }
259
260 /**
261 * @return int
262 */
263 public function getMaxMultipartBackupSize()
264 {
265 return Hooks::applyFilters(JobDataDto::FILTER_MAX_MULTIPART_BACKUP_SIZE, $this->maxMultipartBackupSize);
266 }
267
268 /**
269 * @param int $maxMultipartBackupSize
270 */
271 public function setMaxMultipartBackupSize($maxMultipartBackupSize)
272 {
273 $this->maxMultipartBackupSize = $maxMultipartBackupSize;
274 }
275
276 /**
277 * @return bool
278 */
279 public function getRepeatBackupOnSchedule()
280 {
281 return $this->repeatBackupOnSchedule;
282 }
283
284 /**
285 * @param bool $repeatBackupOnSchedule
286 */
287 public function setRepeatBackupOnSchedule($repeatBackupOnSchedule)
288 {
289 $this->repeatBackupOnSchedule = $repeatBackupOnSchedule;
290 }
291 }
292