PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
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 day ago Scanning 1 day ago AbstractFileObject.php 1 day ago AbstractFilesystemScanner.php 1 day ago DebugLogReader.php 1 day ago DirectoryListing.php 1 day ago DirectorySize.php 1 day ago DiskWriteCheck.php 1 day ago FileObject.php 1 day ago Filesystem.php 1 day ago FilesystemExceptions.php 5 years ago FilesystemScanner.php 1 day ago FilesystemScannerDto.php 1 day ago FilterableDirectoryIterator.php 1 day ago LegacyFileRulesTrait.php 1 day ago LogCleanup.php 1 day ago LogFiles.php 1 day ago MissingFileException.php 3 years ago OPcache.php 1 day ago PartIdentifier.php 1 day ago PathChecker.php 1 day ago PathIdentifier.php 1 day ago Permissions.php 1 day ago WpUploadsFolderSymlinker.php 1 day 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