Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller;
- use App\Controller\AppController;
- use Cake\Routing\Router;
- use Cake\Event\Event;
- use Cake\Utility\Text;
- use Cake\ORM\TableRegistry;
- use Cake\Network\Http\Client;
- class AdminController extends AppController {
- public $helpers = [
- 'Paginator' => ['templates' => 'paginator-templates']
- ];
- public $paginate = [
- 'limit' => 3,
- 'order' => [
- 'Posts.id' => 'DESC'
- ]
- ];
- public function initialize(){
- parent::initialize();
- $this->loadComponent('Admin');
- $this->loadComponent('Paginator');
- $this->viewBuilder()->setLayout('admin');
- }
- public function index(){
- $um = [ 3 => array('controller' => 'admin', 'action' => 'dash') ];
- $this->redirect($um[3]);
- }
- // dashboard (a decisão entre dash para admin ou membro está na view (dash.ctp))
- public function dash(){
- $id = $this->Auth->user('id');
- $dados['User'] = $this->Auth->user() ? $this->Auth->user() : false;
- $dados['User']['Seguindo'] = $this->Posts->find('all', [
- 'contain' => ['Categorias'],
- 'conditions' => ['Posts.id IN' => explode(';', $dados['User']['seguindo'])],
- 'order' => 'Posts.id DESC',
- ])->hydrate(0)->toArray();
- $dados['User']['Favoritos'] = $this->Posts->find('all', [
- 'contain' => ['Categorias'],
- 'conditions' => ['Posts.id IN' => explode(';', $dados['User']['favoritos'])],
- 'order' => 'Posts.id DESC',
- ])->hydrate(0)->toArray();
- if (in_array($dados['User']['role'], ['admin', 'autor', 'mod'])) {
- $dados['Posts'] = $this->Posts->find('all', array('order' => 'Posts.id DESC'))->hydrate(0)->toArray();
- $dados['Users'] = $this->Users->find('all', array('order' => 'Users.id DESC'))->hydrate(0)->toArray();
- $dados['Episodios'] = $this->Episodios->find('all', array('order' => 'Episodios.id DESC'))->hydrate(0)->toArray();
- $dados['Generos'] = $this->Generos->find('all', array('order' => 'Generos.id DESC'))->hydrate(0)->toArray();
- }
- $dados['Help'] = [
- 'pathUpload' => [
- 'image' => Router::url('/upload/image/', true),
- 'video' => Router::url('/upload/video/', true),
- ],
- 'pathImg' => Router::url('/img/', true),
- ];
- $this->set('title_for_layout', 'Dashboard');
- $this->set(compact('dados'));
- }
- // layout_blog
- public function layoutBlog(){
- $dados['User'] = $this->Auth->user();
- $this->paginate['limit'] = 10;
- $this->paginate['order'] = ['Blog.nome'];
- $dados['Blog'] = $this->paginate('Blog');
- $this->set('title_for_layout', 'Layout do Blog');
- $this->set(compact('dados'));
- }
- // layout_blog_add
- public function layoutBlogAdd(){
- $dados['User'] = $this->Auth->user();
- $dados['Item'] = $this->Blog->newEntity();
- if ($this->request->is('post')) {
- $item_input = $this->request->getData();
- $dados['Item'] = $this->Blog->patchEntity($dados['Item'], $this->request->getData());
- $dados['Item']['user_id'] = $dados['User']['id'];
- $dados['Item']['categoria'] = implode(',', $item_input['categoria']);
- $dados['Item']['responsive'] = implode(',', $item_input['responsive']);
- $dados['Item']['visibilidade'] = implode(',', $item_input['visibilidade']);
- if ($this->Blog->save($dados['Item'])) {
- $this->Flash->admin(__('Item adicionado'), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Não foi possível adicionar esse item'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect(['action' => 'layout-blog']);
- }
- $this->set('title_for_layout', 'Adicionar item');
- $this->set(compact('dados'));
- }
- // layout_blog_delete
- public function layoutBlogDelete(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $item = $this->Blog->get($id);
- if ($this->Blog->delete($item)) {
- $this->Flash->admin(__('O item <b><i>{0}</i></b> foi excluído', h($item['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
- }
- else {
- $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($item['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
- }
- return $this->redirect(['action' => 'layout-blog']);
- }
- // layout_blog_edit
- public function layoutBlogEdit(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Item'] = $this->Blog->get($id);
- // salvando
- if ($this->request->is(['post', 'put'])) {
- $item_input = $this->request->getData();
- $this->Blog->patchEntity($dados['Item'], $this->request->getData());
- $dados['Item']['categoria'] = implode(',', $item_input['categoria']);
- $dados['Item']['responsive'] = implode(',', $item_input['responsive']);
- $dados['Item']['visibilidade'] = implode(',', $item_input['visibilidade']);
- if ($this->Blog->save($dados['Item'])) {
- $this->Flash->admin(__('Atualização realizada', h($dados['Item']['nome'])), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Erro ao atualizar'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect($this->request->here);
- }
- $this->set('title_for_layout', 'Editar item de layout');
- $this->set(compact('dados'));
- }
- // posts
- public function posts(){
- $dados['User'] = $this->Auth->user();
- $conditions = array();
- if (null !== $this->request->query() && isset($this->request->query()['busca'])) {
- $conditions[] = array("Posts.titulo LIKE" => "%" . $this->request->query()['busca'] . "%");
- }
- $this->paginate['limit'] = 10;
- $this->paginate['contain'] = ['Episodios', 'Users', 'Categorias'];
- $this->paginate['conditions'] = $conditions;
- $dados['Posts'] = $this->paginate('Posts');
- $this->set('title_for_layout', 'Posts');
- $this->set(compact('dados'));
- }
- // post_add
- public function postAdd(){
- $dados['User'] = $this->Auth->user();
- $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
- $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
- $dados['Idiomas'] = ['Dublado', 'Legendado'];
- // Adicionando conteúdo ao Post marotamente
- $grab = $this->request->query('grab') || false;
- $dados['Post'] = $this->Posts->newEntity();
- if ($grab) {
- $dados['Post'] = $this->Posts->patchEntity($dados['Post'], $this->Admin->grab($this->request->query('grab')));
- $grab_capa = [
- 'tmp_name' => 'http:' . $dados['Post']['capa'],
- 'name' => $dados['Post']['capa']
- ];
- }
- if ($this->request->is('post')) {
- $dados['Post'] = $this->Posts->patchEntity($dados['Post'], $this->request->getData());
- $dados['Post']->user_id = $dados['User']['id'];
- $dados['Post']->slug = strtolower(Text::slug($dados['Post']->titulo, '-'));
- $dados['Post']->criado = date('Y-m-d H:i:s', time());
- if (isset($this->request->data['capa']['name']) && !empty($this->request->data['capa']['name'])) {
- $dados['Post']->capa = $this->Admin->uploadImage($this->request->data['capa'], $dados['Post']->titulo, $prefix = 'capa');
- }
- elseif ($grab && isset($grab_capa)) {
- $dados['Post']->capa = $this->Admin->uploadImage($grab_capa, $dados['Post']->titulo, $prefix = 'capa');
- }
- if (isset($this->request->data['imagem']['name']) && !empty($this->request->data['imagem']['name'])) {
- $dados['Post']->imagem = $this->Admin->uploadImage($this->request->data['imagem'], $dados['Post']->titulo, $prefix = 'imagem');
- }
- if ($this->Posts->save($dados['Post'])) {
- $this->Flash->admin(__('Post adicionado'), ['params' => ['class' => 'alert-success']]);
- return $this->redirect(['action' => 'posts']);
- }
- $this->Flash->admin(__('Não foi possível adicionar esse post'), ['params' => ['class' => 'alert-danger']]);
- }
- $this->set('title_for_layout', 'Adicionar post');
- $this->set(compact('dados'));
- }
- // post_edit
- public function postEdit(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
- $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
- $dados['Idiomas'] = ['Dublado', 'Legendado'];
- $dados['Post'] = $this->Posts->getPostFullById($id);
- $dados['Count']['episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']['id']])->count('*');
- // salvando
- if ($this->request->is(['post', 'put'])) {
- // verifica se alterou a imagem (capa ou wallpaper) e faz a viadajem do upload
- // se não, salva O que tava
- if (isset($this->request->data['capa']['name']) && !empty($this->request->data['capa']['name'])) {
- $post_capa = $this->Admin->uploadImage($this->request->data['capa'], $dados['Post']->titulo, 'capa');
- } else {
- $post_capa = $dados['Post']->capa;
- }
- if (isset($this->request->data['imagem']['name']) && !empty($this->request->data['imagem']['name'])) {
- $post_imagem = $this->Admin->uploadImage($this->request->data['imagem'], $dados['Post']->titulo, 'imagem');
- } else {
- $post_imagem = $dados['Post']->imagem;
- }
- $this->Posts->patchEntity($dados['Post'], $this->request->getData());
- $dados['Post']->capa = $post_capa;
- $dados['Post']->imagem = $post_imagem;
- $dados['Post']->criado = $dados['Post']->criado; // ops
- $dados['Post']->atualizado = date('Y-m-d H:i:s', time());
- if ($this->Posts->save($dados['Post'])) {
- $this->Flash->admin(__('Seu post foi atualizado.', h($dados['Post']->titulo)), ['params' => ['class' => 'alert-success']]);
- return $this->redirect($this->request->here);
- }
- $this->Flash->admin(__('Seu post não pôde ser atualizado.'), ['params' => ['class' => 'alert-danger']]);
- }
- $this->set('title_for_layout', 'Editar post');
- $this->set(compact('dados'));
- }
- // aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- public function postAddEmMassa()
- {
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Generos'] = $this->Generos->find('all')->hydrate(0)->toArray();
- $dados['Categorias'] = $this->Categorias->find('all')->hydrate(0)->toArray();
- $dados['Idiomas'] = ['Dublado', 'Legendado'];
- $dados['Post'] = $this->Posts->getPostFullById($id);
- $dados['Count']['episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']['id']])->count('*');
- // salvando
- if ($this->request->is(['post', 'put'])) {
- if(count($this->request['data']) > 0){
- foreach ($this->request['data']['urls'] as $key => $value) {
- $dados['ep'][$key]['post_id'] = $this->request['data']['idPost'];
- if(($key+1) < 10){
- $dados['ep'][$key]['titulo'] = "Episódio 0".($key+1);
- $dados['ep'][$key]['slug'] = "episodio-0".($key+1);
- }else{
- $dados['ep'][$key]['titulo'] = "Episódio ".($key+1);
- $dados['ep'][$key]['slug'] = "episodio-".($key+1);
- }
- $dados['ep'][$key]['url'] = $value;
- $dados['ep'][$key]['idioma'] = $this->request['data']['prefixIdioma'];
- $dados['ep'][$key]['criado'] = date('Y-m-d H:i:s', time());
- $dados['ep'][$key]['atualizado'] = date('Y-m-d H:i:s', time());
- $dados['ep'][$key]['user_id'] = $dados['User']->id;
- }
- $dados['ep'] = $this->Episodios->newEntities($dados['ep']);
- $i = 0;
- $error = false;
- foreach ($dados['ep'] as $value) {
- $i++;
- if(!$this->Episodios->save($value)){
- $error = "Error na ".$i." URL!";
- break;
- }
- }
- if($error){
- $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']]);
- }else{
- $this->Flash->admin(__('Seu post foi atualizado.', h($dados['Post']->titulo)), ['params' => ['class' => 'alert-success']]);
- }
- }
- exit;
- }
- $this->set('title_for_layout', 'Editar Post Em Massa');
- $this->set(compact('dados'));
- }
- // post_delete
- public function postDelete(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $post = $this->Posts->get($id);
- $episodios = $this->Episodios->find('all')->where(['post_id' => $post->id]);
- if ($this->Posts->delete($post)) {
- // apagando as imagens do disco (1)()
- if ($post->capa != '') unlink(WWW_ROOT . '/upload/image/' . $post->capa);
- if ($post->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $post->imagem);
- // deletando episódios
- foreach ($episodios as $episodio) {
- // apagando as imagens dos ep do disco (1)()
- if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
- if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
- $this->Episodios->delete($episodio);
- }
- $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]]);
- return $this->redirect(['action' => 'posts']);
- }
- }
- // delete_episodios_por_post
- public function deleteEpisodiosPorPost(){
- $post_id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $episodios = $this->Episodios->find('all')->where(['post_id' => $post_id]);
- $eps_error = [];
- $eps_excluidos = [];
- foreach ($episodios as $episodio) {
- if (!$this->Episodios->delete($episodio)) {
- $eps_error[] = h($episodio['titulo']);
- } else {
- // apagando as imagens dos ep do disco (1)()
- if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
- if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
- $eps_excluidos[] = h($episodio['titulo']);
- }
- }
- if (count($eps_excluidos) > 0) $this->Flash->admin(__('{0} episódios(s) exluído(s)', count($eps_excluidos)), ['params' => ['class' => 'alert-info']]);
- if (count($eps_error) > 0) $this->Flash->admin(__('{0} episódios com erro ao excluír', count($eps_error)), ['params' => ['class' => 'alert-warning']]);
- return $this->redirect(['controller' => 'admin/post', 'action' => 'edit', $post_id]);
- }
- // delete_episodio
- public function deleteEpisodio(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $episodio = $this->Episodios->get($id);
- $post_id = $episodio['post_id'];
- if (!$this->Episodios->delete($episodio)) {
- $this->Flash->admin(__('{0} não deletado', h($episodio->titulo)), ['params' => ['class' => 'alert-warning']]);
- } else {
- // apagando as imagens dos ep do disco (1)()
- if ($episodio->capa != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->capa);
- if ($episodio->imagem != '') unlink(WWW_ROOT . '/upload/image/' . $episodio->imagem);
- $this->Flash->admin(__('{0} deletado', h($episodio->titulo)), ['params' => ['class' => 'alert-info']]);
- }
- return $this->redirect(['controller' => 'admin/post', 'action' => 'episodios', $post_id]);
- }
- // post_edit_episodios
- public function postEditEpisodios(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Post'] = $this->Posts->getPostFullById($id);
- // a ordenação vai ficar uma bosta, sem o 0 na frente dos < 10
- $dados['Episodios'] = $this->Episodios->find('all')->where(['post_id' => $dados['Post']->id])->order(['Episodios.slug'])->toArray();
- $titulo_post_com_limite = strlen($dados['Post']['titulo']) > 13 ? substr($dados['Post']['titulo'], 0, 13) . '...' : $dados['Post']['titulo'];
- if (isset($this->request->params['?'])) {
- // ?recover=true&tipo=Temporada%203&transfer=4
- $tipo = $this->request->params['?']['tipo'];
- $tipo_slug = Text::slug($tipo, '-');
- $idioma = strtolower($dados['Post']['idioma']);
- $transfer = isset($this->request->params['?']['transfer']) ? $this->request->params['?']['transfer'] : false;
- foreach($dados['Episodios'] as $ep) {
- $ep->tipo = $tipo;
- $ep->tipo_slug = $tipo_slug;
- $ep->idioma = $idioma;
- if ($transfer !== false) $ep->post_id = $transfer;
- if (!$this->Episodios->save($ep)) die('falha ao salvar: ' . var_dump($ep));
- }
- }
- $this->set('title_for_layout', 'Episódios ('. count($dados['Episodios']) .') — ' . $titulo_post_com_limite);
- $this->set(compact('dados'));
- }
- // edit_episodio
- public function editEpisodio(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Episodio'] = $this->Episodios->get($id);
- $dados['Post'] = $this->Posts->get($dados['Episodio']['post_id']);
- // salvando
- if ($this->request->is(['post', 'put'])) {
- if (!empty($this->request->data['capa'])) {
- $fullNameFile = $dados['Post']['id'] . '_' . $dados['Episodio']['id'];
- $episodio_capa = $this->Admin->uploadImage($this->request->data['capa'], $fullNameFile, 'capa');
- } else {
- $episodio_capa = $dados['Episodio']['capa'];
- }
- if (!empty($this->request->data['imagem'])) {
- $fullNameFile = $dados['Post']['id'] . '_' . $dados['Episodio']['id'];
- $episodio_capa = $this->Admin->uploadImage($this->request->data['imagem'], $fullNameFile, 'imagem');
- } else {
- $episodio_capa = $dados['Episodio']['imagem'];
- }
- $this->Episodios->patchEntity($dados['Episodio'], $this->request->getData());
- $dados['Episodio']->capa = $episodio_capa;
- $dados['Episodio']->criado = $dados['Episodio']['criado']; // ops
- $dados['Episodio']->atualizado = date('Y-m-d H:i:s', time());
- if ($this->Episodios->save($dados['Episodio'])) {
- $this->Flash->admin(__('Episódio atualizado.'), ['params' => ['class' => 'alert-success']]);
- $this->Flash->admin(__('Se alterar a imagem, exclua seu cache (Ctrl+F5) para visualizar.'), ['params' => ['class' => 'alert-info']]);
- return $this->redirect(['controller' => 'admin/post', 'action' => 'edit-ep', $dados['Episodio']['id']]);
- }
- $this->Flash->admin(__('O episódio não pôde ser atualizado.'), ['params' => ['class' => 'alert-danger']]);
- }
- $titulo_post_com_limite = strlen($dados['Post']['titulo']) > 13 ? substr($dados['Post']['titulo'], 0, 13) . '...' : $dados['Post']['titulo'];
- $this->set('title_for_layout', 'Editando: ' . $dados['Episodio']['titulo'] . ' — '. $titulo_post_com_limite);
- $this->set(compact('dados'));
- }
- // add_episodios
- public function addEpisodios(){
- $post_id = $this->request->params['id'];
- if ($this->request->is(['post'])) {
- $episodios = $this->request->getData();
- $user_id = $this->Auth->user('id');
- $data_criado = date('Y-m-d H:i:s', time());
- $maxi = count($episodios['tituloEp']);
- $dataMult = [];
- // pr($episodios); exit;
- for ($i = 1; $i <= $maxi; $i++) {
- $titulo = $episodios['tituloEp'][$i];
- $slug = $episodios['slugEp'][$i];
- $url = $episodios['urlEp'][$i];
- $tipo = $episodios['tipoEp'][$i];
- $tipoSlug = $episodios['tipoSlugEp'][$i];
- $lancamento = isset($episodios['lancamento'][$i]) ? $episodios['lancamento'][$i] : 0;
- $idioma = $episodios['idiomaEp'][$i];
- $dataMult[] = [
- 'id' => 'NULL',
- 'post_id' => $post_id,
- 'titulo' => $titulo,
- 'url' => $url,
- 'tipo' => $tipo,
- 'tipo_slug' => $tipoSlug,
- 'idioma' => $idioma,
- 'user_id' => $user_id,
- 'slug' => $slug,
- 'criado' => $data_criado,
- 'lancamento' => $lancamento
- ];
- }
- $entities = $this->Episodios->newEntities($dataMult);
- $eps_nao_salvo = [];
- foreach ($entities as $entity) {
- if (!$this->Episodios->save($entity)) {
- $eps_nao_salvo[] = $entity;
- }
- }
- if (count($eps_nao_salvo) == 0) {
- $this->Flash->admin(__('Episódio(s) inserido(s)!'), ['params' => ['class' => 'alert-success']]);
- return $this->redirect(['controller' => 'admin/post', 'action' => 'episodios', $post_id]);
- }
- $this->Flash->admin(__('Não foi possível adicionar ' . count($eps_nao_salvo) + 1 . ' episódios'), ['params' => ['class' => 'alert-danger']]);
- }
- }
- // categorias
- public function categorias(){
- $dados['User'] = $this->Auth->user();
- $this->paginate['limit'] = 10;
- $this->paginate['order'] = ['Categorias.nome'];
- $dados['Categorias'] = $this->paginate('Categorias');
- $this->set('title_for_layout', 'Categorias');
- $this->set(compact('dados'));
- }
- // categoria_edit
- public function categoriaEdit(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Categoria'] = $this->Categorias->get($id);
- // salvando
- if ($this->request->is(['post', 'put'])) {
- $this->Categorias->patchEntity($dados['Categoria'], $this->request->getData());
- if ($this->Categorias->save($dados['Categoria'])) {
- $this->Flash->admin(__('Sua categoria foi atualizada', h($dados['Categoria']['nome'])), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Erro ao atualizar categoria'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect($this->request->here);
- }
- $this->set('title_for_layout', 'Editar categoria');
- $this->set(compact('dados'));
- }
- // categoria_delete
- public function categoriaDelete(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $categoria = $this->Categorias->get($id);
- if ($this->Categorias->delete($categoria)) {
- $this->Flash->admin(__('A categoria <b><i>{0}</i></b> foi excluída', h($categoria['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
- }
- else {
- $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($categoria['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
- }
- return $this->redirect(['action' => 'categorias']);
- }
- // categoria_add
- public function categoriaAdd(){
- $dados['User'] = $this->Auth->user();
- $dados['Categoria'] = $this->Categorias->newEntity();
- if ($this->request->is('post')) {
- $dados['Categoria'] = $this->Categorias->patchEntity($dados['Categoria'], $this->request->getData());
- if ($this->Categorias->save($dados['Categoria'])) {
- $this->Flash->admin(__('Categoria adicionada'), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Não foi possível adicionar essa categoria'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect(['action' => 'categorias']);
- }
- $this->set('title_for_layout', 'Adicionar categoria');
- $this->set(compact('dados'));
- }
- // generos
- public function generos(){
- $dados['User'] = $this->Auth->user();
- $this->paginate['limit'] = 10;
- $this->paginate['order'] = ['Generos.nome'];
- $dados['Generos'] = $this->paginate('Generos');
- $this->set('title_for_layout', 'Gêneros');
- $this->set(compact('dados'));
- }
- // genero_edit
- public function generoEdit(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Genero'] = $this->Generos->get($id);
- // salvando
- if ($this->request->is(['post', 'put'])) {
- $this->Generos->patchEntity($dados['Genero'], $this->request->getData());
- if ($this->Generos->save($dados['Genero'])) {
- $this->Flash->admin(__('Sua categoria foi atualizada', h($dados['Genero']['nome'])), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Erro ao atualizar gênero'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect($this->request->here);
- }
- $this->set('title_for_layout', 'Editar gênero');
- $this->set(compact('dados'));
- }
- // genero_delete
- public function generoDelete(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $genero = $this->Generos->get($id);
- if ($this->Generos->delete($genero)) {
- $this->Flash->admin(__('A categoria <b><i>{0}</i></b> foi excluída', h($genero['nome'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
- }
- else {
- $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($genero['nome'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
- }
- return $this->redirect(['action' => 'generos']);
- }
- // genero_add
- public function generoAdd(){
- $dados['User'] = $this->Auth->user();
- $dados['Genero'] = $this->Generos->newEntity();
- if ($this->request->is('post')) {
- $dados['Genero'] = $this->Generos->patchEntity($dados['Genero'], $this->request->getData());
- if ($this->Generos->save($dados['Genero'])) {
- $this->Flash->admin(__('Gênero adicionada'), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Não foi possível adicionar essa categoria'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect(['action' => 'generos']);
- }
- $this->set('title_for_layout', 'Adicionar gênero');
- $this->set(compact('dados'));
- }
- // usuarios
- public function usuarios(){
- $dados['User'] = $this->Auth->user();
- $conditions = array();
- if (null !== $this->request->query() && isset($this->request->query()['busca'])) {
- $conditions[] = array("Users.username LIKE" => "%" . $this->request->query()['busca'] . "%");
- }
- $this->paginate['limit'] = 10;
- $this->paginate['conditions'] = $conditions;
- $dados['Usuarios'] = $this->paginate('Users');
- $this->set('title_for_layout', 'Usuários');
- $this->set(compact('dados'));
- }
- // usuario_edit
- public function usuarioEdit(){
- $id = $this->request->params['id'];
- $dados['User'] = $this->Auth->user();
- $dados['Usuario'] = $this->Users->get($id);
- $dados['Roles'] = ['admin', 'autor', 'mod', 'colaborador', 'membro'];
- $roles_membros = array('colaborador', 'membro');
- // Mantem a role de 'membro'
- // para os vip vencido
- // (essa role só será exibida, se sair da página sem atualizar, o mesmo volta para a role original)
- if (in_array($dados['Usuario']['role'], $roles_membros)) {
- if ($dados['Usuario']['vip'] > time()) $dados['Usuario']['role'] = $dados['Roles'][3];
- else $dados['Usuario']['role'] = $dados['Roles'][4];
- }
- // salvando
- if ($this->request->is(['post', 'put'])) {
- $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
- $dados['Usuario']->modified = date('Y-m-d H:i:s', time());
- $dados['Usuario']->vip = ($dados['Usuario']['vip'] * 86400) + time();
- // Mantem a role de 'membro'
- // para os vip vencido
- if (in_array($dados['Usuario']['role'], $roles_membros)) {
- if ($dados['Usuario']['vip'] > time()) $dados['Usuario']['role'] = $dados['Roles'][3];
- else $dados['Usuario']['role'] = $dados['Roles'][4];
- }
- if ($this->Users->save($dados['Usuario'])) {
- $this->Flash->admin(__('Dados atualizados'), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Erro ao atualizar usuário'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect($this->request->here);
- }
- $this->set('title_for_layout', 'Editar usuário');
- $this->set(compact('dados'));
- }
- // usuario_delete
- public function usuarioDelete(){
- $id = $this->request->params['id'];
- $this->request->allowMethod(['post', 'delete']);
- $usuario = $this->Users->get($id);
- if ($this->Users->delete($usuario)) {
- $this->Flash->admin(__('O usuário <b><i>{0}</i></b> foi excluído', h($usuario['username'])), ['params' => ['class' => 'alert-info', 'escape' => false]]);
- }
- else {
- $this->Flash->admin(__('Erro ao excluír <b><i>{0}</i></b>', h($usuario['username'])), ['params' => ['class' => 'alert-danger', 'escape' => false]]);
- }
- return $this->redirect(['action' => 'usuarios']);
- }
- // usuario_add
- public function usuarioAdd(){
- $dados['User'] = $this->Auth->user();
- $dados['Usuario'] = $this->Users->newEntity();
- $dados['Roles'] = ['admin', 'autor', 'mod', 'colaborador', 'membro'];
- if ($this->request->is('post')) {
- $dados['Usuario'] = $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
- if ($this->Users->save($dados['Usuario'])) {
- $this->Flash->admin(__('Usuário adicionado'), ['params' => ['class' => 'alert-success']]);
- }
- else {
- $this->Flash->admin(__('Não foi possível adicionar esse usuário'), ['params' => ['class' => 'alert-danger']]);
- }
- return $this->redirect(['action' => 'usuarios']);
- }
- $this->set('title_for_layout', 'Adicionar usuário');
- $this->set(compact('dados'));
- }
- // minha_conta
- public function minhaConta(){
- $dados['Help'] = [
- 'pathUpload' => [
- 'image' => Router::url('/upload/image/', true),
- 'video' => Router::url('/upload/video/', true),
- ],
- 'pathImg' => Router::url('/img/', true),
- ];
- $dados['User'] = $this->Auth->user();
- $dados['Usuario'] = $this->Users->get($dados['User']['id']);
- // salvando
- if ($this->request->is(['post', 'put'])) {
- if (isset($this->request->data['avatar']['name']) && !empty($this->request->data['avatar']['name'])) {
- $avatar = $this->Admin->uploadImage($this->request->data['avatar'], $dados['User']['username'], 'avatar');
- } else {
- $avatar = $dados['User']['avatar'];
- }
- $this->Users->patchEntity($dados['Usuario'], $this->request->getData());
- $dados['Usuario']->avatar = $avatar;
- $dados['Usuario']->modified = date('Y-m-d H:i:s', time());
- if ($this->Users->save($dados['Usuario'])) {
- $this->Auth->setUser($dados['Usuario']);
- $this->Flash->admin(__('Conta atualizada'), ['params' => ['class' => 'alert-success']]);
- return $this->redirect($this->request->here);
- }
- $this->Flash->admin(__('Erro ao atualizar'), ['params' => ['class' => 'alert-danger']]);
- }
- $this->set('title_for_layout', 'Minha conta');
- $this->set(compact('dados'));
- }
- public function ajaxAddAnime($searchThis = 'anime+wallpaper'){
- $resultado = [];
- $this->set(compact('resultado'));
- $this->render('ajax');
- }
- public function isAuthorized($user){
- // Todos os usuários registrados podem adicionar artigos
- if ($this->request->getParam('action') === 'add') {
- return true;
- }
- // Apenas o proprietário do artigo pode editar e excluir
- if (in_array($this->request->getParam('action'), ['postEdit', 'postDelete'])) {
- $post_id = (int)$this->request->getParam('pass.0');
- if ($this->Posts->isOwnedBy($post_id, $user['id'])) {
- return true;
- }
- }
- return parent::isAuthorized($user);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment