1 | <?php |
---|
2 | /* |
---|
3 | ARQUIVO INVOCADO PELA CLASSE "class.maillist.inc.php" do ExpressoAdmin: para sincronizar as listas |
---|
4 | criadas/deletadas via browser, no RHDS e Mailman. |
---|
5 | */ |
---|
6 | |
---|
7 | //Rotina utilizada neste script, para criar o arquivo de uma nova lista |
---|
8 | function GeraArquivoLista($nlista, $conteudo, $operacao){ |
---|
9 | if(is_dir(diretoriolistas)){ |
---|
10 | |
---|
11 | //Navega ate o diretorio do repositorio de arquivos |
---|
12 | $manipulador_dir = chdir(diretoriolistas); |
---|
13 | if ($manipulador_dir){ |
---|
14 | |
---|
15 | //Verifica a operacao enviada para o script: 1 adiciona, 0 remove |
---|
16 | if($operacao == 1) |
---|
17 | $nomelista = 'ins_' . $nlista; |
---|
18 | elseif($operacao == 0) |
---|
19 | $nomelista = 'rem_' . $nlista; |
---|
20 | else{ |
---|
21 | $lista = array("status"=>false,"msg"=>"Codigo de operacao para inserir/remover lista invalido."); |
---|
22 | return $lista; |
---|
23 | } |
---|
24 | |
---|
25 | //Verifica se ja nao existe um arquivo no pool, para a mesma lista |
---|
26 | if(file_exists($nomelista)) |
---|
27 | $lista = array("status"=>false,"msg"=>"O arquivo indentificador da listagem \"" . $nomelista . "\" ja existe em \"".diretoriolistas."\"."); |
---|
28 | else{ |
---|
29 | //Cria o arquivo da lista |
---|
30 | $manipulador_arq = @fopen($nomelista,"w"); |
---|
31 | if (@fwrite($manipulador_arq, $nlista, strlen($nlista))){ |
---|
32 | @fclose($manipulador_arq); |
---|
33 | $lista = array("status"=>true,"msg"=>"Arquivo da lista \"". $nomelista . "\" criado no repositorio \"".diretoriolistas ."\"."); |
---|
34 | } |
---|
35 | else |
---|
36 | $lista = array("status"=>false,"msg"=>"Falha ao gravar o arquivo de definicao de lista \"". $nomelista ."\"."); |
---|
37 | } |
---|
38 | } |
---|
39 | else |
---|
40 | $lista = array("status"=>false,"msg"=>"Nao foi possivel acessar o repositorio das listas."); |
---|
41 | } |
---|
42 | else |
---|
43 | $lista = array("status"=>false,"msg"=>"A estrutura do repositorio nao se apresenta como um diretorio."); |
---|
44 | |
---|
45 | return($lista); |
---|
46 | } |
---|
47 | |
---|
48 | //Se o acesso ao script nao for via HTTP Post, encerra o interpretador |
---|
49 | if ($_SERVER['REQUEST_METHOD'] != 'POST'){ |
---|
50 | $retorno = array("status"=>false,"msg"=>"Acesso indevido ao script de sincronizacao de listas RHDS/Mailman."); |
---|
51 | echo serialize($retorno); |
---|
52 | exit; |
---|
53 | } |
---|
54 | |
---|
55 | //Se nao foi repassado o nome da lista a partir do Expresso |
---|
56 | if (strlen($_POST['uid']) <= 0){ |
---|
57 | $retorno = serialize(array("status"=>false,"msg"=>"Lista nao informada para o processamento(lista = \"".$_POST['uid']."\").")); |
---|
58 | echo $retorno; |
---|
59 | exit; |
---|
60 | } |
---|
61 | |
---|
62 | //Se o codigo da operacao for diferente de 1(cria lista) e 0(deleta lista), aborta o script |
---|
63 | if(($_POST['op'] < 0) || ($_POST['op'] > 1)){ |
---|
64 | $retorno = serialize(array("status"=>false,"msg"=>"Codigo de operacao para processamento do sincronizador nulo/invalido(codigo = \"".$_POST['op']."\")")); |
---|
65 | echo $retorno; |
---|
66 | exit; |
---|
67 | } |
---|
68 | |
---|
69 | //Armazena os dados do nome da lista, e operacao a proceder |
---|
70 | $uid = strtolower(trim($_POST['uid'])); |
---|
71 | $operacao = $_POST['op']; |
---|
72 | |
---|
73 | //PARA DEPURACAO DIRETA DO SCRIPT, PODE-SE HABILITAR O USO DE GET PARA ACESSAR DIRETAMENTE VIA URL |
---|
74 | //$uid = strtolower(trim($_GET['uid'])); |
---|
75 | //$operacao = strtolower(trim($_GET['op'])); |
---|
76 | |
---|
77 | //Diretorio padrao de armazenamento dos arquivos a serem gravados para a montagem de listas |
---|
78 | #define("diretoriolistas",getcwd()."/pool"); |
---|
79 | define("diretoriolistas", '/var/www/mailman/pool'); |
---|
80 | |
---|
81 | //Trata da criacao do arquivo temporario, contendo apenas o nome da lista |
---|
82 | //Primeiramente, confere se o diretorio com o pool de arquivos existe e esta disponivel |
---|
83 | if (file_exists(diretoriolistas)){ |
---|
84 | //Cria o arquivo da lista |
---|
85 | $retorno = GeraArquivoLista($uid, $uid, $operacao); |
---|
86 | } |
---|
87 | //O pool nao existe: tenta cria-lo |
---|
88 | else{ |
---|
89 | if(@mkdir(diretoriolistas)) |
---|
90 | $retorno = GeraArquivoLista($uid, $uid); |
---|
91 | else |
---|
92 | $retorno = array("status"=>false,"msg"=>"Nao conseguiu criar o repositorio de definicoes das listagens no servidor."); |
---|
93 | } |
---|
94 | |
---|
95 | //Retorna um vetor serializado para o objeto Ajax do Expresso que solicitou o processamento. |
---|
96 | //No indice "status" contem o booleano do processamento (true = OK, false = NOK), e em "msg" a string de tratamento |
---|
97 | echo('@@'.serialize($retorno).'@@'); |
---|
98 | ?> |
---|