PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.0.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.0.0
4.11.2 4.11.1 4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 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 / Framework / Traits / DatabaseSearchReplaceTrait.php
wp-staging / Framework / Traits Last commit date
ApplyFiltersTrait.php 1 year ago ArrayableTrait.php 1 year ago BenchmarkTrait.php 3 years ago BooleanTransientTrait.php 5 years ago DatabaseSearchReplaceTrait.php 1 year ago DbRowsGeneratorTrait.php 4 years ago DebugLogTrait.php 1 year ago DeveloperTimerTrait.php 4 years ago EndOfLinePlaceholderTrait.php 1 year ago EventLoggerTrait.php 1 year ago FileScanToCacheTrait.php 2 years ago FormatTrait.php 1 year ago HttpRequestTrait.php 1 year ago HydrateTrait.php 1 year ago I18nTrait.php 1 year ago MaintenanceTrait.php 5 years ago MemoryExhaustTrait.php 2 years ago MySQLRowsGeneratorTrait.php 1 year ago NoticesTrait.php 1 year ago PropertyConstructor.php 5 years ago ResourceTrait.php 2 years ago RestoreFileExclusionTrait.php 1 year ago SerializeTrait.php 1 year ago SlashTrait.php 1 year ago UrlTrait.php 1 year ago ValueGetterTrait.php 2 years ago WindowsOsTrait.php 1 year ago
DatabaseSearchReplaceTrait.php
103 lines
1 <?php
2
3 namespace WPStaging\Framework\Traits;
4
5 use WPStaging\Backup\Task\Tasks\JobBackup\FinishBackupTask;
6 use WPStaging\Core\WPStaging;
7 use WPStaging\Framework\Utils\Urls;
8 use WPStaging\Staging\Sites;
9
10 /**
11 * Trait DatabaseSearchReplaceTrait
12 *
13 * This trait puts together some common functionality for database search and replace
14 * used both by Cloning and Backups. This is not ideal, and should be refactored in the future
15 * for a more robust and proper architecture.
16 *
17 * @package WPStaging\Framework\Traits
18 */
19 trait DatabaseSearchReplaceTrait
20 {
21 private $excludedStrings = [
22 'Admin_custome_login_Slidshow',
23 'Admin_custome_login_Social',
24 'Admin_custome_login_logo',
25 'Admin_custome_login_text',
26 'Admin_custome_login_login',
27 'Admin_custome_login_top',
28 'Admin_custome_login_dashboard',
29 'Admin_custome_login_Version',
30 'upload_path',
31 'wpstg_existing_clones_beta',
32 'wpstg_existing_clones',
33 Sites::STAGING_SITES_OPTION,
34 FinishBackupTask::OPTION_LAST_BACKUP,
35 'wpstg_settings',
36 'wpstg_license_status',
37 'wpstg_tmp_data',
38 'siteurl',
39 'home'
40 ];
41
42 public function excludedStrings()
43 {
44 return $this->excludedStrings;
45 }
46
47 /**
48 * Prepend the following characters to string: %2F%2F, \/\/, //
49 * This is to make sure that only valid hostnames are replaced
50 * @param $string
51 * @return string[]
52 */
53 public function generateHostnamePatterns($string)
54 {
55 return [
56 '%2F%2F' . str_replace('/', '%2F', $string), // HTML entity for WP Backery Page Builder Plugin
57 '\/\/' . str_replace('/', '\/', $string), // Escaped \/ used by revslider and several visual editors
58 '//' . $string // //example.com
59 ];
60 }
61
62 private function getSourceHostname()
63 {
64 $urlsHelper = WPStaging::getInstance()->getContainer()->get(Urls::class);
65
66 if ($this->isSubDir()) {
67 return trailingslashit($urlsHelper->getHomeUrlWithoutScheme()) . $this->getSubDir();
68 }
69
70 return $urlsHelper->getHomeUrlWithoutScheme();
71 }
72
73 /**
74 * Check if WP is installed in subdir
75 * @return boolean
76 */
77 private function isSubDir()
78 {
79 // Compare names without scheme to bypass cases where siteurl and home have different schemes http / https
80 // This is happening much more often than you would expect
81 $siteurl = preg_replace('#^https?://#', '', rtrim(get_option('siteurl'), '/'));
82 $home = preg_replace('#^https?://#', '', rtrim(get_option('home'), '/'));
83
84 return $home !== $siteurl;
85 }
86
87 /**
88 * Get the install sub directory if WP is installed in sub directory
89 * @return string
90 */
91 private function getSubDir()
92 {
93 $home = get_option('home');
94 $siteurl = get_option('siteurl');
95
96 if (empty($home) || empty($siteurl)) {
97 return '';
98 }
99
100 return str_replace([$home, '/'], '', $siteurl);
101 }
102 }
103