mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-29 20:41:03 +00:00
Change the way to check for an existing entry
The repository method return the entry found or false if nothing exists.
This commit is contained in:
parent
27a8708b67
commit
5a4bbcc9a7
4 changed files with 20 additions and 12 deletions
|
@ -41,7 +41,6 @@ class EntryController extends Controller
|
||||||
*/
|
*/
|
||||||
public function addEntryFormAction(Request $request)
|
public function addEntryFormAction(Request $request)
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
|
||||||
$entry = new Entry($this->getUser());
|
$entry = new Entry($this->getUser());
|
||||||
|
|
||||||
$form = $this->createForm(new NewEntryType(), $entry);
|
$form = $this->createForm(new NewEntryType(), $entry);
|
||||||
|
@ -49,17 +48,17 @@ class EntryController extends Controller
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
$existingEntry = $em
|
// check for existing entry, if it exists, redirect to it with a message
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
$existingEntry = $this->get('wallabag_core.entry_repository')
|
||||||
->findOneByUrlAndUserId($entry->getUrl(), $this->getUser()->getId());
|
->existByUrlAndUserId($entry->getUrl(), $this->getUser()->getId());
|
||||||
|
|
||||||
if (count($existingEntry) > 0) {
|
if (false !== $existingEntry) {
|
||||||
$this->get('session')->getFlashBag()->add(
|
$this->get('session')->getFlashBag()->add(
|
||||||
'notice',
|
'notice',
|
||||||
'Entry already saved on '.$existingEntry[0]->getCreatedAt()->format('d-m-Y')
|
'Entry already saved on '.$existingEntry['createdAt']->format('d-m-Y')
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->redirect($this->generateUrl('view', array('id' => $existingEntry[0]->getId())));
|
return $this->redirect($this->generateUrl('view', array('id' => $existingEntry['id'])));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->updateEntry($entry);
|
$this->updateEntry($entry);
|
||||||
|
|
|
@ -226,18 +226,26 @@ class EntryRepository extends EntityRepository
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find an entry by its url and its owner.
|
* Find an entry by its url and its owner.
|
||||||
|
* If it exists, return the entry otherwise return false.
|
||||||
*
|
*
|
||||||
* @param $url
|
* @param $url
|
||||||
* @param $userId
|
* @param $userId
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array|bool
|
||||||
*/
|
*/
|
||||||
public function findOneByUrlAndUserId($url, $userId)
|
public function existByUrlAndUserId($url, $userId)
|
||||||
{
|
{
|
||||||
return $this->createQueryBuilder('e')
|
$res = $this->createQueryBuilder('e')
|
||||||
|
->select('e.id, e.createdAt')
|
||||||
->where('e.url = :url')->setParameter('url', $url)
|
->where('e.url = :url')->setParameter('url', $url)
|
||||||
->andWhere('e.user = :user_id')->setParameter('user_id', $userId)
|
->andWhere('e.user = :user_id')->setParameter('user_id', $userId)
|
||||||
->getQuery()
|
->getQuery()
|
||||||
->getResult();
|
->getResult();
|
||||||
|
|
||||||
|
if (count($res) > 1) {
|
||||||
|
return next($res);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ services:
|
||||||
- @wallabag_core.tag_repository
|
- @wallabag_core.tag_repository
|
||||||
- @wallabag_core.entry_repository
|
- @wallabag_core.entry_repository
|
||||||
|
|
||||||
|
# repository as a service
|
||||||
wallabag_core.entry_repository:
|
wallabag_core.entry_repository:
|
||||||
class: Wallabag\CoreBundle\Repository\EntryRepository
|
class: Wallabag\CoreBundle\Repository\EntryRepository
|
||||||
factory: [ @doctrine.orm.default_entity_manager, getRepository ]
|
factory: [ @doctrine.orm.default_entity_manager, getRepository ]
|
||||||
|
|
|
@ -117,9 +117,9 @@ class PocketImport implements ImportInterface
|
||||||
|
|
||||||
$existingEntry = $this->em
|
$existingEntry = $this->em
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
->findOneByUrlAndUserId($url, $this->user->getId());
|
->existByUrlAndUserId($url, $this->user->getId());
|
||||||
|
|
||||||
if (count($existingEntry) > 0) {
|
if (false !== $existingEntry) {
|
||||||
++$this->skippedEntries;
|
++$this->skippedEntries;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue