geno/wp-content/plugins/mailpoet/lib/Settings/Pages.php
2024-02-01 11:54:18 +00:00

118 lines
3.3 KiB
PHP

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Settings;
if (!defined('ABSPATH')) exit;
use MailPoet\Subscription;
use MailPoet\WP\Functions as WPFunctions;
class Pages {
public function __construct() {
}
public function init() {
WPFunctions::get()->registerPostType('mailpoet_page', [
'labels' => [
'name' => __('MailPoet Page', 'mailpoet'),
'singular_name' => __('MailPoet Page', 'mailpoet'),
],
'public' => true,
'has_archive' => false,
'show_ui' => false,
'show_in_menu' => false,
'rewrite' => false,
'show_in_nav_menus' => false,
'can_export' => false,
'publicly_queryable' => true,
'exclude_from_search' => true,
]);
}
public static function createMailPoetPage() {
WPFunctions::get()->removeAllActions('pre_post_update');
WPFunctions::get()->removeAllActions('save_post');
WPFunctions::get()->removeAllActions('wp_insert_post');
$id = WPFunctions::get()->wpInsertPost([
'post_status' => 'publish',
'post_type' => 'mailpoet_page',
'post_author' => 1,
'post_content' => '[mailpoet_page]',
'post_title' => __('MailPoet Page', 'mailpoet'),
'post_name' => 'subscriptions',
]);
return ((int)$id > 0) ? (int)$id : false;
}
public static function getDefaultMailPoetPage() {
$wp = WPFunctions::get();
$pages = $wp->getPosts([
'posts_per_page' => 1,
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'mailpoet_page',
]);
$page = null;
if (!empty($pages)) {
$page = array_shift($pages);
if (strpos($page->post_content, '[mailpoet_page]') === false) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
$page = null;
}
}
return $page;
}
public static function getMailPoetPages() {
return WPFunctions::get()->getPosts([
'post_type' => 'mailpoet_page',
]);
}
/**
* @param int $id
*
* @return bool
*/
public static function isMailpoetPage($id) {
$mailpoetPages = static::getMailPoetPages();
foreach ($mailpoetPages as $mailpoetPage) {
if ($mailpoetPage->ID === $id) {
return true;
}
}
return false;
}
public static function getAll() {
$allPages = array_merge(
static::getMailPoetPages(),
WPFunctions::get()->getPages()
);
$pages = [];
foreach ($allPages as $page) {
$pages[] = static::getPageData($page);
}
return $pages;
}
public static function getPageData($page) {
$subscriptionUrlFactory = Subscription\SubscriptionUrlFactory::getInstance();
return [
'id' => $page->ID,
'title' => $page->post_title, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
'url' => [
'unsubscribe' => $subscriptionUrlFactory->getSubscriptionUrl($page, 'unsubscribe'),
'manage' => $subscriptionUrlFactory->getSubscriptionUrl($page, 'manage'),
'confirm' => $subscriptionUrlFactory->getSubscriptionUrl($page, 'confirm'),
'confirm_unsubscribe' => $subscriptionUrlFactory->getSubscriptionUrl($page, 'confirm_unsubscribe'),
're_engagement' => $subscriptionUrlFactory->getSubscriptionUrl($page, 're_engagement'),
],
];
}
}