PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.8.0
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.8.0
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 / WithBackupIdentifier.php
wp-staging / Backup Last commit date
Ajax 1 year ago BackgroundProcessing 1 year ago Dto 1 year ago Entity 1 year ago Exceptions 1 year ago Interfaces 2 years ago Job 1 year ago Request 2 years ago Service 1 year ago Storage 2 years ago Task 1 year ago AfterRestore.php 3 years ago BackupDeleter.php 1 year ago BackupDownload.php 2 years ago BackupFileIndex.php 1 year ago BackupHeader.php 2 years ago BackupProcessLock.php 2 years ago BackupRepairer.php 3 years ago BackupRetentionHandler.php 2 years ago BackupScheduler.php 1 year ago BackupServiceProvider.php 2 years ago BackupValidator.php 1 year ago FileHeader.php 1 year ago FileHeaderAttribute.php 2 years ago WithBackupIdentifier.php 1 year ago wpstgBackupHeader.txt 3 years ago
WithBackupIdentifier.php
112 lines
1 <?php
2
3 namespace WPStaging\Backup;
4
5 use WPStaging\Backup\Task\Tasks\JobBackup\DatabaseBackupTask;
6 use WPStaging\Backup\Task\Tasks\JobBackup\BackupMuPluginsTask;
7 use WPStaging\Backup\Task\Tasks\JobBackup\BackupOtherFilesTask;
8 use WPStaging\Backup\Task\Tasks\JobBackup\BackupPluginsTask;
9 use WPStaging\Backup\Task\Tasks\JobBackup\BackupThemesTask;
10 use WPStaging\Backup\Task\Tasks\JobBackup\BackupUploadsTask;
11 use WPStaging\Backup\Task\FileBackupTask;
12
13 trait WithBackupIdentifier
14 {
15 /**
16 * @var array<string>
17 */
18 protected $listedMultipartBackups = [];
19
20 /**
21 * @param string $identifier
22 * @param string $input
23 * @return bool
24 */
25 public function checkPartByIdentifier(string $identifier, string $input)
26 {
27 return preg_match("#{$identifier}(.[0-9]+)?.wpstg$#", $input);
28 }
29
30 /**
31 * @param string $name
32 * @return bool
33 */
34 public function isBackupPart(string $name)
35 {
36 $dbExtension = DatabaseBackupTask::FILE_FORMAT;
37 $dbIdentifier = DatabaseBackupTask::PART_IDENTIFIER;
38 if (preg_match("#{$dbIdentifier}(.[0-9]+)?.{$dbExtension}$#", $name)) {
39 return true;
40 }
41
42 $pluginIdentifier = BackupPluginsTask::IDENTIFIER;
43 $mupluginIdentifier = BackupMuPluginsTask::IDENTIFIER;
44 $themeIdentifier = BackupThemesTask::IDENTIFIER;
45 $uploadIdentifier = BackupUploadsTask::IDENTIFIER;
46 $otherIdentifier = BackupOtherFilesTask::IDENTIFIER;
47 $otherWpRootIdentifier = FileBackupTask::OTHER_WP_ROOT_IDENTIFIER;
48
49 $identifiers = "({$pluginIdentifier}|{$mupluginIdentifier}|{$themeIdentifier}|{$uploadIdentifier}|{$otherIdentifier}|{$otherWpRootIdentifier})";
50
51 if ($this->checkPartByIdentifier($identifiers, $name)) {
52 return true;
53 }
54
55 return false;
56 }
57
58 /**
59 * @return void
60 */
61 public function clearListedMultipartBackups()
62 {
63 $this->listedMultipartBackups = [];
64 }
65
66 public function isListedMultipartBackup(string $filename, bool $shouldAddBackup = true)
67 {
68 $id = $this->extractBackupIdFromFilename($filename);
69 if (in_array($id, $this->listedMultipartBackups)) {
70 return true;
71 }
72
73 if ($shouldAddBackup) {
74 $this->listedMultipartBackups[] = $id;
75 }
76
77 return false;
78 }
79
80 /**
81 * @param string $filename
82 * @return string
83 */
84 public function extractBackupIdFromFilename(string $filename)
85 {
86 if (strpos($filename, '.' . DatabaseBackupTask::PART_IDENTIFIER . '.' . DatabaseBackupTask::FILE_FORMAT) !== false) {
87 return $this->extractBackupIdFromDatabaseBackupFilename($filename);
88 }
89
90 $fileInfos = explode('_', $filename);
91 $fileInfos = $fileInfos[count($fileInfos) - 1];
92 return explode('.', $fileInfos)[0];
93 }
94
95 /**
96 * @param string $filename
97 * @return string
98 */
99 protected function extractBackupIdFromDatabaseBackupFilename(string $filename)
100 {
101 // This is required if the table prefix contains underscore like wp_some
102 $filename = str_replace('.' . DatabaseBackupTask::PART_IDENTIFIER . '.' . DatabaseBackupTask::FILE_FORMAT, '', $filename);
103 // Get position of last dot . in filename
104 $lastDotPosition = strrpos($filename, '.');
105 // Get filename until last dot to remove the table prefix
106 $filename = substr($filename, 0, $lastDotPosition);
107
108 $fileInfos = explode('_', $filename);
109 return $fileInfos[count($fileInfos) - 1];
110 }
111 }
112