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