forked from LiveCarta/LiveCartaWP
80 lines
1.6 KiB
PHP
80 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* Module for WordPress comments handling
|
|
*/
|
|
|
|
add_action( 'wp_insert_comment', 'flamingo_insert_comment', 10, 1 );
|
|
|
|
/**
|
|
* Creates a Flamingo_Contact record for the given comment.
|
|
*/
|
|
function flamingo_insert_comment( $comment_id ) {
|
|
$comment = get_comment( $comment_id );
|
|
|
|
if ( 1 !== (int) $comment->comment_approved ) {
|
|
return;
|
|
}
|
|
|
|
Flamingo_Contact::add( array(
|
|
'email' => $comment->comment_author_email,
|
|
'name' => $comment->comment_author,
|
|
'channel' => 'comment',
|
|
) );
|
|
}
|
|
|
|
|
|
add_action( 'transition_comment_status',
|
|
'flamingo_transition_comment_status',
|
|
10, 3
|
|
);
|
|
|
|
/**
|
|
* Creates a Flamingo_Contact record when the comment status changes.
|
|
*/
|
|
function flamingo_transition_comment_status( $new_status, $old_status, $comment ) {
|
|
if ( 'approved' !== $new_status ) {
|
|
return;
|
|
}
|
|
|
|
$email = $comment->comment_author_email;
|
|
$name = $comment->comment_author;
|
|
|
|
Flamingo_Contact::add( array(
|
|
'email' => $email,
|
|
'name' => $name,
|
|
'channel' => 'comment',
|
|
) );
|
|
}
|
|
|
|
|
|
add_action( 'activate_' . FLAMINGO_PLUGIN_BASENAME,
|
|
'flamingo_collect_contacts_from_comments',
|
|
10, 0
|
|
);
|
|
|
|
/**
|
|
* Creates Flamingo_Contact records for existing comments.
|
|
*/
|
|
function flamingo_collect_contacts_from_comments() {
|
|
$comments = get_comments( array(
|
|
'status' => 'approve',
|
|
'type' => 'comment',
|
|
'number' => 20,
|
|
) );
|
|
|
|
foreach ( $comments as $comment ) {
|
|
$email = $comment->comment_author_email;
|
|
$name = $comment->comment_author;
|
|
|
|
if ( empty( $email ) ) {
|
|
continue;
|
|
}
|
|
|
|
Flamingo_Contact::add( array(
|
|
'email' => $email,
|
|
'name' => $name,
|
|
'channel' => 'comment',
|
|
) );
|
|
}
|
|
}
|