Commit a821454e authored by Emiliano Balbuena's avatar Emiliano Balbuena

(fix): Resolve campaigns

1 merge request!235WIP: Boost Campaigns (&24)
Pipeline #71963987 running with stages
<?php
/**
* BoostCampaignResolverDelegate
* @author edgebal
*/
namespace Minds\Core\Entities\Delegates;
use Exception;
use Minds\Common\Urn;
use Minds\Core\Boost\Campaigns\Campaign;
use Minds\Core\Boost\Campaigns\Manager;
use Minds\Core\Di\Di;
use Minds\Core\Entities\Resolver;
class BoostCampaignResolverDelegate implements ResolverDelegate
{
/** @var Manager */
protected $manager;
/** @var Resolver */
protected $resolver;
/**
* BoostCampaignResolverDelegate constructor.
* @param Manager $manager
*/
public function __construct(
$manager = null
)
{
$this->manager = $manager ?: Di::_()->get('Boost\Campaigns\Manager');
}
/**
* @param Resolver $resolver
* @return BoostCampaignResolverDelegate
*/
public function setResolver(Resolver $resolver)
{
$this->resolver = $resolver;
return $this;
}
/**
* @param Urn $urn
* @return boolean
*/
public function shouldResolve(Urn $urn)
{
return $urn->getNid() === 'campaign';
}
/**
* @param Urn[] $urns
* @param array $opts
* @return mixed
* @throws Exception
*/
public function resolve(array $urns, array $opts = [])
{
$entities = [];
foreach ($urns as $urn) {
/** @var Campaign $boost */
$boost = $this->manager->get($urn);
$entities[] = $boost;
}
return $entities;
}
/**
* @param string $urn
* @param Campaign $campaign
* @return mixed
*/
public function map($urn, $campaign)
{
if (!$campaign->getEntityUrns()) {
return null;
}
$entity = $this->resolver->setOpts(['ignoreAcl' => true])->single($campaign->getEntityUrns()[0]);
$entity->boost = true;
$entity->boosted_guid = $campaign->getGuid();
$entity->urn = $campaign->getUrn();
}
/**
* @param Campaign $entity
* @return string|null
*/
public function asUrn($entity)
{
if (!$entity) {
return null;
}
return $entity->getUrn();
}
}
......@@ -10,6 +10,7 @@ namespace Minds\Core\Entities\Delegates;
use Minds\Common\Urn;
use Minds\Core\Boost\Repository;
use Minds\Core\Di\Di;
use Minds\Core\Entities\Resolver;
use Minds\Core\EntitiesBuilder;
use Minds\Entities\Boost\BoostEntityInterface;
......@@ -20,6 +21,9 @@ class BoostGuidResolverDelegate implements ResolverDelegate
*/
protected $manager;
/** @var Resolver */
protected $resolver;
/**
* BoostGuidResolverDelegate constructor.
* @param Manager $manager
......@@ -29,6 +33,16 @@ class BoostGuidResolverDelegate implements ResolverDelegate
$this->manager = $manager ?: Di::_()->get('Boost\Network\Manager');
}
/**
* @param Resolver $resolver
* @return BoostGuidResolverDelegate
*/
public function setResolver(Resolver $resolver)
{
$this->resolver = $resolver;
return $this;
}
/**
* @param Urn $urn
* @return boolean
......
......@@ -10,11 +10,15 @@ use Minds\Core\Boost\Repository;
use Minds\Core\Comments\Comment;
use Minds\Core\Comments\Manager;
use Minds\Core\Di\Di;
use Minds\Core\Entities\Resolver;
use Minds\Core\EntitiesBuilder;
use Minds\Entities\Boost\BoostEntityInterface;
class CommentGuidResolverDelegate implements ResolverDelegate
{
/** @var Resolver */
protected $resolver;
/**
* @var Manager
*/
......@@ -29,6 +33,16 @@ class CommentGuidResolverDelegate implements ResolverDelegate
$this->manager = $manager ?: new Manager();
}
/**
* @param Resolver $resolver
* @return CommentGuidResolverDelegate
*/
public function setResolver(Resolver $resolver)
{
$this->resolver = $resolver;
return $this;
}
/**
* @param Urn $urn
* @return boolean
......@@ -79,4 +93,4 @@ class CommentGuidResolverDelegate implements ResolverDelegate
return $entity->getUrn();
}
}
\ No newline at end of file
}
......@@ -9,6 +9,7 @@ namespace Minds\Core\Entities\Delegates;
use Minds\Common\Urn;
use Minds\Core\Di\Di;
use Minds\Core\Entities\Resolver;
use Minds\Core\EntitiesBuilder;
use Minds\Core\Feeds\Top\Entities as TopEntities;
......@@ -19,6 +20,9 @@ class EntityGuidResolverDelegate implements ResolverDelegate
*/
protected $entitiesBuilder;
/** @var Resolver */
protected $resolver;
/**
* EntityGuidResolverDelegate constructor.
* @param EntitiesBuilder $entitiesBuilder
......@@ -28,6 +32,16 @@ class EntityGuidResolverDelegate implements ResolverDelegate
$this->entitiesBuilder = $entitiesBuilder ?: Di::_()->get('EntitiesBuilder');
}
/**
* @param Resolver $resolver
* @return EntityGuidResolverDelegate
*/
public function setResolver(Resolver $resolver)
{
$this->resolver = $resolver;
return $this;
}
/**
* @param Urn $urn
* @return boolean
......
......@@ -8,9 +8,16 @@
namespace Minds\Core\Entities\Delegates;
use Minds\Common\Urn;
use Minds\Core\Entities\Resolver;
interface ResolverDelegate
{
/**
* @param Resolver $resolver
* @return ResolverDelegate
*/
public function setResolver(Resolver $resolver);
/**
* @param Urn $urn
* @return boolean
......
......@@ -8,6 +8,7 @@
namespace Minds\Core\Entities;
use Minds\Common\Urn;
use Minds\Core\Entities\Delegates\BoostCampaignResolverDelegate;
use Minds\Core\Entities\Delegates\BoostGuidResolverDelegate;
use Minds\Core\Entities\Delegates\CommentGuidResolverDelegate;
use Minds\Core\Entities\Delegates\EntityGuidResolverDelegate;
......@@ -42,9 +43,14 @@ class Resolver
$this->resolverDelegates = $resolverDelegates ?: [
EntityGuidResolverDelegate::class => new EntityGuidResolverDelegate(),
BoostGuidResolverDelegate::class => new BoostGuidResolverDelegate(),
BoostCampaignResolverDelegate::class => new BoostCampaignResolverDelegate(),
CommentGuidResolverDelegate::class => new CommentGuidResolverDelegate(),
];
foreach ($this->resolverDelegates as $resolverDelegate) {
$resolverDelegate->setResolver($this);
}
$this->acl = $acl ?: ACL::_();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment