NewsDao.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace internship\model;
  3. use n2n\context\attribute\RequestScoped;
  4. use n2n\persistence\orm\EntityManager;
  5. use n2n\io\managed\File;
  6. use internship\bo\NewsCategory;
  7. use internship\bo\NewsItem;
  8. use internship\bo\NewsTag;
  9. use n2n\context\attribute\Inject;
  10. use n2n\util\io\IoUtils;
  11. #[RequestScoped]
  12. class NewsDao {
  13. #[Inject]
  14. private EntityManager $em;
  15. public function getNewsCategories() {
  16. $criteria = $this->em->createSimpleCriteria(NewsCategory::getClass(), null,
  17. array('id' => 'DESC'));
  18. return $criteria->toQuery()->fetchArray();
  19. }
  20. public function getNewsCategory(string $urlPart): ?NewsCategory {
  21. $criteria = $this->em->createSimpleCriteria(NewsCategory::getClass(), array('urlPart' => $urlPart));
  22. return $criteria->toQuery()->fetchSingle();
  23. }
  24. public function getNewsCategoryById(int $id) {
  25. return $this->em->find(NewsCategory::getClass(), $id);
  26. }
  27. public function saveCategory(NewsCategory $category) {
  28. $this->em->persist($category);
  29. }
  30. public function deleteCategory(NewsCategory $category) {
  31. $this->em->remove($category);
  32. }
  33. public function getNewsItemById(int $id) {
  34. return $this->em->find(NewsItem::getClass(), $id);
  35. }
  36. public function saveNews(NewsItem $news) {
  37. $this->em->persist($news);
  38. }
  39. public function deleteNews(NewsItem $news) {
  40. $this->em->remove($news);
  41. }
  42. public function getNewsTagById(int $id) {
  43. return $this->em->find(NewsTag::getClass(), $id);
  44. }
  45. public function getNewsByTagName(string $name) {
  46. $criteria = $this->em->createSimpleCriteria(NewsTag::getClass(), array('name' => $name),
  47. array('name' => 'ASC'));
  48. return $criteria->toQuery()->fetchArray();
  49. }
  50. public function getTags(string $name = null) {
  51. $matches = null;
  52. if($name) {$matches = array('name' => $name);}
  53. $criteria = $this->em->createSimpleCriteria(NewsTag::getClass(), $matches,
  54. array('name' => 'ASC'));
  55. return $criteria->toQuery()->fetchArray();
  56. }
  57. public function saveTag(NewsTag $tag) {
  58. $this->em->persist($tag);
  59. }
  60. public function deleteTag(NewsTag $tag) {
  61. $this->em->remove($tag);
  62. }
  63. }