Ejemplo n.º 1
0
 public function cloneActivity(Campaign $campaign, Activity $activity, $status = null)
 {
     /** @var Activity $clonedActivity */
     $clonedActivity = clone $activity;
     $clonedActivity->setCampaign($campaign);
     $campaign->addActivity($clonedActivity);
     if ($status != null) {
         $clonedActivity->setStatus($status);
     }
     $this->em->persist($clonedActivity);
     // Clone all related Operations.
     $operations = $activity->getOperations();
     if ($operations->count()) {
         $operationService = $this->container->get('campaignchain.core.operation');
         foreach ($operations as $operation) {
             $operationService->cloneOperation($activity, $operation);
         }
     }
     $this->em->flush();
     return $clonedActivity;
 }
 /**
  * Compares the status message of an already scheduled Activity with the
  * content of a new/edited Activity.
  *
  * @param Activity $existingActivity
  * @param StatusBase $content
  * @return array
  */
 protected function isUniqueContent(Activity $existingActivity, StatusBase $content)
 {
     /** @var StatusBase $existingStatus */
     $existingStatus = $this->em->getRepository('CampaignChainOperationFacebookBundle:StatusBase')->findOneByOperation($existingActivity->getOperations()[0]);
     if ($existingStatus->getMessage() == $content->getMessage()) {
         return array('status' => false, 'message' => 'Same status message has already been scheduled: ' . '<a href="' . $this->router->generate('campaignchain_activity_facebook_publish_status_edit', array('id' => $existingActivity->getId())) . '">' . $existingActivity->getName() . '</a>. ' . 'Either change the message or leave at least ' . $this->maxDuplicateInterval . ' between yours and the other post.');
     } else {
         return array('status' => true);
     }
 }