Newscoop\Subscription\SubscriptionFacade::save PHP Method

save() public method

Save subscription
public save ( array $values, Subscription $subscription = null ) : Newscoop\Entity\Subscription
$values array
$subscription Subscription
return Newscoop\Entity\Subscription
    public function save(array $values, Subscription $subscription = null)
    {
        if ($subscription === null) {
            $subscription = new Subscription();
            $this->em->persist($subscription);
        }
        if (array_key_exists('user', $values)) {
            $subscription->setUser(is_numeric($values['user']) ? $this->em->getReference('Newscoop\\Entity\\User', $values['user']) : $values['user']);
        }
        if (array_key_exists('publication', $values)) {
            $subscription->setPublication(is_numeric($values['publication']) ? $this->em->getReference('Newscoop\\Entity\\Publication', $values['publication']) : $values['publication']);
        }
        if (array_key_exists('type', $values)) {
            $subscription->setType($values['type']);
        }
        if (array_key_exists('active', $values)) {
            $subscription->setActive($values['active']);
        }
        if (array_key_exists('currency', $values)) {
            $subscription->setCurrency($values['currency']);
        }
        if (array_key_exists('toPay', $values)) {
            $subscription->setToPay($values['toPay']);
        }
        if (array_key_exists('add_sections', $values) && $values['add_sections']) {
            if (!array_key_exists('publication', $values)) {
                throw new \InvalidArgumentException("No publication provided for adding sections");
            }
            $publication = is_numeric($values['publication']) ? $this->em->getRepository('Newscoop\\Entity\\Publication')->find($values['publication']) : $values['publication'];
            $subscription->addSections($values, $publication);
        }
        $this->em->flush();
        return $subscription;
    }