Brand new major version of GD Press Tools Pro is here. There are not many new things in this one, but it includes huge core changes by using modules for some of the elements of the plugin. Database, robots meta tags, cron and few other things are expanded with new features.
Main new feature in this version is use of modules. But, beside that, there are many bugs fixed: potential problems with downloading large backup files, minor problems with displaying settings on some panels, Google Storage problems for backup, few more minor issues with jQuery 1.7, broken counting of posts for archives posts for Sitemaps generator, Facebook image tag problems with some themes and missing Database panel from network mode, and broken cleanup tools in the network mode.
Modules
Some of the plugin features were related to both individual sites and whole network (when WP is in multisite mode). So, best way to deal with that is to have control on both levels. So, some of the plugin features that were network controlled only, or site controlled only, are now available as modules. In normal WP installation, all modules are available as expected and set through Modules panel. In multisite mode, through network admin you can control how the features are available to individual site admins.
Modules are: Maintenance Mode, Admin Bar, Debugger, Email/SMTP. If you use network mode, you can set up who can control it. Network controlled module and individual sites can’t control it, you can leave sites the control, you can set up list of sites to have control, or leave control to main site only. Each module has activation checkbox and the rest of the settings is mostly the same as it was before this version. If you don’t use network mode, you will not see network control options.
Network Maintenance Mode
Modules changes added one important new feature for all those who use WordPress in multisite/network mode: you can set full network, main site, all but main site, or all but selected sites into maintenance mode.
Changes to scope for some settings
Some of the plugin settings are moved around to allow for better flexibility in network mode. Email sender data is not site controlled (and moved to main Settings panel), plugin capabilities are moved to global Settings, and same goes for user activity options. All this, with module changes caused to have less tabs on both Settings and Global Settings panels.
Two more dashboard widgets
Recent posts and recent drafts widgets are added. Both use expanded display that includes post type and data, and also has 3 controls for each post: edit, view and duplicate. If you want to use these widgets, it is recommended to disable WordPress default recent posts widgets to avoid duplicated content. All these is controlled from Integration tab on Settings panel.
Other new features and changes
CDN FTP transfer allows for use of non-blocking FTP connection method that can help with broken copy to FTP for large files with implemented retry procedure (thanks to Frank P. Walentynowicz for suggesting this and providing some examples). This is added to settings for each FTP connection. Debugger tracker class can be now loaded through wp-config.php to allow more details tracked during the loading of WordPress. Expanding RSS feed items now allow adding PHP code that will be executed, and mixing it with HTML. Email/SMTP module directly supports Yahoo email servers.
Database panel shows storage engine for each table. Also, a change in the database support is made to take into account InnoDB specific features (no overhead). SEO Robots meta tag is expanded with additional meta tag values, and also now supports custom post types and taxonomies, allowing for better control of this meta tag. Cron panel now shows the source for the cron job. Plugin has a list of jobs (this will be expanded with future versions to support more plugins). This way you can identify obsolete jobs after you have removed some plugins from the system.
Plugin loading has been optimized, plugin now needs 15% less memory than before. Also, modules help with this, because they are loaded only if set to active. Sitemaps loading is rewritten and much more flexible than before. Several obsolete functions are removed from the plugin. And, gdr2 library updated to latest 2.5.5 version.
As always, please report in the forums any bugs you find, and I will get on fixing it.
Notice: Due to the massive changes in handling settings, it can happen that in multisite/network installations some of the individual sites options get lost and reset to default. Check your sites settings to make sure that it is all OK.
Links and Resources
Here is the list of tutorials that you might find useful:
How to backup and restore your website
Using GD Press Tools 4.2 Backup
Using GD Press Tools Auto Tagger
Comparing GD Press Tools Pro versus BackupBuddy:
To see the list of plugin features, overview and to buy the plugin, visit these pages:
GD Press Tools Overview
GD Press Tools Main Page
GD Press Tools Frequently Asked Questions
Buy GD Press Tools Pro
Implementation issues of ftp.class (ftp.class.php):
While loop within _run_loop function executes only once. It always returns from within itself without increasing $this->_retries on error and checking the end condition afterwards. Therefore, regardless of which method we use ( simple or non-blocking ), we end up with the old: either failure or success. This function should read:
`private function _run_loop($source, $file_name = “”, $destination = “”) {
$this->_retries = 0;
while ($this->_retries retry) {
$r = $this->connect();
if ($r !== true) {
$this->disconnect();
return $this->_errors;
} else {
$r = $this->upload($source);
$this->disconnect();
if ($r === true) {
return true;
} else {
$this->_retries++;
}
}
$this->_errors->add(“file_transfer”, __(“Uploading file to FTP failed.”, “gd-press-tools”));
return $this->_errors;
}`
The number of allowed retries should be the same for both methods, simple or non-blocking, therefore the function run should read:
`public function run($source, $file_name = “”, $destination = “”) {
return $this->_run_loop($source, $file_name, $destination);
}`
The real power of ftp retries is the ability to retry at the point of failure. This can be accomplished by using the fifth parameter in either ftp_put or ftp_nb_put function, which is startpos. Without it, every retry starts from position 0! Starting from position 0 on retries will increase the total time of transfer and decrease a chance for success significantly.
To implement retries from the point of failure in both functions, _upload_simple and _upload_nonblocking, we have to modify just one line in each function.
In _upload_simple, the line
`$this->_done = @ftp_put($this->_ftp, $file_name, $source, FTP_BINARY);`
should be replaced with
`$this->_done = @ftp_put($this->_ftp, $file_name, $source, FTP_BINARY, ftp_size($file_name));`
In _upload_nonblocking, the line
`$this->_done = @ftp_nb_put($this->_ftp, $file_name, $source, FTP_BINARY);`
should be replaced with
`$this->_done = @ftp_nb_put($this->_ftp, $file_name, $source, FTP_BINARY, ftp_size($file_name));`
Thanks Frank, I will check this out and implement your fixes.
Hi Milan,
This is a correction to the _run_loop function to ensure proper handling of the while loop:
private function _run_loop($source, $file_name = “”, $destination = “”) {
$this->_retries = 0;
while ($this->_retries retry) {
$r = $this->connect();
if ($r !== true) {
$this->disconnect();
break;
} else {
$r = $this->upload($source);
$this->disconnect();
if ($r === true) {
break;
} else {
$this->_retries++;
}
}
}
if ($r !== true) {
$this->_errors->add(“file_transfer”, __(“Uploading file to FTP failed.”, “gd-press-tools”));
return $this->_errors;
} else {
return true;
}
}