smallkan

Untitled

Jan 26th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.59 KB | None | 0 0
  1. <?php
  2. namespace App\Controller;
  3.  
  4. use App\Controller\AppController;
  5. use Cake\Routing\Router;
  6. use Cake\Event\Event;
  7. use Cake\Utility\Text;
  8. use Cake\ORM\TableRegistry;
  9. use Cake\Network\Http\Client;
  10.  
  11. class AdminController extends AppController {
  12.  
  13. public $helpers = [
  14. 'Paginator' => ['templates' => 'paginator-templates']
  15. ];
  16. public $paginate = [
  17. 'limit' => 3,
  18. 'order' => [
  19. 'Posts.id' => 'DESC'
  20. ]
  21. ];
  22.  
  23.  
  24.  
  25. public function initialize(){
  26. parent::initialize();
  27. $this->loadComponent('Admin');
  28. $this->loadComponent('Paginator');
  29.  
  30. $this->viewBuilder()->setLayout('admin');
  31. }
  32.  
  33.  
  34.  
  35. public function index(){
  36. $um = [ 3 => array('controller' => 'admin', 'action' => 'dash') ];
  37. $this->redirect($um[3]);
  38. }
  39.  
  40.  
  41.  
  42.  
  43. // dashboard (a decisão entre dash para admin ou membro está na view (dash.ctp))
  44. public function dash(){
  45. $id = $this->Auth->user('id');
  46.  
  47. $dados['User'] = $this->Auth->user() ? $this->Auth->user() : false;
  48. $dados['User']['Seguindo'] = $this->Posts->find('all', [
  49. 'contain' => ['Categorias'],
  50. 'conditions' => ['Posts.id IN' => explode(';', $dados['User']['seguindo'])],
  51. 'order' => 'Posts.id DESC',
  52. ])->hydrate(0)->toArray();
  53. $dados['User']['Favoritos'] = $this->Posts->find('all', [
  54. 'contain' => ['Categorias'],
  55. 'conditions' => ['Posts.id IN' => explode(';', $dados['User']['favoritos'])],
  56. 'order' => 'Posts.id DESC',
  57. ])->hydrate(0)->toArray();
  58.  
  59. if (in_array($dados['User']['role'], ['admin', 'autor', 'mod'])) {
  60. $dados['Posts'] = $this->Posts->find('all', array('order' => 'Posts.id DESC'))->hydrate(0)->toArray();
  61. $dados['Users'] = $this->Users->find('all', array('order' => 'Users.id DESC'))->hydrate(0)->toArray();
  62. $dados['Episodios'] = $this->Episodios->find('all', array('order' => 'Episodios.id DESC'))->hydrate(0)->toArray();
  63. $dados['Generos'] = $this->Generos->find('all', array('order' => 'Generos.id DESC'))->hydrate(0)->toArray();
  64. }
  65.  
  66. $dados['Help'] = [
  67. 'pathUpload' => [
  68. 'image' => Router::url('/upload/image/', true),
  69. 'video' => Router::url('/upload/video/', true),
  70. ],
  71. 'pathImg' => Router::url('/img/', true),
  72. ];
  73.  
  74. $this->set('title_for_layout', 'Dashboard');
  75. $this->set(compact('dados'));
  76. }
  77.  
  78.  
  79.  
  80.  
  81. // layout_blog
  82. public function layoutBlog(){
  83. $dados['User'] = $this->Auth->user();
  84.  
  85. $this->paginate['limit'] = 10;
  86. $this->paginate['order'] = ['Blog.nome'];
  87. $dados['Blog'] = $this->paginate('Blog');
  88.  
  89. $this->set('title_for_layout', 'Layout do Blog');
  90. $this->set(compact('dados'));
  91. }
  92.  
  93.  
  94. // layout_blog_add
  95. public function layoutBlogAdd(){
  96. $dados['User'] = $this->Auth->user();
  97. $dados['Item'] = $this->Blog->newEntity();
  98.  
  99. if ($this->request->is('post')) {
  100. $item_input = $this->request->getData();
  101. $dados['Item'] = $this->Blog->patchEntity($dados['Item'], $this->request->getData());
  102. $dados['Item']['user_id'] = $dados['User']['id'];
  103. $dados['Item']['categoria'] = implode(',', $item_input['categoria']);
  104. $dados['Item']['responsive'] = implode(',', $item_input['responsive']);
  105. $dados['Item']['visibilidade'] = implode(',', $item_input['visibilidade']);
  106.  
  107. if ($this->Blog->save($dados['Item'])) {
  108. $this->Flash->admin(__('Item adicionado'), ['params' => ['class' => 'alert-success']]);
  109. }
  110. else {
  111. $this->Flash->admin(__('Não foi possível adicionar esse item'), ['params' => ['class' => 'alert-danger']]);
  112. }
  113. return $this->redirect(['action' => 'layout-blog']);
  114. }
  115.  
  116. $this->set('title_for_layout', 'Adicionar item');
  117. $this->set(compact('dados'));
  118. }
  119.  
  120.  
  121.  
  122. // layout_blog_delete
  123. public function layoutBlogDelete(){
  124.  
  125. $id = $this->request->params['id'];
  126. $this->request->allowMethod(['post', 'delete']);
  127. $item = $this->Blog->get($id);
  128. if ($this->Blog->delete($item)) {
  129. $this->Flash->admin(__('O item <b><i>{0}</i></b> foi excluído', h($item['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
  130. }
  131. else {
  132. $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($item['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
  133. }
  134. return $this->redirect(['action' => 'layout-blog']);
  135. }
  136.  
  137.  
  138.  
  139. // layout_blog_edit
  140. public function layoutBlogEdit(){
  141. $id = $this->request->params['id'];
  142. $dados['User'] = $this->Auth->user();
  143. $dados['Item'] = $this->Blog->get($id);
  144.  
  145.  
  146. // salvando
  147. if ($this->request->is(['post', 'put'])) {
  148. $item_input = $this->request->getData();
  149. $this->Blog->patchEntity($dados['Item'], $this->request->getData());
  150. $dados['Item']['categoria'] = implode(',', $item_input['categoria']);
  151. $dados['Item']['responsive'] = implode(',', $item_input['responsive']);
  152. $dados['Item']['visibilidade'] = implode(',', $item_input['visibilidade']);
  153.  
  154. if ($this->Blog->save($dados['Item'])) {
  155. $this->Flash->admin(__('Atualização realizada', h($dados['Item']['nome'])), ['params' => ['class' => 'alert-success']]);
  156. }
  157. else {
  158. $this->Flash->admin(__('Erro ao atualizar'), ['params' => ['class' => 'alert-danger']]);
  159. }
  160. return $this->redirect($this->request->here);
  161. }
  162.  
  163. $this->set('title_for_layout', 'Editar item de layout');
  164. $this->set(compact('dados'));
  165. }
  166.  
  167.  
  168.  
  169.  
  170. // posts
  171. public function posts(){
  172. $dados['User'] = $this->Auth->user();
  173.  
  174. $conditions = array();
  175. if (null !== $this->request->query() && isset($this->request->query()['busca'])) {
  176. $conditions[] = array("Posts.titulo LIKE" => "%" . $this->request->query()['busca'] . "%");
  177. }
  178.  
  179. $this->paginate['limit'] = 10;
  180. $this->paginate['contain'] = ['Episodios', 'Users', 'Categorias'];
  181. $this->paginate['conditions'] = $conditions;
  182. $dados['Posts'] = $this->paginate('Posts');
  183.  
  184. $this->set('title_for_layout', 'Posts');
  185. $this->set(compact('dados'));
  186. }
  187.  
  188.  
  189.  
  190. // post_add
  191. public function postAdd(){
  192. $dados['User'] = $this->Auth->user();
  193. $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
  194. $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
  195. $dados['Idiomas'] = ['Dublado', 'Legendado'];
  196.  
  197. // Adicionando conteúdo ao Post marotamente
  198. $grab = $this->request->query('grab') || false;
  199.  
  200. $dados['Post'] = $this->Posts->newEntity();
  201.  
  202. if ($grab) {
  203. $dados['Post'] = $this->Posts->patchEntity($dados['Post'], $this->Admin->grab($this->request->query('grab')));
  204. $grab_capa = [
  205. 'tmp_name' => 'http:' . $dados['Post']['capa'],
  206. 'name' => $dados['Post']['capa']
  207. ];
  208. }
  209.  
  210. if ($this->request->is('post')) {
  211. $dados['Post'] = $this->Posts->patchEntity($dados['Post'], $this->request->getData());
  212. $dados['Post']->user_id = $dados['User']['id'];
  213. $dados['Post']->slug = strtolower(Text::slug($dados['Post']->titulo, '-'));
  214. $dados['Post']->criado = date('Y-m-d H:i:s', time());
  215.  
  216. if (isset($this->request->data['capa']['name']) && !empty($this->request->data['capa']['name'])) {
  217. $dados['Post']->capa = $this->Admin->uploadImage($this->request->data['capa'], $dados['Post']->titulo, $prefix = 'capa');
  218. }
  219. elseif ($grab && isset($grab_capa)) {
  220. $dados['Post']->capa = $this->Admin->uploadImage($grab_capa, $dados['Post']->titulo, $prefix = 'capa');
  221. }
  222. if (isset($this->request->data['imagem']['name']) && !empty($this->request->data['imagem']['name'])) {
  223. $dados['Post']->imagem = $this->Admin->uploadImage($this->request->data['imagem'], $dados['Post']->titulo, $prefix = 'imagem');
  224. }
  225.  
  226. if ($this->Posts->save($dados['Post'])) {
  227. $this->Flash->admin(__('Post adicionado'), ['params' => ['class' => 'alert-success']]);
  228. return $this->redirect(['action' => 'posts']);
  229. }
  230. $this->Flash->admin(__('Não foi possível adicionar esse post'), ['params' => ['class' => 'alert-danger']]);
  231. }
  232.  
  233. $this->set('title_for_layout', 'Adicionar post');
  234. $this->set(compact('dados'));
  235. }
  236.  
  237.  
  238.  
  239. // post_edit
  240. public function postEdit(){
  241. $id = $this->request->params['id'];
  242. $dados['User'] = $this->Auth->user();
  243. $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
  244. $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
  245. $dados['Idiomas'] = ['Dublado', 'Legendado'];
  246. $dados['Post'] = $this->Posts->getPostFullById($id);
  247. $dados['Count']['episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']['id']])->count('*');
  248.  
  249. // salvando
  250. if ($this->request->is(['post', 'put'])) {
  251.  
  252. // verifica se alterou a imagem (capa ou wallpaper) e faz a viadajem do upload
  253. // se não, salva O que tava
  254. if (isset($this->request->data['capa']['name']) && !empty($this->request->data['capa']['name'])) {
  255. $post_capa = $this->Admin->uploadImage($this->request->data['capa'], $dados['Post']->titulo, 'capa');
  256. } else {
  257. $post_capa = $dados['Post']->capa;
  258. }
  259. if (isset($this->request->data['imagem']['name']) && !empty($this->request->data['imagem']['name'])) {
  260. $post_imagem = $this->Admin->uploadImage($this->request->data['imagem'], $dados['Post']->titulo, 'imagem');
  261. } else {
  262. $post_imagem = $dados['Post']->imagem;
  263. }
  264.  
  265.  
  266. $this->Posts->patchEntity($dados['Post'], $this->request->getData());
  267.  
  268. $dados['Post']->capa = $post_capa;
  269. $dados['Post']->imagem = $post_imagem;
  270. $dados['Post']->criado = $dados['Post']->criado; // ops
  271. $dados['Post']->atualizado = date('Y-m-d H:i:s', time());
  272.  
  273. if ($this->Posts->save($dados['Post'])) {
  274. $this->Flash->admin(__('Seu post foi atualizado.', h($dados['Post']->titulo)), ['params' => ['class' => 'alert-success']]);
  275. return $this->redirect($this->request->here);
  276. }
  277. $this->Flash->admin(__('Seu post não pôde ser atualizado.'), ['params' => ['class' => 'alert-danger']]);
  278. }
  279.  
  280. $this->set('title_for_layout', 'Editar post');
  281. $this->set(compact('dados'));
  282. }
  283.  
  284. // aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  285. public function postAddEmMassa()
  286. {
  287. $id = $this->request->params['id'];
  288. $dados['User'] = $this->Auth->user();
  289. $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
  290. $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
  291. $dados['Idiomas'] = ['Dublado', 'Legendado'];
  292. $dados['Post'] = $this->Posts->getPostFullById($id);
  293. $dados['Count']['episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']['id']])->count('*');
  294.  
  295. // salvando
  296. if ($this->request->is(['post', 'put'])) {
  297. if(count($this->request['data']) > 0){
  298.  
  299. foreach ($this->request['data']['urls'] as $key => $value) {
  300. $dados['ep'][$key]['post_id'] = $this->request['data']['idPost'];
  301. if(($key+1) < 10){
  302. $dados['ep'][$key]['titulo'] = "Episódio 0".($key+1);
  303. $dados['ep'][$key]['slug'] = "episodio-0".($key+1);
  304. }else{
  305. $dados['ep'][$key]['titulo'] = "Episódio ".($key+1);
  306. $dados['ep'][$key]['slug'] = "episodio-".($key+1);
  307. }
  308. $dados['ep'][$key]['url'] = $value;
  309. $dados['ep'][$key]['idioma'] = $this->request['data']['prefixIdioma'];
  310. $dados['ep'][$key]['criado'] = date('Y-m-d H:i:s', time());
  311. $dados['ep'][$key]['atualizado'] = date('Y-m-d H:i:s', time());
  312. $dados['ep'][$key]['user_id'] = $dados['User']->id;
  313.  
  314. }
  315.  
  316. $dados['ep'] = $this->Episodios->newEntities($dados['ep']);
  317.  
  318. $i = 0;
  319. $error = false;
  320.  
  321. foreach ($dados['ep'] as $value) {
  322. $i++;
  323. if(!$this->Episodios->save($value)){
  324. $error = "Error na ".$i." URL!";
  325. break;
  326. }
  327. }
  328.  
  329. if($error){
  330. $this->Flash->admin(__('Ocorreu um erro durante a execução, da '.$i.'º URL em diante os dados não foram salvo!.'), ['params' => ['class' => 'alert-danger']]);
  331. }else{
  332. $this->Flash->admin(__('Seu post foi atualizado.', h($dados['Post']->titulo)), ['params' => ['class' => 'alert-success']]);
  333. }
  334.  
  335. }
  336.  
  337. exit;
  338. }
  339.  
  340. $this->set('title_for_layout', 'Editar Post Em Massa');
  341. $this->set(compact('dados'));
  342. }
  343.  
  344. // post_delete
  345. public function postDelete(){
  346.  
  347. $id = $this->request->params['id'];
  348.  
  349. $this->request->allowMethod(['post', 'delete']);
  350.  
  351. $post = $this->Posts->get($id);
  352. $episodios = $this->Episodios->find('all')->where(['post_id' => $post->id]);
  353. if ($this->Posts->delete($post)) {
  354.  
  355. // apagando as imagens do disco (1)()
  356. if ($post->capa != '') unlink(WWW_ROOT . '/upload/image/' . $post->capa);
  357. if ($post->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $post->imagem);
  358.  
  359. // deletando episódios
  360. foreach ($episodios as $episodio) {
  361. // apagando as imagens dos ep do disco (1)()
  362. if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
  363. if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
  364. $this->Episodios->delete($episodio);
  365. }
  366.  
  367. $this->Flash->admin(__('O post <b><i>{0}</i></b> e seus episódios foram aniquilados para sempre.', h($post->titulo)), ['params' => ['class' => 'alert-info', 'escape' => false]]);
  368. return $this->redirect(['action' => 'posts']);
  369. }
  370. }
  371.  
  372.  
  373.  
  374. // delete_episodios_por_post
  375. public function deleteEpisodiosPorPost(){
  376.  
  377. $post_id = $this->request->params['id'];
  378.  
  379. $this->request->allowMethod(['post', 'delete']);
  380.  
  381. $episodios = $this->Episodios->find('all')->where(['post_id' => $post_id]);
  382. $eps_error = [];
  383. $eps_excluidos = [];
  384. foreach ($episodios as $episodio) {
  385. if (!$this->Episodios->delete($episodio)) {
  386. $eps_error[] = h($episodio['titulo']);
  387. } else {
  388. // apagando as imagens dos ep do disco (1)()
  389. if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
  390. if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
  391. $eps_excluidos[] = h($episodio['titulo']);
  392.  
  393. }
  394. }
  395.  
  396. if (count($eps_excluidos) > 0) $this->Flash->admin(__('{0} episódios(s) exluído(s)', count($eps_excluidos)), ['params' => ['class' => 'alert-info']]);
  397. if (count($eps_error) > 0) $this->Flash->admin(__('{0} episódios com erro ao excluír', count($eps_error)), ['params' => ['class' => 'alert-warning']]);
  398. return $this->redirect(['controller' => 'admin/post', 'action' => 'edit', $post_id]);
  399. }
  400.  
  401.  
  402.  
  403. // delete_episodio
  404. public function deleteEpisodio(){
  405.  
  406. $id = $this->request->params['id'];
  407.  
  408. $this->request->allowMethod(['post', 'delete']);
  409.  
  410. $episodio = $this->Episodios->get($id);
  411. $post_id = $episodio['post_id'];
  412.  
  413. if (!$this->Episodios->delete($episodio)) {
  414. $this->Flash->admin(__('{0} não deletado', h($episodio->titulo)), ['params' => ['class' => 'alert-warning']]);
  415. } else {
  416. // apagando as imagens dos ep do disco (1)()
  417. if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
  418. if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
  419. $this->Flash->admin(__('{0} deletado', h($episodio->titulo)), ['params' => ['class' => 'alert-info']]);
  420. }
  421. return $this->redirect(['controller' => 'admin/post', 'action' => 'episodios', $post_id]);
  422. }
  423.  
  424.  
  425.  
  426. // post_edit_episodios
  427. public function postEditEpisodios(){
  428.  
  429. $id = $this->request->params['id'];
  430. $dados['User'] = $this->Auth->user();
  431. $dados['Post'] = $this->Posts->getPostFullById($id);
  432. // a ordenação vai ficar uma bosta, sem o 0 na frente dos < 10
  433. $dados['Episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']->id])->order(['Episodios.slug'])->toArray();
  434.  
  435. $titulo_post_com_limite = strlen($dados['Post']['titulo']) > 13 ? substr($dados['Post']['titulo'], 0, 13) . '...' : $dados['Post']['titulo'];
  436.  
  437.  
  438. if (isset($this->request->params['?'])) {
  439.  
  440. // ?recover=true&tipo=Temporada%203&transfer=4
  441.  
  442. $tipo = $this->request->params['?']['tipo'];
  443. $tipo_slug = Text::slug($tipo, '-');
  444. $idioma = strtolower($dados['Post']['idioma']);
  445. $transfer = isset($this->request->params['?']['transfer']) ? $this->request->params['?']['transfer'] : false;
  446.  
  447. foreach($dados['Episodios'] as $ep) {
  448. $ep->tipo = $tipo;
  449. $ep->tipo_slug = $tipo_slug;
  450. $ep->idioma = $idioma;
  451. if ($transfer !== false) $ep->post_id = $transfer;
  452. if (!$this->Episodios->save($ep)) die('falha ao salvar: ' . var_dump($ep));
  453. }
  454. }
  455.  
  456. $this->set('title_for_layout', 'Episódios ('. count($dados['Episodios']) .') — ' . $titulo_post_com_limite);
  457. $this->set(compact('dados'));
  458. }
  459.  
  460.  
  461.  
  462. // edit_episodio
  463. public function editEpisodio(){
  464. $id = $this->request->params['id'];
  465. $dados['User'] = $this->Auth->user();
  466.  
  467. $dados['Episodio'] = $this->Episodios->get($id);
  468. $dados['Post'] = $this->Posts->get($dados['Episodio']['post_id']);
  469.  
  470. // salvando
  471. if ($this->request->is(['post', 'put'])) {
  472.  
  473. if (!empty($this->request->data['capa'])) {
  474. $fullNameFile = $dados['Post']['id'] . '_' . $dados['Episodio']['id'];
  475. $episodio_capa = $this->Admin->uploadImage($this->request->data['capa'], $fullNameFile, 'capa');
  476. } else {
  477. $episodio_capa = $dados['Episodio']['capa'];
  478. }
  479.  
  480. if (!empty($this->request->data['imagem'])) {
  481. $fullNameFile = $dados['Post']['id'] . '_' . $dados['Episodio']['id'];
  482. $episodio_capa = $this->Admin->uploadImage($this->request->data['imagem'], $fullNameFile, 'imagem');
  483. } else {
  484. $episodio_capa = $dados['Episodio']['imagem'];
  485. }
  486.  
  487. $this->Episodios->patchEntity($dados['Episodio'], $this->request->getData());
  488.  
  489. $dados['Episodio']->capa = $episodio_capa;
  490. $dados['Episodio']->criado = $dados['Episodio']['criado']; // ops
  491. $dados['Episodio']->atualizado = date('Y-m-d H:i:s', time());
  492.  
  493. if ($this->Episodios->save($dados['Episodio'])) {
  494. $this->Flash->admin(__('Episódio atualizado.'), ['params' => ['class' => 'alert-success']]);
  495. $this->Flash->admin(__('Se alterar a imagem, exclua seu cache (Ctrl+F5) para visualizar.'), ['params' => ['class' => 'alert-info']]);
  496. return $this->redirect(['controller' => 'admin/post', 'action' => 'edit-ep', $dados['Episodio']['id']]);
  497. }
  498. $this->Flash->admin(__('O episódio não pôde ser atualizado.'), ['params' => ['class' => 'alert-danger']]);
  499. }
  500.  
  501. $titulo_post_com_limite = strlen($dados['Post']['titulo']) > 13 ? substr($dados['Post']['titulo'], 0, 13) . '...' : $dados['Post']['titulo'];
  502.  
  503. $this->set('title_for_layout', 'Editando: ' . $dados['Episodio']['titulo'] . ' — '. $titulo_post_com_limite);
  504. $this->set(compact('dados'));
  505. }
  506.  
  507.  
  508.  
  509. // add_episodios
  510. public function addEpisodios(){
  511.  
  512. $post_id = $this->request->params['id'];
  513.  
  514. if ($this->request->is(['post'])) {
  515. $episodios = $this->request->getData();
  516. $user_id = $this->Auth->user('id');
  517. $data_criado = date('Y-m-d H:i:s', time());
  518.  
  519. $maxi = count($episodios['tituloEp']);
  520. $dataMult = [];
  521.  
  522. // pr($episodios); exit;
  523.  
  524. for ($i = 1; $i <= $maxi; $i++) {
  525. $titulo = $episodios['tituloEp'][$i];
  526. $slug = $episodios['slugEp'][$i];
  527. $url = $episodios['urlEp'][$i];
  528. $tipo = $episodios['tipoEp'][$i];
  529. $tipoSlug = $episodios['tipoSlugEp'][$i];
  530. $lancamento = isset($episodios['lancamento'][$i]) ? $episodios['lancamento'][$i] : 0;
  531. $idioma = $episodios['idiomaEp'][$i];
  532.  
  533. $dataMult[] = [
  534. 'id' => 'NULL',
  535. 'post_id' => $post_id,
  536. 'titulo' => $titulo,
  537. 'url' => $url,
  538. 'tipo' => $tipo,
  539. 'tipo_slug' => $tipoSlug,
  540. 'idioma' => $idioma,
  541. 'user_id' => $user_id,
  542. 'slug' => $slug,
  543. 'criado' => $data_criado,
  544. 'lancamento' => $lancamento
  545. ];
  546. }
  547.  
  548. $entities = $this->Episodios->newEntities($dataMult);
  549. $eps_nao_salvo = [];
  550. foreach ($entities as $entity) {
  551. if (!$this->Episodios->save($entity)) {
  552. $eps_nao_salvo[] = $entity;
  553. }
  554. }
  555. if (count($eps_nao_salvo) == 0) {
  556. $this->Flash->admin(__('Episódio(s) inserido(s)!'), ['params' => ['class' => 'alert-success']]);
  557. return $this->redirect(['controller' => 'admin/post', 'action' => 'episodios', $post_id]);
  558. }
  559. $this->Flash->admin(__('Não foi possível adicionar ' . count($eps_nao_salvo) + 1 . ' episódios'), ['params' => ['class' => 'alert-danger']]);
  560. }
  561.  
  562. }
  563.  
  564.  
  565.  
  566. // categorias
  567. public function categorias(){
  568. $dados['User'] = $this->Auth->user();
  569.  
  570. $this->paginate['limit'] = 10;
  571. $this->paginate['order'] = ['Categorias.nome'];
  572. $dados['Categorias'] = $this->paginate('Categorias');
  573.  
  574. $this->set('title_for_layout', 'Categorias');
  575. $this->set(compact('dados'));
  576. }
  577.  
  578.  
  579.  
  580. // categoria_edit
  581. public function categoriaEdit(){
  582. $id = $this->request->params['id'];
  583. $dados['User'] = $this->Auth->user();
  584. $dados['Categoria'] = $this->Categorias->get($id);
  585.  
  586.  
  587. // salvando
  588. if ($this->request->is(['post', 'put'])) {
  589. $this->Categorias->patchEntity($dados['Categoria'], $this->request->getData());
  590.  
  591. if ($this->Categorias->save($dados['Categoria'])) {
  592. $this->Flash->admin(__('Sua categoria foi atualizada', h($dados['Categoria']['nome'])), ['params' => ['class' => 'alert-success']]);
  593. }
  594. else {
  595. $this->Flash->admin(__('Erro ao atualizar categoria'), ['params' => ['class' => 'alert-danger']]);
  596. }
  597. return $this->redirect($this->request->here);
  598. }
  599.  
  600. $this->set('title_for_layout', 'Editar categoria');
  601. $this->set(compact('dados'));
  602. }
  603.  
  604.  
  605.  
  606. // categoria_delete
  607. public function categoriaDelete(){
  608.  
  609. $id = $this->request->params['id'];
  610. $this->request->allowMethod(['post', 'delete']);
  611. $categoria = $this->Categorias->get($id);
  612. if ($this->Categorias->delete($categoria)) {
  613. $this->Flash->admin(__('A categoria <b><i>{0}</i></b> foi excluída', h($categoria['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
  614. }
  615. else {
  616. $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($categoria['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
  617. }
  618. return $this->redirect(['action' => 'categorias']);
  619. }
  620.  
  621.  
  622.  
  623. // categoria_add
  624. public function categoriaAdd(){
  625. $dados['User'] = $this->Auth->user();
  626. $dados['Categoria'] = $this->Categorias->newEntity();
  627.  
  628. if ($this->request->is('post')) {
  629. $dados['Categoria'] = $this->Categorias->patchEntity($dados['Categoria'], $this->request->getData());
  630.  
  631. if ($this->Categorias->save($dados['Categoria'])) {
  632. $this->Flash->admin(__('Categoria adicionada'), ['params' => ['class' => 'alert-success']]);
  633. }
  634. else {
  635. $this->Flash->admin(__('Não foi possível adicionar essa categoria'), ['params' => ['class' => 'alert-danger']]);
  636. }
  637. return $this->redirect(['action' => 'categorias']);
  638. }
  639.  
  640. $this->set('title_for_layout', 'Adicionar categoria');
  641. $this->set(compact('dados'));
  642. }
  643.  
  644.  
  645.  
  646. // generos
  647. public function generos(){
  648. $dados['User'] = $this->Auth->user();
  649.  
  650. $this->paginate['limit'] = 10;
  651. $this->paginate['order'] = ['Generos.nome'];
  652. $dados['Generos'] = $this->paginate('Generos');
  653.  
  654. $this->set('title_for_layout', 'Gêneros');
  655. $this->set(compact('dados'));
  656. }
  657.  
  658.  
  659.  
  660. // genero_edit
  661. public function generoEdit(){
  662. $id = $this->request->params['id'];
  663. $dados['User'] = $this->Auth->user();
  664. $dados['Genero'] = $this->Generos->get($id);
  665.  
  666.  
  667. // salvando
  668. if ($this->request->is(['post', 'put'])) {
  669. $this->Generos->patchEntity($dados['Genero'], $this->request->getData());
  670.  
  671. if ($this->Generos->save($dados['Genero'])) {
  672. $this->Flash->admin(__('Sua categoria foi atualizada', h($dados['Genero']['nome'])), ['params' => ['class' => 'alert-success']]);
  673. }
  674. else {
  675. $this->Flash->admin(__('Erro ao atualizar gênero'), ['params' => ['class' => 'alert-danger']]);
  676. }
  677. return $this->redirect($this->request->here);
  678. }
  679.  
  680. $this->set('title_for_layout', 'Editar gênero');
  681. $this->set(compact('dados'));
  682. }
  683.  
  684.  
  685.  
  686. // genero_delete
  687. public function generoDelete(){
  688.  
  689. $id = $this->request->params['id'];
  690. $this->request->allowMethod(['post', 'delete']);
  691. $genero = $this->Generos->get($id);
  692. if ($this->Generos->delete($genero)) {
  693. $this->Flash->admin(__('A categoria <b><i>{0}</i></b> foi excluída', h($genero['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
  694. }
  695. else {
  696. $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($genero['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
  697. }
  698. return $this->redirect(['action' => 'generos']);
  699. }
  700.  
  701.  
  702.  
  703. // genero_add
  704. public function generoAdd(){
  705. $dados['User'] = $this->Auth->user();
  706. $dados['Genero'] = $this->Generos->newEntity();
  707.  
  708. if ($this->request->is('post')) {
  709. $dados['Genero'] = $this->Generos->patchEntity($dados['Genero'], $this->request->getData());
  710.  
  711. if ($this->Generos->save($dados['Genero'])) {
  712. $this->Flash->admin(__('Gênero adicionada'), ['params' => ['class' => 'alert-success']]);
  713. }
  714. else {
  715. $this->Flash->admin(__('Não foi possível adicionar essa categoria'), ['params' => ['class' => 'alert-danger']]);
  716. }
  717. return $this->redirect(['action' => 'generos']);
  718. }
  719.  
  720. $this->set('title_for_layout', 'Adicionar gênero');
  721. $this->set(compact('dados'));
  722. }
  723.  
  724.  
  725.  
  726. // usuarios
  727. public function usuarios(){
  728. $dados['User'] = $this->Auth->user();
  729.  
  730. $conditions = array();
  731. if (null !== $this->request->query() && isset($this->request->query()['busca'])) {
  732. $conditions[] = array("Users.username LIKE" => "%" . $this->request->query()['busca'] . "%");
  733. }
  734.  
  735. $this->paginate['limit'] = 10;
  736. $this->paginate['conditions'] = $conditions;
  737. $dados['Usuarios'] = $this->paginate('Users');
  738.  
  739. $this->set('title_for_layout', 'Usuários');
  740. $this->set(compact('dados'));
  741. }
  742.  
  743.  
  744.  
  745. // usuario_edit
  746. public function usuarioEdit(){
  747.  
  748. $id = $this->request->params['id'];
  749. $dados['User'] = $this->Auth->user();
  750. $dados['Usuario'] = $this->Users->get($id);
  751. $dados['Roles'] = ['admin', 'autor', 'mod', 'colaborador', 'membro'];
  752. $roles_membros = array('colaborador', 'membro');
  753.  
  754. // Mantem a role de 'membro'
  755. // para os vip vencido
  756. // (essa role só será exibida, se sair da página sem atualizar, o mesmo volta para a role original)
  757. if (in_array($dados['Usuario']['role'], $roles_membros)) {
  758. if ($dados['Usuario']['vip'] > time()) $dados['Usuario']['role'] = $dados['Roles'][3];
  759. else $dados['Usuario']['role'] = $dados['Roles'][4];
  760. }
  761.  
  762. // salvando
  763. if ($this->request->is(['post', 'put'])) {
  764. $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
  765. $dados['Usuario']->modified = date('Y-m-d H:i:s', time());
  766.  
  767. $dados['Usuario']->vip = ($dados['Usuario']['vip'] * 86400) + time();
  768. // Mantem a role de 'membro'
  769. // para os vip vencido
  770. if (in_array($dados['Usuario']['role'], $roles_membros)) {
  771. if ($dados['Usuario']['vip'] > time()) $dados['Usuario']['role'] = $dados['Roles'][3];
  772. else $dados['Usuario']['role'] = $dados['Roles'][4];
  773. }
  774.  
  775. if ($this->Users->save($dados['Usuario'])) {
  776. $this->Flash->admin(__('Dados atualizados'), ['params' => ['class' => 'alert-success']]);
  777. }
  778. else {
  779. $this->Flash->admin(__('Erro ao atualizar usuário'), ['params' => ['class' => 'alert-danger']]);
  780. }
  781.  
  782. return $this->redirect($this->request->here);
  783. }
  784.  
  785. $this->set('title_for_layout', 'Editar usuário');
  786. $this->set(compact('dados'));
  787. }
  788.  
  789.  
  790.  
  791. // usuario_delete
  792. public function usuarioDelete(){
  793.  
  794. $id = $this->request->params['id'];
  795. $this->request->allowMethod(['post', 'delete']);
  796. $usuario = $this->Users->get($id);
  797. if ($this->Users->delete($usuario)) {
  798. $this->Flash->admin(__('O usuário <b><i>{0}</i></b> foi excluído', h($usuario['username'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
  799. }
  800. else {
  801. $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($usuario['username'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
  802. }
  803. return $this->redirect(['action' => 'usuarios']);
  804. }
  805.  
  806.  
  807.  
  808. // usuario_add
  809. public function usuarioAdd(){
  810. $dados['User'] = $this->Auth->user();
  811. $dados['Usuario'] = $this->Users->newEntity();
  812. $dados['Roles'] = ['admin', 'autor', 'mod', 'colaborador', 'membro'];
  813.  
  814. if ($this->request->is('post')) {
  815. $dados['Usuario'] = $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
  816.  
  817. if ($this->Users->save($dados['Usuario'])) {
  818. $this->Flash->admin(__('Usuário adicionado'), ['params' => ['class' => 'alert-success']]);
  819. }
  820. else {
  821. $this->Flash->admin(__('Não foi possível adicionar esse usuário'), ['params' => ['class' => 'alert-danger']]);
  822. }
  823. return $this->redirect(['action' => 'usuarios']);
  824. }
  825.  
  826. $this->set('title_for_layout', 'Adicionar usuário');
  827. $this->set(compact('dados'));
  828. }
  829.  
  830.  
  831.  
  832.  
  833. // minha_conta
  834. public function minhaConta(){
  835.  
  836. $dados['Help'] = [
  837. 'pathUpload' => [
  838. 'image' => Router::url('/upload/image/', true),
  839. 'video' => Router::url('/upload/video/', true),
  840. ],
  841. 'pathImg' => Router::url('/img/', true),
  842. ];
  843.  
  844. $dados['User'] = $this->Auth->user();
  845. $dados['Usuario'] = $this->Users->get($dados['User']['id']);
  846.  
  847. // salvando
  848. if ($this->request->is(['post', 'put'])) {
  849.  
  850. if (isset($this->request->data['avatar']['name']) && !empty($this->request->data['avatar']['name'])) {
  851. $avatar = $this->Admin->uploadImage($this->request->data['avatar'], $dados['User']['username'], 'avatar');
  852. } else {
  853. $avatar = $dados['User']['avatar'];
  854. }
  855.  
  856. $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
  857.  
  858. $dados['Usuario']->avatar = $avatar;
  859. $dados['Usuario']->modified = date('Y-m-d H:i:s', time());
  860.  
  861. if ($this->Users->save($dados['Usuario'])) {
  862. $this->Auth->setUser($dados['Usuario']);
  863. $this->Flash->admin(__('Conta atualizada'), ['params' => ['class' => 'alert-success']]);
  864. return $this->redirect($this->request->here);
  865. }
  866. $this->Flash->admin(__('Erro ao atualizar'), ['params' => ['class' => 'alert-danger']]);
  867. }
  868.  
  869. $this->set('title_for_layout', 'Minha conta');
  870. $this->set(compact('dados'));
  871. }
  872.  
  873.  
  874.  
  875.  
  876. public function ajaxAddAnime($searchThis = 'anime+wallpaper'){
  877. $resultado = [];
  878. $this->set(compact('resultado'));
  879. $this->render('ajax');
  880. }
  881.  
  882.  
  883.  
  884. public function isAuthorized($user){
  885. // Todos os usuários registrados podem adicionar artigos
  886. if ($this->request->getParam('action') === 'add') {
  887. return true;
  888. }
  889.  
  890. // Apenas o proprietário do artigo pode editar e excluir
  891. if (in_array($this->request->getParam('action'), ['postEdit', 'postDelete'])) {
  892. $post_id = (int)$this->request->getParam('pass.0');
  893. if ($this->Posts->isOwnedBy($post_id, $user['id'])) {
  894. return true;
  895. }
  896. }
  897.  
  898. return parent::isAuthorized($user);
  899. }
  900. }
Advertisement
Add Comment
Please, Sign In to add comment