PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.1
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.1
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 / Filesystem / FileObject.php
wp-staging / Framework / Filesystem Last commit date
Filters 1 week ago Scanning 1 week ago AbstractFileObject.php 1 week ago AbstractFilesystemScanner.php 1 week ago DebugLogReader.php 1 week ago DirectoryListing.php 1 week ago DirectorySize.php 1 week ago DiskWriteCheck.php 1 week ago FileObject.php 1 week ago Filesystem.php 1 week ago FilesystemExceptions.php 5 years ago FilesystemScanner.php 1 week ago FilesystemScannerDto.php 1 week ago FilterableDirectoryIterator.php 1 week ago LegacyFileRulesTrait.php 1 week ago LogCleanup.php 1 week ago LogFiles.php 1 week ago MissingFileException.php 3 years ago OPcache.php 1 week ago PartIdentifier.php 1 week ago PathChecker.php 1 week ago PathIdentifier.php 1 week ago Permissions.php 1 week ago WpUploadsFolderSymlinker.php 1 week ago
FileObject.php
91 lines
1 <?php
2
3 namespace WPStaging\Framework\Filesystem;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Job\Exception\DiskNotWritableException;
7
8
9
10
11
12
13
14 class FileObject extends AbstractFileObject
15 {
16 const AVERAGE_LINE_LENGTH = 4096;
17
18
19
20
21
22 public function __construct($fullPath, $openMode = self::MODE_READ)
23 {
24 $fullPath = untrailingslashit($fullPath);
25
26 if (empty($fullPath)) {
27 throw new DiskNotWritableException("Empty path given. Please contact support@wp-staging.com");
28 }
29
30 if (!file_exists($fullPath)) {
31 WPStaging::make(Filesystem::class)->mkdir(dirname($fullPath), true);
32 }
33
34 try {
35 parent::__construct($fullPath, $openMode);
36 } catch (\Exception $e) {
37
38 WPStaging::make(DiskWriteCheck::class)->testDiskIsWriteable();
39
40
41 throw $e;
42 }
43 }
44
45
46
47
48
49
50 public function fwriteSafe(string $str, $length = null)
51 {
52
53 mbstring_binary_safe_encoding();
54
55 $strLen = strlen($str);
56 $writtenBytes = $length !== null ? $this->fwrite($str, $length) : $this->fwrite($str);
57 reset_mbstring_encoding();
58
59 if ($strLen !== $writtenBytes) {
60 return false;
61 }
62
63 return $writtenBytes;
64 }
65
66
67
68
69
70
71
72
73 public function readBottomLines(int $lines): array
74 {
75 $this->seek(PHP_INT_MAX);
76 $lastLine = $this->key();
77 $offset = $lastLine - $lines;
78 if ($offset < 0) {
79 $offset = 0;
80 }
81
82 $allLines = new \LimitIterator($this, $offset, $lastLine);
83 return array_reverse(array_values(iterator_to_array($allLines)));
84 }
85
86 protected function isWindowsOs(): bool
87 {
88 return WPStaging::isWindowsOs();
89 }
90 }
91