403Webshell
Server IP : 54.233.248.239  /  Your IP : 172.28.20.13
Web Server : Apache
System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/vinumday2_0/app/Modules/Noticia/Controllers/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Modules/Noticia/Controllers/Admin/AdminNoticiaController.php
<?php

namespace App\Modules\Noticia\Controllers\Admin;

use Illuminate\Http\Request;
use Mail;
use Exception;
use App\Http\Requests;
use App\Http\Controllers\BaseController;
use App\Modules\Noticia\Models\Noticia;
use App\Modules\NoticiaCategoria\Models\NoticiaCategoria;
use App\Modules\NoticiaHasCategoria\Models\NoticiaHasCategoria;

use App\Services\GeralService;
use DB;

class AdminNoticiaController extends BaseController
{
	private $modulo;
	private $fields;
	private $fks;
	private $lastInsertId;

    public function __construct(){
		parent::__construct();
		$this->middleware('auth');
		$this->modulo = \App\Gerador::where('nome', 'Noticia')->with('campos', 'fks')->first();
		$this->fields = $this->modulo->campos;
		$this->fks = $this->modulo->fks;
		$this->noticia_m = new Noticia();
	}

	public function index(){
		$query = $this->noticia_m->select('noticia.*');

		$data['fields_listagem'] = array();
		foreach ($this->fields as $field) {
			if($field->listagem){
				$data['fields_listagem'][] = $field;
			}
		}
		foreach ($this->fks as $fk) {
			if($fk->listagem){
				if($fk->campoRelacionado->translatable){
					$table = $fk->moduloRelacionado->nome_tabela.'_descricao';
					$on = $fk->moduloRelacionado->nome_tabela.'_descricao.'.$fk->moduloRelacionado->nome_tabela.'_id';
				}else{
					$table = $fk->moduloRelacionado->nome_tabela;
					$on = $fk->moduloRelacionado->nome_tabela.'.id';
				}
				$query->leftJoin($table, 'noticia.'.$fk->nome, '=', $on);
				$query->addSelect($table.'.'.$fk->campoRelacionado->nome.' as fk'.$fk->id);
				$data['fields_listagem'][] = $fk;
			}
			
		}

		$data['noticias'] = $query->groupBy('noticia.id')->get();

		usort($data['fields_listagem'], function($a, $b) {
		    return $a->ordem - $b->ordem;
		});

		return view('Noticia::admin/noticia',$data);
	}

	public function add(){
		$data = array();
		$data['modulo'] = $this->modulo;
		$data['fields'] = [];
		foreach ($this->fields as $field) {
			$data['fields'][] = $field;
		}
		foreach ($this->fks as $fk) {
			$data['fields'][] = $fk;
		}
		usort($data['fields'], function($a, $b) {
		    return $a->ordem - $b->ordem;
		});
		foreach ($this->fks as $fk) {
			$classPath = '\App\Modules\\'.$fk->moduloRelacionado->nome.'\Models\\'.$fk->moduloRelacionado->nome;
			$data['array_'.$fk->nome] = $classPath::get();
		}
		$data['nextId']    = $this->noticia_m->getNextAutoIncrement();
		$data['publicado'] = 'agora';

		$data['categorias'] = NoticiaCategoria::orderBy('titulo', 'ASC')->get();

		return view('Noticia::admin/form-noticia', $data);
	}

	public function edit($slug){
		$id = Noticia::where('slug', $slug)->value('id');
		$data['modulo'] = $this->modulo;
		$data['fields'] = [];
		foreach ($this->fields as $field) {
			$data['fields'][] = $field;
		}
		foreach ($this->fks as $fk) {
			$data['fields'][] = $fk;
		}
		usort($data['fields'], function($a, $b) {
		    return $a->ordem - $b->ordem;
		});
		foreach ($this->fks as $fk) {
			$classPath = '\App\Modules\\'.$fk->moduloRelacionado->nome.'\Models\\'.$fk->moduloRelacionado->nome;
			$data['array_'.$fk->nome] = $classPath::get();
		}
		$data['noticia'] = $this->noticia_m->find($id);
		if($this->modulo->galeria){
			$data['noticia']->imagens = $this->noticia_m->getImagens($id);
		}

		$data['categorias'] = NoticiaCategoria::orderBy('titulo', 'ASC')->get();

		$categoriasNoticia = $data['noticia']->categorias;
		$categorias  	   = [];
		foreach ($categoriasNoticia as $categoria) {
			$categorias[] = $categoria->noticia_categoria_id;
		}

		$publicado = ['agendar', 'agora', 'rascunho'];

		$data['categoriasNoticia'] = $categorias;
		$data['publicado']         = $publicado[$data['noticia']->publicado];

		return view('Noticia::admin/form-noticia',$data);
	}

