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
108
109      // Get the URL to the zip file
110      $r = $current->response[ $plugin ];
111
112      if ( empty($r->package) )
113           return new WP_Error('no_package', __('Upgrade package not available.'));
114
115      // Download the package
116      $package = $r->package;
117      apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package));
118      $download_file = download_url($package);
119
120      if ( is_wp_error($download_file) )
121           return new WP_Error('download_failed', __('Download failed.'), $download_file->get_error_message());
122
123      $working_dir = $content_dir . 'upgrade/' . basename($plugin, '.php');
124
125      // Clean up working directory
126      if ( $wp_filesystem->is_dir($working_dir) )
127           $wp_filesystem->delete($working_dir, true);
128
129      apply_filters('update_feedback', __('Unpacking the update'));
130      // Unzip package to working directory
131      $result = unzip_file($download_file, $working_dir);
132      
133      // Once extracted, delete the package
134      unlink($download_file);
135      
136      if ( is_wp_error($result) ) {
137           $wp_filesystem->delete($working_dir, true);
138           return $result;
139      }
140
141      if ( is_plugin_active($plugin) ) {
142           //Deactivate the plugin silently, Prevent deactivation hooks from running.
143           apply_filters('update_feedback', __('Deactivating the plugin'));
144           deactivate_plugins($plugin, true);
145      }
146
147      // Remove the existing plugin.
148      apply_filters('update_feedback', __('Removing the old version of the plugin'));
149      $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );
150      
151      // If plugin is in its own directory, recursively delete the directory.
152      if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
153           $deleted = $wp_filesystem->delete($this_plugin_dir, true);
154      else
155           $deleted = $wp_filesystem->delete($plugins_dir . $plugin);
156
157      if ( ! $deleted ) {
158           $wp_filesystem->delete($working_dir, true);
159           return new WP_Error('delete_failed', __('Could not remove the old plugin'));
160      }
161
162      apply_filters('update_feedback', __('Installing the latest version'));
163      // Copy new version of plugin into place.
164      $result = copy_dir($working_dir, $plugins_dir);
165      if ( is_wp_error($result) ) {
166           //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails.
167           return $result;
168      }
169
170      //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
171      $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );