public function save(Playlist $playlist = null, $articles = null)
{
$em = $this->getEntityManager();
$em->getConnection()->beginTransaction();
try {
$em->persist($playlist);
if (is_null($playlist->getId())) {
$em->flush();
}
$query = $em->createQuery("DELETE FROM Newscoop\\Entity\\PlaylistArticle pa WHERE pa.playlist = ?1");
$query->setParameter(1, $playlist);
$query->execute();
if (!is_null($articles) && is_array($articles)) {
$ar = $this->getEntityManager()->getRepository('Newscoop\\Entity\\Article');
foreach ($articles as $articleId) {
$article = new PlaylistArticle();
$article->setPlaylist($playlist);
if (($a = current($ar->findBy(array('number' => $articleId)))) instanceof \Newscoop\Entity\Article) {
$article->setArticle($a);
}
$em->persist($article);
}
}
$em->flush();
$em->getConnection()->commit();
} catch (\Exception $e) {
$em->getConnection()->rollback();
$em->close();
return $e;
}
return $playlist;
}