Spaces:
No application file
No application file
namespace MauticPlugin\MauticSocialBundle\Model; | |
use Mautic\CoreBundle\Model\AbstractCommonModel; | |
use MauticPlugin\MauticSocialBundle\Entity\PostCount; | |
/** | |
* @extends AbstractCommonModel<PostCount> | |
*/ | |
class PostCountModel extends AbstractCommonModel | |
{ | |
/** | |
* Get a specific entity or generate a new one if id is empty. | |
*/ | |
public function getEntity($id = null): ?PostCount | |
{ | |
if (null !== $id) { | |
$repo = $this->getRepository(); | |
if (method_exists($repo, 'getEntity')) { | |
return $repo->getEntity($id); | |
} | |
return $repo->find($id); | |
} | |
return new PostCount(); | |
} | |
/** | |
* Get this model's repository. | |
* | |
* @return \MauticPlugin\MauticSocialBundle\Entity\PostCountRepository | |
*/ | |
public function getRepository() | |
{ | |
return $this->em->getRepository(PostCount::class); | |
} | |
/* | |
* Updates a monitor record's post count on a daily basis | |
* | |
* @return boolean | |
*/ | |
public function updatePostCount($monitor, \DateTime $postDate): bool | |
{ | |
// query the db for posts on this date | |
$q = $this->getRepository()->createQueryBuilder($this->getRepository()->getTableAlias()); | |
$expr = $q->expr()->eq($this->getRepository()->getTableAlias().'.postDate', ':date'); | |
$q->setParameter('date', $postDate, 'date'); | |
$q->where($expr); | |
$args['qb'] = $q; | |
// ignore paginator so we can use the array later | |
$args['ignore_paginator'] = true; | |
/** @var \MauticPlugin\MauticSocialBundle\Entity\PostCountRepository $postCountsRepository */ | |
$postCountsRepository = $this->getRepository(); | |
// get any existing records | |
$postCounts = $postCountsRepository->getEntities($args); | |
// if there isn't anything then create it | |
if (!count($postCounts)) { | |
/** @var PostCount $postCount */ | |
$postCount = $this->getEntity(); | |
$postCount->setMonitor($monitor); | |
$postCount->setPostDate($postDate); // $postDate->format('m-d-Y') | |
} else { | |
// use the first record to increment it. | |
$postCount = $this->getEntity($postCounts[0]->getId()); | |
} | |
// increment | |
$postCount->setPostCount($postCount->getPostCount() + 1); | |
// now save it | |
$postCountsRepository->saveEntity($postCount); | |
// nothing went wrong so return true here | |
return true; | |
} | |
} | |