	public function save(Request $request){

		$post = $request->input();

		$post['meta_keywords'] = (isset($post['meta_keywords'])) ? implode(',',$post['meta_keywords']) : null;

		foreach ($this->fields as $field) {
			$arrayFields[] = $field->nome;
		}
		foreach ($this->fks as $fk) {
			$arrayFields[] = $fk->nome;
		}
		if($this->modulo->imagem){
			$arrayFields[] = 'thumbnail_principal';
			$arrayFields[] = 'thumbnail_secundaria';
		}

		$arrayFields[] = 'publicado';
		$arrayFields[] = 'destaque';
		if(!isset($post['publicado'])){
			$post['publicado'] = 0;
		}
		if(!isset($post['destaque'])){
			$post['destaque'] = 0;
		}

		if($request->input('id')){
			$id_noticia = $this->noticia_m->editar($arrayFields, $post, $request->input('id'));
		}else{
			$id_noticia = $this->noticia_m->criar($arrayFields, $post);
		}

		if(isset($post['thumbnail_principal']) && !empty($post['thumbnail_principal'])){
			@unlink('uploads/noticia/' . $post['thumbnail_principal']);
		}

		if(isset($post['thumbnail_secundaria']) && !empty($post['thumbnail_secundaria'])){
			@unlink('uploads/noticia/' . $post['thumbnail_secundaria']);
		}

		\Session::flash('type', 'success');
      	\Session::flash('message', "Alteracoes salvas com sucesso!");
		return redirect('admin/noticia');

	}

	public function cadastrarCategoria(Request $request){

		$NoticiaCategoria = new NoticiaCategoria;
		$NoticiaCategoria->titulo = $request->input('name');
		$NoticiaCategoria->save();

		return response()->json(['status' => true, 'message' => 'Categoria adicionada com sucesso', 'id' => $NoticiaCategoria->id]);

	}

	public function saveAjax(Request $request){

		$post    = $request->input();

		$publicado = [
			'agendar'  => 0, 
			'agora'    => 1, 
			'rascunho' => 2
		];

		if($request->input('noticia_id') && !empty($request->input('noticia_id'))){
			$Noticia = Noticia::find($request->input('noticia_id'));
		}else{
			$Noticia       = new Noticia;
			$Noticia->data = date('Y-m-d');
			$Noticia->data_completa = date('Y-m-d H:i:s');
		}
		$Noticia->nome          = $post['title'];
		$Noticia->visibilidade  = $post['visibility'];
		$Noticia->publicado     = $publicado[$post['post']];
		$Noticia->destaque      = (isset($post['destaque']) ? $post['destaque'] : 0);

		//Formata Data Agendamento
		if(isset($post['date']) && !empty($post['date']) && $post['post'] == 'agendar'){
			$Noticia->data_agendamento = GeralService::formataData($post['date']);
		}

		//Salva Thumbnail
		if(isset($post['thumbnail']) && !empty($post['thumbnail']) && $Noticia->thumbnail_principal != $post['thumbnail']){
			$arquivo = GeralService::uploadFile(FALSE, 'noticia', ['filename' => $post['thumbnail']]);
            if(!empty($arquivo->filename)){
                $Noticia->thumbnail_principal = $arquivo->filename;
                @unlink('uploads/noticia/' . $post['thumbnail']);
            }
		}

		$Noticia->descricao = $post['content'];
		$Noticia->save();

		//Categorias
		$categorias = [];
		if($request->input('categories') && !empty($request->input('categories'))){

			$categorias = explode(",", $request->input('categories'));

			foreach($categorias as $noticia_categoria_id) {

				try {

					$NoticiaCategoria = NoticiaHasCategoria::where('noticia_id', $Noticia->id)->where('noticia_categoria_id', $noticia_categoria_id)->first();
					if(!$NoticiaCategoria){
						$NoticiaCategoria = new NoticiaHasCategoria;
						$NoticiaCategoria->noticia_id = $Noticia->id;
						$NoticiaCategoria->noticia_categoria_id = $noticia_categoria_id;
						$NoticiaCategoria->save();
					}

				} catch (Exception $e) {
					Log::info($e->getMessage());
					continue;
				}

			}

			NoticiaHasCategoria::where('noticia_id', $Noticia->id)->whereNotIn('noticia_categoria_id', $categorias)->delete();

		}else{
			NoticiaHasCategoria::where('noticia_id', $Noticia->id)->delete();
		}

		return response()->json(['status' => true, 'message' => 'Notícia adicionada com sucesso!'], 200);

	}

