| ... | ... |
@@ -37,6 +37,10 @@ class Class_Rucy_Component {
|
| 37 | 37 |
$post_meta_keys->feature_img = 'rc_reserv_feature_image'; |
| 38 | 38 |
$post_meta_keys->accept_feature_img = 'rc_reserv_accept_feature_image'; |
| 39 | 39 |
$post_meta_keys->accept_update = 'rc_reserv_accept_post_update'; |
| 40 |
+ $post_meta_keys->accept_rollback = 'rc_rollback_accept'; |
|
| 41 |
+ $post_meta_keys->rollback_date = 'rc_rollback_date'; |
|
| 42 |
+ $post_meta_keys->accept_rollback_update = 'rc_rollback_accept_update_date'; |
|
| 43 |
+ $post_meta_keys->accept_rollback_feature_img = 'rc_rollback_accept_feature_image'; |
|
| 40 | 44 |
return $post_meta_keys; |
| 41 | 45 |
} |
| 42 | 46 |
|
| ... | ... |
@@ -14,12 +14,16 @@ class Class_Rucy_Cron {
|
| 14 | 14 |
if ( $post_metas->accept != "1" ) {
|
| 15 | 15 |
return; |
| 16 | 16 |
} |
| 17 |
+ // rollback |
|
| 18 |
+ $rollback_data = array(); |
|
| 19 |
+ if( $post_metas->accept_rollback == "1" ) {
|
|
| 20 |
+ $rollback_data = $this->get_rollback_post( (int)$post_id, $post_metas->accept_rollback_date, $post_metas->accept_rollback_feature_img ); |
|
| 21 |
+ } |
|
| 17 | 22 |
// set update content |
| 18 | 23 |
$updates = array( |
| 19 | 24 |
'ID' => (int)$post_id, |
| 20 | 25 |
'post_content' => apply_filters( 'the_content', $post_metas->content ), |
| 21 | 26 |
); |
| 22 |
- wp_update_post( $updates, true ); |
|
| 23 | 27 |
// set update post date |
| 24 | 28 |
if ( $post_metas->accept_update == "1" ) {
|
| 25 | 29 |
$updates['post_date'] = $post_metas->date; |
| ... | ... |
@@ -44,6 +48,11 @@ class Class_Rucy_Cron {
|
| 44 | 44 |
} |
| 45 | 45 |
// clear schedule on wp_cron |
| 46 | 46 |
wp_clear_scheduled_hook( RC_CRON_HOOK, array( $post_id ) ); |
| 47 |
+ // save post meta for rollback |
|
| 48 |
+ if ( $post_metas->accept_rollback == "1" ) {
|
|
| 49 |
+ $reserve_date = strtotime( get_gmt_from_date( $post_metas->rollback_date ) . "GMT" ); |
|
| 50 |
+ $this->set_rollback_setting( $post_id, $reserve_date, $rollback_data ); |
|
| 51 |
+ } |
|
| 47 | 52 |
} |
| 48 | 53 |
|
| 49 | 54 |
public function rc_content_allow_iframe( $content ) {
|
| ... | ... |
@@ -89,4 +98,34 @@ class Class_Rucy_Cron {
|
| 89 | 89 |
return $res; |
| 90 | 90 |
} |
| 91 | 91 |
} |
| 92 |
+ |
|
| 93 |
+ private function get_rollback_post( $post_id, $accept_rollback_date = "0", $accept_rollback_feature_image = "0" ) {
|
|
| 94 |
+ $post_data = get_post( $post_id ); |
|
| 95 |
+ $component = new Class_Rucy_Component(); |
|
| 96 |
+ $post_meta_keys = $component->get_post_meta_keys(); |
|
| 97 |
+ |
|
| 98 |
+ $res = array( |
|
| 99 |
+ $post_meta_keys->content => $post_data->post_content, |
|
| 100 |
+ $post_meta_keys->accept => "1", |
|
| 101 |
+ ); |
|
| 102 |
+ if ( $accept_rollback_date == "1" ) {
|
|
| 103 |
+ $res[$post_meta_keys->accept_update] = "1"; |
|
| 104 |
+ $res[$post_meta_keys->date] = $post_data->post_date; |
|
| 105 |
+ } |
|
| 106 |
+ if ( $accept_rollback_feature_image == "1" ) {
|
|
| 107 |
+ $res[$post_meta_keys->accept_feature_img] = "1"; |
|
| 108 |
+ $feature_image = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'full' ); |
|
| 109 |
+ $res[$post_meta_keys->feature_img] = $feature_image[0]; |
|
| 110 |
+ } |
|
| 111 |
+ |
|
| 112 |
+ return $res; |
|
| 113 |
+ } |
|
| 114 |
+ |
|
| 115 |
+ private function set_rollback_setting( $post_id, $reserve_date, array $rollback_data ) {
|
|
| 116 |
+ $component = new Class_Rucy_Component(); |
|
| 117 |
+ foreach ( $rollback_data as $key => $value ) {
|
|
| 118 |
+ $component->save_rc_post_meta_base( (int)$post_id, $key, $rollback_data ); |
|
| 119 |
+ } |
|
| 120 |
+ wp_schedule_single_event( $reserve_date, RC_CRON_HOOK, array( $post_id ) ); |
|
| 121 |
+ } |
|
| 92 | 122 |
} |
| ... | ... |
@@ -30,7 +30,6 @@ class Class_Rucy_Editer {
|
| 30 | 30 |
$this->post_metas = $component->get_post_rc_meta( $post->ID ); |
| 31 | 31 |
$this->current_post_content = $post->post_content; |
| 32 | 32 |
$dismissed = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); |
| 33 |
- |
|
| 34 | 33 |
$reserve_date = ( $this->post_metas->date == "" ) ? date_i18n( 'Y-m-d H:i:s' ) : $this->post_metas->date; |
| 35 | 34 |
$arr_reserve_date = getdate(strtotime( $reserve_date ) ); |
| 36 | 35 |
$arr_date = array( |
| ... | ... |
@@ -41,6 +40,16 @@ class Class_Rucy_Editer {
|
| 41 | 41 |
'rc_minutes' => date_i18n( 'i', $arr_reserve_date[0] ), |
| 42 | 42 |
); |
| 43 | 43 |
$reserve_content = ( $this->post_metas->content == "" ) ? $this->current_post_content : $this->post_metas->content; |
| 44 |
+ // rollback settings |
|
| 45 |
+ $rollback_date = ( $this->post_metas->rollback_date == "" ) ? date_i18n( 'Y-m-d H:i:s' ) : $this->post_metas->rollback_date; |
|
| 46 |
+ $arr_rollback_date = getdate(strtotime( $rollback_date ) ); |
|
| 47 |
+ $arr_rb_date = array( |
|
| 48 |
+ 'rc_rb_year' => date_i18n( 'Y', $arr_rollback_date[0] ), |
|
| 49 |
+ 'rc_rb_month' => date_i18n( 'm', $arr_rollback_date[0] ), |
|
| 50 |
+ 'rc_rb_day' => date_i18n( 'd', $arr_rollback_date[0] ), |
|
| 51 |
+ 'rc_rb_hour' => date_i18n( 'H', $arr_rollback_date[0] ), |
|
| 52 |
+ 'rc_rb_minutes' => date_i18n( 'i', $arr_rollback_date[0] ), |
|
| 53 |
+ ); |
|
| 44 | 54 |
?> |
| 45 | 55 |
<div id="rc-post-wrap" class="curtime"> |
| 46 | 56 |
<input type="hidden" id="schroeder" name="schroeder" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>" /> |
| ... | ... |
@@ -153,6 +162,73 @@ class Class_Rucy_Editer {
|
| 153 | 153 |
<input type="hidden" id="rc_feature_image" name="<?php echo $this->post_meta_keys->feature_img; ?>" value="<?php echo $this->post_metas->feature_img; ?>" /> |
| 154 | 154 |
</div> |
| 155 | 155 |
</fieldset> |
| 156 |
+<fieldset id="rc-rollback-container" class="curtime"> |
|
| 157 |
+ <h3><?php _e( 'Setting Rollback post content.', RC_TXT_DOMAIN ); ?></h3> |
|
| 158 |
+ <label for="rc-accept-rollback-content"> |
|
| 159 |
+ <input type="checkbox" name="<?php echo $this->post_meta_keys->accept_rollback ?>" value="1" id="rc-accept-rollback-content" class="rc-accept-rollback-content" <?php echo ( $this->post_metas->accept_rollback == "1" ) ? "checked" : ""; ?> > <?php _e( 'Accept rollback content.', RC_TXT_DOMAIN ); ?> |
|
| 160 |
+ </label> |
|
| 161 |
+ <div class="rc-rollback-datetime" id="timestamp"> |
|
| 162 |
+ <?php _e( 'Rollback DateTime', RC_TXT_DOMAIN ); ?> : <strong><?php echo date_i18n("Y/m/d @ H:i", strtotime( $rollback_date ) ); ?></strong>
|
|
| 163 |
+ </div> |
|
| 164 |
+ <a href="#edit-rollback-datetime" class="edit-timestamp rc-rollback-datetime-edit"><?php _e('Edit'); ?></a>
|
|
| 165 |
+ <div class="rc-rollback-datetime-wrap"> |
|
| 166 |
+ <select name="rc_rb_year" id=""> |
|
| 167 |
+ <?php for( $y = $current_year; $y <= ( $current_year + 3); $y++ ): |
|
| 168 |
+ $selected_y = ( $y == date_i18n( 'Y', $arr_rollback_date[0] ) ) ? "selected" : ""; ?> |
|
| 169 |
+ <option value="<?php echo $y; ?>" <?php echo $selected_y; ?>><?php echo $y; ?></option> |
|
| 170 |
+ <?php endfor; ?> |
|
| 171 |
+ </select> / |
|
| 172 |
+ <select name="rc_rb_month" id=""> |
|
| 173 |
+ <?php for( $i = 1; $i <= 12; $i++ ): |
|
| 174 |
+ $m = sprintf( "%02d", $i ); |
|
| 175 |
+ $selected_m = ( $m == date_i18n( 'm', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 176 |
+ ?> |
|
| 177 |
+ <option value="<?php echo $m; ?>" <?php echo $selected_m; ?>><?php echo $m; ?></option> |
|
| 178 |
+ <?php endfor; ?> |
|
| 179 |
+ </select> / |
|
| 180 |
+ <select name="rc_rb_day" id=""> |
|
| 181 |
+ <?php for( $d = 1; $d<=31; $d++ ): |
|
| 182 |
+ $d = sprintf( "%02d", $d ); |
|
| 183 |
+ $selected_d = ( $d == date_i18n( 'd', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 184 |
+ ?> |
|
| 185 |
+ <option value="<?php echo $d; ?>" <?php echo $selected_d; ?>><?php echo $d; ?></option> |
|
| 186 |
+ <?php endfor; ?> |
|
| 187 |
+ </select>@ |
|
| 188 |
+ <select name="rc_rb_hour" id=""> |
|
| 189 |
+ <?php for( $h = 0; $h <= 23; $h++ ): |
|
| 190 |
+ $h = sprintf("%02d",$h);
|
|
| 191 |
+ $selected_h = ( $h == date_i18n( 'H', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 192 |
+ ?> |
|
| 193 |
+ <option value="<?php echo $h; ?>" <?php echo $selected_h; ?>><?php echo $h; ?></option> |
|
| 194 |
+ <?php endfor; ?> |
|
| 195 |
+ </select>: |
|
| 196 |
+ <select name="rc_rb_minutes" id=""> |
|
| 197 |
+ <?php for( $min = 0; $min <= 59; $min++ ): |
|
| 198 |
+ $min = sprintf( "%02d", $min ); |
|
| 199 |
+ $selected_min = ( $min == date_i18n( 'i', $arr_rollback_date[0] ) ) ? "selected" : ""; |
|
| 200 |
+ ?> |
|
| 201 |
+ <option value="<?php echo $min; ?>" <?php echo $selected_min; ?>><?php echo $min; ?></option> |
|
| 202 |
+ <?php endfor; ?> |
|
| 203 |
+ </select> |
|
| 204 |
+ <a href="#edit-rollback-datetime" class="rc-rollback-datetime-update button"><?php _e('OK',RC_TXT_DOMAIN) ?></a>
|
|
| 205 |
+ <a href="#edit-rollback-datetime" class="rc-rollback-datetime-cancel"><?php _e('Cancel',RC_TXT_DOMAIN) ?></a>
|
|
| 206 |
+ </div> |
|
| 207 |
+ <?php foreach ( $arr_rb_date as $k => $v ): ?> |
|
| 208 |
+ <input type="hidden" name="<?php echo $k; ?>_cr" id="<?php echo $k; ?>_cr" value="<?php echo $v; ?>"/> |
|
| 209 |
+ <?php endforeach; ?> |
|
| 210 |
+ <div id="rc-accept-rollback-updatetime-wrap"> |
|
| 211 |
+ <label for="rc-accept-rollback-updatetime"> |
|
| 212 |
+ <input id="rc-accept-rollback-updatetime" type="checkbox" value="1" name="<?php echo $this->post_meta_keys->accept_rollback_update; ?>" <?php echo ( $this->post_metas->accept_rollback_update == "1" ) ? "checked" : ""; ?>> <?php _e( 'Accept Rollback post date.', RC_TXT_DOMAIN ); ?> |
|
| 213 |
+ </label> |
|
| 214 |
+ </div> |
|
| 215 |
+ <?php if( current_theme_supports( 'post-thumbnails' ) ): ?> |
|
| 216 |
+ <div id="rc-accept-rollback-feature-image-wrap"> |
|
| 217 |
+ <label for="rc-accept-rollback-feature-image"> |
|
| 218 |
+ <input id="rc-accept-rollback-feature-image" type="checkbox" value="1" name="<?php echo $this->post_meta_keys->accept_rollback_feature_img; ?>" <?php echo ( $this->post_metas->accept_rollback_feature_img == "1" ) ? "checked" : ""; ?>> <?php _e( 'Accept Rollback feature image.', RC_TXT_DOMAIN ); ?> |
|
| 219 |
+ </label> |
|
| 220 |
+ </div> |
|
| 221 |
+ <?php endif; ?> |
|
| 222 |
+</fieldset> |
|
| 156 | 223 |
<?php |
| 157 | 224 |
endif; |
| 158 | 225 |
} |
| ... | ... |
@@ -183,6 +259,22 @@ class Class_Rucy_Editer {
|
| 183 | 183 |
if( !isset( $_POST[$post_meta_keys->accept] ) || $_POST[$post_meta_keys->accept] != "1" ){
|
| 184 | 184 |
$_POST[$post_meta_keys->accept] = "0"; |
| 185 | 185 |
} |
| 186 |
+ // rollback setting |
|
| 187 |
+ $rdate = mktime( $_POST['rc_rb_hour'], $_POST['rc_rb_minutes'], 00, $_POST['rc_rb_month'], $_POST['rc_rb_day'], $_POST['rc_rb_year'] ); |
|
| 188 |
+ if ( $rdate ) {
|
|
| 189 |
+ $_POST[$post_meta_keys->rollback_date] = date_i18n( 'Y-m-d H:i:s', $rdate ); |
|
| 190 |
+ } else {
|
|
| 191 |
+ $_POST[$post_meta_keys->rollback_date] = ""; |
|
| 192 |
+ } |
|
| 193 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback] ) || $_POST[$post_meta_keys->accept_rollback] != "1" ){
|
|
| 194 |
+ $_POST[$post_meta_keys->accept_rollback] = "0"; |
|
| 195 |
+ } |
|
| 196 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback_update] ) || $_POST[$post_meta_keys->accept_rollback_update] != "1" ){
|
|
| 197 |
+ $_POST[$post_meta_keys->accept_rollback_update] = "0"; |
|
| 198 |
+ } |
|
| 199 |
+ if( !isset( $_POST[$post_meta_keys->accept_rollback_feature_img] ) || $_POST[$post_meta_keys->accept_rollback_feature_img] != "1" ){
|
|
| 200 |
+ $_POST[$post_meta_keys->accept_rollback_feature_img] = "0"; |
|
| 201 |
+ } |
|
| 186 | 202 |
// save post meta |
| 187 | 203 |
foreach ( $post_meta_keys as $key => $value ) {
|
| 188 | 204 |
$component->save_rc_post_meta_base( $post_id, $value, $_POST ); |
| ... | ... |
@@ -218,6 +310,12 @@ class Class_Rucy_Editer {
|
| 218 | 218 |
$add_message_date = date_i18n( 'Y/m/d @ H:i', strtotime( $post_metas->date ) ); |
| 219 | 219 |
$base_str = __( 'registered reservation update content _RC_DATETIME_', RC_TXT_DOMAIN ); |
| 220 | 220 |
$add_message = '<br>' . strtr( $base_str, array( '_RC_DATETIME_' => $add_message_date ) ); |
| 221 |
+ |
|
| 222 |
+ if( $post_metas->accept_rollback == "1" ) {
|
|
| 223 |
+ $rollback_date = date_i18n( 'Y/m/d @ H:i', strtotime( $post_metas->rollback_date ) ); |
|
| 224 |
+ $rollback_base_str = __( 'registered rollback content _RC_ROLLBACK_DATETIME_ ', RC_TXT_DOMAIN ); |
|
| 225 |
+ $add_message .= '<br>' . strtr( $rollback_base_str , array( '_RC_ROLLBACK_DATETIME_' => $rollback_date ) ); |
|
| 226 |
+ } |
|
| 221 | 227 |
// published |
| 222 | 228 |
$messages[$post_type][1] .= $add_message; |
| 223 | 229 |
$messages[$post_type][4] .= $add_message; |
| ... | ... |
@@ -45,7 +45,7 @@ jQuery(document).ready(function(){
|
| 45 | 45 |
var day = jQuery('#rc_day_cr').val();
|
| 46 | 46 |
var hour = jQuery('#rc_hour_cr').val();
|
| 47 | 47 |
var min = jQuery('#rc_minutes_cr').val();
|
| 48 |
- jQuery('.rc-datetime > b').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 48 |
+ jQuery('.rc-datetime > strong').html(year + "/" + month + "/" + day + " @ " + hour + ":" + min);
|
|
| 49 | 49 |
jQuery('select[name="rc_year"]').val(year);
|
| 50 | 50 |
jQuery('select[name="rc_month"]').val(month);
|
| 51 | 51 |
jQuery('select[name="rc_day"]').val(day);
|
| ... | ... |
@@ -109,6 +109,60 @@ jQuery(document).ready(function(){
|
| 109 | 109 |
} |
| 110 | 110 |
|
| 111 | 111 |
}); |
| 112 |
- |
|
| 112 |
+ // rollback settings |
|
| 113 |
+ jQuery('.rc-rollback-datetime-edit').on('click',function(){
|
|
| 114 |
+ jQuery(this).hide(); |
|
| 115 |
+ jQuery('.rc-rollback-datetime-wrap').slideDown('normal');
|
|
| 116 |
+ return false; |
|
| 117 |
+ }); |
|
| 118 |
+ // edit rollback date |
|
| 119 |
+ jQuery('.rc-rollback-datetime-update').on('click', function(){
|
|
| 120 |
+ var rb_year = jQuery('select[name="rc_rb_year"]').val();
|
|
| 121 |
+ var rb_month = jQuery('select[name="rc_rb_month"]').val();
|
|
| 122 |
+ var rb_day = jQuery('select[name="rc_rb_day"]').val();
|
|
| 123 |
+ var rb_hour = jQuery('select[name="rc_rb_hour"]').val();
|
|
| 124 |
+ var rb_min = jQuery('select[name="rc_rb_minutes"]').val();
|
|
| 125 |
+ var rbDate = new Date(rb_year, rb_month - 1, rb_day, rb_hour, rb_min); |
|
| 126 |
+ var rb_now = new Date(); |
|
| 127 |
+ var rb_flg = false; |
|
| 128 |
+ if(rbDate.getFullYear() != rb_year || (1 + rbDate.getMonth()) != rb_month || rbDate.getDate() != rb_day || rbDate.getMinutes() != rb_min){
|
|
| 129 |
+ rb_flg = false; |
|
| 130 |
+ } else if (rbDate.getTime() < rb_now.getTime()) {
|
|
| 131 |
+ rb_flg = false; |
|
| 132 |
+ } else {
|
|
| 133 |
+ rb_flg = true; |
|
| 134 |
+ } |
|
| 135 |
+ if(rb_flg === true){
|
|
| 136 |
+ jQuery('.rc-rollback-datetime-wrap').removeClass('form-invalid');
|
|
| 137 |
+ } else {
|
|
| 138 |
+ jQuery('.rc-rollback-datetime-wrap').addClass('form-invalid');
|
|
| 139 |
+ return false; |
|
| 140 |
+ } |
|
| 141 |
+ jQuery('.rc-rollback-datetime > strong').html(rb_year + "/" + rb_month + "/" + rb_day + " @ " + rb_hour + ":" + rb_min);
|
|
| 142 |
+ jQuery('#rc_rb_year_cr').val(rb_year);
|
|
| 143 |
+ jQuery('#rc_rb_month_cr').val(rb_month);
|
|
| 144 |
+ jQuery('#rc_rb_day_cr').val(rb_day);
|
|
| 145 |
+ jQuery('#rc_rb_hour_cr').val(rb_hour);
|
|
| 146 |
+ jQuery('#rc_rb_minutes_cr').val(rb_min);
|
|
| 147 |
+ jQuery('.rc-rollback-datetime-wrap').slideUp('normal');
|
|
| 148 |
+ jQuery('.rc-rollback-datetime-edit').show();
|
|
| 149 |
+ }); |
|
| 150 |
+ // cancel rollback date |
|
| 151 |
+ jQuery('.rc-rollback-datetime-cancel').on('click',function(){
|
|
| 152 |
+ var rb_year = jQuery('#rc_rb_year_cr').val();
|
|
| 153 |
+ var rb_month = jQuery('#rc_rb_month_cr').val();
|
|
| 154 |
+ var rb_day = jQuery('#rc_rb_day_cr').val();
|
|
| 155 |
+ var rb_hour = jQuery('#rc_rb_hour_cr').val();
|
|
| 156 |
+ var rb_min = jQuery('#rc_rb_minutes_cr').val();
|
|
| 157 |
+ jQuery('.rc-rollback-datetime > strong').html(rb_year + "/" + rb_month + "/" + rb_day + " @ " + rb_hour + ":" + rb_min);
|
|
| 158 |
+ jQuery('select[name="rc_rb_year"]').val(rb_year);
|
|
| 159 |
+ jQuery('select[name="rc_rb_month"]').val(rb_month);
|
|
| 160 |
+ jQuery('select[name="rc_rb_day"]').val(rb_day);
|
|
| 161 |
+ jQuery('select[name="rc_rb_hour"]').val(rb_hour);
|
|
| 162 |
+ jQuery('select[name="rc_rb_minutes"]').val(rb_min);
|
|
| 163 |
+ jQuery('.rc-rollback-datetime-wrap').slideUp('normal');
|
|
| 164 |
+ jQuery('.rc-rollback-datetime-edit').show();
|
|
| 165 |
+ return false; |
|
| 166 |
+ }); |
|
| 113 | 167 |
}); |
| 114 | 168 |
|