Duplicate Post - Version 3.0.3

Version Description

Notices + small fixes and improvements

Download this release

Release Info

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

Code changes from version 3.0.2 to 3.0.3

duplicate-post-admin.php CHANGED
@@ -9,7 +9,7 @@ require_once (dirname(__FILE__).'/duplicate-post-options.php');
9
  * Wrapper for the option 'duplicate_post_version'
10
  */
11
  function duplicate_post_get_installed_version() {
12
- return get_option( 'duplicate_post_version' );
13
  }
14
 
15
  /**
@@ -116,17 +116,19 @@ function duplicate_post_plugin_upgrade() {
116
  add_option('duplicate_post_show_submitbox','1');
117
 
118
  // show notice about new features
119
- add_option('duplicate_post_show_notice','1');
120
 
121
  } else if($installed_version_numbers[0] == 3){ // upgrading from 3.*
122
  // hide notice, we assume people already know of new features
123
- update_option('duplicate_post_show_notice', 0);
 
124
  }
125
 
126
 
127
  }
128
  // Update version number
129
- update_option( 'duplicate_post_version', duplicate_post_get_current_version() );
 
130
 
131
  }
132
 
@@ -136,7 +138,7 @@ if (get_option('duplicate_post_show_row') == 1){
136
  }
137
 
138
 
139
- if (get_option('duplicate_post_show_notice') == 1){
140
  /**
141
  * Shows the update notice
142
  */
