cardData = $cardData; $this->queryBuilder = $queryBuilder; $this->cardMarkup = $cardMarkup; $this->pagesAmount = 0; $this->postIds = []; } /** * @param array $customArguments */ protected function setTwigVariables(bool $isForValidation = false, array $customArguments = []): void { $this->twigVariables = [ '_card' => [ 'id' => $this->cardData->getMarkupId(), // short unique id is expected in the shortcode arguments 'view_id' => str_replace('view_', '', $this->cardData->acfViewId), 'no_posts_found_message' => $this->cardData->getNoPostsFoundMessageTranslation(), 'post_ids' => $this->postIds, 'classes' => $this->getClasses(), ], ]; } protected function renderTwig(bool $isForValidation = false): void { $this->html = $this->twig->render( $this->cardData->getUniqueId(), $this->html, $this->twigVariables, $isForValidation ); // render the shortcodes $this->html = do_shortcode($this->html); } /** * @param array $customArguments */ public function queryPostsAndInsertData( int $pageNumber, bool $isMinifyMarkup = true, bool $isLoadMore = false, array $customArguments = [] ): void { if ($isMinifyMarkup) { // remove special symbols that used in the markup for a preview // exactly here, before the fields are inserted, to avoid affecting them $this->html = str_replace(["\t", "\n", "\r"], '', $this->html); } $postsData = $this->queryBuilder->getPostsData($this->cardData, $pageNumber, $customArguments); $this->pagesAmount = key_exists('pagesAmount', $postsData) && is_int($postsData['pagesAmount']) ? $postsData['pagesAmount'] : 0; $this->postIds = key_exists('postIds', $postsData) && is_array($postsData['postIds']) ? $postsData['postIds'] : []; $this->html = $this->cardMarkup->getMarkup($this->cardData, $isLoadMore); $this->setTwigVariables(false, $customArguments); $this->renderTwig(); } public function getHTML(): string { return $this->html; } public function getCardData(): CardData { return $this->cardData; } public function getMarkupValidationError(): string { $this->html = $this->cardMarkup->getMarkup($this->cardData); return parent::getMarkupValidationError(); } }