use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
+use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\CoreBundle\Repository;
-use Wallabag\CoreBundle\Entity\Entries;
use Wallabag\CoreBundle\Service\Extractor;
use Wallabag\CoreBundle\Helper\Url;
*/
public function addEntryAction(Request $request)
{
- $entry = new Entries();
+ $entry = new Entry();
$entry->setUserId(1);
$form = $this->createFormBuilder($entry)
*/
public function showUnreadAction()
{
- $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entries');
+ $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry');
// TODO don't give the user ID like this
// TODO change pagination
$entries = $repository->findUnreadByUser(1, 0);
*/
public function showArchiveAction()
{
- $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entries');
+ $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry');
// TODO don't give the user ID like this
// TODO change pagination
$entries = $repository->findArchiveByUser(1, 0);
*/
public function showStarredAction()
{
- $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entries');
+ $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry');
// TODO don't give the user ID like this
// TODO change pagination
$entries = $repository->findStarredByUser(1, 0);
/**
* Shows entry content
*
- * @param Entries $entry
+ * @param Entry $entry
* @Route("/view/{id}", requirements={"id" = "\d+"}, name="view")
* @return \Symfony\Component\HttpFoundation\Response
*/
- public function viewAction(Entries $entry)
+ public function viewAction(Entry $entry)
{
return $this->render(
'WallabagCoreBundle:Entry:entry.html.twig',
* Changes read status for an entry
*
* @param Request $request
- * @param Entries $entry
+ * @param Entry $entry
* @Route("/archive/{id}", requirements={"id" = "\d+"}, name="archive_entry")
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
- public function toggleArchiveAction(Request $request, Entries $entry)
+ public function toggleArchiveAction(Request $request, Entry $entry)
{
$entry->toggleArchive();
$this->getDoctrine()->getManager()->flush();
* Changes favorite status for an entry
*
* @param Request $request
- * @param Entries $entry
+ * @param Entry $entry
* @Route("/star/{id}", requirements={"id" = "\d+"}, name="star_entry")
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
- public function toggleStarAction(Request $request, Entries $entry)
+ public function toggleStarAction(Request $request, Entry $entry)
{
$entry->toggleStar();
$this->getDoctrine()->getManager()->flush();
* Deletes entry
*
* @param Request $request
- * @param Entries $entry
+ * @param Entry $entry
* @Route("/delete/{id}", requirements={"id" = "\d+"}, name="delete_entry")
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
- public function deleteEntryAction(Request $request, Entries $entry)
+ public function deleteEntryAction(Request $request, Entry $entry)
{
$em = $this->getDoctrine()->getManager();
$entry->setDeleted(1);
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Wallabag\CoreBundle\Entity\Entries;
+use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\CoreBundle\Entity\Tags;
use Wallabag\CoreBundle\Service\Extractor;
* {"name"="tags", "dataType"="string", "required"=false, "format"="api%2Crest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."},
* }
* )
- * @return Entries
+ * @return Entry
*/
public function getEntriesAction(Request $request)
{
$entries = $this
->getDoctrine()
- ->getRepository('WallabagCoreBundle:Entries')
+ ->getRepository('WallabagCoreBundle:Entry')
->findEntries(1, $isArchived, $isStarred, $isDeleted, $sort, $order);
if (!is_array($entries)) {
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
- * @return Entries
+ * @return Entry
*/
- public function getEntryAction(Entries $entry)
+ public function getEntryAction(Entry $entry)
{
return $entry;
}
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
* }
* )
+ * @return Entry
*/
public function postEntriesAction(Request $request)
{
$url = $request->request->get('url');
$content = Extractor::extract($url);
- $entry = new Entries();
+ $entry = new Entry();
$entry->setUserId(1);
$entry->setUrl($url);
$entry->setTitle($request->request->get('title') ?: $content->getTitle());
* {"name"="delete", "dataType"="boolean", "required"=false, "format"="true or false", "description"="flag as deleted. Default false. In case that you don't want to *really* remove it.."},
* }
* )
+ * @return Entry
*/
- public function patchEntriesAction(Entries $entry, Request $request)
+ public function patchEntriesAction(Entry $entry, Request $request)
{
$title = $request->request->get("title");
$tags = $request->request->get("tags", array());
}
if (!is_null($isArchived)) {
- $entry->setRead($isArchived);
+ $entry->setArchived($isArchived);
}
if (!is_null($isDeleted)) {
}
if (!is_null($isStarred)) {
- $entry->setFav($isStarred);
+ $entry->setStarred($isStarred);
}
$em = $this->getDoctrine()->getManager();
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
* }
* )
+ * @return Entry
*/
- public function deleteEntriesAction(Entries $entry)
+ public function deleteEntriesAction(Entry $entry)
{
if ($entry->isDeleted()) {
throw new NotFoundHttpException('This entry is already deleted');
* }
* )
*/
- public function getEntriesTagsAction(Entries $entry)
+ public function getEntriesTagsAction(Entry $entry)
{
}
* }
* )
*/
- public function postEntriesTagsAction(Entries $entry)
+ public function postEntriesTagsAction(Entry $entry)
{
}
* }
* )
*/
- public function deleteEntriesTagsAction(Entries $entry, Tags $tag)
+ public function deleteEntriesTagsAction(Entry $entry, Tags $tag)
{
}
use Symfony\Component\Validator\Constraints as Assert;
/**
- * Entries
+ * Entry
*
- * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntriesRepository")
- * @ORM\Table(name="entries")
+ * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntryRepository")
+ * @ORM\Table(name="entry")
* @ORM\HasLifecycleCallbacks()
*
*/
-class Entries
+class Entry
{
/**
* @var integer
*
- * @ORM\Column(name="id", type="integer", nullable=true)
+ * @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
- private $id = null;
+ private $id;
/**
* @var string
/**
* @var boolean
*
- * @ORM\Column(name="is_read", type="boolean", nullable=true, options={"default" = false})
+ * @ORM\Column(name="is_archived", type="boolean")
*/
- private $isRead = false;
+ private $isArchived = false;
/**
* @var boolean
*
- * @ORM\Column(name="is_fav", type="boolean", nullable=true, options={"default" = false})
+ * @ORM\Column(name="is_starred", type="boolean")
*/
- private $isFav = false;
+ private $isStarred = false;
/**
* @var boolean
*
- * @ORM\Column(name="is_deleted", type="boolean", nullable=true, options={"default" = false})
+ * @ORM\Column(name="is_deleted", type="boolean")
*/
private $isDeleted = false;
/**
* @var date
*
- * @ORM\Column(name="created_at", type="datetime", nullable=true)
+ * @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @var date
*
- * @ORM\Column(name="updated_at", type="datetime", nullable=true)
+ * @ORM\Column(name="updated_at", type="datetime")
*/
private $updatedAt;
/**
* Set title
*
- * @param string $title
- * @return Entries
+ * @param string $title
+ * @return Entry
*/
public function setTitle($title)
{
/**
* Set url
*
- * @param string $url
- * @return Entries
+ * @param string $url
+ * @return Entry
*/
public function setUrl($url)
{
}
/**
- * Set isRead
+ * Set isArchived
*
- * @param string $isRead
- * @return Entries
+ * @param string $isArchived
+ * @return Entry
*/
- public function setRead($isRead)
+ public function setArchived($isArchived)
{
- $this->isRead = $isRead;
+ $this->isArchived = $isArchived;
return $this;
}
/**
- * Get isRead
+ * Get isArchived
*
* @return string
*/
- public function isRead()
+ public function isArchived()
{
- return $this->isRead;
+ return $this->isArchived;
}
public function toggleArchive()
{
- $this->isRead = $this->getIsRead() ^ 1;
+ $this->isArchived = $this->isArchived() ^ 1;
return $this;
}
/**
- * Set isFav
+ * Set isStarred
*
- * @param string $isFav
- * @return Entries
+ * @param string $isStarred
+ * @return Entry
*/
- public function setFav($isFav)
+ public function setStarred($isStarred)
{
- $this->isFav = $isFav;
+ $this->isStarred = $isStarred;
return $this;
}
/**
- * Get isFav
+ * Get isStarred
*
* @return string
*/
- public function isFav()
+ public function isStarred()
{
- return $this->isFav;
+ return $this->isStarred;
}
public function toggleStar()
{
- $this->isFav = $this->getIsFav() ^ 1;
+ $this->isStarred = $this->isStarred() ^ 1;
return $this;
}
/**
* Set content
*
- * @param string $content
- * @return Entries
+ * @param string $content
+ * @return Entry
*/
public function setContent($content)
{
/**
* Set userId
*
- * @param string $userId
- * @return Entries
+ * @param string $userId
+ * @return Entry
*/
public function setUserId($userId)
{
return $this->createdAt;
}
- /**
- * @param mixed $createdAt
- * @ORM\PrePersist
- */
- public function setCreatedAt()
- {
- $this->createdAt = new \DateTime();
- }
-
/**
* @return string
*/
}
/**
- * @param string $updatedAt
+ * @ORM\PrePersist
* @ORM\PreUpdate
*/
- public function setUpdatedAt()
+ public function timestamps()
{
+ if (is_null($this->createdAt)) {
+ $this->createdAt = new \DateTime();
+ }
+
$this->updatedAt = new \DateTime();
}
namespace Wallabag\CoreBundle\Helper;
-class Entries
+class Entry
{
}
use Doctrine\ORM\Query;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Pagination\Paginator;
-use Wallabag\CoreBundle\Entity\Entries;
-class EntriesRepository extends EntityRepository
+class EntryRepository extends EntityRepository
{
/**
* Retrieves unread entries for a user
->select('e')
->setFirstResult($firstResult)
->setMaxResults($maxResults)
- ->where('e.isRead = 0')
+ ->where('e.isArchived = false')
->andWhere('e.userId =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted=0')
+ ->andWhere('e.isDeleted=false')
->orderBy('e.createdAt', 'desc')
->getQuery();
->select('e')
->setFirstResult($firstResult)
->setMaxResults($maxResults)
- ->where('e.isRead = 1')
+ ->where('e.isArchived = true')
->andWhere('e.userId =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted=0')
+ ->andWhere('e.isDeleted=false')
->orderBy('e.createdAt', 'desc')
->getQuery();
->select('e')
->setFirstResult($firstResult)
->setMaxResults($maxResults)
- ->where('e.isFav = 1')
+ ->where('e.isStarred = true')
->andWhere('e.userId =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted=0')
+ ->andWhere('e.isDeleted=false')
->orderBy('e.createdAt', 'desc')
->getQuery();
->where('e.userId =:userId')->setParameter('userId', $userId);
if (!is_null($isArchived)) {
- $qb->andWhere('e.isRead =:isArchived')->setParameter('isArchived', $isArchived);
+ $qb->andWhere('e.isArchived =:isArchived')->setParameter('isArchived', $isArchived);
}
if (!is_null($isStarred)) {
- $qb->andWhere('e.isFav =:isStarred')->setParameter('isStarred', $isStarred);
+ $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', $isStarred);
}
if (!is_null($isDeleted)) {
{% endif %}
<ul class="tools links">
- <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isRead == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
- <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isFav == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li>
+ <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
+ <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li>
<li><a title="{% trans %}delete{% endtrans %}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}delete{% endtrans %}</span></a></li>
<li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.url | e | domainName }}</span></a></li>
</ul>
<ul class="links">
<li class="topPosF"><a href="#top" title="{% trans %}Back to top{% endtrans %}" class="tool top icon icon-arrow-up-thick"><span>{% trans %}Back to top{% endtrans %}</span></a></li>
<li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.url | e | domainName }}</span></a></li>
- <li><a title="{% trans %}Mark as read{% endtrans %}" class="tool icon icon-check {% if entry.isRead == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
- <li><a title="{% trans %}Favorite{% endtrans %}" class="tool icon icon-star {% if entry.isFav == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle favorite{% endtrans %}</span></a></li>
+ <li><a title="{% trans %}Mark as read{% endtrans %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
+ <li><a title="{% trans %}Favorite{% endtrans %}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle favorite{% endtrans %}</span></a></li>
<li><a title="{% trans %}Delete{% endtrans %}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}Delete{% endtrans %}</span></a></li>
{% if share_twitter %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans %}Tweet{% endtrans %}"><span>{% trans %}Tweet{% endtrans %}</span></a></li>{% endif %}
{% if share_mail %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"><span>{% trans %}Email{% endtrans %}</span></a></li>{% endif %}