| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace MailPoet\API\JSON\v1;
- if (!defined('ABSPATH')) exit;
- use MailPoet\API\JSON\Endpoint as APIEndpoint;
- use MailPoet\Config\AccessControl;
- use MailPoet\WP\Functions as WPFunctions;
- use MailPoet\WP\Posts as WPPosts;
- class AutomatedLatestContent extends APIEndpoint {
- /** @var \MailPoet\Newsletter\AutomatedLatestContent */
- public $ALC;
- private $wp;
- public $permissions = [
- 'global' => AccessControl::PERMISSION_MANAGE_EMAILS,
- ];
- public function __construct(
- \MailPoet\Newsletter\AutomatedLatestContent $alc,
- WPFunctions $wp
- ) {
- $this->ALC = $alc;
- $this->wp = $wp;
- }
- public function getPostTypes() {
- $postTypes = array_map(function($postType) {
- return [
- 'name' => $postType->name,
- 'label' => $postType->label,
- ];
- }, WPPosts::getTypes([], 'objects'));
- return $this->successResponse(
- array_filter($postTypes)
- );
- }
- public function getTaxonomies($data = []) {
- $postType = (isset($data['postType'])) ? $data['postType'] : 'post';
- $allTaxonomies = WPFunctions::get()->getObjectTaxonomies($postType, 'objects');
- $taxonomiesWithLabel = array_filter($allTaxonomies, function($taxonomy) {
- return $taxonomy->label;
- });
- return $this->successResponse($taxonomiesWithLabel);
- }
- public function getTerms($data = []) {
- $taxonomies = (isset($data['taxonomies'])) ? $data['taxonomies'] : [];
- $search = (isset($data['search'])) ? $data['search'] : '';
- $limit = (isset($data['limit'])) ? (int)$data['limit'] : 100;
- $page = (isset($data['page'])) ? (int)$data['page'] : 1;
- $args = [
- 'taxonomy' => $taxonomies,
- 'hide_empty' => false,
- 'search' => $search,
- 'number' => $limit,
- 'offset' => $limit * ($page - 1),
- 'orderby' => 'name',
- 'order' => 'ASC',
- ];
- $args = $this->wp->applyFilters('mailpoet_search_terms_args', $args);
- $terms = WPPosts::getTerms($args);
- return $this->successResponse(array_values($terms));
- }
- public function getPosts($data = []) {
- return $this->successResponse(
- $this->ALC->getPosts($data)
- );
- }
- public function getTransformedPosts($data = []) {
- $posts = $this->ALC->getPosts($data);
- return $this->successResponse(
- $this->ALC->transformPosts($data, $posts)
- );
- }
- public function getBulkTransformedPosts($data = []) {
- $usedPosts = [];
- $renderedPosts = [];
- foreach ($data['blocks'] as $block) {
- $posts = $this->ALC->getPosts($block, $usedPosts);
- $renderedPosts[] = $this->ALC->transformPosts($block, $posts);
- foreach ($posts as $post) {
- $usedPosts[] = $post->ID;
- }
- }
- return $this->successResponse($renderedPosts);
- }
- }
|