Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/cartforge.co/app/code/Amasty/MWishlist/Block/Account/Wishlist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/app/code/Amasty/MWishlist/Block/Account/Wishlist/Title.php
<?php

declare(strict_types=1);

/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Multiple Wishlist for Magento 2
 */

namespace Amasty\MWishlist\Block\Account\Wishlist;

use Amasty\MWishlist\Api\Data\WishlistInterface;
use Amasty\MWishlist\Api\WishlistProviderInterface;
use Amasty\MWishlist\Block\AbstractPostBlock;
use Amasty\MWishlist\Block\Account\Wishlist\WishlistList\Tab as WishlistTab;
use Amasty\MWishlist\Model\Networks;
use Amasty\MWishlist\Model\Source\Type;
use Amasty\MWishlist\Model\Wishlist\Management;
use Amasty\MWishlist\ViewModel\Pagination;
use Amasty\MWishlist\ViewModel\PostHelper;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;

class Title extends Template
{
    /**
     * @var string
     */
    protected $_template = 'Amasty_MWishlist::components/page/title.phtml';

    /**
     * @var Type
     */
    private $type;

    /**
     * @var WishlistProviderInterface
     */
    private $wishlistProvider;

    /**
     * @var Management
     */
    private $wishlistManagement;

    /**
     * @var Networks
     */
    private $networks;

    /**
     * @var WishlistTab
     */
    private $wishlistTab;

    public function __construct(
        Management $wishlistManagement,
        WishlistProviderInterface $wishlistProvider,
        Networks $networks,
        Type $type,
        Context $context,
        WishlistTab $wishlistTab,
        array $data = []
    ) {
        parent::__construct($context, $data);
        $this->type = $type;
        $this->wishlistProvider = $wishlistProvider;
        $this->wishlistManagement = $wishlistManagement;
        $this->networks = $networks;
        $this->wishlistTab = $wishlistTab;
    }

    /**
     * @return string
     */
    public function getJsLayout()
    {
        $this->jsLayout = $this->updateTypes($this->jsLayout);
        $this->jsLayout = $this->updateActions($this->jsLayout);
        $this->jsLayout = $this->updateItemsQty($this->jsLayout);
        $this->jsLayout = $this->updateListName($this->jsLayout);
        $this->jsLayout = $this->updateDefaultWishlist($this->jsLayout);
        $this->jsLayout = $this->updateBackUrl($this->jsLayout);
        $this->jsLayout = $this->updateSocialLinks($this->jsLayout);

        return json_encode($this->jsLayout, JSON_HEX_TAG);
    }

    private function updateSocialLinks(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $wishlist = $this->wishlistProvider->getWishlist();
            $wishlistName = $wishlist->getName();
            $wishlistImage = $this->getWishlistImage($wishlist);
            $wishlistSharingUrl = $this->getUrl(
                'wishlist/shared/index',
                [
                    'code' => $wishlist->getSharingCode(),
                    Networks::NETWORKS_URL_PARAMS => true
                ]
            );
            foreach ($this->networks->getNetworks() as $network) {
                $url = $network->getUrl();
                $url = str_replace("{url}", urlencode($wishlistSharingUrl), $url);
                $url = str_replace("{title}", urlencode($wishlistName), $url);
                $url = str_replace("{image}", urlencode($wishlistImage ?? ''), $url);
                $jsLayout['components']['ampagetitle']['config'][$network->getValue()] = $url;
            }
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateListName(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $jsLayout['components']['ampagetitle']['config']['listName'] = $this->wishlistProvider->getWishlist()
                ->getName();
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateTypes(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $jsLayout['components']['ampagetitle']['config']['types'] = $this->type->toArray();
            $jsLayout['components']['ampagetitle']['config']['selectedType'] = (int) $this->wishlistProvider
                ->getWishlist()->getType();
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateActions(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $jsLayout['components']['ampagetitle']['config']['deleteAjaxParam'] = $this->getPostHelper()->getPostData(
                $this->getUrl(PostHelper::DELETE_WISHLIST_ROUTE),
                ['wishlist_id' => $this->wishlistProvider->getWishlist()->getWishlistId()],
                $this->getUrl(PostHelper::LIST_WISHLIST_ROUTE)
            );
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateItemsQty(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $jsLayout['components']['ampagetitle']['config']['itemsQty'] = $this->getLayout()
                ->getBlock('customer.wishlist')->getWishlistItems()->getSize();
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateDefaultWishlist(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $isDefault =  $this->wishlistManagement->isWishlistDefault(
                $this->wishlistProvider->getWishlist()->getWishlistId()
            );
            $jsLayout['components']['ampagetitle']['config']['defaultWishlist'] = $isDefault;
        }

        return $jsLayout;
    }

    /**
     * @param array $jsLayout
     * @return array
     */
    private function updateBackUrl(array $jsLayout): array
    {
        if (isset($jsLayout['components']['ampagetitle']['config'])) {
            $jsLayout['components']['ampagetitle']['config']['backUrl'] = $this->getUrl(
                PostHelper::LIST_WISHLIST_ROUTE,
                [
                    '_query' => [
                        $this->getPaginationHelper()->getPageVarName(
                            $this->wishlistProvider->getWishlist()->getType()
                        ) => 1
                    ]
                ]
            );
        }

        return $jsLayout;
    }

    /**
     * @return PostHelper
     */
    public function getPostHelper(): PostHelper
    {
        return $this->_data[AbstractPostBlock::POST_HELPER_KEY];
    }

    public function getPaginationHelper(): Pagination
    {
        return $this->_data['pagination_helper'];
    }

    /**
     * @param WishlistInterface $wishlist
     * @return false|mixed|null
     */
    private function getWishlistImage(WishlistInterface $wishlist)
    {
        $images = $this->wishlistTab->getItemImages($wishlist);

        return !empty($images) ? reset($images) : null;
    }
}

Spamworldpro Mini