PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.20.0
GiveWP – Donation Plugin and Fundraising Platform v2.20.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / symfony / http-foundation / File / File.php
give / vendor / symfony / http-foundation / File Last commit date
Exception 4 years ago MimeType 4 years ago File.php 4 years ago Stream.php 4 years ago UploadedFile.php 4 years ago
File.php
139 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\HttpFoundation\File;
13
14 use Symfony\Component\HttpFoundation\File\Exception\FileException;
15 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
16 use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
17 use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
18
19 /**
20 * A file in the file system.
21 *
22 * @author Bernhard Schussek <bschussek@gmail.com>
23 */
24 class File extends \SplFileInfo
25 {
26 /**
27 * Constructs a new file from the given path.
28 *
29 * @param string $path The path to the file
30 * @param bool $checkPath Whether to check the path or not
31 *
32 * @throws FileNotFoundException If the given path is not a file
33 */
34 public function __construct($path, $checkPath = true)
35 {
36 if ($checkPath && !is_file($path)) {
37 throw new FileNotFoundException($path);
38 }
39
40 parent::__construct($path);
41 }
42
43 /**
44 * Returns the extension based on the mime type.
45 *
46 * If the mime type is unknown, returns null.
47 *
48 * This method uses the mime type as guessed by getMimeType()
49 * to guess the file extension.
50 *
51 * @return string|null The guessed extension or null if it cannot be guessed
52 *
53 * @see ExtensionGuesser
54 * @see getMimeType()
55 */
56 public function guessExtension()
57 {
58 $type = $this->getMimeType();
59 $guesser = ExtensionGuesser::getInstance();
60
61 return $guesser->guess($type);
62 }
63
64 /**
65 * Returns the mime type of the file.
66 *
67 * The mime type is guessed using a MimeTypeGuesser instance, which uses finfo(),
68 * mime_content_type() and the system binary "file" (in this order), depending on
69 * which of those are available.
70 *
71 * @return string|null The guessed mime type (e.g. "application/pdf")
72 *
73 * @see MimeTypeGuesser
74 */
75 public function getMimeType()
76 {
77 $guesser = MimeTypeGuesser::getInstance();
78
79 return $guesser->guess($this->getPathname());
80 }
81
82 /**
83 * Moves the file to a new location.
84 *
85 * @param string $directory The destination folder
86 * @param string $name The new file name
87 *
88 * @return self A File object representing the new file
89 *
90 * @throws FileException if the target file could not be created
91 */
92 public function move($directory, $name = null)
93 {
94 $target = $this->getTargetFile($directory, $name);
95
96 set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; });
97 $renamed = rename($this->getPathname(), $target);
98 restore_error_handler();
99 if (!$renamed) {
100 throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
101 }
102
103 @chmod($target, 0666 & ~umask());
104
105 return $target;
106 }
107
108 protected function getTargetFile($directory, $name = null)
109 {
110 if (!is_dir($directory)) {
111 if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
112 throw new FileException(sprintf('Unable to create the "%s" directory.', $directory));
113 }
114 } elseif (!is_writable($directory)) {
115 throw new FileException(sprintf('Unable to write in the "%s" directory.', $directory));
116 }
117
118 $target = rtrim($directory, '/\\').\DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
119
120 return new self($target, false);
121 }
122
123 /**
124 * Returns locale independent base name of the given path.
125 *
126 * @param string $name The new file name
127 *
128 * @return string containing
129 */
130 protected function getName($name)
131 {
132 $originalName = str_replace('\\', '/', $name);
133 $pos = strrpos($originalName, '/');
134 $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);
135
136 return $originalName;
137 }
138 }
139