mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-28 10:30:28 +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)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$entry = new Entry($this->getUser());
|
||||
|
||||
$form = $this->createForm(new NewEntryType(), $entry);
|
||||
|
@ -49,17 +48,17 @@ class EntryController extends Controller
|
|||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isValid()) {
|
||||
$existingEntry = $em
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findOneByUrlAndUserId($entry->getUrl(), $this->getUser()->getId());
|
||||
// check for existing entry, if it exists, redirect to it with a message
|
||||
$existingEntry = $this->get('wallabag_core.entry_repository')
|
||||
->existByUrlAndUserId($entry->getUrl(), $this->getUser()->getId());
|
||||
|
||||
if (count($existingEntry) > 0) {
|
||||
if (false !== $existingEntry) {
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'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);
|
||||
|
|
|
@ -226,18 +226,26 @@ class EntryRepository extends EntityRepository
|
|||
|
||||
/**
|
||||
* Find an entry by its url and its owner.
|
||||
* If it exists, return the entry otherwise return false.
|
||||
*
|
||||
* @param $url
|
||||
* @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)
|
||||
->andWhere('e.user = :user_id')->setParameter('user_id', $userId)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
if (count($res) > 1) {
|
||||
return next($res);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,6 +63,7 @@ services:
|
|||
- @wallabag_core.tag_repository
|
||||
- @wallabag_core.entry_repository
|
||||
|
||||
# repository as a service
|
||||
wallabag_core.entry_repository:
|
||||
class: Wallabag\CoreBundle\Repository\EntryRepository
|
||||
factory: [ @doctrine.orm.default_entity_manager, getRepository ]
|
||||
|
|
|
@ -117,9 +117,9 @@ class PocketImport implements ImportInterface
|
|||
|
||||
$existingEntry = $this->em
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findOneByUrlAndUserId($url, $this->user->getId());
|
||||
->existByUrlAndUserId($url, $this->user->getId());
|
||||
|
||||
if (count($existingEntry) > 0) {
|
||||
if (false !== $existingEntry) {
|
||||
++$this->skippedEntries;
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue