';
if ( $post->post_status == 'trash' ) {
echo '
' . __( 'Restore', 'jetpack' ) . ' | ';
echo "
" . __( 'Delete Permanently', 'jetpack' ) . "";
?>
post_status == 'publish' ) {
echo '
Spam';
echo ' | ';
echo '
';
echo '' . __( 'Trash', 'jetpack' ) . '';
?>
post_status == 'spam' ) {
echo '
Not Spam';
echo ' | ';
echo "
" . __( 'Delete Permanently', 'jetpack' ) . "";
?>
'',
'subject' => '',
'fields' => array(),
);
foreach ( $grunion->fields as $field ) {
$out['fields'][$field->get_attribute( 'id' )] = $field->attributes;
}
$to = $grunion->get_attribute( 'to' );
$subject = $grunion->get_attribute( 'subject' );
foreach ( array( 'to', 'subject' ) as $attribute ) {
$value = $grunion->get_attribute( $attribute );
if ( isset( $grunion->defaults[$attribute] ) && $value == $grunion->defaults[$attribute] ) {
$value = '';
}
$out[$attribute] = $value;
}
die( json_encode( $out ) );
}
add_action( 'wp_ajax_grunion_shortcode', 'grunion_ajax_shortcode' );
add_action( 'wp_ajax_grunion_shortcode_to_json', 'grunion_ajax_shortcode_to_json' );
// process row-action spam/not spam clicks
add_action( 'wp_ajax_grunion_ajax_spam', 'grunion_ajax_spam' );
function grunion_ajax_spam() {
global $wpdb;
if ( empty( $_POST['make_it'] ) ) {
return;
}
$post_id = (int) $_POST['post_id'];
check_ajax_referer( 'grunion-post-status-' . $post_id );
if ( ! current_user_can( "edit_page", $post_id ) ) {
wp_die( __( 'You are not allowed to manage this item.', 'jetpack' ) );
}
require_once dirname( __FILE__ ) . '/grunion-contact-form.php';
$current_menu = '';
if ( isset( $_POST['sub_menu'] ) && preg_match( '|post_type=feedback|', $_POST['sub_menu'] ) ) {
if ( preg_match( '|post_status=spam|', $_POST['sub_menu'] ) ) {
$current_menu = 'spam';
}
elseif ( preg_match( '|post_status=trash|', $_POST['sub_menu'] ) ) {
$current_menu = 'trash';
}
else {
$current_menu = 'messages';
}
}
$post = get_post( $post_id );
$post_type_object = get_post_type_object( $post->post_type );
$akismet_values = get_post_meta( $post_id, '_feedback_akismet_values', TRUE );
if ( $_POST['make_it'] == 'spam' ) {
$post->post_status = 'spam';
$status = wp_insert_post( $post );
wp_transition_post_status( 'spam', 'publish', $post );
/** This action is already documented in modules/contact-form/admin.php */
do_action( 'contact_form_akismet', 'spam', $akismet_values );
} elseif ( $_POST['make_it'] == 'ham' ) {
$post->post_status = 'publish';
$status = wp_insert_post( $post );
wp_transition_post_status( 'publish', 'spam', $post );
/** This action is already documented in modules/contact-form/admin.php */
do_action( 'contact_form_akismet', 'ham', $akismet_values );
$comment_author_email = $reply_to_addr = $message = $to = $headers = false;
$blog_url = parse_url( site_url() );
// resend the original email
$email = get_post_meta( $post_id, '_feedback_email', TRUE );
$content_fields = Grunion_Contact_Form_Plugin::parse_fields_from_content( $post_id );
if ( ! empty( $email ) && !empty( $content_fields ) ) {
if ( isset( $content_fields['_feedback_author_email'] ) ) {
$comment_author_email = $content_fields['_feedback_author_email'];
}
if ( isset( $email['to'] ) ) {
$to = $email['to'];
}
if ( isset( $email['message'] ) ) {
$message = $email['message'];
}
if ( isset( $email['headers'] ) ) {
$headers = $email['headers'];
}
else {
$headers = 'From: "' . $content_fields['_feedback_author'] .'"
\r\n";
if ( ! empty( $comment_author_email ) ){
$reply_to_addr = $comment_author_email;
}
elseif ( is_array( $to ) ) {
$reply_to_addr = $to[0];
}
if ( $reply_to_addr ) {
$headers .= 'Reply-To: "' . $content_fields['_feedback_author'] .'" <' . $reply_to_addr . ">\r\n";
}
$headers .= "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"";
}
/**
* Filters the subject of the email sent after a contact form submission.
*
* @module contact-form
*
* @since 3.0.0
*
* @param string $content_fields['_feedback_subject'] Feedback's subject line.
* @param array $content_fields['_feedback_all_fields'] Feedback's data from old fields.
*/
$subject = apply_filters( 'contact_form_subject', $content_fields['_feedback_subject'], $content_fields['_feedback_all_fields'] );
wp_mail( $to, $subject, $message, $headers );
}
} elseif( $_POST['make_it'] == 'publish' ) {
if ( ! current_user_can($post_type_object->cap->delete_post, $post_id) ) {
wp_die( __( 'You are not allowed to move this item out of the Trash.', 'jetpack' ) );
}
if ( ! wp_untrash_post($post_id) ) {
wp_die( __( 'Error in restoring from Trash.', 'jetpack' ) );
}
} elseif( $_POST['make_it'] == 'trash' ) {
if ( ! current_user_can($post_type_object->cap->delete_post, $post_id) ) {
wp_die( __( 'You are not allowed to move this item to the Trash.', 'jetpack' ) );
}
if ( ! wp_trash_post($post_id) ) {
wp_die( __( 'Error in moving to Trash.', 'jetpack' ) );
}
}
$sql = "
SELECT post_status,
COUNT( * ) AS post_count
FROM `{$wpdb->posts}`
WHERE post_type = 'feedback'
GROUP BY post_status
";
$status_count = (array) $wpdb->get_results( $sql, ARRAY_A );
$status = array();
$status_html = '';
foreach ( $status_count as $i => $row ) {
$status[$row['post_status']] = $row['post_count'];
}
if ( isset( $status['publish'] ) ) {
$status_html .= '';
$status_html .= '(' . number_format( $status['publish'] ) . ')';
$status_html .= ' |';
}
if ( isset( $status['trash'] ) ) {
$status_html .= '';
$status_html .= '(' . number_format( $status['trash'] ) . ')';
$status_html .= '';
if ( isset( $status['spam'] ) )
$status_html .= ' |';
$status_html .= '';
}
if ( isset( $status['spam'] ) ) {
$status_html .= '';
$status_html .= '(' . number_format( $status['spam'] ) . ')';
$status_html .= '';
}
echo $status_html;
exit;
}
add_action( 'omnisearch_add_providers', 'grunion_omnisearch_add_providers' );
function grunion_omnisearch_add_providers() {
// Feedback uses capability_type 'page'
if ( current_user_can( 'edit_pages' ) ) {
require_once( GRUNION_PLUGIN_DIR . '/grunion-omnisearch.php' );
new Jetpack_Omnisearch_Grunion;
}
}
/**
* Add the scripts that will add the "Check for Spam" button to the Feedbacks dashboard page.
*/
function grunion_enable_spam_recheck() {
if ( ! defined( 'AKISMET_VERSION' ) ) {
return;
}
$screen = get_current_screen();
// Only add to feedback, only to non-spam view
if ( 'edit-feedback' != $screen->id || ( ! empty( $_GET['post_status'] ) && 'spam' == $_GET['post_status'] ) ) {
return;
}
// Add the scripts that handle the spam check event.
wp_register_script( 'grunion-admin', plugin_dir_url( __FILE__ ) . 'js/grunion-admin.js', array( 'jquery' ) );
wp_enqueue_script( 'grunion-admin' );
wp_enqueue_style( 'grunion.css' );
// Add the actual "Check for Spam" button.
add_action( 'admin_head', 'grunion_check_for_spam_button' );
}
add_action( 'admin_enqueue_scripts', 'grunion_enable_spam_recheck' );
/**
* Add the "Check for Spam" button to the Feedbacks dashboard page.
*/
function grunion_check_for_spam_button() {
// Get HTML for the button
$button_html = get_submit_button(
__( 'Check for Spam', 'jetpack' ),
'secondary',
'jetpack-check-feedback-spam',
false,
array( 'class' => 'jetpack-check-feedback-spam' )
);
$button_html .= '';
// Add the button next to the filter button via js
?>
ID, '_feedback_akismet_values', true );
/**
* Filter whether the submitted feedback is considered as spam.
*
* @module contact-form
*
* @since 3.4.0
*
* @param bool false Is the submitted feedback spam? Default to false.
* @param array $meta Feedack values returned by the Akismet plugin.
*/
$is_spam = apply_filters( 'jetpack_contact_form_is_spam', false, $meta );
if ( $is_spam ) {
wp_update_post( array( 'ID' => $feedback->ID, 'post_status' => 'spam' ) );
/** This action is already documented in modules/contact-form/admin.php */
do_action( 'contact_form_akismet', 'spam', $akismet_values );
}
}
wp_send_json( array(
'processed' => count( $approved_feedbacks ),
) );
}
add_action( 'wp_ajax_grunion_recheck_queue', 'grunion_recheck_queue' );