Duplicate Post - Version 2.2

Version Description

VERY IMPORTANT UPGRADE to get rid of problems with complex custom fields, afflicting both 2.1.* releases.

Download this release

Release Info

Developer lopo
Plugin Icon 128x128 Duplicate Post
Version 2.2
Comparing to
See all releases

Code changes from version 2.1.1 to 2.2

duplicate-post-admin.php CHANGED
@@ -43,18 +43,9 @@ function duplicate_post_plugin_upgrade() {
43
  $role->add_cap( 'copy_posts' );
44
  }
45
 
46
- add_option(
47
- 'duplicate_post_copyexcerpt',
48
- '1',
49
- 'Copy the excerpt from the original post/page' );
50
- add_option(
51
- 'duplicate_post_copystatus',
52
- '0',
53
- 'Copy the status (draft, published, pending) from the original post/page' );
54
- add_option(
55
- 'duplicate_post_taxonomies_blacklist',
56
- array(),
57
- 'List of the taxonomies that mustn\'t be copied' );
58
  } else if ( $installed_version==duplicate_post_get_current_version() ) { //re-install
59
  // do nothing
60
  } else { //upgrade form previous version
@@ -70,37 +61,30 @@ function duplicate_post_plugin_upgrade() {
70
 
71
  // Get old duplicate_post_copy_user_level option
72
  $min_user_level = get_option('duplicate_post_copy_user_level');
73
-
74
- // Get default roles
75
- $default_roles = array(
 
76
  1 => 'contributor',
77
  2 => 'author',
78
  3 => 'editor',
79
  8 => 'administrator',
80
- );
81
-
82
- // Cycle all roles and assign capability if its level >= duplicate_post_copy_user_level
83
- foreach ($default_roles as $level => $name){
84
- $role = get_role($name);
85
- if ($role && $min_user_level <= $level)
86
- $role->add_cap( 'copy_posts' );
 
 
 
 
87
  }
88
 
89
- // delete old option
90
- delete_option('duplicate_post_copy_user_level');
91
-
92
- add_option(
93
- 'duplicate_post_copyexcerpt',
94
- '1',
95
- 'Copy the excerpt from the original post/page' );
96
- add_option(
97
- 'duplicate_post_copystatus',
98
- '0',
99
- 'Copy the status (draft, published, pending) from the original post/page' );
100
- add_option(
101
- 'duplicate_post_taxonomies_blacklist',
102
- array(),
103
- 'List of the taxonomies that mustn\'t be copied' );
104
  }
105
  // Update version number
106
  update_option( 'duplicate_post_version', duplicate_post_get_current_version() );
@@ -245,7 +229,9 @@ function duplicate_post_copy_post_meta_info($new_id, $post) {
245
  foreach ($meta_keys as $meta_key) {
246
  $meta_values = get_post_custom_values($meta_key, $post->ID);
247
  foreach ($meta_values as $meta_value) {
248
- add_post_meta($new_id, $meta_key, $meta_value);
 
 
249
  }
250
  }
251
  }
@@ -286,7 +272,6 @@ function duplicate_post_create_duplicate($post, $status = '') {
286
 
287
  $new_post_id = wp_insert_post($new_post);
288
 
289
- add_post_meta($new_post_id, '_dp_original', $post->ID);
290
 
291
  // If you have written a plugin which uses non-WP database tables to save
292
  // information about a post you can hook this action to dupe that data.
@@ -294,6 +279,9 @@ function duplicate_post_create_duplicate($post, $status = '') {
294
  do_action( 'dp_duplicate_page', $new_post_id, $post );
295
  else
296
  do_action( 'dp_duplicate_post', $new_post_id, $post );
 
 
 
297
 
298
  // If the copy gets immediately published, we have to set a proper slug.
299
  if ($new_post_status == 'publish' || $new_post_status == 'future'){
43
  $role->add_cap( 'copy_posts' );
44
  }
45
 
46
+ add_option('duplicate_post_copyexcerpt','1');
47
+ add_option('duplicate_post_copystatus','0');
48
+ add_option('duplicate_post_taxonomies_blacklist',array());
 
 
 
 
 
 
 
 
 
49
  } else if ( $installed_version==duplicate_post_get_current_version() ) { //re-install
50
  // do nothing
51
  } else { //upgrade form previous version
61
 
62
  // Get old duplicate_post_copy_user_level option
63
  $min_user_level = get_option('duplicate_post_copy_user_level');
64
+
65
+ if (!empty($min_user_level)){
66
+ // Get default roles
67
+ $default_roles = array(
68
  1 => 'contributor',
69
  2 => 'author',
70
  3 => 'editor',
71
  8 => 'administrator',
72
+ );
73
+
74
+ // Cycle all roles and assign capability if its level >= duplicate_post_copy_user_level
75
+ foreach ($default_roles as $level => $name){
76
+ $role = get_role($name);
77
+ if ($role && $min_user_level <= $level)
78
+ $role->add_cap( 'copy_posts' );
79
+ }
80
+
81
+ // delete old option
82
+ delete_option('duplicate_post_copy_user_level');
83
  }
84
 
85
+ add_option('duplicate_post_copyexcerpt','1');
86
+ add_option('duplicate_post_copystatus','0');
87
+ add_option('duplicate_post_taxonomies_blacklist',array());
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
  // Update version number
90
  update_option( 'duplicate_post_version', duplicate_post_get_current_version() );
229
  foreach ($meta_keys as $meta_key) {
230
  $meta_values = get_post_custom_values($meta_key, $post->ID);
231
  foreach ($meta_values as $meta_value) {
232
+ $meta_obj = unserialize($meta_value);
233
+ if(!$meta_obj) add_post_meta($new_id, $meta_key, $meta_value);
234
+ else add_post_meta($new_id, $meta_key, $meta_obj);
235
  }
236
  }
237
  }
272
 
273
  $new_post_id = wp_insert_post($new_post);
274
 
 
275
 
276
  // If you have written a plugin which uses non-WP database tables to save
277
  // information about a post you can hook this action to dupe that data.
279
  do_action( 'dp_duplicate_page', $new_post_id, $post );
280
  else
281
  do_action( 'dp_duplicate_post', $new_post_id, $post );
282
+
283
+ delete_post_meta($new_post_id, '_dp_original');
284
+ add_post_meta($new_post_id, '_dp_original', $post->ID);
285
 
286
  // If the copy gets immediately published, we have to set a proper slug.
287
  if ($new_post_status == 'publish' || $new_post_status == 'future'){
duplicate-post-options.php CHANGED
@@ -51,7 +51,7 @@ function duplicate_post_options() {
51
  ?>
52
  <div class="wrap">
53
  <div id="icon-options-general" class="icon32"><br></div>
54
- <h2 style="width: auto; float: left;">
55
  <?php _e("Duplicate Post Options", DUPLICATE_POST_I18N_DOMAIN); ?>
56
  </h2>
57
 
51
  ?>
52
  <div class="wrap">
53
  <div id="icon-options-general" class="icon32"><br></div>
54
+ <h2>
55
  <?php _e("Duplicate Post Options", DUPLICATE_POST_I18N_DOMAIN); ?>
56
  </h2>
57
 
duplicate-post.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Duplicate Post
4
  Plugin URI: http://lopo.it/duplicate-post-plugin/
5
  Description: Clone posts and pages.
6
- Version: 2.1.1
7
  Author: Enrico Battocchi
8
  Author URI: http://lopo.it
9
  Text Domain: duplicate-post
@@ -30,7 +30,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
30
  define('DUPLICATE_POST_I18N_DOMAIN', 'duplicate-post');
31
 
32
  // Version of the plugin
33
- define('DUPLICATE_POST_CURRENT_VERSION', '2.1.1' );
34
 
35
  /**
36
  * Initialise the internationalisation domain
3
  Plugin Name: Duplicate Post
4
  Plugin URI: http://lopo.it/duplicate-post-plugin/
5
  Description: Clone posts and pages.
6
+ Version: 2.2
7
  Author: Enrico Battocchi
8
  Author URI: http://lopo.it
9
  Text Domain: duplicate-post
30
  define('DUPLICATE_POST_I18N_DOMAIN', 'duplicate-post');
31
 
32
  // Version of the plugin
33
+ define('DUPLICATE_POST_CURRENT_VERSION', '2.2' );
34
 
35
  /**
36
  * Initialise the internationalisation domain
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://lopo.it/duplicate-post-plugin/
4
  Tags: duplicate post, copy, clone
5
  Requires at least: 3.0
6
  Tested up to: 3.3.1
7
- Stable tag: 2.1.1
8
 
9
  Clone posts and pages.
10
 
@@ -18,7 +18,7 @@ This plugin allows to clone a post or page, or edit it as a new draft.
18
 
19
  3. On the post edit screen, you can click on 'Copy to a new draft' above "Cancel"/"Move to trash".
20
 
21
- 4. While viewing a post as a logged in user, you can click on 'Copy to a new draft' as a dropdown link under "Edi Post" in the admin bar.
22
 
23
  2, 3 and 4 will lead to the edit page for the new draft: change what you want, click on 'Publish' and you're done.
24
 
@@ -56,11 +56,11 @@ Use WordPress' Add New Plugin feature, searching "Duplicate Post", or download t
56
 
57
  = The plugin doesn't work, why? =
58
 
59
- First, check your version of WordPress: the plugin is not supposed to work on old versions anymore.
60
 
61
  Then try to deactivate and re-activate it, some user have reported that this fixes the problem.
62
 
63
- Pay also attention to the new "Roles allowed to copy" option: it should convert the former "user level" option to the new standard, but unknown problems may arise. Make sure that your role is enabled.
64
 
65
  If not, maybe there is some kind of conflict with other plugins: feel free to write me and we'll try to discover a solution (it will be *really* helpful if you try to deactivate all your other plugins one by one to see which one conflicts with mine... But do it only if you know what you're doing, I will not be responsible of any problem you may experience).
66
 
@@ -80,6 +80,9 @@ There is an open ticket in WordPress Trac, as other plugin developers too are in
80
 
81
  == Upgrade Notice ==
82
 
 
 
 
83
  = 2.1.1 =
84
  Fix for upgrade problem
85
 
@@ -103,6 +106,11 @@ New features and customization, WP 3.0 compatibility: you should upgrade if you
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
106
  = 2.1.1 =
107
  * Can't rely on activation hook for upgrade, this caused problems with new options
108
 
4
  Tags: duplicate post, copy, clone
5
  Requires at least: 3.0
6
  Tested up to: 3.3.1
7
+ Stable tag: 2.2
8
 
9
  Clone posts and pages.
10
 
18
 
19
  3. On the post edit screen, you can click on 'Copy to a new draft' above "Cancel"/"Move to trash".
20
 
21
+ 4. While viewing a post as a logged in user, you can click on 'Copy to a new draft' as a dropdown link under "Edit Post" in the admin bar.
22
 
23
  2, 3 and 4 will lead to the edit page for the new draft: change what you want, click on 'Publish' and you're done.
24
 
56
 
57
  = The plugin doesn't work, why? =
58
 
59
+ First, check your version of WordPress: the plugin is not supposed to work on old versions anymore. Make sure also to upgrade to the last version of the plugin!
60
 
61
  Then try to deactivate and re-activate it, some user have reported that this fixes the problem.
62
 
63
+ Pay attention also to the new "Roles allowed to copy" option: it should convert the former "user level" option to the new standard, but unknown problems may arise. Make sure that your role is enabled.
64
 
65
  If not, maybe there is some kind of conflict with other plugins: feel free to write me and we'll try to discover a solution (it will be *really* helpful if you try to deactivate all your other plugins one by one to see which one conflicts with mine... But do it only if you know what you're doing, I will not be responsible of any problem you may experience).
66
 
80
 
81
  == Upgrade Notice ==
82
 
83
+ = 2.2 =
84
+ VERY IMPORTANT UPGRADE to get rid of problems with complex custom fields, afflicting both 2.1.* releases.
85
+
86
  = 2.1.1 =
87
  Fix for upgrade problem
88
 
106
 
107
  == Changelog ==
108
 
109
+ = 2.2 =
110
+ * Fix for problems when copying serialized meta fields
111
+ * Fix for multiple _dp_original field
112
+ * Removed deprecated parameter when adding options
113
+
114
  = 2.1.1 =
115
  * Can't rely on activation hook for upgrade, this caused problems with new options
116