Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: update_feedback

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 5 times in this file.

Line Code
167
168      // Get the URL to the zip file
169      $r = $current->response[ $plugin ];
170
171      if ( empty($r->package) )
172           return new WP_Error('no_package', __('Upgrade package not available.'));
173
174      // Download the package
175      $package = $r->package;
176      apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package));
177      $file = download_url($package);
178
179      if ( is_wp_error($file) )
180           return new WP_Error('download_failed', __('Download failed.'), $file->get_error_message());
181
182      $working_dir = $base . 'wp-content/upgrade/' . basename($plugin, '.php');
183
184      // Clean up working directory
185      if ( $wp_filesystem->is_dir($working_dir) )
186           $wp_filesystem->delete($working_dir, true);
187
188      apply_filters('update_feedback', __('Unpacking the update'));
189      // Unzip package to working directory
190      $result = unzip_file($file, $working_dir);
191      if ( is_wp_error($result) ) {
192           unlink($file);
193           $wp_filesystem->delete($working_dir, true);
194           return $result;
195      }
196
197      // Once extracted, delete the package
198      unlink($file);
199
200      if ( is_plugin_active($plugin) ) {
201           //Deactivate the plugin silently, Prevent deactivation hooks from running.
202           apply_filters('update_feedback', __('Deactivating the plugin'));
203           deactivate_plugins($plugin, true);
204      }
205
206      // Remove the existing plugin.
207      apply_filters('update_feedback', __('Removing the old version of the plugin'));
208      $plugin_dir = dirname($base . PLUGINDIR . "/$plugin");
209      $plugin_dir = trailingslashit($plugin_dir);
210      
211      // If plugin is in its own directory, recursively delete the directory.
212      if ( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/' ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
213           $deleted = $wp_filesystem->delete($plugin_dir, true);
214      else
215           $deleted = $wp_filesystem->delete($base . PLUGINDIR . "/$plugin");
216
217      if ( !$deleted ) {
218           $wp_filesystem->delete($working_dir, true);
219           return new WP_Error('delete_failed', __('Could not remove the old plugin'));
220      }
221
222      apply_filters('update_feedback', __('Installing the latest version'));
223      // Copy new version of plugin into place.
224      if ( !copy_dir($working_dir, $base . PLUGINDIR) ) {
225           //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails.
226           return new WP_Error('install_failed', __('Installation failed'));
227      }
228
229      //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
230      $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );
231