| 213 | |
| 214 | /** |
| 215 | * Export comments by e-mail for the GDPR "Right to Portability" as json |
| 216 | * |
| 217 | * @since 5.0.0 |
| 218 | * |
| 219 | * @param string $email Commenters Email |
| 220 | * |
| 221 | * @uses sanitize_email() |
| 222 | * @uses is_email() |
| 223 | * @uses get_comments() |
| 224 | * @uses json_encode() |
| 225 | * |
| 226 | * @return string $comments Returns comments if they exist, else fall back to a notification message. |
| 227 | * |
| 228 | */ |
| 229 | |
| 230 | function export_comments( $email ) { |
| 231 | |
| 232 | $commenter_email = sanitize_email( $email ); |
| 233 | |
| 234 | if ( is_email( $commenter_email ) ) { |
| 235 | |
| 236 | $args = array( |
| 237 | 'author_email' => $commenter_email, |
| 238 | ); |
| 239 | |
| 240 | $comments = get_comments( $args ); |
| 241 | |
| 242 | if ( ! empty( $comments ) ) { |
| 243 | $the_comments = array(); |
| 244 | foreach ( $comments as $comment ) { |
| 245 | $the_comments[] = array( |
| 246 | 'date' => $comment->comment_date, |
| 247 | 'author_email' => $comment->comment_author_email, |
| 248 | 'author_name' => $comment->comment_author, |
| 249 | 'author_url' => $comment->comment_author_url, |
| 250 | 'comment' => $comment->comment_content, |
| 251 | ); |
| 252 | } |
| 253 | return json_encode( $the_comments ); |
| 254 | } else { |
| 255 | return sprintf( |
| 256 | // translators: %s is the commenters email address. |
| 257 | __( '%s has no comments.' ), |
| 258 | $email |
| 259 | ); |
| 260 | } |
| 261 | } else { |
| 262 | return sprintf( |
| 263 | // translators: %s is the email address provided. |
| 264 | __( '%s is not a valid e-mail.' ), |
| 265 | $email |
| 266 | ); |
| 267 | } |
| 268 | |
| 269 | } |