@@ -170,7 +172,7 @@ if (get_option('duplicate_post_show_notice') == 1){
170
  add_action( 'wp_ajax_duplicate_post_dismiss_notice', 'duplicate_post_dismiss_notice' );
171
 
172
  function duplicate_post_dismiss_notice() {
173
- $result = update_option('duplicate_post_show_notice', 0);
174
  return $result;
175
  wp_die();
176
  }
@@ -228,6 +230,13 @@ function duplicate_post_save_as_new_post_draft(){
228
  duplicate_post_save_as_new_post('draft');
229
  }
230
 
 
 
 
 
 
 
 
231
  /*
232
  * This function calls the creation of a new copy of the selected post (by default preserving the original publish status)
233
  * then redirects to the post list
@@ -246,16 +255,16 @@ function duplicate_post_save_as_new_post($status = ''){
246
  $new_id = duplicate_post_create_duplicate($post, $status);
247
 
248
  if ($status == ''){
 
249
  // Redirect to the post list screen
250
- wp_redirect( admin_url( 'edit.php?post_type='.$post->post_type) );
251
  } else {
252
  // Redirect to the edit screen for the new draft post
253
- wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_id ) );
254
  }
255
  exit;
256
 
257
  } else {
258
- $post_type_obj = get_post_type_object( $post->post_type );
259
  wp_die(__('Copy creation failed, could not find original:', 'duplicate-post') . ' ' . htmlspecialchars($id));
260
  }
261
  }
@@ -311,7 +320,6 @@ function duplicate_post_copy_post_meta_info($new_id, $post) {
311
 
312
  /**
313
  * Copy the attachments
314
- * It simply copies the table entries, actual file won't be duplicated
315
  */
316
  function duplicate_post_copy_attachments($new_id, $post){
317
  // get thumbnail ID
@@ -351,7 +359,7 @@ function duplicate_post_copy_attachments($new_id, $post){
351
  wp_update_post( $cloned_child );
352
 
353
  $alt_title = get_post_meta($child->ID, '_wp_attachment_image_alt', true);
354
- if($alt_title) update_post_meta($new_attachment_id, $meta_key, $alt_title);
355
 
356
  // if we have cloned the post thumbnail, set the copy as the thumbnail for the new post
357
  if($old_thumbnail_id == $child->ID){
@@ -440,11 +448,9 @@ add_action('dp_duplicate_page', 'duplicate_post_copy_post_taxonomies', 50, 2);
440
  */
441
  function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') {
442
 
443
- $duplicate_post_types_enabled = get_option('duplicate_post_types_enabled');
444
-
445
  if (!duplicate_post_is_post_type_enabled($post->post_type) && $post->post_type != 'attachment')
446
  wp_die(__('Copy features for this post type are not enabled in options page', 'duplicate-post'));
447
-
448
  if ($post->post_type != 'attachment'){
449
  $prefix = sanitize_text_field(get_option('duplicate_post_title_prefix'));
450
  $suffix = sanitize_text_field(get_option('duplicate_post_title_suffix'));
@@ -461,7 +467,7 @@ function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') {
461
  if ($title == ''){
462
  // empty title
463
  $title = __('Untitled');
464
- };
465
 
466
 
467
  if (get_option('duplicate_post_copystatus') == 0) $status = 'draft';
@@ -480,6 +486,7 @@ function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') {
480
  'ping_status' => $post->ping_status,
481
  'post_author' => $new_post_author->ID,
482
  'post_content' => (get_option('duplicate_post_copycontent') == '1') ? addslashes($post->post_content) : "" ,
 
483
  'post_excerpt' => (get_option('duplicate_post_copyexcerpt') == '1') ? addslashes($post->post_excerpt) : "",
484
  'post_mime_type' => $post->post_mime_type,
485
  'post_parent' => $new_post_parent = empty($parent_id)? $post->post_parent : $parent_id,
@@ -535,4 +542,18 @@ function duplicate_post_add_plugin_links($links, $file) {
535
  }
536
  return $links;
537
  }
538
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  * Wrapper for the option 'duplicate_post_version'
10
  */
11
  function duplicate_post_get_installed_version() {
12
+ return get_site_option( 'duplicate_post_version' );
13
  }
14
 
15
  /**
116
  add_option('duplicate_post_show_submitbox','1');
117
 
118
  // show notice about new features
119
+ add_site_option('duplicate_post_show_notice','1');
120
 
121
  } else if($installed_version_numbers[0] == 3){ // upgrading from 3.*
122
  // hide notice, we assume people already know of new features
123
+ delete_option('duplicate_post_show_notice', 0);
124
+ update_site_option('duplicate_post_show_notice', 0);
125
  }
126
 
127
 
128
  }
129
  // Update version number
130
+ delete_option('duplicate_post_version');
131
+ update_site_option( 'duplicate_post_version', duplicate_post_get_current_version() );
132
 
133
  }
134
 
138
  }
139
 
140
 
141
+ if (get_site_option('duplicate_post_show_notice') == 1){
142
  /**
143
  * Shows the update notice
144
  */
172
  add_action( 'wp_ajax_duplicate_post_dismiss_notice', 'duplicate_post_dismiss_notice' );
173
 
174
  function duplicate_post_dismiss_notice() {
175
+ $result = update_site_option('duplicate_post_show_notice', 0);
176
  return $result;
177
  wp_die();
178
  }
230
  duplicate_post_save_as_new_post('draft');
231
  }
232
 
233
+ add_filter('removable_query_args', 'duplicate_post_add_removable_query_arg', 10, 1);
234
+
235
+ function duplicate_post_add_removable_query_arg( $removable_query_args ){
236
+ $removable_query_args[] = 'cloned';
237
+ return $removable_query_args;
238
+ }
239
+
240
  /*
241
  * This function calls the creation of a new copy of the selected post (by default preserving the original publish status)
242
  * then redirects to the post list
255
  $new_id = duplicate_post_create_duplicate($post, $status);
256
 
257
  if ($status == ''){
258
+ $sendback = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'cloned', 'ids'), wp_get_referer() );
259
  // Redirect to the post list screen
260
+ wp_redirect( add_query_arg( array( 'cloned' => 1, 'ids' => $post->ID), $sendback ) );
261
  } else {
262
  // Redirect to the edit screen for the new draft post
263
+ wp_redirect( add_query_arg( array( 'cloned' => 1, 'ids' => $post->ID), admin_url( 'post.php?action=edit&post=' . $new_id ) ) );
264
  }
265
  exit;
266
 
267
  } else {
 
268
  wp_die(__('Copy creation failed, could not find original:', 'duplicate-post') . ' ' . htmlspecialchars($id));
269
  }
270
  }
320
 
321
  /**
322
  * Copy the attachments
 
323
  */
324
  function duplicate_post_copy_attachments($new_id, $post){
325
  // get thumbnail ID
359
  wp_update_post( $cloned_child );
360
 
361
  $alt_title = get_post_meta($child->ID, '_wp_attachment_image_alt', true);
362
+ if($alt_title) update_post_meta($new_attachment_id, '_wp_attachment_image_alt', $alt_title);
363
 
364
  // if we have cloned the post thumbnail, set the copy as the thumbnail for the new post
365
  if($old_thumbnail_id == $child->ID){
448
  */
449
  function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') {
450
 
 
 
451
  if (!duplicate_post_is_post_type_enabled($post->post_type) && $post->post_type != 'attachment')
452
  wp_die(__('Copy features for this post type are not enabled in options page', 'duplicate-post'));
453
+
454
  if ($post->post_type != 'attachment'){
455
  $prefix = sanitize_text_field(get_option('duplicate_post_title_prefix'));
456
  $suffix = sanitize_text_field(get_option('duplicate_post_title_suffix'));
467
  if ($title == ''){
468
  // empty title
469
  $title = __('Untitled');
470
+ }
471
 
472
 
473
  if (get_option('duplicate_post_copystatus') == 0) $status = 'draft';
486
  'ping_status' => $post->ping_status,
487
  'post_author' => $new_post_author->ID,
488
  'post_content' => (get_option('duplicate_post_copycontent') == '1') ? addslashes($post->post_content) : "" ,
489
+ 'post_content_filtered' => (get_option('duplicate_post_copycontent') == '1') ? addslashes($post->post_content_filtered) : "" ,
490
  'post_excerpt' => (get_option('duplicate_post_copyexcerpt') == '1') ? addslashes($post->post_excerpt) : "",
491
  'post_mime_type' => $post->post_mime_type,
492
  'post_parent' => $new_post_parent = empty($parent_id)? $post->post_parent : $parent_id,
542
  }
543
  return $links;
544
  }
545
+
546
+ add_action( 'admin_notices', 'duplicate_post_action_admin_notice' );
547
+
548
+ function duplicate_post_action_admin_notice() {
549
+ if ( ! empty( $_REQUEST['cloned'] ) ) {
550
+ $copied_posts = intval( $_REQUEST['cloned'] );
551
+ printf( '<div id="message" class="updated fade"><p>' .
552
+ _n( '%s item copied.',
553
+ '%s items copied.',
554
+ $copied_posts,
555
+ 'duplicate-post'
556
+ ) . '</p></div>', $copied_posts );
557
+ remove_query_arg( 'cloned' );
558
+ }
559
+ }
duplicate-post-common.php CHANGED
@@ -76,7 +76,6 @@ function duplicate_post_clone_post_link( $link = null, $before = '', $after = ''
76
  if ( null === $link )
77
  $link = __('Copy to a new draft', 'duplicate-post');
78
 
79
- $post_type_obj = get_post_type_object( $post->post_type );
80
  $link = '<a class="post-clone-link" href="' . $url . '" title="'
81
  . esc_attr(__("Copy to a new draft", 'duplicate-post'))
82
  .'">' . $link . '</a>';
@@ -91,7 +90,7 @@ function duplicate_post_clone_post_link( $link = null, $before = '', $after = ''
91
  */
92
  function duplicate_post_get_original($id = 0 , $output = OBJECT){
93
  if ( !$post = get_post( $id ) )
94
- return;
95
  $original_ID = get_post_meta( $post->ID, '_dp_original');
96
  if (empty($original_ID)) return null;
97
  $original_post = get_post($original_ID[0], $output);
@@ -103,12 +102,12 @@ function duplicate_post_admin_bar_render() {
103
  global $wp_admin_bar;
104
  $current_object = get_queried_object();
105
  if ( empty($current_object) )
106
- return;
107
  if ( ! empty( $current_object->post_type )
108
- && ( $post_type_object = get_post_type_object( $current_object->post_type ) )
109
- && duplicate_post_is_current_user_allowed_to_copy()
110
- && ( $post_type_object->show_ui || 'attachment' == $current_object->post_type )
111
- && (duplicate_post_is_post_type_enabled($current_object->post_type) ) )
112
  {
113
  $wp_admin_bar->add_menu( array(
114
  'id' => 'new_draft',
@@ -119,11 +118,16 @@ function duplicate_post_admin_bar_render() {
119
  }
120
 
121
  function duplicate_post_add_css() {
122
- $current_object = get_queried_object ();
123
- if (!empty ( $current_object )){
124
- if (is_admin_bar_showing () && duplicate_post_is_current_user_allowed_to_copy () && (duplicate_post_is_post_type_enabled ( $current_object->post_type ))) {
125
- wp_enqueue_style ( 'duplicate-post', plugins_url('/duplicate-post.css', __FILE__));
126
- }
 
 
 
 
 
127
  }
128
  }
129
 
@@ -137,6 +141,4 @@ if (get_option ( 'duplicate_post_show_adminbar' ) == 1) {
137
  */
138
  function duplicate_post_tax_obj_cmp($a, $b) {
139
  return ($a->public < $b->public);
140
- }
141
-
142
- ?>
76
  if ( null === $link )
77
  $link = __('Copy to a new draft', 'duplicate-post');
78
 
 
79
  $link = '<a class="post-clone-link" href="' . $url . '" title="'
80
  . esc_attr(__("Copy to a new draft", 'duplicate-post'))
81
  .'">' . $link . '</a>';
90
  */
91
  function duplicate_post_get_original($id = 0 , $output = OBJECT){
92
  if ( !$post = get_post( $id ) )
93
+ return;
94
  $original_ID = get_post_meta( $post->ID, '_dp_original');
95
  if (empty($original_ID)) return null;
96
  $original_post = get_post($original_ID[0], $output);
102
  global $wp_admin_bar;
103
  $current_object = get_queried_object();
104
  if ( empty($current_object) )
105
+ return;
106
  if ( ! empty( $current_object->post_type )
107
+ && ( $post_type_object = get_post_type_object( $current_object->post_type ) )
108
+ && duplicate_post_is_current_user_allowed_to_copy()
109
+ && ( $post_type_object->show_ui || 'attachment' == $current_object->post_type )
110
+ && (duplicate_post_is_post_type_enabled($current_object->post_type) ) )
111
  {
112
  $wp_admin_bar->add_menu( array(
113
  'id' => 'new_draft',
118
  }
119
 
120
  function duplicate_post_add_css() {
121
+ $current_object = get_queried_object();
122
+ if ( empty($current_object) )
123
+ return;
124
+ if ( ! empty( $current_object->post_type )
125
+ && ( $post_type_object = get_post_type_object( $current_object->post_type ) )
126
+ && duplicate_post_is_current_user_allowed_to_copy()
127
+ && ( $post_type_object->show_ui || 'attachment' == $current_object->post_type )
128
+ && (duplicate_post_is_post_type_enabled($current_object->post_type) ) )
129
+ {
130
+ wp_enqueue_style ( 'duplicate-post', plugins_url('/duplicate-post.css', __FILE__));
131
  }
132
  }
133
 
141
  */
142
  function duplicate_post_tax_obj_cmp($a, $b) {
143
  return ($a->public < $b->public);
144
+ }
 
 
duplicate-post-options.php CHANGED
@@ -90,7 +90,7 @@ function duplicate_post_options() {
90
  jQuery('section').hide();
91
  jQuery('section').eq(jQuery(this).index()).show();
92
  return false;
93
- })
94
 
95
  function toggle_private_taxonomies(){
96
  jQuery('.taxonomy_private').toggle();
90
  jQuery('section').hide();
91
  jQuery('section').eq(jQuery(this).index()).show();
92
  return false;
93
+ });
94
 
95
  function toggle_private_taxonomies(){
96
  jQuery('.taxonomy_private').toggle();
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: 3.0.2
7
  Author: Enrico Battocchi
8
  Author URI: http://lopo.it
9
  Text Domain: duplicate-post
@@ -31,7 +31,7 @@ if ( ! defined( 'ABSPATH' ) ) {
31
  }
32
 
33
  // Version of the plugin
34
- define('DUPLICATE_POST_CURRENT_VERSION', '3.0.2' );
35
 
36
 
37
  /**
@@ -54,6 +54,4 @@ require_once (dirname(__FILE__).'/duplicate-post-common.php');
54
 
55
  if (is_admin()){
56
  require_once (dirname(__FILE__).'/duplicate-post-admin.php');
57
- }
58
-
59
- ?>
3
  Plugin Name: Duplicate Post
4
  Plugin URI: http://lopo.it/duplicate-post-plugin/
5
  Description: Clone posts and pages.
6
+ Version: 3.0.3
7
  Author: Enrico Battocchi
8
  Author URI: http://lopo.it
9
  Text Domain: duplicate-post
31
  }
32
 
33
  // Version of the plugin
34
+ define('DUPLICATE_POST_CURRENT_VERSION', '3.0.3' );
35
 
36
 
37
  /**
54
 
55
  if (is_admin()){
56
  require_once (dirname(__FILE__).'/duplicate-post-admin.php');
57
+ }
 
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: lopo
3
  Donate link: http://lopo.it/duplicate-post-plugin/
4
  Tags: duplicate post, copy, clone
5
  Requires at least: 3.4
6
- Tested up to: 4.6
7
- Stable tag: 3.0.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -90,6 +90,9 @@ There is an open ticket in WordPress Trac, as other plugin developers too are in
90
 
91
  == Upgrade Notice ==
92
 
 
 
 
93
  = 3.0.2 =
94
  Small bugfixes: check the changelog for more info
95
 
@@ -137,6 +140,12 @@ New features and customization, WP 3.0 compatibility: you should upgrade if you
137
 
138
  == Changelog ==
139
 
 
 
 
 
 
 
140
  = 3.0.2 =
141
  * Can now be enabled for every custom post type with visible UI (not just public ones)
142
  * Admin bar CSS only enqueued when needed
3
  Donate link: http://lopo.it/duplicate-post-plugin/
4
  Tags: duplicate post, copy, clone
5
  Requires at least: 3.4
6
+ Tested up to: 4.7
7
+ Stable tag: 3.0.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
90
 
91
  == Upgrade Notice ==
92
 
93
+ = 3.0.3 =
94
+ Notices + small fixes and improvements
95
+
96
  = 3.0.2 =
97
  Small bugfixes: check the changelog for more info
98
 
140
 
141
  == Changelog ==
142
 
143
+ = 3.0.3 =
144
+ * Notices in admin after copying
145
+ * Fixes warning in custom post type archives
146
+ * Uses site options for version and notice
147
+ * Minor fixes
148
+
149
  = 3.0.2 =
150
  * Can now be enabled for every custom post type with visible UI (not just public ones)
151
  * Admin bar CSS only enqueued when needed