geno/wp-content/plugins/mailpoet/lib/Newsletter/Editor/MetaInformationManager.php
2024-02-01 11:54:18 +00:00

75 lines
2.2 KiB
PHP

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Newsletter\Editor;
if (!defined('ABSPATH')) exit;
use MailPoet\WP\Functions as WPFunctions;
class MetaInformationManager {
public function appendMetaInformation($content, $post, $args) {
// Append author and categories above and below contents
foreach (['above', 'below'] as $position) {
$positionField = $position . 'Text';
$text = [];
if (isset($args['showAuthor']) && $args['showAuthor'] === $positionField) {
$text[] = self::getPostAuthor(
$post->post_author, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
$args['authorPrecededBy']
);
}
if (isset($args['showCategories']) && $args['showCategories'] === $positionField) {
$text[] = self::getPostCategories(
$post->ID,
$post->post_type, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
$args['categoriesPrecededBy']
);
}
if (!empty($text)) {
$text = '<p>' . implode('<br />', $text) . '</p>';
if ($position === 'above') $content = $text . $content;
else if ($position === 'below') $content .= $text;
}
}
return $content;
}
private static function getPostCategories($postId, $postType, $precededBy) {
$precededBy = trim($precededBy);
// Get categories
$categories = WPFunctions::get()->wpGetPostTerms(
$postId,
['category'],
['fields' => 'names']
);
if (!empty($categories)) {
// check if the user specified a label to be displayed before the author's name
if (strlen($precededBy) > 0) {
$content = stripslashes($precededBy) . ' ';
} else {
$content = '';
}
return $content . join(', ', $categories);
} else {
return '';
}
}
private static function getPostAuthor($authorId, $precededBy) {
$authorName = WPFunctions::get()->getTheAuthorMeta('display_name', (int)$authorId);
$precededBy = trim($precededBy);
if (strlen($precededBy) > 0) {
$authorName = stripslashes($precededBy) . ' ' . $authorName;
}
return $authorName;
}
}