Completed
Branch sideload-incorrect-upload-from (5cf3e7)
by
unknown
43:40 queued 35:22
created
core/helpers/EEH_Sideloader.helper.php 1 patch
Indentation   +148 added lines, -148 removed lines patch added patch discarded remove patch
@@ -14,152 +14,152 @@
 block discarded – undo
14 14
 class EEH_Sideloader extends EEH_Base
15 15
 {
16 16
 
17
-    private $_upload_to;
18
-    private $_upload_from;
19
-    private $_permissions;
20
-    private $_new_file_name;
21
-
22
-
23
-    /**
24
-     * constructor allows the user to set the properties on the sideloader on construct.  However, there are also setters for doing so.
25
-     *
26
-     * @access public
27
-     * @param array $init array fo initializing the sideloader if keys match the properties.
28
-     */
29
-    public function __construct($init = array())
30
-    {
31
-        $this->_init($init);
32
-    }
33
-
34
-
35
-    /**
36
-     * sets the properties for class either to defaults or using incoming initialization array
37
-     *
38
-     * @access private
39
-     * @param  array  $init array on init (keys match properties others ignored)
40
-     * @return void
41
-     */
42
-    private function _init($init)
43
-    {
44
-        $defaults = array(
45
-            '_upload_to' => $this->_get_wp_uploads_dir(),
46
-            '_upload_from' => '',
47
-            '_permissions' => 0644,
48
-            '_new_file_name' => 'EE_Sideloader_' . uniqid() . '.default'
49
-            );
50
-
51
-        $props = array_merge($defaults, $init);
52
-
53
-        foreach ($props as $key => $val) {
54
-            if (EEH_Class_Tools::has_property($this, $key)) {
55
-                $this->{$key} = $val;
56
-            }
57
-        }
58
-
59
-        // make sure we include the required wp file for needed functions
60
-        require_once(ABSPATH . 'wp-admin/includes/file.php');
61
-    }
62
-
63
-
64
-    // utilities
65
-    private function _get_wp_uploads_dir()
66
-    {
67
-    }
68
-
69
-    // setters
70
-    public function set_upload_to($upload_to_folder)
71
-    {
72
-        $this->_upload_to = $upload_to_folder;
73
-    }
74
-    public function set_upload_from($upload_from)
75
-    {
76
-        $this->_upload_from = $upload_from;
77
-    }
78
-    public function set_permissions($permissions)
79
-    {
80
-        $this->_permissions = $permissions;
81
-    }
82
-    public function set_new_file_name($new_file_name)
83
-    {
84
-        $this->_new_file_name = $new_file_name;
85
-    }
86
-
87
-    // getters
88
-    public function get_upload_to()
89
-    {
90
-        return $this->_upload_to;
91
-    }
92
-    public function get_upload_from()
93
-    {
94
-        return $this->_upload_from;
95
-    }
96
-    public function get_permissions()
97
-    {
98
-        return $this->_permissions;
99
-    }
100
-    public function get_new_file_name()
101
-    {
102
-        return $this->_new_file_name;
103
-    }
104
-
105
-
106
-    // upload methods
107
-    public function sideload()
108
-    {
109
-        // setup temp dir
110
-        $temp_file = wp_tempnam($this->_upload_from);
111
-
112
-        if (!$temp_file) {
113
-            EE_Error::add_error(__('Something went wrong with the upload.  Unable to create a tmp file for the uploaded file on the server', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
114
-            return false;
115
-        }
116
-
117
-        do_action('AHEE__EEH_Sideloader__sideload__before', $this, $temp_file);
118
-
119
-        $wp_remote_args = apply_filters('FHEE__EEH_Sideloader__sideload__wp_remote_args', array( 'timeout' => 500, 'stream' => true, 'filename' => $temp_file ), $this, $temp_file);
120
-
121
-        $response = wp_safe_remote_get($this->_upload_from, $wp_remote_args);
122
-
123
-        if (is_wp_error($response) || 200 != wp_remote_retrieve_response_code($response)) {
124
-            unlink($temp_file);
125
-            if (defined('WP_DEBUG') && WP_DEBUG) {
126
-                EE_Error::add_error(sprintf(__('Unable to upload the file.  Either the path given to upload from is incorrect, or something else happened.  Here is the response returned:<br />%s<br />Here is the path given: %s', 'event_espresso'), var_export($response, true), $this->_upload_from), __FILE__, __FUNCTION__, __LINE__);
127
-            }
128
-            return false;
129
-        }
130
-
131
-        // possible md5 check
132
-        $content_md5 = wp_remote_retrieve_header($response, 'content-md5');
133
-        if ($content_md5) {
134
-            $md5_check = verify_file_md5($temp_file, $content_md5);
135
-            if (is_wp_error($md5_check)) {
136
-                unlink($temp_file);
137
-                EE_Error::add_error($md5_check->get_error_message(), __FILE__, __FUNCTION__, __LINE__);
138
-                return false;
139
-            }
140
-        }
141
-
142
-        $file = $temp_file;
143
-
144
-        // now we have the file, let's get it in the right directory with the right name.
145
-        $path = apply_filters('FHEE__EEH_Sideloader__sideload__new_path', $this->_upload_to . $this->_new_file_name, $this);
146
-
147
-        // move file in
148
-        if (false === @ rename($file, $path)) {
149
-            unlink($temp_file);
150
-            EE_Error::add_error(sprintf(__('Unable to move the file to new location (possible permissions errors). This is the path the class attempted to move the file to: %s', 'event_espresso'), $path), __FILE__, __FUNCTION__, __LINE__);
151
-            return false;
152
-        }
153
-
154
-        // set permissions
155
-        $permissions = apply_filters('FHEE__EEH_Sideloader__sideload__permissions_applied', $this->_permissions, $this);
156
-        chmod($path, $permissions);
157
-
158
-        // that's it.  let's allow for actions after file uploaded.
159
-        do_action('AHEE__EE_Sideloader__sideload_after', $this, $path);
160
-
161
-        // unlink tempfile
162
-        @unlink($temp_file);
163
-        return true;
164
-    }
17
+	private $_upload_to;
18
+	private $_upload_from;
19
+	private $_permissions;
20
+	private $_new_file_name;
21
+
22
+
23
+	/**
24
+	 * constructor allows the user to set the properties on the sideloader on construct.  However, there are also setters for doing so.
25
+	 *
26
+	 * @access public
27
+	 * @param array $init array fo initializing the sideloader if keys match the properties.
28
+	 */
29
+	public function __construct($init = array())
30
+	{
31
+		$this->_init($init);
32
+	}
33
+
34
+
35
+	/**
36
+	 * sets the properties for class either to defaults or using incoming initialization array
37
+	 *
38
+	 * @access private
39
+	 * @param  array  $init array on init (keys match properties others ignored)
40
+	 * @return void
41
+	 */
42
+	private function _init($init)
43
+	{
44
+		$defaults = array(
45
+			'_upload_to' => $this->_get_wp_uploads_dir(),
46
+			'_upload_from' => '',
47
+			'_permissions' => 0644,
48
+			'_new_file_name' => 'EE_Sideloader_' . uniqid() . '.default'
49
+			);
50
+
51
+		$props = array_merge($defaults, $init);
52
+
53
+		foreach ($props as $key => $val) {
54
+			if (EEH_Class_Tools::has_property($this, $key)) {
55
+				$this->{$key} = $val;
56
+			}
57
+		}
58
+
59
+		// make sure we include the required wp file for needed functions
60
+		require_once(ABSPATH . 'wp-admin/includes/file.php');
61
+	}
62
+
63
+
64
+	// utilities
65
+	private function _get_wp_uploads_dir()
66
+	{
67
+	}
68
+
69
+	// setters
70
+	public function set_upload_to($upload_to_folder)
71
+	{
72
+		$this->_upload_to = $upload_to_folder;
73
+	}
74
+	public function set_upload_from($upload_from)
75
+	{
76
+		$this->_upload_from = $upload_from;
77
+	}
78
+	public function set_permissions($permissions)
79
+	{
80
+		$this->_permissions = $permissions;
81
+	}
82
+	public function set_new_file_name($new_file_name)
83
+	{
84
+		$this->_new_file_name = $new_file_name;
85
+	}
86
+
87
+	// getters
88
+	public function get_upload_to()
89
+	{
90
+		return $this->_upload_to;
91
+	}
92
+	public function get_upload_from()
93
+	{
94
+		return $this->_upload_from;
95
+	}
96
+	public function get_permissions()
97
+	{
98
+		return $this->_permissions;
99
+	}
100
+	public function get_new_file_name()
101
+	{
102
+		return $this->_new_file_name;
103
+	}
104
+
105
+
106
+	// upload methods
107
+	public function sideload()
108
+	{
109
+		// setup temp dir
110
+		$temp_file = wp_tempnam($this->_upload_from);
111
+
112
+		if (!$temp_file) {
113
+			EE_Error::add_error(__('Something went wrong with the upload.  Unable to create a tmp file for the uploaded file on the server', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
114
+			return false;
115
+		}
116
+
117
+		do_action('AHEE__EEH_Sideloader__sideload__before', $this, $temp_file);
118
+
119
+		$wp_remote_args = apply_filters('FHEE__EEH_Sideloader__sideload__wp_remote_args', array( 'timeout' => 500, 'stream' => true, 'filename' => $temp_file ), $this, $temp_file);
120
+
121
+		$response = wp_safe_remote_get($this->_upload_from, $wp_remote_args);
122
+
123
+		if (is_wp_error($response) || 200 != wp_remote_retrieve_response_code($response)) {
124
+			unlink($temp_file);
125
+			if (defined('WP_DEBUG') && WP_DEBUG) {
126
+				EE_Error::add_error(sprintf(__('Unable to upload the file.  Either the path given to upload from is incorrect, or something else happened.  Here is the response returned:<br />%s<br />Here is the path given: %s', 'event_espresso'), var_export($response, true), $this->_upload_from), __FILE__, __FUNCTION__, __LINE__);
127
+			}
128
+			return false;
129
+		}
130
+
131
+		// possible md5 check
132
+		$content_md5 = wp_remote_retrieve_header($response, 'content-md5');
133
+		if ($content_md5) {
134
+			$md5_check = verify_file_md5($temp_file, $content_md5);
135
+			if (is_wp_error($md5_check)) {
136
+				unlink($temp_file);
137
+				EE_Error::add_error($md5_check->get_error_message(), __FILE__, __FUNCTION__, __LINE__);
138
+				return false;
139
+			}
140
+		}
141
+
142
+		$file = $temp_file;
143
+
144
+		// now we have the file, let's get it in the right directory with the right name.
145
+		$path = apply_filters('FHEE__EEH_Sideloader__sideload__new_path', $this->_upload_to . $this->_new_file_name, $this);
146
+
147
+		// move file in
148
+		if (false === @ rename($file, $path)) {
149
+			unlink($temp_file);
150
+			EE_Error::add_error(sprintf(__('Unable to move the file to new location (possible permissions errors). This is the path the class attempted to move the file to: %s', 'event_espresso'), $path), __FILE__, __FUNCTION__, __LINE__);
151
+			return false;
152
+		}
153
+
154
+		// set permissions
155
+		$permissions = apply_filters('FHEE__EEH_Sideloader__sideload__permissions_applied', $this->_permissions, $this);
156
+		chmod($path, $permissions);
157
+
158
+		// that's it.  let's allow for actions after file uploaded.
159
+		do_action('AHEE__EE_Sideloader__sideload_after', $this, $path);
160
+
161
+		// unlink tempfile
162
+		@unlink($temp_file);
163
+		return true;
164
+	}
165 165
 } //end EEH_Template class
Please login to merge, or discard this patch.