	public function uploadAjax(Request $request) {

		if($request->hasFile('file')) {

			//upload an image to the /img/tmp directory and return the filepath.
			$file        = $request->file('file');
			$tmpFilePath = '/uploads/noticia/';
			$tmpFileName = time() . '-' . $file->getClientOriginalName();
			$file        = $file->move(public_path() . $tmpFilePath, $tmpFileName);
			$path        = $tmpFilePath . $tmpFileName;

			return response()->json(array('path'=> $path, 'filename' => $tmpFileName, 'url' => url($tmpFilePath.$tmpFileName)), 200);

		} else {
			return response()->json(false, 400);
		}
	}

	public function upload_image(Request $request) {
		if($request->hasFile('file')) {
			//upload an image to the /img/tmp directory and return the filepath.
			$file        = $request->file('file');
			$tmpFilePath = '/uploads/noticia/';
			$tmpFileName = time() . '-' . $file->getClientOriginalName();
			$file        = $file->move(public_path() . $tmpFilePath, $tmpFileName);
			$path        = $tmpFilePath . $tmpFileName;

			return response()->json(array('path'=> $path, 'file_name'=> $tmpFileName), 200);

		} else {
			return response()->json(false, 200);
		}
	}

	public function upload_tinymce(Request $request) {
		if($request->hasFile('file')) {
			$file    = $request->file('file');
			$tinymce = GeralService::uploadFile($file, 'tinymce', ['delete' => false]);
			return response()->json(array('file_path'=> $tinymce->url, 'file_name'=> $tinymce->filename), 200);
		} else {
			return response()->json(false, 200);
		}
	}

	public function upload_galeria($id, Request $request) {
		if($request->hasFile('file')) {
			//upload an image to the /img/tmp directory and return the filepath.
			$file = $request->file('file');
			$noticia = GeralService::uploadFile($file, 'noticia');

			$this->noticia_m->criar_imagem(array('id_noticia' => $id, 'thumbnail_principal' => $noticia->filename));

			return response()->json(array('path'=> '/uploads/noticia/'.$noticia->filename, 'file_name'=>$noticia->filename), 200);

		} else {
			return response()->json(false, 200);
		}
	}

	public function crop_image(Request $request) {
		$img = \Image::make('uploads/noticia/'.$request->input('file_name'));
		$dataCrop = json_decode($request->input('data_crop'));
		if($img->crop(intval($dataCrop->width), intval($dataCrop->height), intval($dataCrop->x), intval($dataCrop->y))->save('uploads/noticia/thumb_'.$request->input('file_name'))){
			
			GeralService::deleteFileImages($request->input('file_name'), 'noticia');
			$noticia = GeralService::uploadFile(FALSE, 'noticia', ['filename' => 'thumb_'.$request->input('file_name'), 'delete' => false]);

			echo json_encode(array(
				'status'    => true,
				'path'      => '/uploads/noticia/thumb_'.$request->input('file_name'),
				'file_name' => 'thumb_'.$request->input('file_name'),
			));
		}else{
			echo json_encode(array(
				'status' => false,
				'message' => 'Não foi possível alterar a imagem.'
			));
		}
	}

	public function delete($slug){

		$id = Noticia::where('slug', $slug)->value('id');
		NoticiaHasCategoria::where('noticia_id', $id)->delete();
		$this->noticia_m->deletar($id);

		\Session::flash('type', 'success');
      \Session::flash('message', "Registro removido com sucesso!");
		return redirect('admin/noticia');
	}

	public function delete_imagem($id){
		try{
			$imagem = $this->noticia_m->getImagem($id);
			$this->noticia_m->deletar_imagem($id);

			unlink('uploads/noticia/'.$imagem->thumbnail_principal);

			return response()->json(array('status' => true, 'message' => 'Registro removido com sucesso!'));
		}catch(Exception $e){
			return response()->json(array('status' => false, 'message' => $e->getMessage()));
		}


	}

	private function slugify($string)
    {
        return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit