AnimelistController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace app\controllers;
  3. use app\models\contentList;
  4. use app\models\User;
  5. use app\models\Anime;
  6. use app\models\Entry;
  7. use \lithium\security\Auth;
  8. use \lithium\util\Validator;
  9. class AnimeListController extends \lithium\action\Controller {
  10. public $publicActions = array('view');
  11. public function view($username, $sort = "all")
  12. {
  13. $user = User::find('first', array('conditions' => compact('username')));
  14. if ($user == NULL)
  15. {
  16. return;
  17. }
  18. $watching = array();
  19. $paused = array();
  20. $dropped = array();
  21. $planning = array();
  22. $finished = array();
  23. foreach($user->animelist as $entry)
  24. {
  25. //Sort it based on status
  26. switch($entry->my_status)
  27. {
  28. case "Completed": $finished[] = $entry; break;
  29. case "Watching": $watching[] = $entry; break;
  30. case "On-Hold" : $paused[] = $entry; break;
  31. case "Dropped" : $dropped[] = $entry; break;
  32. case "Plan to Watch": $planning[] = $entry; break;
  33. }
  34. }
  35. //In the future we can use set or something
  36. switch($sort)
  37. {
  38. case "planning" : return compact('user', 'planning'); break;
  39. case "completed" : return compact('user', 'finished'); break;
  40. case "onhold": return compact('user', 'paused'); break;
  41. case "watching" : return compact('user', 'watching'); break;
  42. case "dropped": return compact('user', 'dropped');
  43. default: return compact('user', 'watching', 'paused', 'dropped', 'planning', 'finished'); break;
  44. }
  45. }
  46. public function addsearch()
  47. {
  48. if (isset($this->request->query['Search'])) {
  49. $searchParam = '/' . $this->request->query['Search'] . '/i';
  50. if($this->request->query['Search'])
  51. {
  52. return Anime::search($searchParam);
  53. }
  54. }
  55. }
  56. public function add($id = null)
  57. {
  58. if (!is_numeric($id)) {
  59. return $this->redirect('Animelist::addsearch');
  60. }
  61. $anime = Anime::find('first', array('conditions' => array('special_id' => $id)));
  62. $entry = null;
  63. if ($this->request->data)
  64. {
  65. $entry = Entry::create($this->request->data);
  66. $user = Auth::check('default');
  67. $username = $user['username'];
  68. if (isset($this->request->data['tags']))
  69. {
  70. $entry->my_tags = explode(',', $this->request->data['tags']);
  71. unset($this->request->data['tags']);
  72. }
  73. if($entry->add($username))
  74. {
  75. return $this->redirect("/animelist/view/$username");
  76. }
  77. }
  78. return compact('entry', 'anime');
  79. }
  80. public function edit($id = null)
  81. {
  82. if (id != null)
  83. {
  84. //Get the ani
  85. }
  86. else
  87. {
  88. //Error message
  89. }
  90. }
  91. }