PluginProbe
User Access Manager / 2.0.3
User Access Manager v2.0.3
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / UserAccessManager / FileHandler / FileProtection.php

FileProtection.php in User Access Manager 2.0.3, at src/UserAccessManager/FileHandler/FileProtection.php

138 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * FileProtection.php
4 *
5 * The FileProtection class file.
6 *
7 * PHP versions 5
8 *
9 * @author Alexander Schneider <alexanderschneider85@gmail.com>
10 * @copyright 2008-2017 Alexander Schneider
11 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
12 * @version SVN: $id$
13 * @link http://wordpress.org/extend/plugins/user-access-manager/
14 */
15 namespace UserAccessManager\FileHandler;
16
17 use UserAccessManager\Config\Config;
18 use UserAccessManager\Util\Util;
19 use UserAccessManager\Wrapper\Php;
20 use UserAccessManager\Wrapper\Wordpress;
21
22 /**
23 * Class FileProtection
24 *
25 * @package UserAccessManager\FileHandler
26 */
27 abstract class FileProtection
28 {
29 const PASSWORD_FILE_NAME = '.htpasswd';
30
31 /**
32 * @var Php
33 */
34 protected $php;
35
36 /**
37 * @var Wordpress
38 */
39 protected $wordpress;
40
41 /**
42 * @var Config
43 */
44 protected $config;
45
46 /**
47 * @var Util
48 */
49 protected $util;
50
51 /**
52 * ApacheFileProtection constructor.
53 *
54 * @param Php $php
55 * @param Wordpress $wordpress
56 * @param Config $config
57 * @param Util $util
58 */
59 public function __construct(Php $php, Wordpress $wordpress, Config $config, Util $util)
60 {
61 $this->php = $php;
62 $this->wordpress = $wordpress;
63 $this->config = $config;
64 $this->util = $util;
65 }
66
67 /**
68 * Cleans up the file types.
69 *
70 * @param string $fileTypes The file types which should be cleaned up.
71 *
72 * @return string
73 */
74 protected function cleanUpFileTypes($fileTypes)
75 {
76 $validFileTypes = [];
77 $fileTypes = explode(',', $fileTypes);
78 $mimeTypes = $this->config->getMimeTypes();
79
80 foreach ($fileTypes as $fileType) {
81 $cleanFileType = trim($fileType);
82
83 if (isset($mimeTypes[$cleanFileType]) === true) {
84 $validFileTypes[$cleanFileType] = $cleanFileType;
85 }
86 }
87
88 return implode('|', $validFileTypes);
89 }
90
91 /**
92 * Creates a htpasswd file.
93 *
94 * @param boolean $createNew Force to create new file.
95 * @param string $dir The destination directory.
96 */
97 public function createPasswordFile($createNew = false, $dir = null)
98 {
99 // get url
100 if ($dir === null) {
101 $wordpressUploadDir = $this->wordpress->getUploadDir();
102
103 if (empty($wordpressUploadDir['error'])) {
104 $dir = $wordpressUploadDir['basedir'].DIRECTORY_SEPARATOR;
105 }
106 }
107
108 $file = $dir.self::PASSWORD_FILE_NAME;
109
110 if ($dir !== null
111 && (file_exists($file) === false || $createNew)
112 ) {
113 $currentUser = $this->wordpress->getCurrentUser();
114
115 if ($this->config->getFilePassType() === 'random') {
116 try {
117 $randomPassword = $this->util->getRandomPassword();
118 $password = md5($randomPassword);
119 } catch (\Exception $exception) {
120 $password = $currentUser->user_pass;
121 }
122 } else {
123 $password = $currentUser->user_pass;
124 }
125
126 $user = $currentUser->user_login;
127
128 // make .htpasswd
129 $content = "{$user}:{$password}\n";
130
131 // save file
132 $fileHandler = fopen($file, 'w');
133 fwrite($fileHandler, $content);
134 fclose($fileHandler);
135 }
136 }
137 }
138