Skip to content
This repository has been archived by the owner on Nov 5, 2020. It is now read-only.

Commit

Permalink
Merge pull request #67 from magento-south/origin/develop
Browse files Browse the repository at this point in the history
[SOUTH] Sample external links module
  • Loading branch information
MomotenkoNatalia committed Jul 26, 2016
2 parents 63e2ec0 + ab42e4a commit 21ad8ca
Show file tree
Hide file tree
Showing 19 changed files with 1,501 additions and 0 deletions.
90 changes: 90 additions & 0 deletions sample-external-links/Api/Data/ExternalLinkInterface.php
@@ -0,0 +1,90 @@
<?php
/**
*
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\ExternalLinks\Api\Data;

use Magento\Framework\Api\ExtensibleDataInterface;

interface ExternalLinkInterface extends ExtensibleDataInterface
{
const TYPE = "type";

const LINK = "link";

const PRODUCT_ID = "product_id";

const LINK_ID = "link_id";

/**
* Retrieve Link Type
*
* @return string
*/
public function getLinkType();

/**
* Set Link Type
*
* @param string $type
* @return self
*/
public function setLinkType($type);

/**
* Retrieve Provider link
*
* @return string
*/
public function getLink();

/**
* Set Provider link
*
* @param string $link
* @return self
*/
public function setLink($link);

/**
* Set Product Id for further updates
*
* @param int $id
* @return self
*/
public function setProductId($id);

/**
* Retrieve product id
*
* @return int
*/
public function getProductId();

/**
* @return int
*/
public function getLinkId();

/**
* @param int $linkId
* @return self
*/
public function setLinkId($linkId);

/**
* @return \Magento\ExternalLinks\Api\Data\ExternalLinkExtensionInterface|null
*/
public function getExtensionAttributes();

/**
* @param \Magento\ExternalLinks\Api\Data\ExternalLinkExtensionInterface $extensionAttributes
* @return self
*/
public function setExtensionAttributes
(
\Magento\ExternalLinks\Api\Data\ExternalLinkExtensionInterface $extensionAttributes
);
}
16 changes: 16 additions & 0 deletions sample-external-links/Api/ExternalLinksProviderInterface.php
@@ -0,0 +1,16 @@
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\ExternalLinks\Api;

interface ExternalLinksProviderInterface
{
/**
* @param int $productId
* @return array
*/
public function getLinks($productId);
}
118 changes: 118 additions & 0 deletions sample-external-links/Model/ExternalLink.php
@@ -0,0 +1,118 @@
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\ExternalLinks\Model;

use Magento\Framework\DataObject;
use Magento\ExternalLinks\Api\Data\ExternalLinkInterface;

/**
* Class ExternalLink
* @package Magento\ExternalLinks\Model
*/
final class ExternalLink implements ExternalLinkInterface
{
/** @var array */
private $link;

/** @var int */
private $linkId;

/** @var int */
private $productId;

/** @var string */
private $linkType;

/** @var array */
private $extenstionAttributes;

/**
* @inheritdoc
*/
public function getLink()
{
return $this->link;
}

/**
* @inheritdoc
*/
public function setLink($link)
{
$this->link = $link;
return $this;
}

/**
* @inheritdoc
*/
public function getLinkType()
{
return $this->linkType;
}

/**
* @inheritdoc
*/
public function setLinkType($type)
{
$this->linkType = $type;
return $this;
}

/**
* @inheritdoc
*/
public function getLinkId()
{
return $this->linkId;
}

/**
* @inheritdoc
*/
public function setLinkId($linkId)
{
$this->linkId = $linkId;
return $this->linkId;
}

/**
* @inheritdoc
*/
public function getProductId()
{
return $this->productId;
}

/**
* @inheritdoc
*/
public function setProductId($id)
{
$this->productId = $id;
return $this;
}

/**
* @inheritdoc
*/
public function setExtensionAttributes(
\Magento\ExternalLinks\Api\Data\ExternalLinkExtensionInterface $extensionAttributes
)
{
$this->extenstionAttributes = $extensionAttributes;
return $this;
}

/**
* @inheritdoc
*/
public function getExtensionAttributes()
{
return $this->extenstionAttributes;
}
}
59 changes: 59 additions & 0 deletions sample-external-links/Model/ExternalLinks/Provider.php
@@ -0,0 +1,59 @@
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\ExternalLinks\Model\ExternalLinks;

use Magento\ExternalLinks\Api\ExternalLinksProviderInterface;
use Magento\ExternalLinks\Model\ResourceModel\ExternalLinks\Loader;
use Magento\Framework\EntityManager\EntityManager;
use Magento\ExternalLinks\Model\ExternalLinkFactory;

/**
* Class Provider
* @package Magento\ExternalLinks\Model\ExternalLinks
*/
class Provider implements ExternalLinksProviderInterface
{
/** @var EntityManager */
private $entityManager;

/** @var Loader */
private $loader;

/** @var ExternalLinkFactory */
private $externalLinkFactory;

/**
* Provider constructor.
* @param EntityManager $entityManager
* @param Loader $loader
*/
public function __construct
(
EntityManager $entityManager,
Loader $loader,
ExternalLinkFactory $externalLinkFactory
) {
$this->entityManager = $entityManager;
$this->loader = $loader;
$this->externalLinkFactory = $externalLinkFactory;
}

/**
* @inheritdoc
*/
public function getLinks($productId)
{
$externalLinks = [];
$ids = $this->loader->getIdsByProductId($productId);

foreach($ids as $id) {
$externalLink = $this->externalLinkFactory->create();
$externalLinks[] = $this->entityManager->load($externalLink, $id);
}

return $externalLinks;
}
}

0 comments on commit 21ad8ca

Please sign in to comment.