-
Notifications
You must be signed in to change notification settings - Fork 0
/
editarForm.php
64 lines (56 loc) · 2.18 KB
/
editarForm.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/*
* Central de conhecimento FEJESP
* Contato: ti@fejesp.org.br
* Autor: Guilherme de Oliveira Souza (http://sitegui.com.br)
* Data: 06/06/2013
*/
// Carrega as configurações e conecta ao banco de dados
require_once 'config.php';
require_once 'utils.php';
require_once 'Query.php';
conectar();
validarLogin();
// Interpreta o caminho do item
$dados = NULL;
$caminho = @$_POST['caminho'];
$criar = isset($_GET['criar']);
$sucesso = interpretarCaminho($caminho, $dados, $criar ? 'pasta' : 'form');
if (!$sucesso)
morrerComErro('Form não encontrado');
// Valida as permissões do usuário
if (!$_usuario || (!$criar && !$_usuario['admin'] && $dados['criador'] != $_usuario['id']))
morrerComErro('O usuário atual não tem permissão para isso');
// Carrega os novos dados
$nome = $_POST['nome'];
$descricao = $_POST['descricao'];
$ativo = !empty($_POST['ativo']);
// Valida o nome
if (!preg_match('@^[^/]+$@', $nome))
morrerComErro('Nome inválido');
// Monta a definição (conteudo) do formulário
$campos = array();
$ajudas = empty($_POST['ajudas']) ? array() : $_POST['ajudas'];
$postCampos = is_array($_POST['campos']) ? $_POST['campos'] : array();
foreach ($postCampos as $cada) {
list($idCampo, $tipoCampo) = explode(':', $cada);
$campo = array('tipo' => $tipoCampo);
$campo['nome'] = $_POST['nomes'][$idCampo];
$campo['ajuda'] = empty($ajudas[$idCampo]) ? '' : $ajudas[$idCampo];
$campo['obrigatorio'] = !empty($_POST['obrigatorio'][$idCampo]);
if ($tipoCampo == 'radio' || $tipoCampo == 'checkbox')
$campo['valores'] = explode("\n", str_replace("\r", '', $_POST['valores'][$idCampo]));
$campos[] = $campo;
}
$conteudo = json_encode($campos);
// Salva no banco de dados
try {
if ($criar)
new Query('INSERT INTO forms VALUES (NULL, ?, ?, ?, ?, NOW(), NOW(), ?, ?)', $dados['id'], $nome, $descricao, $conteudo, $ativo, $_usuario['id']);
else
new Query('UPDATE forms SET nome=?, descricao=?, conteudo=?, modificacao=NOW(), ativo=? WHERE id=? LIMIT 1', $nome, $descricao, $conteudo, $ativo, $dados['id']);
// Vai para o form
redirecionar('pasta', $criar ? $caminho : getCaminhoAcima($caminho));
} catch (Exception $e) {
morrerComErro('Falha ao gravar os dados: ' . $e->getMessage());
}