false, 'label' => __( 'Dashboard Note', 'edit-flow' ), )); $this->edit_cap = apply_filters( 'ef_dashboard_notepad_edit_cap', $this->edit_cap ); add_action( 'admin_init', array( $this, 'handle_notepad_update' ) ); } /** * Handle a dashboard note being created or updated * * @since 0.8 */ public function handle_notepad_update() { global $pagenow; if ( 'index.php' !== $pagenow || empty( $_POST['action'] ) || 'dashboard-notepad' !== $_POST['action'] ) { return; } check_admin_referer( 'dashboard-notepad' ); if ( ! current_user_can( $this->edit_cap ) ) { wp_die( esc_html( EditFlow()->dashboard->messages['invalid-permissions'] ) ); } $note_data = array( // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- wp_filter_nohtml_kses is a valid sanitization function. 'post_content' => isset( $_POST['note'] ) ? wp_filter_nohtml_kses( wp_unslash( $_POST['note'] ) ) : '', 'post_type' => self::notepad_post_type, 'post_status' => 'draft', 'post_author' => get_current_user_id(), ); $existing_notepad = isset( $_POST['notepad-id'] ) ? get_post( absint( $_POST['notepad-id'] ) ) : null; if ( isset( $existing_notepad->post_type ) && self::notepad_post_type === $existing_notepad->post_type ) { $note_data['ID'] = $existing_notepad->ID; } wp_insert_post( $note_data ); } /** * Notepad Widget * Editors can leave notes in the dashboard for authors and contributors * * @since 0.8 */ public function notepad_widget() { $args = array( 'posts_per_page' => 1, 'post_status' => 'draft', 'post_type' => self::notepad_post_type, ); $posts = get_posts( $args ); $current_note = ( ! empty( $posts[0]->post_content ) ) ? $posts[0]->post_content : ''; $current_id = ( ! empty( $posts[0]->ID ) ) ? $posts[0]->ID : 0; $current_post = ( ! empty( $posts[0] ) ) ? $posts[0] : false; if ( $current_post ) { // translators: %1$s is the author name, %2$s is the date the note was last updated. $last_updated = '' . sprintf( __( '%1$s last updated on %2$s', 'edit-flow' ), get_user_by( 'id', $current_post->post_author )->display_name, get_the_modified_time( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $current_post ) ) . ''; } else { $last_updated = ''; } if ( current_user_can( $this->edit_cap ) ) { echo '
'; echo ''; echo ''; echo ''; echo '

'; echo wp_kses_post( $last_updated ); echo ''; submit_button( __( 'Update Note', 'edit-flow' ), 'primary', 'update-note', false ); echo ''; echo '

'; wp_nonce_field( 'dashboard-notepad' ); echo '
'; } else { echo '
'; echo ''; echo wp_kses_post( $last_updated ); echo '
'; } } }