Newscoop\Entity\Repository\Comment\CommenterRepository::save PHP Method

save() public method

Method for geting a commenter
public save ( Commenter $p_entity, array $p_values ) : Commenter
$p_entity Newscoop\Entity\Comment\Commenter
$p_values array
return Newscoop\Entity\Comment\Commenter $p_entity
    public function save($p_entity, array $p_values)
    {
        $keys = array('user', 'name', 'email');
        $set = false;
        for ($i = 0; $i < count($keys); $i++) {
            $set = $set || isset($p_values[$keys[$i]]) && !empty($p_values[$keys[$i]]);
        }
        if (!$set) {
            throw new InvalidArgumentException();
        }
        $em = $this->getEntityManager();
        if (!empty($p_values['user'])) {
            if (is_numeric($p_values['user'])) {
                $userRepository = $em->getRepository('Newscoop\\Entity\\User');
                $p_values['user'] = $userRepository->find($p_values['user']);
            }
            if ($p_values['user']) {
                $p_entity->setUser($p_values['user']);
                if (empty($p_values['name'])) {
                    $p_values['name'] = $p_values['user']->getName();
                }
                if (empty($p_values['email'])) {
                    $p_values['email'] = $p_values['user']->getEmail();
                }
            }
        }
        $commenter = $this->findOneBy(array('email' => $p_values['email'], 'name' => $p_values['name']));
        if ($commenter) {
            $p_entity = $commenter;
        }
        if (!isset($p_values['url'])) {
            $p_values['url'] = '';
        }
        $p_entity->setName($p_values['name'])->setEmail($p_values['email'])->setUrl($p_values['url'])->setIp($p_values['ip'])->setTimeCreated($p_values['time_created']);
        $em->persist($p_entity);
        return $p_entity;
    }
CommenterRepository